@Override
  protected void onFinishInflate() {
    super.onFinishInflate();

    mFavoritesBackground = (LinearLayout) findViewById(R.id.starred_contacts);
    mFavoritesBackground.setBackgroundColor(ThemeManager.getBackgroundColor());

    mTitle = (QKTextView) findViewById(R.id.title);

    mFavorites = (LinearLayout) findViewById(R.id.favorites);

    mToggle = findViewById(R.id.toggle);
    mToggle.setOnClickListener(this);

    mIndicator = (ImageView) findViewById(R.id.indicator);

    if (mPrefs.getBoolean(SettingsFragment.COMPOSE_FAVORITES, true)) {
      expand();
    } else {
      collapse();
    }

    LiveViewManager.registerView(this);
    LiveViewManager.registerPreference(this, SettingsFragment.BACKGROUND);
    refresh();
  }
  @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);
  }
Beispiel #3
0
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    launchWelcomeActivity();

    setContentView(R.layout.activity_main);
    setTitle(R.string.title_conversation_list);
    ButterKnife.bind(this);

    setSlidingTabEnabled(mPrefs.getBoolean(SettingsFragment.SLIDING_TAB, false));
    mSlidingMenu.setListener(this);
    mSlidingMenu.setContent();
    mSlidingMenu.setMenu();
    mSlidingMenu.showContent(false);
    mSlidingMenu.showMenu(false);

    FragmentManager fm = getFragmentManager();

    mConversationList = (ConversationListFragment) fm.findFragmentById(R.id.menu_frame);
    if (mConversationList == null) {
      mConversationList = new ConversationListFragment();
    }
    mConversationList = new ConversationListFragment();
    FragmentTransaction menuTransaction = fm.beginTransaction();
    menuTransaction.replace(R.id.menu_frame, mConversationList);
    menuTransaction.commit();

    mContent = (ContentFragment) fm.findFragmentById(R.id.content_frame);
    if (mContent == null) {
      mContent = ComposeFragment.getInstance(null);
    }
    FragmentTransaction contentTransaction = fm.beginTransaction();
    contentTransaction.replace(R.id.content_frame, (Fragment) mContent);
    contentTransaction.commit();

    onNewIntent(getIntent());
    showDialogIfNeeded(savedInstanceState);

    LiveViewManager.registerView(
        QKPreference.BACKGROUND,
        this,
        key -> {
          // Update the background color. This code is important during the welcome screen setup,
          // when the activity
          // in the ThemeManager isn't the MainActivity
          mRoot.setBackgroundColor(ThemeManager.getBackgroundColor());
        });

    // Adds a small/non intrusive snackbar that asks the user to rate the app
    SnackEngage.from(this)
        .withSnack(new QKRateSnack().withDuration(BaseSnack.DURATION_LONG))
        .build()
        .engageWhenAppropriate();
  }
  @Override
  public void onDestroy() {
    super.onDestroy();

    LiveViewManager.unregisterView(this);
  }
