Accounts actionbar split. Now contains unread number for consistency and shows status as subtitle if available. Allowed separate method to get the current operation in ActivityListener.

This commit is contained in:
Sander Bogaert 2012-08-27 14:44:40 -04:00 committed by Andrew Chen
parent bc9bc29097
commit ed03f19ea5
3 changed files with 41 additions and 8 deletions

View File

@ -68,6 +68,7 @@
android:name="com.fsck.k9.activity.Accounts"
android:launchMode="singleTask"
android:configChanges="locale"
android:uiOptions="splitActionBarWhenNarrow"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

View File

@ -29,6 +29,8 @@ import android.util.Log;
import android.util.SparseBooleanArray;
import android.util.TypedValue;
import android.view.ContextMenu;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import android.view.View;
@ -129,6 +131,12 @@ public class Accounts extends K9ListActivity implements OnItemClickListener {
private FontSizes mFontSizes = K9.getFontSizes();
private MenuItem mRefreshMenuItem;
private ActionBar mActionBar;
private TextView mActionBarTitle;
private TextView mActionBarSubTitle;
private TextView mActionBarUnread;
/**
* Contains information about objects that need to be retained on configuration changes.
*
@ -141,9 +149,17 @@ public class Accounts extends K9ListActivity implements OnItemClickListener {
class AccountsHandler extends Handler {
private void setViewTitle() {
String dispString = mListener.formatHeader(Accounts.this, getString(R.string.accounts_title), mUnreadMessageCount, getTimeFormat());
mActionBarTitle.setText(" "+getString(R.string.accounts_title));
mActionBarUnread.setText(String.valueOf(mUnreadMessageCount));
setTitle(dispString);
String operation = mListener.getOperation(Accounts.this, getTimeFormat());
operation.trim();
if (operation.length() < 1) {
mActionBarSubTitle.setVisibility(View.GONE);
} else {
mActionBarSubTitle.setVisibility(View.VISIBLE);
mActionBarSubTitle.setText(operation);
}
}
public void refreshTitle() {
runOnUiThread(new Runnable() {
@ -373,7 +389,8 @@ public class Accounts extends K9ListActivity implements OnItemClickListener {
}
requestWindowFeature(Window.FEATURE_PROGRESS);
getSupportActionBar().setHomeButtonEnabled(false);
mActionBar = getSupportActionBar();
initializeActionBar();
setContentView(R.layout.accounts);
ListView listView = getListView();
listView.setOnItemClickListener(this);
@ -395,6 +412,18 @@ public class Accounts extends K9ListActivity implements OnItemClickListener {
}
}
private void initializeActionBar() {
mActionBar.setDisplayShowCustomEnabled(true);
mActionBar.setCustomView(R.layout.actionbar_custom);
View customView = mActionBar.getCustomView();
mActionBarTitle = (TextView) customView.findViewById(R.id.actionbar_title_first);
mActionBarSubTitle = (TextView) customView.findViewById(R.id.actionbar_title_sub);
mActionBarUnread = (TextView) customView.findViewById(R.id.actionbar_unread_count);
mActionBar.setDisplayHomeAsUpEnabled(true);
}
/**
* Creates and initializes the special accounts ('Unified Inbox' and 'All Messages')
*/

View File

@ -23,6 +23,13 @@ public class ActivityListener extends MessagingListener {
public String formatHeader(Context context, String activityPrefix, int unreadMessageCount, DateFormat timeFormat) {
String operation = getOperation(context, timeFormat);
return context.getString(R.string.activity_header_format, activityPrefix,
(unreadMessageCount > 0 ? context.getString(R.string.activity_unread_count, unreadMessageCount) : ""),
operation);
}
public String getOperation(Context context, DateFormat timeFormat){
String operation = null;
String progress = null;
if (mLoadingAccountDescription != null
@ -66,11 +73,7 @@ public class ActivityListener extends MessagingListener {
}
}
return context.getString(R.string.activity_header_format, activityPrefix,
(unreadMessageCount > 0 ? context.getString(R.string.activity_unread_count, unreadMessageCount) : ""),
operation);
return operation;
}
public void informUserOfStatus() {