package net.ktnx.mobileledger.ui.activity;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.os.Build;
import android.os.Bundle;
-import android.preference.PreferenceManager;
import android.support.annotation.ColorInt;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import net.ktnx.mobileledger.async.RetrieveTransactionsTask;
import net.ktnx.mobileledger.model.Data;
import net.ktnx.mobileledger.model.LedgerAccount;
+import net.ktnx.mobileledger.model.MobileLedgerProfile;
import net.ktnx.mobileledger.ui.MobileLedgerListFragment;
import net.ktnx.mobileledger.ui.account_summary.AccountSummaryFragment;
import net.ktnx.mobileledger.ui.transaction_list.TransactionListFragment;
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
+ Data.profile.addObserver(new Observer() {
+ @Override
+ public void update(Observable o, Object arg) {
+ MobileLedgerProfile profile = Data.profile.get();
+ runOnUiThread(() -> {
+ if (profile == null) toolbar.setSubtitle("");
+ else toolbar.setSubtitle(profile.getName());
+ });
+ }
+ });
+
+ setupProfile();
+
drawer = findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle =
new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open,
mViewPager = findViewById(R.id.root_frame);
mViewPager.setAdapter(mSectionsPagerAdapter);
- mViewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener(){
+ mViewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
switch (position) {
});
}
});
-
- Data.ledgerTitle.addObserver(new Observer() {
- @Override
- public void update(Observable o, Object arg) {
- runOnUiThread(() -> {
- String title = Data.ledgerTitle.get();
- if (title == null) toolbar.setSubtitle("");
- else toolbar.setSubtitle(title);
- });
+ }
+ private void setupProfile() {
+ Data.profiles.setList(MobileLedgerProfile.loadAllFromDB());
+ MobileLedgerProfile profile = null;
+
+ String profileUUID = MLDB.get_option_value(MLDB.OPT_PROFILE_UUID, null);
+ if (profileUUID == null) {
+ if (Data.profiles.isEmpty()) {
+ Data.profiles.setList(MobileLedgerProfile.createInitialProfileList());
+ profile = Data.profiles.get(0);
+
+ SharedPreferences backend = getSharedPreferences("backend", MODE_PRIVATE);
+ Log.d("profiles", "Migrating from preferences to profiles");
+ // migration to multiple profiles
+ if (profile.getUrl().isEmpty()) {
+ // no legacy config
+ Intent intent = new Intent(this, ProfileListActivity.class);
+ startActivity(intent);
+ }
+ profile.setUrl(backend.getString("backend_url", ""));
+ profile.setAuthEnabled(backend.getBoolean("backend_use_http_auth", false));
+ profile.setAuthUserName(backend.getString("backend_auth_user", null));
+ profile.setAuthPassword(backend.getString("backend_auth_password", null));
+ profile.storeInDB();
+ SharedPreferences.Editor editor = backend.edit();
+ editor.clear();
+ editor.apply();
}
- });
+ }
+ else {
+ profile = MobileLedgerProfile.loadUUIDFromDB(profileUUID);
+ }
+
+ if (profile == null) profile = Data.profiles.get(0);
+
+ if (profile == null) throw new AssertionError("profile must have a value");
+
+ Data.profile.set(profile);
+ MLDB.set_option_value(MLDB.OPT_PROFILE_UUID, profile.getUuid());
+
+ if (profile.getUrl().isEmpty()) {
+ Intent intent = new Intent(this, ProfileListActivity.class);
+ Bundle args = new Bundle();
+ args.putInt(ProfileListActivity.ARG_ACTION, ProfileListActivity.ACTION_EDIT_PROFILE);
+ args.putInt(ProfileListActivity.ARG_PROFILE_INDEX, 0);
+ intent.putExtras(args);
+ startActivity(intent, args);
+ }
}
public void fab_new_transaction_clicked(View view) {
Intent intent = new Intent(this, NewTransactionActivity.class);
}
public void updateLastUpdateTextFromDB() {
{
- long last_update = MLDB.get_option_value(MLDB.OPT_TRANSACTION_LIST_STAMP, 0L);
+ long last_update = Data.profile.get().get_option_value(MLDB.OPT_LAST_SCRAPE, 0L);
Log.d("transactions", String.format("Last update = %d", last_update));
if (last_update == 0) {
public void scheduleTransactionListRetrieval() {
retrieveTransactionsTask = new RetrieveTransactionsTask(new WeakReference<>(this));
- RetrieveTransactionsTask.Params params = new RetrieveTransactionsTask.Params(
- PreferenceManager.getDefaultSharedPreferences(this));
-
- retrieveTransactionsTask.execute(params);
+ retrieveTransactionsTask.execute();
bTransactionListCancelDownload.setEnabled(true);
}
public void onStopTransactionRefreshClick(View view) {
progressBar.setIndeterminate(false);
}
}
+ public void nav_profiles_clicked(View view) {
+ drawer.closeDrawers();
+ Intent intent = new Intent(this, ProfileListActivity.class);
+ startActivity(intent);
+ }
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {