+++ /dev/null
-/*
- Copyright (C) 2014 Samsung Electronics Polska Sp. z o.o.
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU AFFERO General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
- You may obtain a copy of the License at
-
- http://www.gnu.org/licenses/agpl-3.0.txt
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-package com.samsung.srpol.ui;
-
-import java.util.List;
-
-import com.samsung.srpol.R;
-import com.samsung.srpol.loader.AppDetails;
-import com.samsung.srpol.loader.AppListLoader;
-import com.samsung.srpol.ui.drawer.MenuFragment;
-import com.samsung.srpol.ui.drawer.NavigationDrawerItemListener;
-import com.samsung.srpol.ui.tabpager.PageAdapter;
-
-import android.support.v7.app.ActionBarActivity;
-import android.support.v7.app.ActionBar;
-import android.support.v4.app.ActionBarDrawerToggle;
-import android.support.v4.app.LoaderManager;
-import android.support.v4.content.Loader;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnDismissListener;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.os.Bundle;
-import android.os.Handler;
-import android.preference.PreferenceManager;
-import android.util.Log;
-import android.view.Gravity;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.support.v4.view.GravityCompat;
-import android.support.v4.view.PagerTabStrip;
-import android.support.v4.view.ViewPager;
-import android.support.v4.widget.DrawerLayout;
-
-public class MainActivity extends ActionBarActivity implements
- LoaderManager.LoaderCallbacks<List<AppDetails>> {
- public static final String TAG = "MainActivity";
-
- private static final String STATE_WELCOME_DIALOG_IS_OPEN = "welcome_dialog_is_open";
- private static final String STATE_WELCOME_DIALOG_OPENED_FROM_MENU = "welcome_dialog_opened_from_menu";
- private static final String STATE_DRAWER_MENU_IS_OPEN = "state_drawer_menu_is_open";
-
- private MenuFragment mMenuFragment;
-
- private WelcomeDialog mWelcomeDialog;
- private ViewPager mViewPager;
- private PageAdapter mFramePagerAdapter;
- private boolean mDrawerOpenState = false;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- if (savedInstanceState != null) {
- boolean isWelcomeDialogOpen = savedInstanceState.getBoolean(
- STATE_WELCOME_DIALOG_IS_OPEN, false);
- if (isWelcomeDialogOpen) {
- boolean isOpenedFromMenu = savedInstanceState.getBoolean(
- STATE_WELCOME_DIALOG_OPENED_FROM_MENU, false);
- showWelcomeDialog(isOpenedFromMenu);
- }
- mDrawerOpenState = savedInstanceState.getBoolean(STATE_DRAWER_MENU_IS_OPEN, false);
- } else {
- showWelcomeDialog(false);
- }
-
- getSupportLoaderManager().initLoader(0, null, this);
-
- // if Loader was created then we have all data to create
- // NavigationDrawer otherwise wait for loader to be created and then
- // create NavigationDrawer
- if (getSupportLoaderManager().getLoader(0) != null) {
- initNavigationDrawer();
- }
-
- mFramePagerAdapter = new PageAdapter(getSupportFragmentManager(), getApplicationContext());
- mViewPager = (ViewPager) findViewById(R.id.myviewpager);
- mViewPager.setAdapter(mFramePagerAdapter);
-
- PagerTabStrip pagerTabStrip = (PagerTabStrip) findViewById(R.id.titlestrip);
- pagerTabStrip.setDrawFullUnderline(true);
- pagerTabStrip.setTabIndicatorColor(getResources().getColor(R.color.tab_underline_color));
- }
-
- @Override
- public void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- if (mWelcomeDialog != null) {
- outState.putBoolean(STATE_WELCOME_DIALOG_IS_OPEN,
- mWelcomeDialog.isShowing());
- outState.putBoolean(STATE_WELCOME_DIALOG_OPENED_FROM_MENU,
- mWelcomeDialog.ismOpenedFromMenu());
- }
- if (isDrawerOpen() || (mDrawerOpenState && mDrawerLayout == null)) {
- outState.putBoolean(STATE_DRAWER_MENU_IS_OPEN, true);
- }
- }
-
- protected void onDestroy() {
- if (mWelcomeDialog != null) {
- if (mWelcomeDialog.isShowing()) {
- mWelcomeDialog.dismiss();
- }
- }
- super.onDestroy();
- }
-
- public void restoreActionBar() {
- ActionBar actionBar = getSupportActionBar();
- actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
- actionBar.setDisplayShowTitleEnabled(true);
- }
-
- @Override
- protected boolean onPrepareOptionsPanel(View view, Menu menu) {
- SharedPreferences sp = PreferenceManager
- .getDefaultSharedPreferences(this);
- boolean showSystemApp = sp.getBoolean(
- AppListLoader.PREF_INCLUDE_SYSTEM_APPS,
- true);
- MenuItem menuItemSystem = menu.findItem(R.id.action_toggle_system_visibility);
- if (menuItemSystem != null) {
- if (showSystemApp) {
- menuItemSystem.setTitle(R.string.hide_system_visibility);
- } else {
- menuItemSystem.setTitle(R.string.show_system_visibility);
- }
- }
- return super.onPrepareOptionsPanel(view, menu);
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.main, menu);
- restoreActionBar();
- return true;
- }
-
- @Override
- public void onBackPressed() {
- if (isDrawerOpen()) {
- closeDrawer();
- } else {
- super.onBackPressed();
- }
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- if (mActionBarDrawerToggle != null
- && mActionBarDrawerToggle.onOptionsItemSelected(item))
- return true;
- int id = item.getItemId();
- switch (id) {
- case R.id.action_about:
- showWelcomeDialog(true);
- return true;
- case R.id.action_licence:
- showLicense();
- return true;
- case R.id.action_toggle_system_visibility:
- toggleSharedPrefences(AppListLoader.PREF_INCLUDE_SYSTEM_APPS);
- refreshAfterChanges();
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
-
- public void toggleSharedPrefences(String preferenceName) {
- SharedPreferences sp = PreferenceManager
- .getDefaultSharedPreferences(this);
- boolean actualValue = sp.getBoolean(preferenceName, true);
- sp.edit().putBoolean(preferenceName, !actualValue).commit();
- }
-
- public void refreshAfterChanges() {
- supportInvalidateOptionsMenu();
- if (mFramePagerAdapter != null) {
- mFramePagerAdapter.refreshAdapterNotify();
- mFramePagerAdapter.notifyDataSetChanged();
- }
- if (mMenuFragment != null) {
- mMenuFragment.notifyDataSetChanged();
- }
- }
-
- @Override
- public Loader<List<AppDetails>> onCreateLoader(int id, Bundle args) {
- AppListLoader loader = new AppListLoader(this.getApplicationContext());
- initNavigationDrawer();
-
- return loader;
- }
-
- @Override
- public void onLoadFinished(Loader<List<AppDetails>> loader,
- List<AppDetails> data) {
- Log.d(TAG, "onLoadFinished");
-
- AppListLoader appLoader = (AppListLoader) loader;
- if (appLoader.wasDataReloaded()) {
- appLoader.resetWasDataReloaded();
- mViewPager.setOffscreenPageLimit(AppListLoader.getCategories().size());
- mFramePagerAdapter.refreshPages();
- } else {
- mFramePagerAdapter.refreshAdapterNotify();
- }
- if (mWelcomeDialog != null && mWelcomeDialog.isShowing()) {
- mWelcomeDialog.loadingDone();
- }
- if (mMenuFragment != null) {
- mMenuFragment.notifyDataSetChanged();
- }
- }
-
- public void onLoaderReset(Loader<List<AppDetails>> arg0) {
- mFramePagerAdapter.refreshAdapterNotify();
- }
-
- private void showWelcomeDialog(boolean fromMenu) {
- Log.d(TAG, "showWelcomeActivity flag: " + fromMenu);
- if (mWelcomeDialog == null) {
- mWelcomeDialog = new WelcomeDialog(this, fromMenu);
- }
- if (!mWelcomeDialog.isShowing()) {
- mWelcomeDialog.show(fromMenu);
- }
- if (!fromMenu) {
- mWelcomeDialog.setOnDismissListener(new OnDismissListener() {
-
- @Override
- public void onDismiss(DialogInterface dialog) {
- openDrawerAnimate();
- }
- });
- }
- }
-
- private void showLicense() {
- Intent intent = new Intent(this, LicenseActivity.class);
- startActivity(intent);
- }
-
- private DrawerLayout mDrawerLayout;
- private View mFragmentContainerView;
- private ActionBarDrawerToggle mActionBarDrawerToggle;
-
- private void initNavigationDrawer() {
- mMenuFragment = (MenuFragment) getSupportFragmentManager()
- .findFragmentById(R.id.menu_container);
- mMenuFragment.setDrawerItemListener(mDrawerItemListener);
- mFragmentContainerView = findViewById(R.id.menu_container);
- mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
- setUp();
- mMenuFragment.refresh();
- }
-
- private NavigationDrawerItemListener mDrawerItemListener = new NavigationDrawerItemListener() {
-
- public void onNavigationDrawerItemSelected(int position) {
- if (mViewPager != null) {
- mViewPager.setCurrentItem(position, true);
- closeDrawer();
- }
- }
- };
-
- public void closeDrawer() {
- if(mDrawerLayout != null){
- mDrawerLayout.closeDrawer(Gravity.LEFT);
- mDrawerOpenState=false;
- }
- }
-
- public boolean isDrawerOpen() {
- return mDrawerLayout != null
- && mDrawerLayout.isDrawerOpen(mFragmentContainerView);
- }
-
- public void setUp() {
- if (mDrawerLayout == null)
- return;
- mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow,
- GravityCompat.START);
- ActionBar actionBar = getSupportActionBar();
- actionBar.setDisplayHomeAsUpEnabled(true);
- actionBar.setHomeButtonEnabled(true);
-
- mActionBarDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
- R.drawable.ic_drawer, R.string.navigation_drawer_open,
- R.string.navigation_drawer_close) {
- @Override
- public void onDrawerClosed(View drawerView) {
- super.onDrawerClosed(drawerView);
- supportInvalidateOptionsMenu();
- }
-
- @Override
- public void onDrawerOpened(View drawerView) {
- super.onDrawerOpened(drawerView);
- supportInvalidateOptionsMenu();
- }
- };
- mDrawerLayout.post(new Runnable() {
- @Override
- public void run() {
- mActionBarDrawerToggle.syncState();
- }
- });
- if (mDrawerOpenState && !isDrawerOpen()) {
- mDrawerLayout.openDrawer(Gravity.LEFT);
- }
- mDrawerLayout.setDrawerListener(mActionBarDrawerToggle);
- }
-
- public void openDrawerAnimate() {
- new Handler().post(new Runnable() {
-
- @Override
- public void run() {
- if (mDrawerLayout != null) {
- mDrawerLayout.openDrawer(Gravity.LEFT);
- mDrawerOpenState = true;
- }
- }
- });
-
- if (mWelcomeDialog != null) {
- mWelcomeDialog.setOnDismissListener(null);
- }
- }
-}