예제 #1
0
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
    int itemId = item.getItemId();
    switch (itemId) {
      case android.R.id.home:
        {
          goBack();
          return true;
        }
      case R.id.compose:
        {
          mMessageListFragment.onCompose();
          return true;
        }
      case R.id.toggle_message_view_theme:
        {
          onToggleTheme();
          return true;
        }
        // MessageList
      case R.id.check_mail:
        {
          mMessageListFragment.checkMail();
          return true;
        }
      case R.id.set_sort_date:
        {
          mMessageListFragment.changeSort(SortType.SORT_DATE);
          return true;
        }
      case R.id.set_sort_arrival:
        {
          mMessageListFragment.changeSort(SortType.SORT_ARRIVAL);
          return true;
        }
      case R.id.set_sort_subject:
        {
          mMessageListFragment.changeSort(SortType.SORT_SUBJECT);
          return true;
        }
        //            case R.id.set_sort_sender: {
        //                mMessageListFragment.changeSort(SortType.SORT_SENDER);
        //                return true;
        //            }
      case R.id.set_sort_flag:
        {
          mMessageListFragment.changeSort(SortType.SORT_FLAGGED);
          return true;
        }
      case R.id.set_sort_unread:
        {
          mMessageListFragment.changeSort(SortType.SORT_UNREAD);
          return true;
        }
      case R.id.set_sort_attach:
        {
          mMessageListFragment.changeSort(SortType.SORT_ATTACHMENT);
          return true;
        }
      case R.id.select_all:
        {
          mMessageListFragment.selectAll();
          return true;
        }
      case R.id.app_settings:
        {
          onEditPrefs();
          return true;
        }
      case R.id.account_settings:
        {
          onEditAccount();
          return true;
        }
      case R.id.search:
        {
          mMessageListFragment.onSearchRequested();
          return true;
        }
      case R.id.search_remote:
        {
          mMessageListFragment.onRemoteSearch();
          return true;
        }
        // MessageView
      case R.id.next_message:
        {
          showNextMessage();
          return true;
        }
      case R.id.previous_message:
        {
          showPreviousMessage();
          return true;
        }
      case R.id.delete:
        {
          mMessageViewFragment.onDelete();
          return true;
        }
      case R.id.reply:
        {
          mMessageViewFragment.onReply();
          return true;
        }
      case R.id.reply_all:
        {
          mMessageViewFragment.onReplyAll();
          return true;
        }
      case R.id.forward:
        {
          mMessageViewFragment.onForward();
          return true;
        }
      case R.id.share:
        {
          mMessageViewFragment.onSendAlternate();
          return true;
        }
      case R.id.toggle_unread:
        {
          mMessageViewFragment.onToggleRead();
          return true;
        }
      case R.id.archive:
        {
          mMessageViewFragment.onArchive();
          return true;
        }
      case R.id.spam:
        {
          mMessageViewFragment.onSpam();
          return true;
        }
      case R.id.move:
        {
          mMessageViewFragment.onMove();
          return true;
        }
      case R.id.copy:
        {
          mMessageViewFragment.onCopy();
          return true;
        }
      case R.id.select_text:
        {
          mMessageViewFragment.onSelectText();
          return true;
        }
      case R.id.show_headers:
      case R.id.hide_headers:
        {
          mMessageViewFragment.onToggleAllHeadersView();
          updateMenu();
          return true;
        }
    }

    if (!mSingleFolderMode) {
      // None of the options after this point are "safe" for search results
      // TODO: This is not true for "unread" and "starred" searches in regular folders
      return false;
    }

    switch (itemId) {
      case R.id.send_messages:
        {
          mMessageListFragment.onSendPendingMessages();
          return true;
        }
      case R.id.folder_settings:
        {
          if (mFolderName != null) {
            FolderSettings.actionSettings(this, mAccount, mFolderName);
          }
          return true;
        }
      case R.id.expunge:
        {
          mMessageListFragment.onExpunge();
          return true;
        }
      default:
        {
          return super.onOptionsItemSelected(item);
        }
    }
  }
