aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java
diff options
context:
space:
mode:
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.java347
1 files changed, 0 insertions, 347 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
deleted file mode 100644
index 4997f3f1..00000000
--- a/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java
+++ /dev/null
@@ -1,347 +0,0 @@
-/*
- * The MIT License (MIT)
- *
- * Copyright (c) 2012-2014 lacolaco.net
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-package net.lacolaco.smileessence.activity;
-
-import android.app.ActionBar;
-import android.app.Activity;
-import android.app.ActivityManager;
-import android.content.Intent;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Bundle;
-import android.provider.MediaStore;
-import android.support.v4.view.ViewPager;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.WindowManager;
-import android.widget.ImageView;
-import de.keyboardsurfer.android.widget.crouton.Crouton;
-import net.lacolaco.smileessence.*;
-import net.lacolaco.smileessence.data.Account;
-import net.lacolaco.smileessence.data.ExtractionWord;
-import net.lacolaco.smileessence.entity.RBinding;
-import net.lacolaco.smileessence.entity.User;
-import net.lacolaco.smileessence.logging.Logger;
-import net.lacolaco.smileessence.twitter.task.Users;
-import net.lacolaco.smileessence.util.BitmapOptimizer;
-import net.lacolaco.smileessence.util.BitmapURLTask;
-import net.lacolaco.smileessence.util.IntentUtils;
-import net.lacolaco.smileessence.util.UIObserverBundle;
-import net.lacolaco.smileessence.view.adapter.PageListAdapter;
-import net.lacolaco.smileessence.view.dialog.ConfirmDialogFragment;
-import net.lacolaco.smileessence.view.page.*;
-
-import java.lang.reflect.Field;
-
-public class MainActivity extends Activity implements ViewPager.OnPageChangeListener {
- public static final int REQUEST_GET_PICTURE_FROM_GALLERY = 11;
- private final UIObserverBundle currentUserBundle = new UIObserverBundle();
- private World world;
- private ViewPager viewPager;
- private ImageView currentAccountIconImageView;
- private PageListAdapter pagerAdapter;
-
- public World getWorld() {
- return world;
- }
-
- private void setSelectedPageIndex(int position) {
- setSelectedPageIndex(position, true);
- }
-
- private void setSelectedPageIndex(int position, boolean smooth) {
- viewPager.setCurrentItem(position, smooth);
- }
-
- public void openHomePage() {
- setSelectedPageIndex(pagerAdapter.getIndex(HomeFragment.class));
- }
-
- public void openPostPage() {
- setSelectedPageIndex(pagerAdapter.getIndex(PostFragment.class));
- }
-
- public void openPostPageWithImage(Uri uri) {
- try {
- Cursor c = getContentResolver().query(uri, null, null, null, null);
- assert c != null;
- c.moveToFirst();
- String path = c.getString(c.getColumnIndex(MediaStore.MediaColumns.DATA));
- String rotatedPath = path; // BitmapOptimizer.rotateImageByExif(this, path);
- world.getPostState().beginTransaction()
- .setMediaFilePath(rotatedPath)
- .commitWithOpen(this);
- world.notify(R.string.notice_select_image_succeeded);
- c.close();
- } catch (Exception e) {
- e.printStackTrace();
- world.notifyError(R.string.notice_select_image_failed);
- }
- }
-
- public void openSearchPage(String query) {
- SearchFragment fragment = (SearchFragment) pagerAdapter.getCachedFragment(pagerAdapter.getIndex(SearchFragment.class));
- if (fragment != null) {
- fragment.startSearch(query);
- setSelectedPageIndex(pagerAdapter.getIndex(SearchFragment.class));
- }
- }
-
- public void openUserListPage(String listFullName) {
- UserListFragment fragment = (UserListFragment) pagerAdapter.getCachedFragment(pagerAdapter.getIndex(UserListFragment.class));
- if (fragment != null) {
- fragment.startUserList(listFullName);
- setSelectedPageIndex(pagerAdapter.getIndex(UserListFragment.class));
- }
- }
-
- // ------------------------ OVERRIDE METHODS ------------------------
-
- @Override
- public void onBackPressed() {
- this.finish();
- }
-
- @Override
- public void finish() {
- if (viewPager == null) {
- super.finish();
- return;
- }
- int homeIndex = pagerAdapter.getIndex(HomeFragment.class);
- if (viewPager.getCurrentItem() != homeIndex) {
- viewPager.setCurrentItem(homeIndex, true);
- } else {
- ConfirmDialogFragment.show(this, getString(R.string.dialog_confirm_finish_app), super::finish);
- }
- }
-
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- switch (requestCode) {
- case REQUEST_GET_PICTURE_FROM_GALLERY:
- getImageUri(requestCode, resultCode, data);
- break;
- }
- }
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- Logger.debug("onCreate");
- super.onCreate(savedInstanceState);
-
- Uri uri = getIntent().getData();
- if (uri == null) {
- throw new IllegalStateException("[BUG] data not set");
- }
- String userIdValue = uri.getQueryParameter("user_id");
- if (userIdValue == null)
- throw new IllegalStateException("[BUG] user_id not set");
- long userId = Long.parseLong(userIdValue);
- world = Application.getWorld(userId);
- world.setMainActivity(this);
-
- // XXX
- Account account = world.getAccount();
-
- setTheme(account.themeIndex == 0 ? R.style.theme_dark : R.style.theme_light);
- setContentView(R.layout.layout_main);
-
- viewPager = (ViewPager) findViewById(R.id.viewPager);
- pagerAdapter = new PageListAdapter(this);
- viewPager.addOnPageChangeListener(this);
- getActionBar().setDisplayHomeAsUpEnabled(true);
- currentAccountIconImageView = (ImageView) findViewById(android.R.id.home);
- currentAccountIconImageView.setScaleType(ImageView.ScaleType.FIT_XY);
-
- // TODO: tab order?
- Bundle args = new Bundle();
- args.putLong(PageFragment.KEY_USER_ID, account.getUserId());
- pagerAdapter.addPage(PostFragment.class, getString(R.string.page_name_post), args, false);
- pagerAdapter.addPage(HomeFragment.class, getString(R.string.page_name_home), args, false);
- pagerAdapter.addPage(MentionsFragment.class, getString(R.string.page_name_mentions), args, false);
- pagerAdapter.addPage(HistoryFragment.class, getString(R.string.page_name_history), args, false);
- pagerAdapter.addPage(MessagesFragment.class, getString(R.string.page_name_messages), args, false);
- pagerAdapter.addPage(SearchFragment.class, getString(R.string.page_name_search), args, false);
- pagerAdapter.addPage(UserListFragment.class, getString(R.string.page_name_list), args, false);
- pagerAdapter.notifyDataSetChanged();
- viewPager.setOffscreenPageLimit(pagerAdapter.getCount());
- viewPager.setAdapter(pagerAdapter);
- setSelectedPageIndex(pagerAdapter.getIndex(HomeFragment.class), false);
-
- ExtractionWord.load();
-
- // update cache
- world.refreshListSubscriptions();
- world.refreshUserMuteList();
- world.refreshSavedSearches();
- new Users.GetTask(account, account.getUserId()).execute();
-
- User user = account.getUser();
-
- // Set application title
- setTitle();
-
- // update actionbar
- Runnable update = () -> {
- setTitle();
- updateActionBarTitle();
- String newUrl = user.getProfileImageUrlOriginal();
- if (newUrl != null) {
- new BitmapURLTask(newUrl, currentAccountIconImageView).execute();
- }
- };
- update.run(); //first run
-
- currentUserBundle.detachAll();
- currentUserBundle.attach(user, changes -> {
- if (changes.contains(RBinding.BASIC)) update.run();
- });
-
- // refresh all pages
- for (int i = 0; i < pagerAdapter.getCount(); ++i) {
- PageFragment pf = pagerAdapter.getCachedFragment(i);
- if (pf != null && pf.isAdded()) {
- Logger.debug(String.format("PageFragment %s is already attached; refreshing", pf.getClass().getName()));
- pf.refresh();
- }
- }
-
- // start user stream
- world.setupStreaming();
- }
-
- private void setTitle() {
- String label = getString(R.string.app_name) + " - @" + world.getAccount().getUser().getScreenName();
- ActivityManager.TaskDescription desc = new ActivityManager.TaskDescription(label);
- setTaskDescription(desc);
- }
-
- @Override
- protected void onDestroy() {
- super.onDestroy();
- currentUserBundle.detachAll();
- Crouton.cancelAllCroutons();
- // Workaround for LeakCanary
- fixCroutonLeak();
- Logger.debug("onDestroy");
- }
-
- private void fixCroutonLeak() {
- try {
- Class klass = Class.forName("de.keyboardsurfer.android.widget.crouton.DefaultAnimationsBuilder");
- Field slideInDownAnimation = klass.getDeclaredField("slideInDownAnimation");
- slideInDownAnimation.setAccessible(true);
- slideInDownAnimation.set(null, null);
- Field slideOutUpAnimation = klass.getDeclaredField("slideOutUpAnimation");
- slideOutUpAnimation.setAccessible(true);
- slideOutUpAnimation.set(null, null);
- } catch (Exception e) {
- Logger.error("crouton fix error: " + e);
- }
- }
-
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.main, menu);
- return true;
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case android.R.id.home: {
- Intent intent = new Intent(this, ManageAccountsActivity.class);
- intent.putExtra(ManageAccountsActivity.INTENT_KEY_NOINIT, true);
- startActivity(intent);
- return true;
- }
- case R.id.actionbar_setting:
- startActivity(new Intent(this, SettingActivity.class));
- return true;
- case R.id.actionbar_edit_extraction:
- startActivity(new Intent(this, EditExtractionActivity.class));
- return true;
- case R.id.actionbar_aclog:
- IntentUtils.openUri(this, world.getAccount().getUser().getAclogTimelineURL());
- return true;
- default:
- return super.onOptionsItemSelected(item);
- }
- }
-
- @Override
- protected void onPause() {
- Logger.debug("onPause");
- super.onPause();
- world.setMainActivityActive(false);
- }
-
- @Override
- protected void onResume() {
- Logger.debug("onResume");
- super.onResume();
- world.setMainActivityActive(true);
- }
-
- // --------------------- Interface OnPageChangeListener ---------------------
-
- @Override
- public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
- }
-
- @Override
- public void onPageSelected(int position) {
- Logger.debug("Page selected: " + position);
- updateActionBarTitle();
- }
-
- @Override
- public void onPageScrollStateChanged(int state) {
- }
-
- // -------------------------- OTHER METHODS --------------------------
-
- private void getImageUri(int requestCode, int resultCode, Intent data) {
- if (resultCode != RESULT_OK) {
- Logger.error(requestCode);
- world.notifyError(R.string.notice_select_image_failed);
- finish();
- return;
- }
- openPostPageWithImage(data.getData());
- }
-
- private void updateActionBarTitle() {
- ActionBar actionBar = getActionBar();
- Account currentAccount = world.getAccount();
- if (actionBar != null) {
- String screenName = currentAccount.getUser().getScreenName();
- String pageTitle = pagerAdapter.getName(viewPager.getCurrentItem());
- setTitle(String.format("%s / %s", screenName, pageTitle));
- }
- }
-}