コード例 #1
0
 @Override
 public void onItemClick(Conversation conversation, View view) {
   if (mAdapter.isInMultiSelectMode()) {
     mAdapter.toggleSelection(conversation.getThreadId());
   } else {
     ((MainActivity) mContext).setConversation(conversation.getThreadId(), -1, null, true);
   }
 }
コード例 #2
0
  @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);
  }
コード例 #3
0
  @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);
  }
コード例 #4
0
  @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);
    }
  }
コード例 #5
0
 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;
     }
   }
 }
コード例 #6
0
 public void onLoaderReset(Loader<Cursor> loader) {
   if (mAdapter != null) {
     mAdapter.changeCursor(null);
   }
 }
コード例 #7
0
 public void setPosition(int position) {
   mPosition = position;
   if (mLayoutManager != null && mAdapter != null) {
     mLayoutManager.scrollToPosition(Math.min(mPosition, mAdapter.getCount() - 1));
   }
 }
コード例 #8
0
  @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");
  }