diff options
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 | 347 |
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)); - } - } -} |