package com.moez.QKSMS.ui.compose; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import com.android.ex.chips.recipientchip.DrawableRecipientChip; import com.moez.QKSMS.R; import com.moez.QKSMS.common.utils.KeyboardUtils; import com.moez.QKSMS.common.utils.PhoneNumberUtils; import com.moez.QKSMS.interfaces.ActivityLauncher; import com.moez.QKSMS.interfaces.RecipientProvider; import com.moez.QKSMS.mmssms.Utils; import com.moez.QKSMS.ui.base.QKFragment; import com.moez.QKSMS.ui.messagelist.MessageListActivity; import com.moez.QKSMS.ui.view.AutoCompleteContactView; import com.moez.QKSMS.ui.view.ComposeView; import com.moez.QKSMS.ui.view.StarredContactsView; public class ComposeFragment extends QKFragment implements ActivityLauncher, RecipientProvider, ComposeView.OnSendListener, AdapterView.OnItemClickListener { public static final String TAG = "ComposeFragment"; private AutoCompleteContactView mRecipients; private ComposeView mComposeView; private StarredContactsView mStarredContactsView; public ComposeFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_compose, container, false); mRecipients = (AutoCompleteContactView) view.findViewById(R.id.compose_recipients); mRecipients.setOnItemClickListener(this); mComposeView = (ComposeView) view.findViewById(R.id.compose_view); mComposeView.onOpenConversation(null, null); mComposeView.setActivityLauncher(this); mComposeView.setRecipientProvider(this); mComposeView.setOnSendListener(this); mComposeView.setLabel("Compose"); mStarredContactsView = (StarredContactsView) view.findViewById(R.id.starred_contacts); mStarredContactsView.setComposeScreenViews(mRecipients, mComposeView); new Handler().postDelayed(() -> KeyboardUtils.showAndFocus(mContext, mRecipients), 100); return view; } @Override public void onSend(String[] recipients, String body) { long threadId = Utils.getOrCreateThreadId(mContext, recipients[0]); if (threadId != 0) { mContext.finish(); MessageListActivity.launch(mContext, threadId, -1, null, true); } else { mContext.onBackPressed(); } } @Override public void onDestroy() { super.onDestroy(); if (mComposeView != null) { mComposeView.saveDraft(); } } /** * @return the addresses of all the contacts in the AutoCompleteContactsView. */ @Override public String[] getRecipientAddresses() { DrawableRecipientChip[] chips = mRecipients.getRecipients(); String[] addresses = new String[chips.length]; for (int i = 0; i < chips.length; i++) { addresses[i] = PhoneNumberUtils.stripSeparators(chips[i].getEntry().getDestination()); } return addresses; } /** * Photo Selection result */ @Override public void onActivityResult(int requestCode, int resultCode, final Intent data) { if (!mComposeView.onActivityResult(requestCode, resultCode, data)) { // Wasn't handled by ComposeView } } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { mRecipients.onItemClick(parent, view, position, id); mStarredContactsView.collapse(); mComposeView.requestReplyTextFocus(); } public boolean isReplyTextEmpty() { if (mComposeView != null) { return mComposeView.isReplyTextEmpty(); } return true; } }