Skip to content

Commit

Permalink
Refactor ActionBar stuff into onCreateActionBar()
Browse files Browse the repository at this point in the history
Signed-off-by: Eddie Ringle <eddie@eringle.net>
  • Loading branch information
EddieRingle committed Jun 22, 2012
1 parent 5b82fd3 commit c4729a7
Show file tree
Hide file tree
Showing 16 changed files with 203 additions and 70 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import android.os.Bundle;
import android.view.View;
import android.widget.*;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import net.idlesoft.android.apps.github.R;
Expand Down Expand Up @@ -82,9 +83,6 @@ void onCreate(Bundle icicle)
noChoiceBtn.setText(R.string.userselect_justbrowsing);
}

getSupportActionBar().setHomeButtonEnabled(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(false);

final Account[] accounts = mAccountManager
.getAccountsByType(AuthConstants.GITHUB_ACCOUNT_TYPE);

Expand Down Expand Up @@ -168,19 +166,29 @@ void onFinally() throws RuntimeException
}
}

@Override
public
void onCreateActionBar(ActionBar bar)
{
super.onCreateActionBar(bar);

bar.setHomeButtonEnabled(false);
bar.setDisplayHomeAsUpEnabled(false);
}

@Override
public
boolean onCreateOptionsMenu(Menu menu)
{
final boolean superResult = super.onCreateOptionsMenu(menu);
super.onCreateOptionsMenu(menu);

/* Hide the "Select Account" option */
menu.findItem(R.id.actionbar_action_select_account).setVisible(false);

menu.findItem(R.id.actionbar_action_add).setVisible(true);
menu.findItem(R.id.actionbar_action_add).setTitle(R.string.actionbar_action_add_account);

return superResult;
return true;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import android.view.View.OnKeyListener;
import android.widget.*;
import android.widget.TextView.OnEditorActionListener;
import com.actionbarsherlock.app.ActionBar;
import net.idlesoft.android.apps.github.R.id;
import net.idlesoft.android.apps.github.R.layout;
import net.idlesoft.android.apps.github.R.string;
Expand Down Expand Up @@ -136,9 +137,6 @@ public void onCreate(Bundle bundle) {
mRequestNewAccount = mLogin == null;
mConfirmCredentials = intent.getBooleanExtra(PARAM_CONFIRMCREDENTIALS, false);

getSupportActionBar().setHomeButtonEnabled(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(false);

mLoginText.setAdapter(
new ArrayAdapter<String>(this, simple_dropdown_item_1line, userLoginAccounts()));

Expand Down Expand Up @@ -189,6 +187,16 @@ void onClick(View v)
signupText.setText(Html.fromHtml(getString(string.auth_link_signup)));
}

@Override
public
void onCreateActionBar(ActionBar bar)
{
super.onCreateActionBar(bar);

bar.setHomeButtonEnabled(false);
bar.setDisplayHomeAsUpEnabled(false);
}

private List<String> userLoginAccounts() {
Object[] accounts;
List<Account> accountList = new ArrayList<Account>(Arrays.asList(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import android.content.res.Configuration;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.widget.Toast;
import com.actionbarsherlock.app.ActionBar;
Expand Down Expand Up @@ -94,6 +95,19 @@ class BaseActivity extends RoboSherlockFragmentActivity

private boolean mRefreshPrevious;

private boolean mCreateActionBarCalled = false;

private final FragmentManager.OnBackStackChangedListener mOnBackStackChangedListener =
new FragmentManager.OnBackStackChangedListener() {
@Override
public
void onBackStackChanged()
{
/* Invalidate the options menu whenever the backstack changes */
invalidateOptionsMenu();
}
};

public
Context getContext()
{
Expand All @@ -111,11 +125,11 @@ void onCreate(final Bundle icicle, final int layout)
mPrefs = PreferenceManager.getDefaultSharedPreferences(getContext());
mPrefsEditor = mPrefs.edit();

/* Make sure we're using the right theme */
getApplicationContext().setTheme(R.style.Theme_Hubroid);

ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(false);
actionBar.setHomeButtonEnabled(true);
/* Refresh the options menu (and the rest of the Action Bar) when the backstack changes */
getSupportFragmentManager().addOnBackStackChangedListener(mOnBackStackChangedListener);
}

protected
Expand Down Expand Up @@ -248,18 +262,35 @@ void popShortToast(final String message)
popToast(message, Toast.LENGTH_SHORT);
}

public
void onCreateActionBar(ActionBar bar)
{
mCreateActionBarCalled = true;

bar.setTitle("");
bar.setDisplayShowHomeEnabled(true);
bar.setDisplayHomeAsUpEnabled(false);
}

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

/* Inflate menu from XML */
MenuInflater inflater = getSherlock().getMenuInflater();
inflater.inflate(R.menu.actionbar, menu);

/* Show default actions */
menu.findItem(R.id.actionbar_action_select_account).setVisible(true);

return super.onCreateOptionsMenu(menu);
mCreateActionBarCalled = false;
onCreateActionBar(getSupportActionBar());
if (!mCreateActionBarCalled)
throw new IllegalStateException("You must call super() in onCreateActionBar()");

return true;
}

@Override
Expand All @@ -268,7 +299,7 @@ boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId()) {
case android.R.id.home:
if ((theActionBar().getDisplayOptions() & DISPLAY_HOME_AS_UP)
if ((getSupportActionBar().getDisplayOptions() & DISPLAY_HOME_AS_UP)
== DISPLAY_HOME_AS_UP
&& mUpActivity != null) {
onBackPressed();
Expand Down Expand Up @@ -303,13 +334,6 @@ void onBackPressed()
super.onBackPressed();
}

/* Shorter-named getter method because I'm lazy */
public
ActionBar theActionBar()
{
return getSherlock().getActionBar();
}

public
void setRefreshPrevious(final boolean refreshPrevious)
{
Expand Down
47 changes: 28 additions & 19 deletions src/net/idlesoft/android/apps/github/ui/fragments/BaseFragment.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@
import android.view.View;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.SherlockFragment;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import net.idlesoft.android.apps.github.R;
import net.idlesoft.android.apps.github.ui.activities.BaseActivity;

Expand All @@ -38,6 +40,9 @@ class BaseFragment extends SherlockFragment
protected
Configuration mConfiguration;

private
boolean mCreateActionBarCalled = false;

@Override
public
void onCreate(Bundle savedInstanceState)
Expand All @@ -47,25 +52,6 @@ void onCreate(Bundle savedInstanceState)
mConfiguration = getResources().getConfiguration();
}

@Override
public
void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);

getBaseActivity().theActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
}

@Override
public
void onResume()
{
super.onResume();

getBaseActivity().getSupportActionBar().setDisplayHomeAsUpEnabled(false);
getBaseActivity().getSupportActionBar().setHomeButtonEnabled(true);
}

public
BaseActivity getBaseActivity()
{
Expand All @@ -89,4 +75,27 @@ boolean isMultiPane()
{
return getBaseActivity().isMultiPane();
}

public
void onCreateActionBar(ActionBar bar)
{
mCreateActionBarCalled = true;

bar.setTitle("");
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
bar.setDisplayHomeAsUpEnabled(false);
bar.setHomeButtonEnabled(true);
}

@Override
public
void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
super.onCreateOptionsMenu(menu, inflater);

mCreateActionBarCalled = false;
onCreateActionBar(getBaseActivity().getSupportActionBar());
if (!mCreateActionBarCalled)
throw new IllegalStateException("You must call super() in onCreateActionBar()");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -231,13 +231,12 @@ void onTaskComplete()
mDataFragment.ready = false;

if (mDataFragment.contexts.size() < 2) {
getBaseActivity().getSupportActionBar().setTitle(R.string.app_name);
return;
}

getBaseActivity().theActionBar().setTitle("");
getBaseActivity().theActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
getBaseActivity().theActionBar().setListNavigationCallbacks(contextAdapter, new ActionBar.OnNavigationListener()
getBaseActivity().getSupportActionBar().setTitle("");
getBaseActivity().getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
getBaseActivity().getSupportActionBar().setListNavigationCallbacks(contextAdapter, new ActionBar.OnNavigationListener()
{
@Override
public
Expand All @@ -256,26 +255,25 @@ boolean onNavigationItemSelected(int itemPosition, long itemId)
i = 0;
for (User u : mDataFragment.contexts) {
if (u.getLogin().equals(currentContext)) {
getBaseActivity().theActionBar().setSelectedNavigationItem(i);
getBaseActivity().getSupportActionBar().setSelectedNavigationItem(i);
}
i++;
}
}
};

mDataFragment.executeNewTask(getOrgs);
} else {
getBaseActivity().theActionBar().setTitle(R.string.app_name);
}
}

@Override
public
void onResume()
void onCreateActionBar(ActionBar bar)
{
super.onResume();
super.onCreateActionBar(bar);

getBaseActivity().getSupportActionBar().setDisplayHomeAsUpEnabled(false);
getBaseActivity().getSupportActionBar().setHomeButtonEnabled(false);
bar.setTitle("");
bar.setDisplayHomeAsUpEnabled(false);
bar.setHomeButtonEnabled(false);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
Expand Down Expand Up @@ -516,8 +517,6 @@ void onActivityCreated(Bundle savedInstanceState)
if (mDataFragment.pagerAdapter == null)
mDataFragment.pagerAdapter = new ListViewPager.MultiListPagerAdapter(getContext());

getBaseActivity().theActionBar().setTitle(R.string.dash_events);

mViewPager.setAdapter(mDataFragment.pagerAdapter);
mTitlePageIndicator.setViewPager(mViewPager);

Expand All @@ -542,6 +541,15 @@ void onResume()
mViewPager.setCurrentItem(mDataFragment.currentItem);
}

@Override
public
void onCreateActionBar(ActionBar bar)
{
super.onCreateActionBar(bar);

bar.setTitle(R.string.dash_events);
}

@Override
public
void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
Expand Down Expand Up @@ -340,8 +341,6 @@ void onActivityCreated(Bundle savedInstanceState)
mDataFragment.targetUser.setLogin(getBaseActivity().getCurrentContextLogin());
}

getBaseActivity().getSupportActionBar().setTitle(mDataFragment.targetUser.getLogin());

if (mDataFragment.userLists == null || refresh)
mDataFragment.userLists = new ArrayList<ListHolder>();

Expand Down Expand Up @@ -372,6 +371,15 @@ void onResume()
mViewPager.setCurrentItem(mDataFragment.currentItem);
}

@Override
public
void onCreateActionBar(ActionBar bar)
{
super.onCreateActionBar(bar);

bar.setTitle(mDataFragment.targetUser.getLogin());
}

@Override
public
void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
Expand Down
Loading

0 comments on commit c4729a7

Please sign in to comment.