157 lines
5.9 KiB
Java
157 lines
5.9 KiB
Java
package net.i2p.android.router.activity;
|
|
|
|
import net.i2p.android.router.R;
|
|
import net.i2p.android.router.fragment.I2PFragmentBase;
|
|
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;
|
|
import android.support.v4.view.GravityCompat;
|
|
import android.support.v4.widget.DrawerLayout;
|
|
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 static final Class[] mActivities = {
|
|
MainActivity.class,
|
|
AddressbookActivity.class,
|
|
LicenseActivity.class,
|
|
};
|
|
private String[] mActivityTitles;
|
|
|
|
@Override
|
|
public void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
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);
|
|
//menu.findItem(R.id.action_add_to_addressbook).setVisible(!drawerOpen);
|
|
return super.onPrepareOptionsMenu(menu);
|
|
}
|
|
|
|
@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) {
|
|
Intent i = new Intent(I2PActivityBase.this, mActivities[pos]);
|
|
startActivity(i);
|
|
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();
|
|
}
|
|
}
|