Android Open Source - Race2GED2 Home Activity






From Project

Back to project page Race2GED2.

License

The source code is released under:

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Def...

If you think the Android project Race2GED2 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 2014 Regional Adult Education Program of Lee, Scott, Wise, and Norton Public Schools
 *// w  w w . j a  v a2  s  . c o m
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */

package edu.mecc.race2ged.activities;

import android.content.Intent;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.View;

import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

import edu.mecc.race2ged.GEDApplication;
import edu.mecc.race2ged.JSON.Region;
import edu.mecc.race2ged.R;
import edu.mecc.race2ged.cards.ExpandableCard;
import edu.mecc.race2ged.fragments.CardListFragment;
import edu.mecc.race2ged.fragments.ClassCardListFragment;
import edu.mecc.race2ged.fragments.ClassViewPagerFragment;
import edu.mecc.race2ged.navigation.DrawerLayout;
import edu.mecc.race2ged.navigation.NavigationDrawerFragment;
import edu.mecc.race2ged.widgets.Card;
import edu.mecc.race2ged.widgets.Header;
import eu.inmite.android.lib.dialogs.SimpleDialogFragment;

/**
 * HomeActivity is the primary activity of the Race2GED app and acts as the launcher. Most content
 * is displayed here using fragments.
 *
 * @author Bryan Smith
 */
public class HomeActivity extends ActionBarActivity
        implements NavigationDrawerFragment.NavigationDrawerCallbacks {


    private static final String ARG_SELECTED = "selectedParam";
    private static final String ARG_REGION = "regionParam";

    private static final String HOME_FRAG_TAG = "homeFrag";
    private static final String CLASSES_FRAG_TAG = "classesFrag";
    private static final String PRACTICE_FRAG_TAG = "practiceFrag";
    private static final String TESTING_FRAG_TAG = "testingFrag";
    private static final String RESOURCES_FRAG_TAG = "resourcesFrag";

    private ArrayList<String> navTitles = new ArrayList<String>();
    private Region mRegion = null;
    private ArrayList<View> mHomeCards = new ArrayList<View>();
    private ArrayList<View> mResourceCards  = new ArrayList<View>();
    private ArrayList<View> mTestingCards  = new ArrayList<View>();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        //For backwards compat. For some reason, the Drawer Glyph does not show up on older versions
        //unless these lines are added manually. Even though the ActionBarDrawerToggle calls them...
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);
        getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_drawer);

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


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

        GEDApplication.setStoredContext(this);

        if (savedInstanceState == null) {
            mRegion = (Region)getIntent().getExtras().getSerializable(ARG_REGION);
        } else {
            mRegion = (Region)savedInstanceState.getSerializable(ARG_REGION);
        }

        populateCards();

        getSupportFragmentManager().beginTransaction()
                .add(R.id.container, CardListFragment.newInstance(mHomeCards)).commit();

        try {
            navTitles.addAll(Arrays.asList(getResources().getStringArray(R.array.navPrimaryTitles)));
            navTitles.addAll(Arrays.asList(getResources().getStringArray(R.array.navSecondaryTitles)));
        } catch (Resources.NotFoundException e) {
            Log.e("HomeActivity","Could not add nav titles to list. - "+e.getMessage());
        }
    }

    private void populateCards() {
        populateHomeCards();
        populateResourcesCards();
        populateTestingCards();
    }

    private void populateHomeCards() {
        mHomeCards.add(new Header(this,getResources().getString(R.string.greeting_header)));
        mHomeCards.add(new Card(this,getResources().getString(R.string.greeting)));
        mHomeCards.add(new Header(this,getResources().getString(R.string.facebook_feed_header)));
        mHomeCards.add(new Card(this,"TODO: Add facebook feed"));
    }

    private void populateResourcesCards() {
        mResourceCards.add(new Header(this,"Category 1"));
        mResourceCards.add(new Card(this,"Resource Item 1"));
        mResourceCards.add(new Card(this,"Resource Item 2"));
        mResourceCards.add(new Card(this,"Resource Item 3"));
        mResourceCards.add(new Header(this,"Category 2"));
        mResourceCards.add(new Card(this,"Resource Item 4"));
    }

    private void populateTestingCards() {
        mTestingCards.add(new Header(this, getResources().getString(R.string.testing_content_areas)));
        mTestingCards.add(new ExpandableCard(this,getResources().getString(R.string.testing_rla),getResources().getString(R.string.testing_rla_content)));
        mTestingCards.add(new ExpandableCard(this,getResources().getString(R.string.testing_math),getResources().getString(R.string.testing_math_content)));
        mTestingCards.add(new ExpandableCard(this,getResources().getString(R.string.testing_social_studies),getResources().getString(R.string.testing_social_studies_content)));
        mTestingCards.add(new ExpandableCard(this,getResources().getString(R.string.testing_science),getResources().getString(R.string.testing_science_content)));
        mTestingCards.add(new Header(this, getResources().getString(R.string.testing_centers_title)));
        mTestingCards.add(new Card(this,"TODO: Add testing center info. (Maybe on tabs to organize? This page will have a lot of info for one screen)"));
        mTestingCards.add(new Header(this, getResources().getString(R.string.testing_cost_title)));
        mTestingCards.add(new Card(this,"TODO: Add testing cost info. Again, most likely will me moved to a related tab."));
        mTestingCards.add(new Header(this, getResources().getString(R.string.testing_passing_title)));
        mTestingCards.add(new Card(this,"TODO: Add passing score info."));
    }

    /**
     * Save all appropriate fragment state.
     *
     * @param outState
     */
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        if (mRegion != null) outState.putSerializable(ARG_REGION,mRegion);
    }

    /**
     * This method is called after {@link #onStart} when the activity is
     * being re-initialized from a previously saved state, given here in
     * <var>savedInstanceState</var>.  Most implementations will simply use {@link #onCreate}
     * to restore their state, but it is sometimes convenient to do it here
     * after all of the initialization has been done or to allow subclasses to
     * decide whether to use your default implementation.  The default
     * implementation of this method performs a restore of any view state that
     * had previously been frozen by {@link #onSaveInstanceState}.
     * <p/>
     * <p>This method is called between {@link #onStart} and
     * {@link #onPostCreate}.
     *
     * @param savedInstanceState the data most recently supplied in {@link #onSaveInstanceState}.
     * @see #onCreate
     * @see #onPostCreate
     * @see #onResume
     * @see #onSaveInstanceState
     */
    @Override
    protected void onRestoreInstanceState(@NotNull Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        if (mRegion == null) {
            mRegion = (Region) savedInstanceState.getSerializable(ARG_REGION);
        }
    }

    private void replaceFragment(int numb,Fragment frag,String tag){
        replaceFragment(numb, frag, tag, true);
    }

    private void replaceFragment(int numb,Fragment frag,String tag, boolean addToBackStack){
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        Fragment tmp = getSupportFragmentManager().findFragmentByTag(tag);
        ft.replace(R.id.container, (tmp != null ? tmp : frag),tag);
        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
        if (addToBackStack) ft.addToBackStack(null);
        ft.commit();
    }

    @Override
    public void onNavigationDrawerItemSelected(int position) {
        int numb = position+1;
        getSupportFragmentManager().popBackStack();
        switch (numb) {
            case 1:
                CardListFragment frag = CardListFragment.newInstance(mHomeCards);
                frag.setTitle(getResources().getString(R.string.app_name));
                replaceFragment(numb, frag, HOME_FRAG_TAG, false);
                break;
            case 2:
                replaceFragment(numb,ClassViewPagerFragment.newInstance(mRegion),CLASSES_FRAG_TAG);
                break;
            case 3:
                SimpleDialogFragment.createBuilder(this,
                        getSupportFragmentManager()).setTitle("NYI").setMessage("Not Yet Implemented").show();
                break;
            case 4:
                frag = CardListFragment.newInstance(mTestingCards);
                frag.setTitle(navTitles.get(numb-1));
                replaceFragment(numb,frag,TESTING_FRAG_TAG);
                break;
            case 5:
                frag = CardListFragment.newInstance(mResourceCards);
                frag.setTitle(navTitles.get(numb-1));
                replaceFragment(numb,frag,RESOURCES_FRAG_TAG);
                break;
            case 6:
                Intent settingsIntent = new Intent(this, SettingsActivity.class);
                startActivity(settingsIntent);
                break;
            case 7:
                //TODO: feedback Nav Item
                break;
            case 8:
                //TODO: About Nav Item
                break;
            default:
                break;
        }
    }

}




