Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.nesterov.omcmessenger.views.activity;
- import android.content.Intent;
- import android.os.Bundle;
- import android.support.design.widget.TabLayout;
- import android.support.v4.app.Fragment;
- import android.support.v4.view.ViewPager;
- import android.support.v7.app.AppCompatActivity;
- import android.support.v7.widget.Toolbar;
- import android.util.Log;
- import android.view.Menu;
- import android.view.MenuItem;
- import com.nesterov.omcmessenger.OMCMessengerApplication;
- import com.nesterov.omcmessenger.R;
- import com.nesterov.omcmessenger.adapters.MainPagerAdapter;
- import com.nesterov.omcmessenger.interfaces.MainFragmentsCallback;
- import com.nesterov.omcmessenger.utils.Preferences;
- import com.nesterov.omcmessenger.views.fragment.ChatFragment;
- import com.nesterov.omcmessenger.views.fragment.UsersListFragment;
- import com.quickblox.auth.QBAuth;
- import com.quickblox.auth.model.QBSession;
- import com.quickblox.chat.QBChatService;
- import com.quickblox.core.QBEntityCallback;
- import com.quickblox.core.exception.QBResponseException;
- import com.quickblox.users.model.QBUser;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * Created by Bohdan Protsyk
- */
- public class MainActivity extends AppCompatActivity implements MainFragmentsCallback {
- public static final int CODE_LOGIN = 10; //requestCode for LoginActivity
- private QBUser currentUser;
- private List<Fragment> mFragments = new ArrayList<>();
- private ChatFragment mChatFragment;
- private UsersListFragment mUsersFragment;
- protected Toolbar mToolbar;
- protected TabLayout mTabLayout;
- protected ViewPager mPager;
- protected MainPagerAdapter mAdapter;
- protected QBSession mSession;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- boolean isUserAuthorized = checkIfAuthorized();
- if (isUserAuthorized) {
- String login = Preferences.getStringPreference(getApplicationContext(), Preferences.LOGIN);
- String password = Preferences.getStringPreference(getApplicationContext(), Preferences.PASSWORD);
- String name = Preferences.getStringPreference(getApplicationContext(), Preferences.NAME);
- int id = Integer.parseInt(Preferences.getStringPreference(getApplicationContext(), Preferences.ID));
- currentUser = new QBUser(login, password);
- currentUser.setFullName(name);
- currentUser.setId(id);
- if (OMCMessengerApplication.DEBUG) {
- System.out.println(currentUser.toString());
- }
- mChatFragment = ChatFragment.newInstance(currentUser);
- mUsersFragment = UsersListFragment.newInstance(currentUser);
- mFragments.add(mChatFragment);
- mFragments.add(mUsersFragment);
- initView();
- } else {
- startLoginActivity();
- }
- }
- private void initView() {
- mPager = (ViewPager) findViewById(R.id.viewpager);
- mTabLayout = (TabLayout) findViewById(R.id.tabs);
- mAdapter = new MainPagerAdapter(getSupportFragmentManager(), mFragments);
- mPager.setAdapter(mAdapter);
- mTabLayout.setupWithViewPager(mPager);
- for (int i = 0; i < mTabLayout.getTabCount(); i++) {
- TabLayout.Tab tab = mTabLayout.getTabAt(i);
- switch (i) {
- case 0:
- tab.setIcon(R.drawable.ic_chat_white_24dp);
- break;
- case 1:
- tab.setIcon(R.drawable.ic_contacts_white_24dp);
- break;
- }
- }
- mToolbar = (Toolbar) findViewById(R.id.toolbar);
- mToolbar.setTitle(R.string.connecting);
- mToolbar.setNavigationIcon(R.drawable.connecting_icon);
- setSupportActionBar(mToolbar);
- invalidateOptionsMenu();
- initNewSession();
- }
- private void initNewSession() {
- QBAuth.createSession(currentUser, new QBEntityCallback<QBSession>() {
- @Override
- public void onSuccess(QBSession session, Bundle params) {
- runOnUiThread(() -> {
- mSession = session;
- mToolbar.setTitle(currentUser.getFullName());
- mToolbar.setNavigationIcon(R.drawable.online_icon);
- mChatFragment.setSession(session);
- });
- }
- @Override
- public void onError(QBResponseException errors) {
- runOnUiThread(() -> {
- mChatFragment.setSession(null);
- if (OMCMessengerApplication.DEBUG && errors != null) {
- Log.e(OMCMessengerApplication.TAG, "initNewSession" + ": " + errors.toString());
- }
- mToolbar.setTitle(R.string.error);
- mToolbar.setNavigationIcon(R.drawable.offline_icon);
- });
- }
- });
- }
- private void startLoginActivity() {
- Intent intent = new Intent(this, LoginActivity.class);
- startActivityForResult(intent, CODE_LOGIN);
- }
- private boolean checkIfAuthorized() {
- return Preferences.getStringPreference(getApplicationContext(), Preferences.LOGIN) != null
- && Preferences.getStringPreference(getApplicationContext(), Preferences.PASSWORD) != null
- && Preferences.getStringPreference(getApplicationContext(), Preferences.NAME) != null
- && Preferences.getStringPreference(getApplicationContext(), Preferences.ID) != null; //change to raw QBUser checking
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.main_menu, menu);
- return true;
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- int id = item.getItemId();
- if (id == R.id.logout) {
- logout();
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
- private void logout() {
- Preferences.saveUser(null, getApplicationContext());
- startLoginActivity();
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- if (data == null) {
- return;
- }
- switch (requestCode) {
- case CODE_LOGIN: {
- currentUser = (QBUser) data.getSerializableExtra(LoginActivity.USER);
- if (OMCMessengerApplication.DEBUG) {
- System.out.println(currentUser.toString());
- }
- mChatFragment = ChatFragment.newInstance(currentUser);
- mFragments.clear();
- mFragments.add(mChatFragment);
- initView();
- }
- }
- }
- @Override
- public void tryAgain() {
- mToolbar.setNavigationIcon(R.drawable.connecting_icon);
- mToolbar.setTitle(R.string.connecting);
- initNewSession();
- }
- @Override
- public void loggedIntoChat() {
- runOnUiThread(() -> mUsersFragment.chatReady(mSession));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement