@Override public void onItemClick(Conversation conversation, View view) { if (mAdapter.isInMultiSelectMode()) { mAdapter.toggleSelection(conversation.getThreadId()); } else { ((MainActivity) mContext).setConversation(conversation.getThreadId(), -1, null, true); } }
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mContext = (QKActivity) getActivity(); setHasOptionsMenu(true); mAdapter = new ConversationListAdapter(mContext); mAdapter.setItemClickListener(this); mAdapter.setMultiSelectListener(this); mLayoutManager = new LinearLayoutManager(mContext); mConversationDetailsDialog = new ConversationDetailsDialog(mContext, getFragmentManager()); LiveViewManager.registerView(this); LiveViewManager.registerPreference(this, SettingsFragment.THEME); }
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_delete: DialogHelper.showDeleteConversationsDialog((MainActivity) mContext, mAdapter); return true; case R.id.menu_mark_read: for (long threadId : mAdapter.getSelectedItems()) { new ConversationLegacy(mContext, threadId).markRead(); } mAdapter.disableMultiSelectMode(true); return true; } return super.onOptionsItemSelected(item); }
@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); // Make sure we're only touching the conversation menu if (menu.findItem(R.id.menu_search) != null) { if (mAdapter.isInMultiSelectMode()) { menu.findItem(R.id.menu_search).setVisible(false); menu.findItem(R.id.menu_delete).setVisible(true); menu.findItem(R.id.menu_mark_read).setVisible(true); } else { menu.findItem(R.id.menu_search).setVisible(true); menu.findItem(R.id.menu_delete).setVisible(false); menu.findItem(R.id.menu_mark_read).setVisible(false); } } else { mAdapter.disableMultiSelectMode(false); } }
public void onLoadFinished(Loader<Cursor> loader, Cursor data) { if (mAdapter != null) { // Swap the new cursor in. (The framework will take care of closing the, old cursor once we // return.) mAdapter.changeCursor(data); if (mPosition != 0) { mRecyclerView.scrollToPosition(Math.min(mPosition, data.getCount() - 1)); mPosition = 0; } } }
public void onLoaderReset(Loader<Cursor> loader) { if (mAdapter != null) { mAdapter.changeCursor(null); } }
public void setPosition(int position) { mPosition = position; if (mLayoutManager != null && mAdapter != null) { mLayoutManager.scrollToPosition(Math.min(mPosition, mAdapter.getCount() - 1)); } }
@Override public void onItemLongClick(final Conversation conversation, View view) { if (mAdapter.isInMultiSelectMode()) { mAdapter.toggleSelection(conversation.getThreadId()); return; } final long threadId = conversation.getThreadId(); final String name = conversation.getRecipients().formatNames(", "); final ConversationPrefsHelper conversationPrefs = new ConversationPrefsHelper(mContext, threadId); final boolean muted = !conversationPrefs.getNotificationsEnabled(); final QKDialog dialog = new QKDialog().setContext(mContext).setTitle(name); if (!mAdapter.isInMultiSelectMode()) { dialog.addMenuItem(R.string.menu_multi_select, MENU_MULTI_SELECT); } if (muted) { dialog.addMenuItem(R.string.menu_unmute_conversation, MENU_UNMUTE_CONVERSATION); } else { dialog.addMenuItem(R.string.menu_mute_conversation, MENU_MUTE_CONVERSATION); } if (conversation.hasUnreadMessages()) { dialog.addMenuItem(R.string.menu_mark_read, MENU_MARK_READ); } else { dialog.addMenuItem(R.string.menu_mark_unread, MENU_MARK_UNREAD); } dialog.addMenuItem(R.string.menu_notification_settings, MENU_NOTIFICATION_SETTINGS); dialog.addMenuItem(R.string.menu_view_details, MENU_VIEW_DETAILS); if (conversation.hasError()) { dialog.addMenuItem(R.string.delete_all_failed, MENU_DELETE_FAILED); } dialog.addMenuItem(R.string.menu_delete_conversation, MENU_DELETE_CONVERSATION); dialog .buildMenu( new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { switch ((int) id) { case MENU_MUTE_CONVERSATION: conversationPrefs.putBoolean(SettingsFragment.NOTIFICATIONS, false); mAdapter.notifyDataSetChanged(); break; case MENU_UNMUTE_CONVERSATION: conversationPrefs.putBoolean(SettingsFragment.NOTIFICATIONS, true); mAdapter.notifyDataSetChanged(); break; case MENU_NOTIFICATION_SETTINGS: ConversationNotificationSettingsDialog.newInstance(threadId, name) .setContext(mContext) .show(((MainActivity) mContext).getFragmentManager(), "notification prefs"); break; case MENU_VIEW_DETAILS: mConversationDetailsDialog.showDetails(conversation); break; case MENU_MARK_READ: new ConversationLegacy(mContext, threadId).markRead(); break; case MENU_MARK_UNREAD: new ConversationLegacy(mContext, threadId).markUnread(); break; case MENU_MULTI_SELECT: mAdapter.setSelected(threadId); break; case MENU_DELETE_CONVERSATION: DialogHelper.showDeleteConversationDialog((MainActivity) mContext, threadId); break; case MENU_DELETE_FAILED: // Deletes all failed messages from all conversations DialogHelper.showDeleteFailedMessagesDialog((MainActivity) mContext, threadId); break; } } }) .show(mContext.getFragmentManager(), "conversation options"); }