- progress = findViewById(R.id.save_transaction_progress);
- fab = findViewById(R.id.fab);
- fab.setOnClickListener(v -> saveTransaction());
-
- Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
- list = findViewById(R.id.new_transaction_accounts);
- viewModel = ViewModelProviders.of(this).get(NewTransactionModel.class);
- listAdapter = new NewTransactionItemsAdapter(viewModel, mProfile);
- list.setAdapter(listAdapter);
- list.setLayoutManager(new LinearLayoutManager(this));
- Data.profile.observe(this, profile -> listAdapter.setProfile(profile));
- listAdapter.notifyDataSetChanged();
- new ItemTouchHelper(new ItemTouchHelper.Callback() {
- @Override
- public int getMovementFlags(@NonNull RecyclerView recyclerView,
- @NonNull RecyclerView.ViewHolder viewHolder) {
- int flags = makeFlag(ItemTouchHelper.ACTION_STATE_IDLE, ItemTouchHelper.END);
- if (viewModel.getAccountCount() > 2) flags |=
- makeFlag(ItemTouchHelper.ACTION_STATE_SWIPE,
- ItemTouchHelper.START | ItemTouchHelper.END);
- return flags;
- }
- @Override
- public boolean onMove(@NonNull RecyclerView recyclerView,
- @NonNull RecyclerView.ViewHolder viewHolder,
- @NonNull RecyclerView.ViewHolder target) {
- return false;
- }
- @Override
- public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
- if (viewModel.getAccountCount() == 2)
- Snackbar.make(list, R.string.msg_at_least_two_accounts_are_required,
- Snackbar.LENGTH_LONG).setAction("Action", null).show();
- else {
- int pos = viewHolder.getAdapterPosition();
- listAdapter.removeItem(pos);
- // FIXME hook next/prev links somehow
- throw new RuntimeException("TODO");
- }
- }
- }).attachToRecyclerView(list);
-
- viewModel.isSubmittable().observe(this, new Observer<Boolean>() {
- @Override
- public void onChanged(Boolean isSubmittable) {
- if (isSubmittable) {
- if (fab != null) {
- fab.show();
- fab.setEnabled(true);
- }
- }
- else {
- if (fab != null) {
- fab.hide();
- }
- }
- }
- });
- viewModel.checkTransactionSubmittable(listAdapter);