Android Open Source - caddisfly-app-camera Main Activity






From Project

Back to project page caddisfly-app-camera.

License

The source code is released under:

GNU General Public License

If you think the Android project caddisfly-app-camera listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright (C) TernUp Research Labs/*from www . ja  va  2s  .  co  m*/
 *
 * This file is part of Caddisfly
 *
 * Caddisfly is free software: you can redistribute it and modify it under the terms of
 * the GNU Affero General Public License (AGPL) as published by the Free Software Foundation,
 * either version 3 of the License or any later version.
 *
 * Caddisfly 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 Affero General Public License included below for more details.
 *
 * The full license text can also be seen at <http://www.gnu.org/licenses/agpl.html>.
 */

package com.ternup.caddisfly.activity;

import android.app.ActionBar;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v4.widget.DrawerLayout;
import android.view.KeyEvent;
import android.view.Menu;

import com.ternup.caddisfly.R;
import com.ternup.caddisfly.app.Globals;
import com.ternup.caddisfly.app.MainApp;
import com.ternup.caddisfly.fragment.AboutItFragment;
import com.ternup.caddisfly.fragment.CalibrateFragment;
import com.ternup.caddisfly.fragment.HelpFragment;
import com.ternup.caddisfly.fragment.HomeFragment;
import com.ternup.caddisfly.fragment.LocationListFragment;
import com.ternup.caddisfly.fragment.NavigationDrawerFragment;
import com.ternup.caddisfly.fragment.SettingsFragment;
import com.ternup.caddisfly.util.DateUtils;
import com.ternup.caddisfly.util.PreferencesUtils;

import java.util.Calendar;

/**
 * The Main Activity of the App which includes navigation drawer menu
 */
