package com.quickblox.q_municate.ui.activities.main; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; import android.view.MenuItem; import android.view.View; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.assist.SimpleImageLoadingListener; import com.quickblox.chat.model.QBChatDialog; import com.quickblox.chat.model.QBDialogType; import com.quickblox.q_municate.R; import com.quickblox.q_municate.ui.activities.base.BaseLoggableActivity; import com.quickblox.q_municate.ui.activities.settings.SettingsActivity; import com.quickblox.q_municate.ui.fragments.chats.DialogsListFragment; import com.quickblox.q_municate.utils.helpers.FacebookHelper; import com.quickblox.q_municate.utils.helpers.ImportFriendsHelper; import com.quickblox.q_municate.utils.image.ImageLoaderUtils; import com.quickblox.q_municate.utils.MediaUtils; import com.quickblox.q_municate_core.core.command.Command; import com.quickblox.q_municate_core.models.AppSession; import com.quickblox.q_municate_core.models.UserCustomData; import com.quickblox.q_municate_core.service.QBServiceConsts; import com.quickblox.q_municate_core.utils.Utils; import com.quickblox.q_municate_core.utils.helpers.CoreSharedHelper; import com.quickblox.q_municate_db.managers.DataManager; import com.quickblox.q_municate_user_service.QMUserService; import com.quickblox.q_municate_user_service.model.QMUser; public class MainActivity extends BaseLoggableActivity { private static final String TAG = MainActivity.class.getSimpleName(); private FacebookHelper facebookHelper; private ImportFriendsSuccessAction importFriendsSuccessAction; private ImportFriendsFailAction importFriendsFailAction; public static void start(Context context) { Intent intent = new Intent(context, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); context.startActivity(intent); } @Override protected int getContentResId() { return R.layout.activity_main; } @Override public void onBackPressed() { if (getSupportFragmentManager().getBackStackEntryCount() == 1) { finish(); } else { super.onBackPressed(); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(TAG, "onCreate"); initFields(); setUpActionBarWithUpButton(); if (!isChatInitializedAndUserLoggedIn()) { Log.d(TAG, "onCreate. !isChatInitializedAndUserLoggedIn()"); loginChat(); } addDialogsAction(); launchDialogsListFragment(); openPushDialogIfPossible(); } private void openPushDialogIfPossible() { CoreSharedHelper sharedHelper = CoreSharedHelper.getInstance(); if (sharedHelper.needToOpenDialog()) { QBChatDialog chatDialog = DataManager.getInstance().getQBChatDialogDataManager() .getByDialogId(sharedHelper.getPushDialogId()); QMUser user = QMUserService.getInstance().getUserCache().get((long) sharedHelper.getPushUserId()); if(chatDialog != null) { startDialogActivity(chatDialog, user); } } } private void startDialogActivity(QBChatDialog chatDialog, QMUser user) { if (QBDialogType.PRIVATE.equals(chatDialog.getType())) { startPrivateChatActivity(user, chatDialog); } else { startGroupChatActivity(chatDialog); } } private void initFields() { Log.d(TAG, "initFields()"); title = " " + AppSession.getSession().getUser().getFullName(); importFriendsSuccessAction = new ImportFriendsSuccessAction(); importFriendsFailAction = new ImportFriendsFailAction(); facebookHelper = new FacebookHelper(MainActivity.this); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); facebookHelper.onActivityResult(requestCode, resultCode, data); if (SettingsActivity.REQUEST_CODE_LOGOUT == requestCode && RESULT_OK == resultCode) { startLandingScreen(); } } @Override public boolean onOptionsItemSelected(MenuItem item) { return false; } @Override protected void onStart() { super.onStart(); Log.d(TAG, "onStart()"); } @Override protected void onRestart() { super.onRestart(); Log.d(TAG, "onRestart()"); } @Override protected void onResume() { actualizeCurrentTitle(); super.onResume(); addActions(); } private void actualizeCurrentTitle() { if (AppSession.getSession().getUser().getFullName() != null) { title = " " + AppSession.getSession().getUser().getFullName(); } } @Override protected void onPause() { super.onPause(); removeActions(); } @Override protected void onDestroy() { super.onDestroy(); removeDialogsAction(); } @Override protected void checkShowingConnectionError() { if (!isNetworkAvailable()) { setActionBarTitle(getString(R.string.dlg_internet_connection_is_missing)); setActionBarIcon(null); } else { setActionBarTitle(title); checkVisibilityUserIcon(); } } @Override protected void performLoginChatSuccessAction(Bundle bundle) { super.performLoginChatSuccessAction(bundle); actualizeCurrentTitle(); } private void addDialogsAction() { addAction(QBServiceConsts.LOAD_CHATS_DIALOGS_SUCCESS_ACTION, new LoadChatsSuccessAction()); } private void removeDialogsAction() { removeAction(QBServiceConsts.LOAD_CHATS_DIALOGS_SUCCESS_ACTION); } private void addActions() { addAction(QBServiceConsts.IMPORT_FRIENDS_SUCCESS_ACTION, importFriendsSuccessAction); addAction(QBServiceConsts.IMPORT_FRIENDS_FAIL_ACTION, importFriendsFailAction); updateBroadcastActionList(); } private void removeActions() { removeAction(QBServiceConsts.IMPORT_FRIENDS_SUCCESS_ACTION); removeAction(QBServiceConsts.IMPORT_FRIENDS_FAIL_ACTION); updateBroadcastActionList(); } private void checkVisibilityUserIcon() { UserCustomData userCustomData = Utils.customDataToObject(AppSession.getSession().getUser().getCustomData()); if (!TextUtils.isEmpty(userCustomData.getAvatarUrl())) { loadLogoActionBar(userCustomData.getAvatarUrl()); } else { setActionBarIcon(MediaUtils.getRoundIconDrawable(this, BitmapFactory.decodeResource(getResources(), R.drawable.placeholder_user))); } } private void loadLogoActionBar(String logoUrl) { ImageLoader.getInstance().loadImage(logoUrl, ImageLoaderUtils.UIL_USER_AVATAR_DISPLAY_OPTIONS, new SimpleImageLoadingListener() { @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedBitmap) { setActionBarIcon(MediaUtils.getRoundIconDrawable(MainActivity.this, loadedBitmap)); } }); } private void performImportFriendsSuccessAction() { appSharedHelper.saveUsersImportInitialized(true); hideProgress(); } private void performImportFriendsFailAction(Bundle bundle) { performImportFriendsSuccessAction(); } private void launchDialogsListFragment() { Log.d(TAG, "launchDialogsListFragment()"); setCurrentFragment(DialogsListFragment.newInstance(), true); } private void startImportFriends() { ImportFriendsHelper importFriendsHelper = new ImportFriendsHelper(MainActivity.this); if (facebookHelper.isSessionOpened()) { importFriendsHelper.startGetFriendsListTask(true); } else { importFriendsHelper.startGetFriendsListTask(false); } hideProgress(); } private class ImportFriendsSuccessAction implements Command { @Override public void execute(Bundle bundle) { performImportFriendsSuccessAction(); } } private class ImportFriendsFailAction implements Command { @Override public void execute(Bundle bundle) { performImportFriendsFailAction(bundle); } } }