notify ui on roster changes

This commit is contained in:
iNPUTmice 2014-07-18 15:35:31 +02:00
parent 6b74c0594e
commit 4307b1de72
5 changed files with 55 additions and 0 deletions

View file

@ -38,6 +38,7 @@ public class IqParser extends AbstractParser implements OnIqPacketReceived {
}
}
}
mXmppConnectionService.updateRosterUi();
}
@Override

View file

@ -99,6 +99,7 @@ public class PresenceParser extends AbstractParser implements
}
}
}
mXmppConnectionService.updateRosterUi();
}
@Override

View file

@ -105,6 +105,7 @@ public class XmppConnectionService extends Service {
private OnConversationUpdate mOnConversationUpdate = null;
private int convChangedListenerCount = 0;
private OnAccountUpdate mOnAccountUpdate = null;
private OnRosterUpdate mOnRosterUpdate = null;
private OnTLSExceptionReceived tlsException = null;
public OnContactStatusChanged onContactStatusChanged = new OnContactStatusChanged() {
@ -918,6 +919,14 @@ public class XmppConnectionService extends Service {
this.mOnAccountUpdate = null;
}
public void setOnRosterUpdateListener(OnRosterUpdate listener) {
this.mOnRosterUpdate = listener;
}
public void removeOnRosterUpdateListener() {
this.mOnRosterUpdate = null;
}
public void connectMultiModeConversations(Account account) {
List<Conversation> conversations = getConversations();
for (int i = 0; i < conversations.size(); i++) {
@ -1262,6 +1271,12 @@ public class XmppConnectionService extends Service {
}
}
public void updateRosterUi() {
if (mOnRosterUpdate != null) {
mOnRosterUpdate.onRosterUpdate();
}
}
public Account findAccountByJid(String accountJid) {
for (Account account : this.accounts) {
if (account.getJid().equals(accountJid)) {

View file

@ -31,6 +31,7 @@ import eu.siacs.conversations.entities.Account;
import eu.siacs.conversations.entities.Contact;
import eu.siacs.conversations.entities.Presences;
import eu.siacs.conversations.services.XmppConnectionService;
import eu.siacs.conversations.services.XmppConnectionService.OnRosterUpdate;
import eu.siacs.conversations.utils.UIHelper;
import eu.siacs.conversations.xmpp.stanzas.PresencePacket;
@ -89,6 +90,20 @@ public class ContactDetailsActivity extends XmppActivity {
private LinearLayout keys;
private OnRosterUpdate rosterUpdate = new OnRosterUpdate() {
@Override
public void onRosterUpdate() {
runOnUiThread(new Runnable() {
@Override
public void run() {
populateView();
}
});
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -270,6 +285,7 @@ public class ContactDetailsActivity extends XmppActivity {
@Override
public void onBackendConnected() {
xmppConnectionService.setOnRosterUpdateListener(this.rosterUpdate );
if ((accountJid != null)&&(contactJid != null)) {
Account account = xmppConnectionService.findAccountByJid(accountJid);
if (account==null) {
@ -356,6 +372,7 @@ public class ContactDetailsActivity extends XmppActivity {
}
}
}
xmppConnectionService.removeOnRosterUpdateListener();
}
}

View file

@ -40,6 +40,7 @@ import eu.siacs.conversations.entities.Bookmark;
import eu.siacs.conversations.entities.Contact;
import eu.siacs.conversations.entities.Conversation;
import eu.siacs.conversations.entities.ListItem;
import eu.siacs.conversations.services.XmppConnectionService.OnRosterUpdate;
import eu.siacs.conversations.ui.adapter.KnownHostsAdapter;
import eu.siacs.conversations.ui.adapter.ListItemAdapter;
import eu.siacs.conversations.utils.Validator;
@ -139,6 +140,19 @@ public class StartConversationActivity extends XmppActivity {
int count) {
}
};
private OnRosterUpdate onRosterUpdate = new OnRosterUpdate() {
@Override
public void onRosterUpdate() {
runOnUiThread(new Runnable() {
@Override
public void run() {
filter(mSearchEditText.getText().toString());
}
});
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
@ -201,6 +215,12 @@ public class StartConversationActivity extends XmppActivity {
}
@Override
public void onStop() {
super.onStop();
xmppConnectionService.removeOnRosterUpdateListener();
}
protected void openConversationForContact(int position) {
Contact contact = (Contact) contacts.get(position);
Conversation conversation = xmppConnectionService
@ -444,6 +464,7 @@ public class StartConversationActivity extends XmppActivity {
@Override
void onBackendConnected() {
xmppConnectionService.setOnRosterUpdateListener(this.onRosterUpdate );
if (mSearchEditText != null) {
filter(mSearchEditText.getText().toString());
} else {