Beispiel #5
0
  @Override
  public void onFinishInflate() {
    super.onFinishInflate();

    // Get references to the views
    mReplyText = (QKEditText) findViewById(R.id.compose_reply_text);
    mButton = (FrameLayout) findViewById(R.id.compose_button);
    mProgress = (DonutProgress) findViewById(R.id.progress);
    mButtonBackground = (ImageView) findViewById(R.id.compose_button_background);
    mButtonBar1 = (ImageView) findViewById(R.id.compose_button_bar_1);
    mButtonBar2 = (ImageView) findViewById(R.id.compose_button_bar_2);
    mAttachmentPanel = findViewById(R.id.attachment_panel);
    mAttach = (ImageButton) findViewById(R.id.attach);
    mCamera = (ImageButton) findViewById(R.id.camera);
    mDelay = (ImageButton) findViewById(R.id.delay);
    mLetterCount = (QKTextView) findViewById(R.id.compose_letter_count);
    mAttachmentLayout = (FrameLayout) findViewById(R.id.attachment);
    mAttachment = (AttachmentImageView) findViewById(R.id.compose_attachment);
    mCancel = (ImageButton) findViewById(R.id.cancel);

    mButton.setOnClickListener(this);
    mAttach.setOnClickListener(this);
    mCamera.setOnClickListener(this);
    mCancel.setOnClickListener(this);
    mDelay.setOnClickListener(this);

    LiveViewManager.registerView(
        QKPreference.THEME,
        this,
        key -> {
          mButtonBackground.setColorFilter(ThemeManager.getColor(), PorterDuff.Mode.SRC_ATOP);
          mButtonBar1.setColorFilter(
              ThemeManager.getTextOnColorPrimary(), PorterDuff.Mode.SRC_ATOP);
          mButtonBar2.setColorFilter(
              ThemeManager.getTextOnColorPrimary(), PorterDuff.Mode.SRC_ATOP);
          mAttachmentPanel.setBackgroundColor(ThemeManager.getColor());
          mAttach.setColorFilter(ThemeManager.getTextOnColorPrimary(), PorterDuff.Mode.SRC_ATOP);
          mCamera.setColorFilter(ThemeManager.getTextOnColorPrimary(), PorterDuff.Mode.SRC_ATOP);
          updateDelayButton();
          mProgress.setUnfinishedStrokeColor(ThemeManager.getTextOnColorSecondary());
          mProgress.setFinishedStrokeColor(ThemeManager.getTextOnColorPrimary());
          if (ThemeManager.getSentBubbleRes() != 0)
            mReplyText.setBackgroundResource(ThemeManager.getSentBubbleRes());
        });

    LiveViewManager.registerView(
        QKPreference.BACKGROUND,
        this,
        key -> {
          mReplyText
              .getBackground()
              .setColorFilter(ThemeManager.getNeutralBubbleColor(), PorterDuff.Mode.SRC_ATOP);
          getBackground()
              .setColorFilter(ThemeManager.getBackgroundColor(), PorterDuff.Mode.SRC_ATOP);
        });

    // There is an option for using the return button instead of the emoticon button in the
    // keyboard; set that up here.
    switch (Integer.parseInt(mPrefs.getString(SettingsFragment.ENTER_BUTTON, "0"))) {
      case 0: // emoji
        break;
      case 1: // new line
        mReplyText.setInputType(
            InputType.TYPE_CLASS_TEXT
                | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES
                | InputType.TYPE_TEXT_VARIATION_LONG_MESSAGE);
        mReplyText.setSingleLine(false);
        break;
      case 2: // send
        mReplyText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
        mReplyText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
        mReplyText.setSingleLine(false);
        mReplyText.setOnKeyListener(
            new OnKeyListener() { // Workaround because ACTION_SEND does not support multiline mode
              @Override
              public boolean onKey(View v, int keyCode, KeyEvent event) {
                if (keyCode == 66) {
                  sendSms();
                  return true;
                }
                return false;
              }
            });
        break;
    }

    mReplyText.setTextChangedListener(
        new QKEditText.TextChangedListener() {
          @Override
          public void onTextChanged(CharSequence s) {
            int length = s.length();

            updateButtonState(length);

            // If the reply is within 10 characters of the SMS limit (160), it will start counting
            // down
            // If the reply exceeds the SMS limit, it will count down until an extra message will
            // have to be sent, and shows how many messages will currently be sent
            if (length < 150) {
              mLetterCount.setText("");
            } else if (150 <= length && length <= 160) {
              mLetterCount.setText("" + (160 - length));
            } else if (160 < length) {
              mLetterCount.setText((160 - length % 160) + "/" + (length / 160 + 1));
            }
          }
        });

    mProgressAnimator = new ValueAnimator();
    mProgressAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
    mProgressAnimator.setDuration(mDelayDuration);
    mProgressAnimator.setIntValues(0, 360);
    mProgressAnimator.addUpdateListener(
        new ValueAnimator.AnimatorUpdateListener() {
          @Override
          public void onAnimationUpdate(ValueAnimator animation) {
            mProgress.setProgress((int) animation.getAnimatedValue());
          }
        });
    mProgressAnimator.addListener(
        new AnimatorListenerAdapter() {
          @Override
          public void onAnimationEnd(Animator animation) {
            super.onAnimationEnd(animation);
            mProgress.setVisibility(INVISIBLE);
            mProgress.setProgress(0);

            if (!mSendingCancelled) {
              sendSms();
              // In case they only enabled it for a particular message, let's set it back to the
              // pref value
              mDelayedMessagingEnabled = mPrefs.getBoolean(SettingsFragment.DELAYED, false);
              updateDelayButton();
            } else {
              mSendingCancelled = false;
              updateButtonState();
            }
          }
        });
  }