Java Source Code List

edu.mecc.race2ged.GEDApplication.java
edu.mecc.race2ged.JSON.Class.java
edu.mecc.race2ged.JSON.County.java
edu.mecc.race2ged.JSON.Instructor.java
edu.mecc.race2ged.JSON.Region.java
edu.mecc.race2ged.JSON.State.java
edu.mecc.race2ged.activities.HomeActivity.java
edu.mecc.race2ged.activities.SettingsActivity.java
edu.mecc.race2ged.activities.SplashScreen.java
edu.mecc.race2ged.adapters.CardAdapter.java
edu.mecc.race2ged.adapters.ClassViewPagerAdapter.java
edu.mecc.race2ged.cards.ClassCard.java
edu.mecc.race2ged.cards.ExpandableCard.java
edu.mecc.race2ged.cards.StubCard.java
edu.mecc.race2ged.fragments.CardListFragment.java
edu.mecc.race2ged.fragments.ClassCardListFragment.java
edu.mecc.race2ged.fragments.ClassViewPagerFragment.java
edu.mecc.race2ged.helpers.ClassDataReader.java
edu.mecc.race2ged.helpers.ClassDataUpdater.java
edu.mecc.race2ged.helpers.SettingsHelper.java
edu.mecc.race2ged.helpers.Utils.java
edu.mecc.race2ged.navigation.ActionBarDrawerToggleHoneycomb.java
edu.mecc.race2ged.navigation.ActionBarDrawerToggle.java
edu.mecc.race2ged.navigation.DrawerLayout.java
edu.mecc.race2ged.navigation.NavDrawerListAdapter.java
edu.mecc.race2ged.navigation.NavDrawerListItemNoIcon.java
edu.mecc.race2ged.navigation.NavDrawerListItemWithIcon.java
edu.mecc.race2ged.navigation.NavDrawerListItem.java
edu.mecc.race2ged.navigation.NavigationDrawerFragment.java
edu.mecc.race2ged.widgets.Card.java
edu.mecc.race2ged.widgets.Header.java