Skip to content

Commit 9b945b9

Browse files
committed
configure reset_account menu item from fragment, thus getting rid of one expensive db call
1 parent b37e33d commit 9b945b9

2 files changed

Lines changed: 14 additions & 2 deletions

File tree

src/org/totschnig/myexpenses/activity/MyExpenses.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -259,8 +259,6 @@ public boolean onPrepareOptionsMenu(Menu menu) {
259259
super.onPrepareOptionsMenu(menu);
260260
//I would prefer to use setEnabled, but the disabled state unfortunately is not visually reflected
261261
//in the actionbar
262-
menu.findItem(R.id.RESET_ACCOUNT_COMMAND)
263-
.setVisible(mCurrentAccount.getSize() > 0);
264262
menu.findItem(R.id.INSERT_TRANSFER_COMMAND)
265263
.setVisible(Account.countPerCurrency(mCurrentAccount.currency) > 1);
266264
menu.findItem(R.id.NEW_FROM_TEMPLATE_COMMAND)

src/org/totschnig/myexpenses/fragment/TransactionList.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
import com.actionbarsherlock.app.SherlockFragment;
1616
import com.actionbarsherlock.app.SherlockFragmentActivity;
17+
import com.actionbarsherlock.view.Menu;
1718

1819
import android.content.ContentResolver;
1920
import android.content.Intent;
@@ -49,6 +50,7 @@ public class TransactionList extends SherlockFragment implements LoaderManager.L
4950
private Account mAccount;
5051
private TextView balanceTv;
5152
private View bottomLine;
53+
private boolean hasItems;
5254

5355
public static TransactionList newInstance(long accountId) {
5456

@@ -61,6 +63,7 @@ public static TransactionList newInstance(long accountId) {
6163
@Override
6264
public void onCreate(Bundle savedInstanceState) {
6365
super.onCreate(savedInstanceState);
66+
setHasOptionsMenu(true);
6467
accountId = getArguments().getLong("account_id");
6568
mAccount = Account.getInstanceFromDb(getArguments().getLong("account_id"));
6669
tObserver = new TransactionsObserver(new Handler());
@@ -87,6 +90,11 @@ public void onDestroy() {
8790
// Do Nothing. Observer has already been unregistered.
8891
}
8992
}
93+
@Override
94+
public void onPrepareOptionsMenu(Menu menu) {
95+
if (isVisible())
96+
menu.findItem(R.id.RESET_ACCOUNT_COMMAND).setVisible(hasItems);
97+
}
9098

9199
@Override
92100
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
@@ -214,11 +222,17 @@ public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
214222
@Override
215223
public void onLoadFinished(Loader<Cursor> arg0, Cursor c) {
216224
mAdapter.swapCursor(c);
225+
hasItems = c.getCount()>0;
226+
if (isVisible())
227+
getSherlockActivity().supportInvalidateOptionsMenu();
217228
}
218229

219230
@Override
220231
public void onLoaderReset(Loader<Cursor> arg0) {
221232
mAdapter.swapCursor(null);
233+
hasItems = false;
234+
if (isVisible())
235+
getSherlockActivity().supportInvalidateOptionsMenu();
222236
}
223237
class TransactionsObserver extends ContentObserver {
224238
public TransactionsObserver(Handler handler) {

0 commit comments

Comments
 (0)