예제 #2
0
  /**
   * Handle hotkeys
   *
   * <p>This method is called by {@link #dispatchKeyEvent(KeyEvent)} before any view had the chance
   * to consume this key event.
   *
   * @param keyCode The value in {@code event.getKeyCode()}.
   * @param event Description of the key event.
   * @return {@code true} if this event was consumed.
   */
  public boolean onCustomKeyDown(final int keyCode, final KeyEvent event) {
    switch (keyCode) {
      case KeyEvent.KEYCODE_VOLUME_UP:
        {
          if (mMessageViewFragment != null
              && mDisplayMode != DisplayMode.MESSAGE_LIST
              && K9.useVolumeKeysForNavigationEnabled()) {
            showPreviousMessage();
            return true;
          } else if (mDisplayMode != DisplayMode.MESSAGE_VIEW
              && K9.useVolumeKeysForListNavigationEnabled()) {
            mMessageListFragment.onMoveUp();
            return true;
          }

          break;
        }
      case KeyEvent.KEYCODE_VOLUME_DOWN:
        {
          if (mMessageViewFragment != null
              && mDisplayMode != DisplayMode.MESSAGE_LIST
              && K9.useVolumeKeysForNavigationEnabled()) {
            showNextMessage();
            return true;
          } else if (mDisplayMode != DisplayMode.MESSAGE_VIEW
              && K9.useVolumeKeysForListNavigationEnabled()) {
            mMessageListFragment.onMoveDown();
            return true;
          }

          break;
        }
      case KeyEvent.KEYCODE_C:
        {
          mMessageListFragment.onCompose();
          return true;
        }
      case KeyEvent.KEYCODE_Q:
        {
          onShowFolderList();
          return true;
        }
      case KeyEvent.KEYCODE_O:
        {
          mMessageListFragment.onCycleSort();
          return true;
        }
      case KeyEvent.KEYCODE_I:
        {
          mMessageListFragment.onReverseSort();
          return true;
        }
      case KeyEvent.KEYCODE_DEL:
      case KeyEvent.KEYCODE_D:
        {
          if (mDisplayMode == DisplayMode.MESSAGE_LIST) {
            mMessageListFragment.onDelete();
          } else if (mMessageViewFragment != null) {
            mMessageViewFragment.onDelete();
          }
          return true;
        }
      case KeyEvent.KEYCODE_S:
        {
          mMessageListFragment.toggleMessageSelect();
          return true;
        }
      case KeyEvent.KEYCODE_G:
        {
          if (mDisplayMode == DisplayMode.MESSAGE_LIST) {
            mMessageListFragment.onToggleFlagged();
          } else if (mMessageViewFragment != null) {
            mMessageViewFragment.onToggleFlagged();
          }
          return true;
        }
      case KeyEvent.KEYCODE_M:
        {
          if (mDisplayMode == DisplayMode.MESSAGE_LIST) {
            mMessageListFragment.onMove();
          } else if (mMessageViewFragment != null) {
            mMessageViewFragment.onMove();
          }
          return true;
        }
      case KeyEvent.KEYCODE_V:
        {
          if (mDisplayMode == DisplayMode.MESSAGE_LIST) {
            mMessageListFragment.onArchive();
          } else if (mMessageViewFragment != null) {
            mMessageViewFragment.onArchive();
          }
          return true;
        }
      case KeyEvent.KEYCODE_Y:
        {
          if (mDisplayMode == DisplayMode.MESSAGE_LIST) {
            mMessageListFragment.onCopy();
          } else if (mMessageViewFragment != null) {
            mMessageViewFragment.onCopy();
          }
          return true;
        }
      case KeyEvent.KEYCODE_Z:
        {
          if (mDisplayMode == DisplayMode.MESSAGE_LIST) {
            mMessageListFragment.onToggleRead();
          } else if (mMessageViewFragment != null) {
            mMessageViewFragment.onToggleRead();
          }
          return true;
        }
      case KeyEvent.KEYCODE_F:
        {
          if (mMessageViewFragment != null) {
            mMessageViewFragment.onForward();
          }
          return true;
        }
      case KeyEvent.KEYCODE_A:
        {
          if (mMessageViewFragment != null) {
            mMessageViewFragment.onReplyAll();
          }
          return true;
        }
      case KeyEvent.KEYCODE_R:
        {
          if (mMessageViewFragment != null) {
            mMessageViewFragment.onReply();
          }
          return true;
        }
      case KeyEvent.KEYCODE_J:
      case KeyEvent.KEYCODE_P:
        {
          if (mMessageViewFragment != null) {
            showPreviousMessage();
          }
          return true;
        }
      case KeyEvent.KEYCODE_N:
      case KeyEvent.KEYCODE_K:
        {
          if (mMessageViewFragment != null) {
            showNextMessage();
          }
          return true;
        }
        /* FIXME
        case KeyEvent.KEYCODE_Z: {
            mMessageViewFragment.zoom(event);
            return true;
        }*/
      case KeyEvent.KEYCODE_H:
        {
          Toast toast = Toast.makeText(this, R.string.message_list_help_key, Toast.LENGTH_LONG);
          toast.show();
          return true;
        }
    }

    return false;
  }