Commit a86f961b authored by Alexander Ivanov's avatar Alexander Ivanov

Use static methods for context menu creation.

parent 3b9a219f
...@@ -31,6 +31,7 @@ import android.net.Uri; ...@@ -31,6 +31,7 @@ import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.SystemClock; import android.os.SystemClock;
import android.support.v4.app.FragmentActivity;
import android.view.ContextMenu; import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo; import android.view.ContextMenu.ContextMenuInfo;
import android.view.KeyEvent; import android.view.KeyEvent;
...@@ -79,6 +80,7 @@ import com.xabber.android.ui.adapter.AccountConfiguration; ...@@ -79,6 +80,7 @@ import com.xabber.android.ui.adapter.AccountConfiguration;
import com.xabber.android.ui.adapter.AccountToggleAdapter; import com.xabber.android.ui.adapter.AccountToggleAdapter;
import com.xabber.android.ui.adapter.ContactListAdapter; import com.xabber.android.ui.adapter.ContactListAdapter;
import com.xabber.android.ui.adapter.GroupConfiguration; import com.xabber.android.ui.adapter.GroupConfiguration;
import com.xabber.android.ui.adapter.UpdatableAdapter;
import com.xabber.android.ui.dialog.AccountChooseDialogFragment; import com.xabber.android.ui.dialog.AccountChooseDialogFragment;
import com.xabber.android.ui.dialog.AccountChooseDialogFragment.OnChoosedListener; import com.xabber.android.ui.dialog.AccountChooseDialogFragment.OnChoosedListener;
import com.xabber.android.ui.dialog.ConfirmDialogListener; import com.xabber.android.ui.dialog.ConfirmDialogListener;
...@@ -447,22 +449,25 @@ public class ContactList extends ManagedListActivity implements ...@@ -447,22 +449,25 @@ public class ContactList extends ManagedListActivity implements
// Account toggler // Account toggler
return; return;
if (baseEntity instanceof AbstractContact) { if (baseEntity instanceof AbstractContact) {
createContactContextMenu((AbstractContact) baseEntity, menu); createContactContextMenu(this, contactListAdapter,
(AbstractContact) baseEntity, menu);
} else if (baseEntity instanceof AccountConfiguration) { } else if (baseEntity instanceof AccountConfiguration) {
createAccountContextMenu(baseEntity.getAccount(), menu); createAccountContextMenu(this, contactListAdapter,
baseEntity.getAccount(), menu);
} else if (baseEntity instanceof GroupConfiguration) { } else if (baseEntity instanceof GroupConfiguration) {
createGroupContextMenu(baseEntity.getAccount(), createGroupContextMenu(this, contactListAdapter,
baseEntity.getUser(), menu); baseEntity.getAccount(), baseEntity.getUser(), menu);
} }
} else { } else {
// Account panel // Account panel
createAccountContextMenu(accountToggleAdapter.getItemForView(view), createAccountContextMenu(this, contactListAdapter,
menu); accountToggleAdapter.getItemForView(view), menu);
} }
} }
private void createContactContextMenu(AbstractContact abstractContact, private static void createContactContextMenu(
ContextMenu menu) { final FragmentActivity activity, final UpdatableAdapter adapter,
AbstractContact abstractContact, ContextMenu menu) {
final String account = abstractContact.getAccount(); final String account = abstractContact.getAccount();
final String user = abstractContact.getUser(); final String user = abstractContact.getUser();
menu.setHeaderTitle(abstractContact.getName()); menu.setHeaderTitle(abstractContact.getName());
...@@ -472,22 +477,22 @@ public class ContactList extends ManagedListActivity implements ...@@ -472,22 +477,22 @@ public class ContactList extends ManagedListActivity implements
@Override @Override
public boolean onMenuItemClick(MenuItem item) { public boolean onMenuItemClick(MenuItem item) {
MessageManager.getInstance().openChat(account, user); MessageManager.getInstance().openChat(account, user);
startActivity(ChatViewer.createIntent(ContactList.this, activity.startActivity(ChatViewer.createIntent(
account, user)); activity, account, user));
return true; return true;
} }
}); });
if (MUCManager.getInstance().hasRoom(account, user)) { if (MUCManager.getInstance().hasRoom(account, user)) {
if (!MUCManager.getInstance().inUse(account, user)) if (!MUCManager.getInstance().inUse(account, user))
menu.add(R.string.muc_edit).setIntent( menu.add(R.string.muc_edit).setIntent(
MUCEditor.createIntent(this, account, user)); MUCEditor.createIntent(activity, account, user));
menu.add(R.string.muc_delete).setOnMenuItemClickListener( menu.add(R.string.muc_delete).setOnMenuItemClickListener(
new MenuItem.OnMenuItemClickListener() { new MenuItem.OnMenuItemClickListener() {
@Override @Override
public boolean onMenuItemClick(MenuItem item) { public boolean onMenuItemClick(MenuItem item) {
MUCDeleteDialogFragment.newInstance(account, user) MUCDeleteDialogFragment.newInstance(account, user)
.show(getSupportFragmentManager(), .show(activity.getSupportFragmentManager(),
"MUC_DELETE"); "MUC_DELETE");
return true; return true;
} }
...@@ -518,23 +523,24 @@ public class ContactList extends ManagedListActivity implements ...@@ -518,23 +523,24 @@ public class ContactList extends ManagedListActivity implements
NotificationManager.getInstance() NotificationManager.getInstance()
.removeMessageNotification(account, .removeMessageNotification(account,
user); user);
contactListAdapter.onChange(); adapter.onChange();
return true; return true;
} }
}); });
} else { } else {
menu.add(R.string.contact_viewer).setIntent( menu.add(R.string.contact_viewer).setIntent(
ContactViewer.createIntent(this, account, user)); ContactViewer.createIntent(activity, account, user));
menu.add(R.string.contact_editor).setIntent( menu.add(R.string.contact_editor).setIntent(
ContactEditor.createIntent(this, account, user)); ContactEditor.createIntent(activity, account, user));
menu.add(R.string.contact_delete).setOnMenuItemClickListener( menu.add(R.string.contact_delete).setOnMenuItemClickListener(
new MenuItem.OnMenuItemClickListener() { new MenuItem.OnMenuItemClickListener() {
@Override @Override
public boolean onMenuItemClick(MenuItem item) { public boolean onMenuItemClick(MenuItem item) {
ContactDeleteDialogFragment.newInstance(account, ContactDeleteDialogFragment.newInstance(account,
user).show(getSupportFragmentManager(), user).show(
activity.getSupportFragmentManager(),
"CONTACT_DELETE"); "CONTACT_DELETE");
return true; return true;
} }
...@@ -551,7 +557,7 @@ public class ContactList extends ManagedListActivity implements ...@@ -551,7 +557,7 @@ public class ContactList extends ManagedListActivity implements
NotificationManager.getInstance() NotificationManager.getInstance()
.removeMessageNotification(account, .removeMessageNotification(account,
user); user);
contactListAdapter.onChange(); adapter.onChange();
return true; return true;
} }
...@@ -588,8 +594,8 @@ public class ContactList extends ManagedListActivity implements ...@@ -588,8 +594,8 @@ public class ContactList extends ManagedListActivity implements
} catch (NetworkException e) { } catch (NetworkException e) {
Application.getInstance().onError(e); Application.getInstance().onError(e);
} }
startActivity(ContactEditor.createIntent( activity.startActivity(ContactEditor.createIntent(
ContactList.this, account, user)); activity, account, user));
return true; return true;
} }
...@@ -612,8 +618,9 @@ public class ContactList extends ManagedListActivity implements ...@@ -612,8 +618,9 @@ public class ContactList extends ManagedListActivity implements
} }
} }
private void createGroupContextMenu(final String account, private static void createGroupContextMenu(final FragmentActivity activity,
final String group, ContextMenu menu) { UpdatableAdapter adapter, final String account, final String group,
ContextMenu menu) {
menu.setHeaderTitle(GroupManager.getInstance().getGroupName(account, menu.setHeaderTitle(GroupManager.getInstance().getGroupName(account,
group)); group));
if (group != GroupManager.ACTIVE_CHATS && group != GroupManager.IS_ROOM) { if (group != GroupManager.ACTIVE_CHATS && group != GroupManager.IS_ROOM) {
...@@ -626,9 +633,9 @@ public class ContactList extends ManagedListActivity implements ...@@ -626,9 +633,9 @@ public class ContactList extends ManagedListActivity implements
account == GroupManager.NO_ACCOUNT ? null account == GroupManager.NO_ACCOUNT ? null
: account, : account,
group == GroupManager.NO_GROUP ? null group == GroupManager.NO_GROUP ? null
: group) : group).show(
.show(getSupportFragmentManager(), activity.getSupportFragmentManager(),
"GROUP_RENAME"); "GROUP_RENAME");
return true; return true;
} }
}); });
...@@ -641,17 +648,20 @@ public class ContactList extends ManagedListActivity implements ...@@ -641,17 +648,20 @@ public class ContactList extends ManagedListActivity implements
GroupDeleteDialogFragment GroupDeleteDialogFragment
.newInstance( .newInstance(
account == GroupManager.NO_ACCOUNT ? null account == GroupManager.NO_ACCOUNT ? null
: account, group).show( : account, group)
getSupportFragmentManager(), .show(activity
.getSupportFragmentManager(),
"GROUP_DELETE"); "GROUP_DELETE");
return true; return true;
} }
}); });
} }
createOfflineModeContextMenu(account, group, menu); createOfflineModeContextMenu(adapter, account, group, menu);
} }
private void createAccountContextMenu(final String account, ContextMenu menu) { private static void createAccountContextMenu(
final FragmentActivity activity, UpdatableAdapter adapter,
final String account, ContextMenu menu) {
menu.setHeaderTitle(AccountManager.getInstance() menu.setHeaderTitle(AccountManager.getInstance()
.getVerboseName(account)); .getVerboseName(account));
AccountItem accountItem = AccountManager.getInstance().getAccount( AccountItem accountItem = AccountManager.getInstance().getAccount(
...@@ -672,9 +682,9 @@ public class ContactList extends ManagedListActivity implements ...@@ -672,9 +682,9 @@ public class ContactList extends ManagedListActivity implements
}); });
menu.add(R.string.status_editor).setIntent( menu.add(R.string.status_editor).setIntent(
StatusEditor.createIntent(this, account)); StatusEditor.createIntent(activity, account));
menu.add(R.string.account_editor).setIntent( menu.add(R.string.account_editor).setIntent(
AccountEditor.createIntent(this, account)); AccountEditor.createIntent(activity, account));
if (state.isConnected()) { if (state.isConnected()) {
menu.add(R.string.contact_viewer).setOnMenuItemClickListener( menu.add(R.string.contact_viewer).setOnMenuItemClickListener(
new MenuItem.OnMenuItemClickListener() { new MenuItem.OnMenuItemClickListener() {
...@@ -687,40 +697,36 @@ public class ContactList extends ManagedListActivity implements ...@@ -687,40 +697,36 @@ public class ContactList extends ManagedListActivity implements
Application.getInstance().onError( Application.getInstance().onError(
R.string.NOT_CONNECTED); R.string.NOT_CONNECTED);
else { else {
startActivity(ContactViewer.createIntent( activity.startActivity(ContactViewer
ContactList.this, account, user)); .createIntent(activity, account, user));
} }
return true; return true;
} }
}); });
menu.add(R.string.contact_add).setIntent( menu.add(R.string.contact_add).setIntent(
ContactAdd.createIntent(this, account)); ContactAdd.createIntent(activity, account));
} }
if (SettingsManager.contactsShowAccounts()) if (SettingsManager.contactsShowAccounts())
createOfflineModeContextMenu(account, null, menu); createOfflineModeContextMenu(adapter, account, null, menu);
} }
private void createOfflineModeContextMenu(String account, String group, private static void createOfflineModeContextMenu(UpdatableAdapter adapter,
ContextMenu menu) { String account, String group, ContextMenu menu) {
SubMenu mapMode = menu.addSubMenu(getResources().getText( SubMenu mapMode = menu.addSubMenu(R.string.show_offline_settings);
R.string.show_offline_settings));
mapMode.setHeaderTitle(R.string.show_offline_settings); mapMode.setHeaderTitle(R.string.show_offline_settings);
MenuItem always = mapMode.add(CONTEXT_MENU_SHOW_OFFLINE_GROUP_ID, 0, 0, MenuItem always = mapMode.add(CONTEXT_MENU_SHOW_OFFLINE_GROUP_ID, 0, 0,
getText(R.string.show_offline_always)) R.string.show_offline_always).setOnMenuItemClickListener(
.setOnMenuItemClickListener( new OfflineModeClickListener(adapter, account, group,
new OfflineModeClickListener(account, group, ShowOfflineMode.always));
ShowOfflineMode.always));
MenuItem normal = mapMode.add(CONTEXT_MENU_SHOW_OFFLINE_GROUP_ID, 0, 0, MenuItem normal = mapMode.add(CONTEXT_MENU_SHOW_OFFLINE_GROUP_ID, 0, 0,
getText(R.string.show_offline_normal)) R.string.show_offline_normal).setOnMenuItemClickListener(
.setOnMenuItemClickListener( new OfflineModeClickListener(adapter, account, group,
new OfflineModeClickListener(account, group, ShowOfflineMode.normal));
ShowOfflineMode.normal));
MenuItem never = mapMode.add(CONTEXT_MENU_SHOW_OFFLINE_GROUP_ID, 0, 0, MenuItem never = mapMode.add(CONTEXT_MENU_SHOW_OFFLINE_GROUP_ID, 0, 0,
getText(R.string.show_offline_never)) R.string.show_offline_never).setOnMenuItemClickListener(
.setOnMenuItemClickListener( new OfflineModeClickListener(adapter, account, group,
new OfflineModeClickListener(account, group, ShowOfflineMode.never));
ShowOfflineMode.never));
mapMode.setGroupCheckable(CONTEXT_MENU_SHOW_OFFLINE_GROUP_ID, true, mapMode.setGroupCheckable(CONTEXT_MENU_SHOW_OFFLINE_GROUP_ID, true,
true); true);
ShowOfflineMode showOfflineMode = GroupManager.getInstance() ShowOfflineMode showOfflineMode = GroupManager.getInstance()
...@@ -997,16 +1003,18 @@ public class ContactList extends ManagedListActivity implements ...@@ -997,16 +1003,18 @@ public class ContactList extends ManagedListActivity implements
0); 0);
} }
private class OfflineModeClickListener implements private static class OfflineModeClickListener implements
MenuItem.OnMenuItemClickListener { MenuItem.OnMenuItemClickListener {
private final UpdatableAdapter adapter;
private final String account; private final String account;
private final String group; private final String group;
private final ShowOfflineMode mode; private final ShowOfflineMode mode;
public OfflineModeClickListener(String account, String group, public OfflineModeClickListener(UpdatableAdapter adapter,
ShowOfflineMode mode) { String account, String group, ShowOfflineMode mode) {
super(); super();
this.adapter = adapter;
this.account = account; this.account = account;
this.group = group; this.group = group;
this.mode = mode; this.mode = mode;
...@@ -1016,7 +1024,7 @@ public class ContactList extends ManagedListActivity implements ...@@ -1016,7 +1024,7 @@ public class ContactList extends ManagedListActivity implements
public boolean onMenuItemClick(MenuItem item) { public boolean onMenuItemClick(MenuItem item) {
GroupManager.getInstance().setShowOfflineMode(account, GroupManager.getInstance().setShowOfflineMode(account,
group == null ? GroupManager.IS_ACCOUNT : group, mode); group == null ? GroupManager.IS_ACCOUNT : group, mode);
contactListAdapter.onChange(); adapter.onChange();
return true; return true;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment