@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); }
@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); }
@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(); } } }); }