public class MainActivity extends MainActivityBase
        implements NavigationDrawerFragment.NavigationDrawerCallbacks {

    private HomeFragment homeFragment = null;

    private LocationListFragment mLocationListFragment = null;

    private CalibrateFragment calibrateFragment = null;

    private HelpFragment helpFragment = null;

    private AboutItFragment aboutFragment = null;

    private SettingsFragment settingsFragment = null;

    private CharSequence mTitle;

    private NavigationDrawerFragment mNavigationDrawerFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        MainApp mainApp = (MainApp) getApplicationContext();
        assert getApplicationContext() != null;

        // Set theme according to preference
        mainApp.CurrentTheme = PreferencesUtils.getInt(this, R.string.currentTheme,
                R.style.AppTheme_Light);

        this.setTheme(mainApp.CurrentTheme);

        setContentView(R.layout.activity_main);

        mTitle = getTitle();

        mNavigationDrawerFragment = (NavigationDrawerFragment)
                getFragmentManager().findFragmentById(R.id.navigation_drawer);

        // Set up the drawer.
        mNavigationDrawerFragment.setUp(
                R.id.navigation_drawer,
                (DrawerLayout) findViewById(R.id.drawer_layout));

        // Set default values for preference settings
        PreferenceManager.setDefaultValues(this, R.xml.fragmented_preferences, false);

        if (savedInstanceState == null) {
            displayView(Globals.HOME_SCREEN_INDEX, false);
        }

        // last update check date
        Calendar lastCheckDate = Calendar.getInstance();
        lastCheckDate.setTimeInMillis(updateLastCheck);

        Calendar currentDate = Calendar.getInstance();

        if (DateUtils.getDaysDifference(lastCheckDate, currentDate) > 0) {
            checkUpdate(true);
        }

        // enable ActionBar app icon to behave as action to toggle nav drawer
        ActionBar actionBar = getActionBar();
        if (actionBar != null) {
            getActionBar().setDisplayHomeAsUpEnabled(true);
            getActionBar().setHomeButtonEnabled(true);
        }

        int index = getCurrentFragmentIndex();
        showCheckUpdateOption = index == Globals.SETTINGS_SCREEN_INDEX;
        showCheckUpdateOption = index == Globals.ABOUT_SCREEN_INDEX;
    }

    /**
     *
     */
    void restoreActionBar() {
        ActionBar actionBar = getActionBar();
        if (actionBar != null) {
            actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
            actionBar.setDisplayShowTitleEnabled(true);
            actionBar.setTitle(mTitle);
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        restoreActionBar();

        return true;
    }

    @Override
    public void onNavigationDrawerItemSelected(int position) {
        displayView(position, true);
    }

    /**
     * Display view fragment for selected nav drawer menu option
     */
    public void displayView(int position, boolean addToBackStack) {

        int index = getCurrentFragmentIndex();

        if (index == position) {
            // requested fragment is already showing
            return;
        }

        Fragment fragment;
        showCheckUpdateOption = false;
        switch (position) {
            case Globals.HOME_SCREEN_INDEX:
                if (homeFragment == null) {
                    homeFragment = new HomeFragment();
                }
                fragment = homeFragment;
                break;
            case Globals.LOCATION_LIST_SCREEN_INDEX:
                if (mLocationListFragment == null) {
                    mLocationListFragment = new LocationListFragment();
                }
                fragment = mLocationListFragment;
                break;
            case Globals.CALIBRATE_SCREEN_INDEX:
                if (calibrateFragment == null) {
                    calibrateFragment = new CalibrateFragment();
                }
                fragment = calibrateFragment;
                break;
            case Globals.SETTINGS_SCREEN_INDEX:
                showCheckUpdateOption = true;
                if (settingsFragment == null) {
                    settingsFragment = new SettingsFragment();
                }
                fragment = settingsFragment;
                break;
            case Globals.HELP_SCREEN_INDEX:
                showCheckUpdateOption = true;
                if (helpFragment == null) {
                    helpFragment = new HelpFragment();
                }
                fragment = helpFragment;
                break;
            case Globals.ABOUT_SCREEN_INDEX:
                showCheckUpdateOption = true;
                if (aboutFragment == null) {
                    aboutFragment = new AboutItFragment();
                }
                fragment = aboutFragment;
                break;
            default:
                toggleTheme();
                return;
        }
        invalidateOptionsMenu();
        if (fragment != null) {

            FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction ft = fragmentManager.beginTransaction();
            ft.replace(R.id.container, fragment, String.valueOf(position));
            ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
            if (addToBackStack) {
                ft.addToBackStack(null);
            }
            ft.commit();
        }
        mNavigationDrawerFragment.checkItem(position);
    }

    @Override
    public void setTitle(CharSequence title) {
        mTitle = title;
        ActionBar actionBar = getActionBar();
        assert actionBar != null;
        actionBar.setTitle(title);
    }

    @Override
    protected void onResume() {
        super.onResume();
        int index = getCurrentFragmentIndex();
        if (index > -1) {
            mNavigationDrawerFragment.checkItem(index);
        }
    }

    /**
     * Toggle the theme between light and dark styles
     */
    private void toggleTheme() {
        assert getApplicationContext() != null;
        MainApp mainApp = (MainApp) getApplicationContext();

        mainApp.CurrentTheme = mainApp.CurrentTheme == R.style.AppTheme_Light
                ? R.style.AppTheme_Dark : R.style.AppTheme_Light;

        PreferencesUtils.setInt(this, R.string.currentTheme, mainApp.CurrentTheme);

        this.recreate();
    }

    @Override
    public void onBackPressed() {
        try {
            int index = getCurrentFragmentIndex();

            if (index == Globals.LOCATION_LIST_SCREEN_INDEX) {
                Fragment fragment = getFragmentManager().findFragmentById(R.id.container);
                if (((LocationListFragment) fragment).backPressHandled()) {
                    return;
                }
            }
            // or just go back to main activity
            super.onBackPressed();

            index = getCurrentFragmentIndex();

            showCheckUpdateOption = index == Globals.SETTINGS_SCREEN_INDEX;
            showCheckUpdateOption = index == Globals.ABOUT_SCREEN_INDEX;

            invalidateOptionsMenu();
            mNavigationDrawerFragment.checkItem(index);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    @Override
    public boolean onKeyDown(int keycode, KeyEvent e) {
        switch (keycode) {
            case KeyEvent.KEYCODE_MENU:
                mNavigationDrawerFragment.toggleDrawer();
                return true;
        }

        return super.onKeyDown(keycode, e);
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        assert getApplicationContext() != null;
        outState.putInt(getString(R.string.currentTheme),
                ((MainApp) getApplicationContext()).CurrentTheme);
    }
}




Java Source Code List

com.ternup.caddisfly.activity.MainActivityBase.java
com.ternup.caddisfly.activity.MainActivity.java
com.ternup.caddisfly.activity.PhotoIntentActivity.java
com.ternup.caddisfly.activity.ProgressActivityBase.java
com.ternup.caddisfly.activity.ProgressActivity.java
com.ternup.caddisfly.activity.ProgressActivity.java
com.ternup.caddisfly.activity.SurveyActivity.java
com.ternup.caddisfly.activity.VideoActivity.java
com.ternup.caddisfly.adapter.CalibrateListAdapter.java
com.ternup.caddisfly.adapter.CheckboxSimpleCursorAdapter.java
com.ternup.caddisfly.adapter.GalleryListAdapter.java
com.ternup.caddisfly.adapter.NavDrawerListAdapter.java
com.ternup.caddisfly.adapter.SwatchesAdapter.java
com.ternup.caddisfly.app.GlobalsBase.java
com.ternup.caddisfly.app.Globals.java
com.ternup.caddisfly.app.Globals.java
com.ternup.caddisfly.app.MainApp.java
com.ternup.caddisfly.component.CameraZoomPreference.java
com.ternup.caddisfly.component.ConfirmCheckBoxPreference.java
com.ternup.caddisfly.component.ConfirmPreference.java
com.ternup.caddisfly.component.NothingSelectedSpinnerAdapter.java
com.ternup.caddisfly.component.NumberPickerPreference.java
com.ternup.caddisfly.database.DataStorage.java
com.ternup.caddisfly.database.DataStorage.java
com.ternup.caddisfly.database.LocationTable.java
com.ternup.caddisfly.database.TestDatabaseHelper.java
com.ternup.caddisfly.database.TestTable.java
com.ternup.caddisfly.fragment.AboutFragment.java
com.ternup.caddisfly.fragment.AboutItFragment.java
com.ternup.caddisfly.fragment.BaseFragment.java
com.ternup.caddisfly.fragment.CalibrateFragmentBase.java
com.ternup.caddisfly.fragment.CalibrateFragment.java
com.ternup.caddisfly.fragment.CalibrateItemFragmentBase.java
com.ternup.caddisfly.fragment.CalibrateItemFragment.java
com.ternup.caddisfly.fragment.CameraFragment.java
com.ternup.caddisfly.fragment.DetailsFragment.java
com.ternup.caddisfly.fragment.FormFragment.java
com.ternup.caddisfly.fragment.HelpFragment.java
com.ternup.caddisfly.fragment.HomeFragment.java
com.ternup.caddisfly.fragment.LocationDetailsFragment.java
com.ternup.caddisfly.fragment.LocationFragment.java
com.ternup.caddisfly.fragment.LocationListFragment.java
com.ternup.caddisfly.fragment.NavigationDrawerFragment.java
com.ternup.caddisfly.fragment.NotesFragment.java
com.ternup.caddisfly.fragment.PhotoFragment.java
com.ternup.caddisfly.fragment.ResultFragment.java
com.ternup.caddisfly.fragment.ResultListFragment.java
com.ternup.caddisfly.fragment.SettingsFragment.java
com.ternup.caddisfly.fragment.SwatchFragment.java
com.ternup.caddisfly.model.ColorInfo.java
com.ternup.caddisfly.model.Dynamics.java
com.ternup.caddisfly.model.NavigationDrawerItem.java
com.ternup.caddisfly.provider.LocationContentProvider.java
com.ternup.caddisfly.provider.TestContentProvider.java
com.ternup.caddisfly.service.CameraServiceReceiver.java
com.ternup.caddisfly.service.CameraService.java
com.ternup.caddisfly.util.AlertUtils.java
com.ternup.caddisfly.util.AudioUtils.java
com.ternup.caddisfly.util.ColorUtils.java
com.ternup.caddisfly.util.DataHelper.java
com.ternup.caddisfly.util.DateUtils.java
com.ternup.caddisfly.util.DownloadManager.java
com.ternup.caddisfly.util.FileUtils.java
com.ternup.caddisfly.util.ImageUtils.java
com.ternup.caddisfly.util.LocationUtils.java
com.ternup.caddisfly.util.NetworkUtils.java
com.ternup.caddisfly.util.PhotoHandler.java
com.ternup.caddisfly.util.PreferencesHelper.java
com.ternup.caddisfly.util.PreferencesUtils.java
com.ternup.caddisfly.util.ShakeDetector.java
com.ternup.caddisfly.util.ShowCamera.java
com.ternup.caddisfly.util.TextJustifyUtils.java
com.ternup.caddisfly.util.TimeUtils.java
com.ternup.caddisfly.util.UpdateCheckTask.java
com.ternup.caddisfly.util.UpdateChecker.java
com.ternup.caddisfly.util.UpgradeCheckTask.java
com.ternup.caddisfly.util.WebClient.java
com.ternup.caddisfly.view.LineChartView.java
com.ternup.caddisfly.view.SlidingTabLayout.java
com.ternup.caddisfly.view.SlidingTabStrip.java
com.ternup.caddisfly.widget.FormEditText.java
com.ternup.caddisfly.widget.FormSpinner.java
com.ternup.caddisfly.widget.FormWidget.java
com.ternup.caddisfly.widget.MultiLineEditText.java
com.ternup.caddisfly.widget.TextViewEx.java
org.akvo.mobile.caddisfly.activity.MainActivity.java
org.akvo.mobile.caddisfly.component.CalibratePreference.java
org.akvo.mobile.caddisfly.fragment.CalibrateFragment.java
org.akvo.mobile.caddisfly.fragment.CalibrateItemFragment.java
org.akvo.mobile.caddisfly.fragment.CalibrateMessageFragment.java
org.akvo.mobile.caddisfly.fragment.HelpFragment.java
org.akvo.mobile.caddisfly.fragment.ItemFragment.java
org.akvo.mobile.caddisfly.fragment.ResultFragment.java
org.akvo.mobile.caddisfly.fragment.StartFragment.java
org.akvo.mobile.caddisfly.fragment.dummy.DummyContent.java