I2P Address: [http://git.idk.i2p]

Skip to content
Snippets Groups Projects
I2PActivityBase.java 7.47 KiB
Newer Older
  • Learn to ignore specific revisions
  • package net.i2p.android.router.activity;
    
    import net.i2p.android.router.R;
    import net.i2p.android.router.fragment.I2PFragmentBase;
    
    str4d's avatar
    str4d committed
    import android.app.Activity;
    
    import android.content.Intent;
    
    import android.content.res.Configuration;
    import android.os.Bundle;
    import android.support.v4.app.ActionBarDrawerToggle;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentManager;
    
    str4d's avatar
    str4d committed
    import android.support.v4.app.FragmentTransaction;
    
    import android.support.v4.view.GravityCompat;
    import android.support.v4.widget.DrawerLayout;
    
    str4d's avatar
    str4d committed
    import android.support.v7.app.ActionBar;
    import android.support.v7.app.ActionBar.Tab;
    
    import android.support.v7.app.ActionBarActivity;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    
    public class I2PActivityBase extends ActionBarActivity {
        protected DrawerLayout mDrawerLayout;
        protected ListView mDrawerList;
        protected ActionBarDrawerToggle mDrawerToggle;
    
        private CharSequence mDrawerTitle;
        private CharSequence mTitle;
    
        private String[] mActivityTitles;
    
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
    str4d's avatar
    str4d committed
            setContentView(R.layout.activity_navdrawer);
    
    
            mTitle = mDrawerTitle = getTitle();
    
            mActivityTitles = getResources().getStringArray(R.array.navdrawer_activity_titles);
    
            mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
            mDrawerList = (ListView) findViewById(R.id.drawer);
    
            // Set a custom shadow that overlays the main content when the drawer opens
            mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
            mDrawerList.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
            // Set the adapter for the list view
            mDrawerList.setAdapter(new ArrayAdapter<String>(this,
    
                    android.R.layout.simple_list_item_1, mActivityTitles));
    
            // Set the list's click listener
            mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
    
            // Enable ActionBar app icon to behave as action to toggle nav drawer
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            getSupportActionBar().setHomeButtonEnabled(true);
    
            mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
                    R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) {
    
                /** Called when a drawer has settled in a completely closed state. */
                public void onDrawerClosed(View view) {
                    getSupportActionBar().setTitle(mTitle);
                    supportInvalidateOptionsMenu();
                }
    
                /** Called when a drawer has settled in a completely open state. */
                public void onDrawerOpened(View view) {
                    getSupportActionBar().setTitle(mDrawerTitle);
                    supportInvalidateOptionsMenu();
                }
            };
    
            // Set the drawer toggle as the DrawerListener
            mDrawerLayout.setDrawerListener(mDrawerToggle);
        }
    
        /* Called whenever we call invalidateOptionsMenu() */
        @Override
        public boolean onPrepareOptionsMenu(Menu menu) {
            // If the nav drawer is open, hide action items related to the content view
            boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
    
            return super.onPrepareOptionsMenu(menu);
        }
    
    
        protected void onDrawerChange(boolean drawerOpen) {
            // Override in subclass with e.g.
            //menu.findItem(R.id.action_add_to_addressbook).setVisible(!drawerOpen);
        }
    
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // The action bar home/up action should open or close the drawer.
            // ActionBarDrawerToggle will take care of this.
            if(mDrawerToggle.onOptionsItemSelected(item)) {
                return true;
            }
            // Handle action buttons
            return super.onOptionsItemSelected(item);
        }
    
        private class DrawerItemClickListener implements ListView.OnItemClickListener {
            public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
                selectItem(pos);
            }
        }
    
        private void selectItem(int pos) {
    
            switch (pos) {
            case 1:
                Intent ab = new Intent(I2PActivityBase.this, AddressbookActivity.class);
                startActivity(ab);
                break;
            case 2:
    
                Intent itb = new Intent(I2PActivityBase.this, I2PTunnelActivity.class);
                startActivity(itb);
                break;
            case 3:
    
                Intent log = new Intent(I2PActivityBase.this, LogActivity.class);
                startActivity(log);
                break;
    
            case 4:
    
                Intent err = new Intent(I2PActivityBase.this, LogActivity.class);
                err.putExtra(LogActivity.ERRORS_ONLY, true);
                startActivity(err);
                break;
    
            case 5:
    
                Intent lic = new Intent(I2PActivityBase.this, LicenseActivity.class);
                startActivity(lic);
                break;
            default:
                Intent main = new Intent(I2PActivityBase.this, MainActivity.class);
                startActivity(main);
                break;
            }
    
            mDrawerLayout.closeDrawer(mDrawerList);
        }
    
        /*private void selectFragmentItem(int pos) {
    
            Fragment fragment = Fragment.instantiate(I2PActivityBase.this, mFragments[pos]);
    
            // Insert the fragment by replacing any existing fragment
            FragmentManager fragmentManager = getSupportFragmentManager();
            fragmentManager.beginTransaction()
                           .replace(R.id.main_content, fragment)
                           .commit();
    
            // Highlight the selected item, update the title, and close the drawer
            mDrawerList.setItemChecked(pos, true);
            setTitle(mFragmentTitles[pos]);
            mDrawerLayout.closeDrawer(mDrawerList);
    
    
        @Override
        public void setTitle(CharSequence title) {
            mTitle = title;
            getSupportActionBar().setTitle(mTitle);
        }
    
        @Override
        protected void onPostCreate(Bundle savedInstanceState) {
            super.onPostCreate(savedInstanceState);
            // Sync the toggle state after onRestoreInstanceState has occurred.
            mDrawerToggle.syncState();
        }
    
        @Override
        public void onConfigurationChanged(Configuration newConfig) {
            super.onConfigurationChanged(newConfig);
            // Pass any configuration change to the drawer toggle
            mDrawerToggle.onConfigurationChanged(newConfig);
        }
    
        @Override
        public void onBackPressed() {
            Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.main_content);
            if (fragment instanceof I2PFragmentBase) {
                I2PFragmentBase ifb = (I2PFragmentBase) fragment;
                // If we shouldn't stay on this fragment, go back.
                if (ifb.onBackPressed())
                    return;
            }
            super.onBackPressed();
        }
    
    str4d's avatar
    str4d committed
    
        public static class TabListener implements ActionBar.TabListener {
            private Fragment mFragment;
    
            public TabListener(Fragment fragment) {
                mFragment = fragment;
            }
    
            public void onTabSelected(Tab tab, FragmentTransaction ft) {
                ft.replace(R.id.main_content, mFragment);
            }
    
            public void onTabUnselected(Tab tab, FragmentTransaction ft) {
                ft.remove(mFragment);
            }
    
            public void onTabReselected(Tab tab, FragmentTransaction ft) {
                // User selected the already selected tab.
            }
        }