+ mSectionsPagerAdapter = new SectionsPagerAdapter(fragmentManager);
+
+ mViewPager = findViewById(R.id.root_frame);
+ mViewPager.setAdapter(mSectionsPagerAdapter);
+ mViewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
+ @Override
+ public void onPageSelected(int position) {
+ switch (position) {
+ case 0:
+ markDrawerItemCurrent(R.id.nav_account_summary);
+ break;
+ case 1:
+ markDrawerItemCurrent(R.id.nav_latest_transactions);
+ break;
+ default:
+ Log.e("MainActivity", String.format("Unexpected page index %d", position));
+ }
+
+ super.onPageSelected(position);
+ }
+ });
+
+ Data.lastUpdateDate.addObserver(new Observer() {
+ @Override
+ public void update(Observable o, Object arg) {
+ Log.d("main", "lastUpdateDate changed");
+ runOnUiThread(() -> {
+ Date date = Data.lastUpdateDate.get();
+ if (date == null) {
+ tvLastUpdate.setText(R.string.transaction_last_update_never);
+ }
+ else {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ tvLastUpdate.setText(date.toInstant().atZone(ZoneId.systemDefault())
+ .format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
+ }
+ else {
+ tvLastUpdate.setText(date.toLocaleString());
+ }
+ }
+ });
+ }
+ });
+ }
+ 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);
+ }