]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/ui/activity/MainActivity.java
fix current fragment indicator in the drawer after returning from the new transaction...
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / ui / activity / MainActivity.java
index 52436c4d85b55bac04bb7afb296f9b2e539999b7..5c2c6f5c1d23f616ff480606dc80931d39bcb1e6 100644 (file)
@@ -35,8 +35,9 @@ import android.view.MenuItem;
 import android.view.View;
 import android.widget.LinearLayout;
 
-import net.ktnx.mobileledger.ui.account_summary.AccountSummaryFragment;
 import net.ktnx.mobileledger.R;
+import net.ktnx.mobileledger.model.LedgerAccount;
+import net.ktnx.mobileledger.ui.account_summary.AccountSummaryFragment;
 import net.ktnx.mobileledger.ui.transaction_list.TransactionListFragment;
 
 public class MainActivity extends AppCompatActivity {
@@ -44,6 +45,7 @@ public class MainActivity extends AppCompatActivity {
     private AccountSummaryFragment accountSummaryFragment;
     private TransactionListFragment transactionListFragment;
     private Fragment currentFragment = null;
+    private FragmentManager fragmentManager;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -70,33 +72,10 @@ public class MainActivity extends AppCompatActivity {
             e.printStackTrace();
         }
 
-        onAccountSummaryClicked(null);
-    }
+        fragmentManager = getSupportFragmentManager();
 
-    @Override
-    protected void onStart() {
-        super.onStart();
-        LinearLayout grp = drawer.findViewById(R.id.nav_actions);
-        for (int i = 0; i < grp.getChildCount(); i++) {
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
-                grp.getChildAt(i).setBackgroundColor(
-                        getResources().getColor(R.color.drawer_background, getTheme()));
-            }
-            else {
-                grp.getChildAt(i)
-                        .setBackgroundColor(getResources().getColor(R.color.drawer_background));
-            }
-        }
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
-            drawer.findViewById(R.id.nav_account_summary).setBackgroundColor(
-                    getResources().getColor(R.color.table_row_even_bg, getTheme()));
-        }
-        else {
-            drawer.findViewById(R.id.nav_account_summary)
-                    .setBackgroundColor(getResources().getColor(R.color.table_row_even_bg));
-        }
+        onAccountSummaryClicked(null);
     }
-
     public void fab_new_transaction_clicked(View view) {
         Intent intent = new Intent(this, NewTransactionActivity.class);
         startActivity(intent);
@@ -112,7 +91,7 @@ public class MainActivity extends AppCompatActivity {
         Intent intent = new Intent(this, SettingsActivity.class);
         startActivity(intent);
     }
-    private void markDrawerItemCurrent(int id) {
+    public void markDrawerItemCurrent(int id) {
         View item = drawer.findViewById(id);
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
             item.setBackgroundColor(getResources().getColor(R.color.table_row_even_bg, getTheme()));
@@ -163,24 +142,50 @@ public class MainActivity extends AppCompatActivity {
         }
     }
     public void onAccountSummaryClicked(View view) {
-        markDrawerItemCurrent(R.id.nav_account_summary);
         drawer.closeDrawers();
 
-        FragmentManager fm = getSupportFragmentManager();
-        FragmentTransaction ft = fm.beginTransaction();
-        currentFragment = accountSummaryFragment = new AccountSummaryFragment();
+        resetFragmentBackStack();
+
+        showAccountSummaryFragment();
+    }
+    private void showAccountSummaryFragment() {
+        FragmentTransaction ft = fragmentManager.beginTransaction();
+        accountSummaryFragment = new AccountSummaryFragment();
         ft.replace(R.id.root_frame, accountSummaryFragment);
         ft.commit();
+        currentFragment = accountSummaryFragment;
     }
     public void onLatestTransactionsClicked(View view) {
-        markDrawerItemCurrent(R.id.nav_latest_transactions);
         drawer.closeDrawers();
 
-        FragmentManager fm = getSupportFragmentManager();
-        FragmentTransaction ft = fm.beginTransaction();
-        currentFragment = transactionListFragment = new TransactionListFragment();
+        resetFragmentBackStack();
+
+        showTransactionsFragment(null);
+    }
+    private void resetFragmentBackStack() {
+//        fragmentManager.popBackStack(0, FragmentManager.POP_BACK_STACK_INCLUSIVE);
+    }
+    private void showTransactionsFragment(LedgerAccount account) {
+        FragmentTransaction ft = fragmentManager.beginTransaction();
+        if (transactionListFragment == null) {
+            Log.d("flow", "MainActivity creating TransactionListFragment");
+            transactionListFragment = new TransactionListFragment();
+        }
+        Bundle bundle = new Bundle();
+        if (account != null) {
+            bundle.putString(TransactionListFragment.BUNDLE_KEY_FILTER_ACCOUNT_NAME,
+                    account.getName());
+        }
+        transactionListFragment.setArguments(bundle);
         ft.replace(R.id.root_frame, transactionListFragment);
+        if (account != null)
+            ft.addToBackStack(getResources().getString(R.string.title_activity_transaction_list));
         ft.commit();
+
+        currentFragment = transactionListFragment;
+    }
+    public void showAccountTransactions(LedgerAccount account) {
+        showTransactionsFragment(account);
     }
     @Override
     public void onBackPressed() {
@@ -189,6 +194,9 @@ public class MainActivity extends AppCompatActivity {
             drawer.closeDrawer(GravityCompat.START);
         }
         else {
+            Log.d("fragments",
+                    String.format("manager stack: %d", fragmentManager.getBackStackEntryCount()));
+
             super.onBackPressed();
         }
     }