+ super.onPageSelected(position);
+ }
+ });
+
+ Data.lastUpdateDate.addObserver((o, arg) -> {
+ Log.d("main", "lastUpdateDate changed");
+ runOnUiThread(() -> {
+ Date date = Data.lastUpdateDate.get();
+ if (date == null) {
+ tvLastUpdate.setText(R.string.transaction_last_update_never);
+ }
+ else {
+ final String text = DateFormat.getDateTimeInstance().format(date);
+ tvLastUpdate.setText(text);
+ Log.d("despair", String.format("Date formatted: %s", text));
+ }
+ });
+ });
+
+ findViewById(R.id.btn_no_profiles_add).setOnClickListener(v -> startAddProfileActivity());
+
+ findViewById(R.id.btn_add_transaction).setOnClickListener(this::fabNewTransactionClicked);
+ }
+ @Override
+ protected void onResume() {
+ super.onResume();
+ setupProfile();
+ }
+ private void startAddProfileActivity() {
+ 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, ProfileListActivity.PROFILE_INDEX_NONE);
+ intent.putExtras(args);
+ startActivity(intent, args);
+ }
+ private void setupProfile() {
+ String profileUUID = MLDB.getOption(MLDB.OPT_PROFILE_UUID, null);
+ MobileLedgerProfile profile;
+
+ profile = MobileLedgerProfile.loadAllFromDB(profileUUID);
+
+ if (Data.profiles.getList().isEmpty()) {
+ findViewById(R.id.no_profiles_layout).setVisibility(View.VISIBLE);
+ findViewById(R.id.pager_layout).setVisibility(View.GONE);
+ return;
+ }
+
+ findViewById(R.id.pager_layout).setVisibility(View.VISIBLE);
+ findViewById(R.id.no_profiles_layout).setVisibility(View.GONE);
+
+ if (profile == null) profile = Data.profiles.get(0);
+
+ if (profile == null) throw new AssertionError("profile must have a value");
+
+ Data.setCurrentProfile(profile);