package com.moez.QKSMS.ui.messagelist;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Intent;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.text.Html;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import com.moez.QKSMS.R;
import com.moez.QKSMS.common.AnalyticsManager;
import com.moez.QKSMS.common.ConversationPrefsHelper;
import com.moez.QKSMS.common.utils.PhoneNumberUtils;
import com.moez.QKSMS.mmssms.Utils;
import com.moez.QKSMS.ui.base.QKActivity;
import com.moez.QKSMS.ui.base.QKSwipeBackActivity;
import com.moez.QKSMS.ui.dialog.ConversationSettingsDialog;
import com.moez.QKSMS.ui.dialog.DefaultSmsHelper;
import com.moez.QKSMS.ui.settings.SettingsFragment;
import com.moez.QKSMS.ui.welcome.WelcomeActivity;
import java.net.URLDecoder;
public class MessageListActivity extends QKSwipeBackActivity {
private final String TAG = "MessageListActivity";
public static final String ARG_THREAD_ID = "thread_id";
public static final String ARG_ROW_ID = "rowId";
public static final String ARG_HIGHLIGHT = "highlight";
public static final String ARG_SHOW_IMMEDIATE = "showImmediate";
private static long mThreadId;
private long mRowId;
private String mHighlight;
private boolean mShowImmediate;
private long mWaitingForThreadId = -1;
public static boolean isInForeground;
public static void launch(QKActivity context, long threadId, long rowId, String pattern, boolean showImmediate) {
Intent intent = new Intent(context, MessageListActivity.class);
intent.putExtra(ARG_THREAD_ID, threadId);
intent.putExtra(ARG_ROW_ID, rowId);
intent.putExtra(ARG_HIGHLIGHT, pattern);
intent.putExtra(ARG_SHOW_IMMEDIATE, showImmediate);
context.startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
onNewIntent(getIntent());
}
@Override
protected void onResume() {
super.onResume();
isInForeground = true;
}
@Override
protected void onPause() {
super.onPause();
isInForeground = false;
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
mThreadId = intent.getLongExtra(ARG_THREAD_ID, -1);
mRowId = intent.getLongExtra(ARG_ROW_ID, -1);
mHighlight = intent.getStringExtra(ARG_HIGHLIGHT);
mShowImmediate = intent.getBooleanExtra(ARG_SHOW_IMMEDIATE, false);
if (mThreadId == -1 && intent.getData() != null) {
String data = intent.getData().toString();
String scheme = intent.getData().getScheme();
String address = null;
if (scheme.startsWith("smsto") || scheme.startsWith("mmsto")) {
address = data.replace("smsto:", "").replace("mmsto:", "");
} else if (scheme.startsWith("sms") || (scheme.startsWith("mms"))) {
address = data.replace("sms:", "").replace("mms:", "");
}
address = URLDecoder.decode(address);
address = "" + Html.fromHtml(address);
address = PhoneNumberUtils.formatNumber(address);
mThreadId = Utils.getOrCreateThreadId(this, address);
}
if (mThreadId != -1) {
Log.v(TAG, "Opening thread: " + mThreadId);
FragmentManager fm = getFragmentManager();
MessageListFragment fragment = (MessageListFragment) fm.findFragmentByTag(MessageListFragment.TAG);
if (fragment == null) {
fragment = MessageListFragment.getInstance(mThreadId, mRowId, mHighlight, mShowImmediate);
}
mSwipeBackLayout.setScrollChangedListener(fragment);
FragmentTransaction menuTransaction = fm.beginTransaction();
menuTransaction.replace(R.id.content_frame, fragment, MessageListFragment.TAG);
menuTransaction.commit();
} else {
String msg = "Couldn't open conversation: {action:";
msg += intent.getAction();
msg += ", data:";
msg += intent.getData() == null ? "null" : intent.getData().toString();
msg += ", scheme:";
msg += intent.getData() == null ? "null" : intent.getData().getScheme();
msg += ", extras:{";
Object[] keys = intent.getExtras().keySet().toArray();
for (int i = 0; i < keys.length; i++) {
String key = keys[i].toString();
msg += keys[i].toString();
msg += ":";
msg += intent.getExtras().get(key);
if (i < keys.length - 1) {
msg += ", ";
}
}
msg += "}}";
Log.d(TAG, msg);
AnalyticsManager.getInstance().log(msg);
makeToast(R.string.toast_conversation_error);
finish();
}
}
public void getResultForThreadId(long threadId) {
mWaitingForThreadId = threadId;
}
/**
* When In-App billing is done, it'll return information via onActivityResult().
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == ConversationSettingsDialog.RINGTONE_REQUEST_CODE) {
if (data != null) {
if (mWaitingForThreadId > 0) {
ConversationPrefsHelper conversationPrefs = new ConversationPrefsHelper(this, mWaitingForThreadId);
Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
conversationPrefs.putString(SettingsFragment.NOTIFICATION_TONE, (uri == null) ? "" : uri.toString());
mWaitingForThreadId = -1;
}
}
} else if (requestCode == WelcomeActivity.WELCOME_REQUEST_CODE) {
new DefaultSmsHelper(this, R.string.not_default_first).showIfNotDefault(null);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.message_list, menu);
return super.onCreateOptionsMenu(menu);
}
public static long getThreadId() {
return mThreadId;
}
}