diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2015-10-01 22:40:25 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2015-10-01 22:40:25 +0900 |
commit | 659646390ee980ac615f36585ddddee28c0526e4 (patch) | |
tree | 108b91f1417b037a9de78a1f8d151e7ef66571ef /app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java | |
parent | 977b58533271f8dcf9ce07da787cdac20d7891e7 (diff) | |
download | SmileEssence-659646390ee980ac615f36585ddddee28c0526e4.tar.gz |
☆マルチアカウント対応☆
Diffstat (limited to 'app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java')
-rw-r--r-- | app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java | 111 |
1 files changed, 55 insertions, 56 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java b/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java index 25a498e1..ce849742 100644 --- a/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java +++ b/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java @@ -36,22 +36,23 @@ import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.WindowManager; +import android.widget.TextView; +import com.android.volley.toolbox.NetworkImageView; import net.lacolaco.smileessence.Application; import net.lacolaco.smileessence.BuildConfig; import net.lacolaco.smileessence.IntentRouter; import net.lacolaco.smileessence.R; import net.lacolaco.smileessence.command.CommandOpenURL; +import net.lacolaco.smileessence.data.ImageCache; import net.lacolaco.smileessence.data.PostState; -import net.lacolaco.smileessence.entity.Account; -import net.lacolaco.smileessence.entity.CommandSetting; -import net.lacolaco.smileessence.entity.MuteUserIds; +import net.lacolaco.smileessence.entity.*; import net.lacolaco.smileessence.logging.Logger; import net.lacolaco.smileessence.notification.NotificationType; import net.lacolaco.smileessence.notification.Notificator; import net.lacolaco.smileessence.preference.InternalPreferenceHelper; import net.lacolaco.smileessence.preference.UserPreferenceHelper; -import net.lacolaco.smileessence.twitter.OAuthSession; import net.lacolaco.smileessence.twitter.UserStreamListener; +import net.lacolaco.smileessence.twitter.task.ShowUserTask; import net.lacolaco.smileessence.util.BitmapOptimizer; import net.lacolaco.smileessence.util.NetworkHelper; import net.lacolaco.smileessence.util.UIHandler; @@ -64,14 +65,15 @@ public class MainActivity extends AppCompatActivity { // ------------------------------ FIELDS ------------------------------ - public static final int REQUEST_OAUTH = 10; public static final int REQUEST_GET_PICTURE_FROM_GALLERY = 11; public static final int REQUEST_GET_PICTURE_FROM_CAMERA = 12; + private static final int REQUEST_MANAGE_ACCOUNT = 13; private ViewPager viewPager; private PageListAdapter pagerAdapter; private TwitterStream stream; private Uri cameraTempFilePath; private UserStreamListener userStreamListener; + private boolean waitingAccount = true; public Uri getCameraTempFilePath() { return cameraTempFilePath; @@ -134,8 +136,12 @@ public class MainActivity extends AppCompatActivity { @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { - case REQUEST_OAUTH: { - receiveOAuth(requestCode, resultCode, data); + case REQUEST_MANAGE_ACCOUNT: { + if (waitingAccount) { + // first run + waitingAccount = false; + startMainLogic(); + } break; } case REQUEST_GET_PICTURE_FROM_GALLERY: @@ -154,12 +160,14 @@ public class MainActivity extends AppCompatActivity { setContentView(R.layout.layout_main); Notificator.initialize(this); CommandSetting.initialize(); + Account.load(); if (setupLastUsedAccount()) { + waitingAccount = false; startMainLogic(); IntentRouter.onNewIntent(this, getIntent()); } else { - startOAuthActivity(); + startActivityForResult(new Intent(this, ManageAccountsActivity.class), REQUEST_MANAGE_ACCOUNT); } } @@ -200,6 +208,10 @@ public class MainActivity extends AppCompatActivity { startActivity(new Intent(this, SettingActivity.class)); return true; } + case R.id.actionbar_accounts: { + startActivity(new Intent(this, ManageAccountsActivity.class)); + return true; + } case R.id.actionbar_edit_templates: { startActivity(new Intent(this, EditTemplateActivity.class)); return true; @@ -319,13 +331,11 @@ public class MainActivity extends AppCompatActivity { public void startMainLogic() { initializeView(); - startTwitter(); + onChangeCurrentAccount(); } public boolean startStream() { - if (!new NetworkHelper(this).canConnect()) { - return false; - } + if (stream != null) { stream.shutdown(); } @@ -337,26 +347,36 @@ public class MainActivity extends AppCompatActivity { return true; } - public boolean startTwitter() { - if (!startStream()) { - return false; + private void onChangeCurrentAccount() { + if (!new NetworkHelper(this).canConnect()) { + return; // TODO: error message? } - MuteUserIds.refresh(Application.getCurrentAccount()); - Application.getCurrentAccount().refreshListSubscriptions(); - updateActionBarIcon(); - return true; - } - public void updateActionBarIcon() {/* - final ImageView homeIcon = (ImageView) findViewById(android.R.id.home); - new ShowUserTask(Application.getCurrentAccount(), Application.getCurrentAccount().getUserId()) - .onDoneUI(user -> { - String urlHttps = user.getProfileImageUrl(); - homeIcon.setScaleType(ImageView.ScaleType.FIT_CENTER); - new BitmapURLTask(urlHttps, homeIcon).execute(); - }) - .onFail(x -> Notificator.getInstance().publish(R.string.notice_error_show_user, NotificationType.ALERT)) - .execute();*/ + Account account = Application.getCurrentAccount(); + User user = account.getUser(); + startStream(); + MuteUserIds.refresh(account); + account.refreshListSubscriptions(); + + getSupportActionBar().setDisplayShowTitleEnabled(false); + final TextView toolbarTitle = (TextView) findViewById(R.id.toolbar_text); + final NetworkImageView iconImageView = (NetworkImageView) findViewById(R.id.toolbar_icon); + + Runnable update = () -> { + toolbarTitle.setText(account.getUser().getScreenName()); + String oldUrl = iconImageView.getImageURL(); + String newUrl = user.getProfileImageUrl(); + if (newUrl != null && (oldUrl == null || !oldUrl.equals(newUrl))) { + ImageCache.getInstance().setImageToView(newUrl, iconImageView); + } + }; + + update.run(); + user.addObserver(this, (x, changes) -> { + if (changes.contains(RBinding.BASIC)) update.run(); + }); + + new ShowUserTask(account, account.getUserId()).execute(); } private void getImageUri(int requestCode, int resultCode, Intent data) { @@ -396,10 +416,7 @@ public class MainActivity extends AppCompatActivity { public void initializeView() { Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); - //ActionBar bar = getActionBar(); - //bar.setDisplayShowHomeEnabled(true); - //bar.setDisplayShowTitleEnabled(false); - //bar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); + viewPager = (ViewPager) findViewById(R.id.viewPager); pagerAdapter = new PageListAdapter(this, viewPager); initializePages(); @@ -409,28 +426,14 @@ public class MainActivity extends AppCompatActivity { setSelectedPageIndex(pagerAdapter.getIndex(UserListFragment.class)); } - private void receiveOAuth(int requestCode, int resultCode, Intent data) { - if (resultCode != RESULT_OK) { - Logger.error(requestCode); - Notificator.getInstance().publish(R.string.notice_error_authenticate); - finish(); - } else { - Account account = new Account(data.getStringExtra(OAuthSession.KEY_TOKEN), - data.getStringExtra(OAuthSession.KEY_TOKEN_SECRET), - data.getLongExtra(OAuthSession.KEY_USER_ID, -1L), - data.getStringExtra(OAuthSession.KEY_SCREEN_NAME)); - account.save(); - Application.setCurrentAccount(account); - InternalPreferenceHelper.getInstance().set(R.string.key_last_used_account_id, account.getId()); - startMainLogic(); - } - } - private boolean setupLastUsedAccount() { long lastId = InternalPreferenceHelper.getInstance().get(R.string.key_last_used_account_id, -1L); Account account = null; if (lastId != -1) { - account = Account.load(Account.class, lastId); + account = Account.get(lastId); + } + if (account == null && Account.count() > 0) { + account = Account.all().get(0); } if (account != null) { Application.setCurrentAccount(account); @@ -439,8 +442,4 @@ public class MainActivity extends AppCompatActivity { return false; } } - - private void startOAuthActivity() { - startActivityForResult(new Intent(this, OAuthActivity.class), REQUEST_OAUTH); - } } |