Switch from old, scary message passing to more modern "run on ui thread" for Accounts.java

40 fewer lines of code.
This commit is contained in:
Jesse Vincent 2009-12-29 17:05:44 +00:00
parent 2ef3b15c87
commit fb6d11222a
1 changed files with 55 additions and 93 deletions

View File

@ -40,72 +40,8 @@ public class Accounts extends K9ListActivity implements OnItemClickListener, OnC
private AccountsHandler mHandler = new AccountsHandler(); private AccountsHandler mHandler = new AccountsHandler();
private AccountsAdapter mAdapter; private AccountsAdapter mAdapter;
private class AccountSizeChangedHolder
{
Account account;
long oldSize;
long newSize;
}
class AccountsHandler extends Handler class AccountsHandler extends Handler
{ {
private static final int DATA_CHANGED = 1;
private static final int MSG_ACCOUNT_SIZE_CHANGED = 2;
private static final int MSG_WORKING_ACCOUNT = 3;
private static final int MSG_PROGRESS = 4;
private static final int MSG_DEFINITE_PROGRESS = 6;
private static final int MSG_SET_TITLE = 7;
public void handleMessage(android.os.Message msg)
{
switch (msg.what)
{
case MSG_SET_TITLE:
{
this.setViewTitle();
break;
}
case DATA_CHANGED:
if (mAdapter != null)
{
mAdapter.notifyDataSetChanged();
}
break;
case MSG_WORKING_ACCOUNT:
{
Account account = (Account)msg.obj;
int res = msg.arg1;
String toastText = getString(res, account.getDescription());
Toast toast = Toast.makeText(getApplication(), toastText, Toast.LENGTH_SHORT);
toast.show();
break;
}
case MSG_ACCOUNT_SIZE_CHANGED:
{
AccountSizeChangedHolder holder = (AccountSizeChangedHolder)msg.obj;
Account account = holder.account;
Long oldSize = holder.oldSize;
Long newSize = holder.newSize;
String toastText = getString(R.string.account_size_changed, account.getDescription(),
SizeFormatter.formatSize(getApplication(), oldSize), SizeFormatter.formatSize(getApplication(), newSize));;
Toast toast = Toast.makeText(getApplication(), toastText, Toast.LENGTH_LONG);
toast.show();
break;
}
case MSG_PROGRESS:
setProgressBarIndeterminateVisibility(msg.arg1 != 0);
//setProgressBarVisibility(msg.arg1 != 0);
break;
case MSG_DEFINITE_PROGRESS:
getWindow().setFeatureInt(Window.FEATURE_PROGRESS, msg.arg1);
break;
default:
super.handleMessage(msg);
}
}
private void setViewTitle() private void setViewTitle()
{ {
String dispString = mListener.formatHeader(Accounts.this, getString(R.string.accounts_title), mUnreadMessageCount); String dispString = mListener.formatHeader(Accounts.this, getString(R.string.accounts_title), mUnreadMessageCount);
@ -114,51 +50,77 @@ public class Accounts extends K9ListActivity implements OnItemClickListener, OnC
} }
public void refreshTitle() public void refreshTitle()
{ {
android.os.Message msg = new android.os.Message(); runOnUiThread(new Runnable()
msg.what = MSG_SET_TITLE; {
sendMessage(msg); public void run()
{
setViewTitle();
}
});
} }
public void dataChanged() public void dataChanged()
{ {
sendEmptyMessage(DATA_CHANGED); runOnUiThread(new Runnable()
{
public void run()
{
if (mAdapter != null)
{
mAdapter.notifyDataSetChanged();
}
}
});
} }
public void workingAccount(Account account, int res) public void workingAccount(final Account account, final int res)
{ {
android.os.Message msg = new android.os.Message(); runOnUiThread(new Runnable()
msg.what = MSG_WORKING_ACCOUNT; {
msg.obj = account; public void run()
msg.arg1 = res; {
String toastText = getString(res, account.getDescription());
sendMessage(msg); Toast toast = Toast.makeText(getApplication(), toastText, Toast.LENGTH_SHORT);
toast.show();
}
});
} }
public void accountSizeChanged(Account account, long oldSize, long newSize) public void accountSizeChanged(final Account account, final long oldSize, final long newSize)
{ {
android.os.Message msg = new android.os.Message(); runOnUiThread(new Runnable()
msg.what = MSG_ACCOUNT_SIZE_CHANGED; {
AccountSizeChangedHolder holder = new AccountSizeChangedHolder(); public void run()
holder.account = account; {
holder.oldSize = oldSize; String toastText = getString(R.string.account_size_changed, account.getDescription(),
holder.newSize = newSize; SizeFormatter.formatSize(getApplication(), oldSize), SizeFormatter.formatSize(getApplication(), newSize));;
msg.obj = holder;
sendMessage(msg); Toast toast = Toast.makeText(getApplication(), toastText, Toast.LENGTH_LONG);
toast.show();
}
});
} }
public void progress(boolean progress) public void progress(final boolean progress)
{ {
android.os.Message msg = new android.os.Message(); runOnUiThread(new Runnable()
msg.what = MSG_PROGRESS; {
msg.arg1 = progress ? 1 : 0; public void run()
sendMessage(msg); {
setProgressBarIndeterminateVisibility(progress);
}
});
} }
public void progress(int progress) public void progress(final int progress)
{ {
android.os.Message msg = new android.os.Message(); runOnUiThread(new Runnable()
msg.what = MSG_DEFINITE_PROGRESS; {
msg.arg1 = progress ; public void run()
sendMessage(msg); {
getWindow().setFeatureInt(Window.FEATURE_PROGRESS, progress);
}
});
} }
} }