Skip to content

Commit

Permalink
migrate ui/util and ui/wizard to view bindings
Browse files Browse the repository at this point in the history
  • Loading branch information
hades committed Jun 13, 2024
1 parent dcd4925 commit cd129cd
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 67 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
Expand All @@ -34,34 +33,26 @@
import com.squareup.timessquare.CalendarPickerView;

import org.gnucash.android.R;
import org.gnucash.android.databinding.DialogDateRangePickerBinding;
import org.joda.time.LocalDate;

import java.util.Date;
import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;

/**
* Dialog for picking date ranges in terms of months.
* It is currently used for selecting ranges for reports
*
* @author Ngewi Fet <ngewif@gmail.com>
*/
public class DateRangePickerDialogFragment extends DialogFragment {

@BindView(R.id.calendar_view)
CalendarPickerView mCalendarPickerView;
@BindView(R.id.btn_save)
Button mDoneButton;
@BindView(R.id.btn_cancel)
Button mCancelButton;

private LocalDate mStartRange = LocalDate.now().minusMonths(1);
private LocalDate mEndRange = LocalDate.now();
private OnDateRangeSetListener mDateRangeSetListener;
private static final long ONE_DAY_IN_MILLIS = DateUtils.DAY_IN_MILLIS;

private DialogDateRangePickerBinding mBinding;

public static DateRangePickerDialogFragment newInstance(OnDateRangeSetListener dateRangeSetListener) {
DateRangePickerDialogFragment fragment = new DateRangePickerDialogFragment();
fragment.mDateRangeSetListener = dateRangeSetListener;
Expand All @@ -80,17 +71,17 @@ public static DateRangePickerDialogFragment newInstance(long startDate, long end
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.dialog_date_range_picker, container, false);
ButterKnife.bind(this, view);
mBinding = DialogDateRangePickerBinding.inflate(inflater, container, false);
View view = mBinding.getRoot();

mCalendarPickerView.init(mStartRange.toDate(), mEndRange.toDate())
mBinding.calendarView.init(mStartRange.toDate(), mEndRange.toDate())
.inMode(CalendarPickerView.SelectionMode.RANGE);

mDoneButton.setText(R.string.done_label);
mDoneButton.setOnClickListener(new View.OnClickListener() {
mBinding.defaultButtons.btnSave.setText(R.string.done_label);
mBinding.defaultButtons.btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
List<Date> selectedDates = mCalendarPickerView.getSelectedDates();
List<Date> selectedDates = mBinding.calendarView.getSelectedDates();
int length = selectedDates.size();
if (length > 0) {
Date startDate = selectedDates.get(0);
Expand All @@ -105,7 +96,7 @@ public void onClick(View v) {
}
});

mCancelButton.setOnClickListener(new View.OnClickListener() {
mBinding.defaultButtons.btnCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,6 @@
import org.gnucash.android.db.adapter.CommoditiesDbAdapter;
import org.gnucash.android.util.CommoditiesCursorAdapter;

import butterknife.ButterKnife;

/**
* Displays a list of all currencies in the database and allows selection of one
* <p>This fragment is intended for use with the first run wizard</p>
Expand All @@ -59,9 +57,7 @@ public static CurrencySelectFragment newInstance(String key) {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_wizard_currency_select_page, container, false);
ButterKnife.bind(this, view);
return view;
return inflater.inflate(R.layout.fragment_wizard_currency_select_page, container, false);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,8 @@
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.AppCompatButton;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
Expand All @@ -47,24 +45,19 @@

import org.gnucash.android.R;
import org.gnucash.android.app.GnuCashApplication;
import org.gnucash.android.databinding.ActivityFirstRunWizardBinding;
import org.gnucash.android.db.adapter.BooksDbAdapter;
import org.gnucash.android.ui.account.AccountsActivity;
import org.gnucash.android.ui.util.TaskDelegate;

import java.util.ArrayList;
import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;

/**
* Activity for managing the wizard displayed upon first run of the application
*/
public class FirstRunWizardActivity extends AppCompatActivity implements
PageFragmentCallbacks, ReviewFragment.Callbacks, ModelCallbacks {

@BindView(R.id.pager)
ViewPager mPager;
private MyPagerAdapter mPagerAdapter;

private boolean mEditingAfterReview;
Expand All @@ -73,17 +66,12 @@ public class FirstRunWizardActivity extends AppCompatActivity implements

private boolean mConsumePageSelectedEvent;

@BindView(R.id.btn_save)
AppCompatButton mNextButton;
@BindView(R.id.btn_cancel)
Button mPrevButton;
@BindView(R.id.strip)
StepPagerStrip mStepPagerStrip;

private List<Page> mCurrentPageSequence;
private String mAccountOptions;
private String mCurrencyCode;

private ActivityFirstRunWizardBinding mBinding;


public void onCreate(Bundle savedInstanceState) {
// we need to construct the wizard model before we call super.onCreate, because it's used in
Expand All @@ -92,30 +80,30 @@ public void onCreate(Bundle savedInstanceState) {
mWizardModel = createWizardModel(savedInstanceState);

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first_run_wizard);
ButterKnife.bind(this);
mBinding = ActivityFirstRunWizardBinding.inflate(getLayoutInflater());
setContentView(mBinding.getRoot());

setTitle(getString(R.string.title_setup_gnucash));

mPagerAdapter = new MyPagerAdapter(getSupportFragmentManager());
mPager.setAdapter(mPagerAdapter);
mStepPagerStrip
mBinding.pager.setAdapter(mPagerAdapter);
mBinding.strip
.setOnPageSelectedListener(new StepPagerStrip.OnPageSelectedListener() {
@Override
public void onPageStripSelected(int position) {
position = Math.min(mPagerAdapter.getCount() - 1,
position);
if (mPager.getCurrentItem() != position) {
mPager.setCurrentItem(position);
if (mBinding.pager.getCurrentItem() != position) {
mBinding.pager.setCurrentItem(position);
}
}
});


mPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
mBinding.pager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
mStepPagerStrip.setCurrentPage(position);
mBinding.strip.setCurrentPage(position);

if (mConsumePageSelectedEvent) {
mConsumePageSelectedEvent = false;
Expand All @@ -127,10 +115,10 @@ public void onPageSelected(int position) {
}
});

mNextButton.setOnClickListener(new View.OnClickListener() {
mBinding.defaultButtons.btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mPager.getCurrentItem() == mCurrentPageSequence.size()) {
if (mBinding.pager.getCurrentItem() == mCurrentPageSequence.size()) {
ArrayList<ReviewItem> reviewItems = new ArrayList<>();
for (Page page : mCurrentPageSequence) {
page.getReviewItems(reviewItems);
Expand Down Expand Up @@ -166,25 +154,25 @@ public void onClick(View view) {
createAccountsAndFinish();
} else {
if (mEditingAfterReview) {
mPager.setCurrentItem(mPagerAdapter.getCount() - 1);
mBinding.pager.setCurrentItem(mPagerAdapter.getCount() - 1);
} else {
mPager.setCurrentItem(mPager.getCurrentItem() + 1);
mBinding.pager.setCurrentItem(mBinding.pager.getCurrentItem() + 1);
}
}
}
});

mPrevButton.setText(R.string.wizard_btn_back);
mBinding.defaultButtons.btnCancel.setText(R.string.wizard_btn_back);
TypedValue v = new TypedValue();
getTheme().resolveAttribute(android.R.attr.textAppearanceMedium, v,
true);
mPrevButton.setTextAppearance(this, v.resourceId);
mNextButton.setTextAppearance(this, v.resourceId);
mBinding.defaultButtons.btnCancel.setTextAppearance(this, v.resourceId);
mBinding.defaultButtons.btnSave.setTextAppearance(this, v.resourceId);

mPrevButton.setOnClickListener(new View.OnClickListener() {
mBinding.defaultButtons.btnCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mPager.setCurrentItem(mPager.getCurrentItem() - 1);
mBinding.pager.setCurrentItem(mBinding.pager.getCurrentItem() - 1);
}
});

Expand Down Expand Up @@ -236,32 +224,32 @@ private void createAccountsAndFinish() {
public void onPageTreeChanged() {
mCurrentPageSequence = mWizardModel.getCurrentPageSequence();
recalculateCutOffPage();
mStepPagerStrip.setPageCount(mCurrentPageSequence.size() + 1); // + 1 =
mBinding.strip.setPageCount(mCurrentPageSequence.size() + 1); // + 1 =
// review
// step
mPagerAdapter.notifyDataSetChanged();
updateBottomBar();
}

private void updateBottomBar() {
int position = mPager.getCurrentItem();
int position = mBinding.pager.getCurrentItem();
final Resources res = getResources();
if (position == mCurrentPageSequence.size()) {
mNextButton.setText(R.string.btn_wizard_finish);
mBinding.defaultButtons.btnSave.setText(R.string.btn_wizard_finish);

mNextButton.setBackgroundDrawable(
mBinding.defaultButtons.btnSave.setBackgroundDrawable(
new ColorDrawable(ContextCompat.getColor(this, R.color.theme_accent)));
mNextButton.setTextColor(ContextCompat.getColor(this, android.R.color.white));
mBinding.defaultButtons.btnSave.setTextColor(ContextCompat.getColor(this, android.R.color.white));
} else {
mNextButton.setText(mEditingAfterReview ? R.string.review
mBinding.defaultButtons.btnSave.setText(mEditingAfterReview ? R.string.review
: R.string.btn_wizard_next);
mNextButton.setBackgroundDrawable(
mBinding.defaultButtons.btnSave.setBackgroundDrawable(
new ColorDrawable(ContextCompat.getColor(this, android.R.color.transparent)));
mNextButton.setTextColor(ContextCompat.getColor(this, R.color.theme_accent));
mNextButton.setEnabled(position != mPagerAdapter.getCutOffPage());
mBinding.defaultButtons.btnSave.setTextColor(ContextCompat.getColor(this, R.color.theme_accent));
mBinding.defaultButtons.btnSave.setEnabled(position != mPagerAdapter.getCutOffPage());
}

mPrevButton
mBinding.defaultButtons.btnCancel
.setVisibility(position <= 0 ? View.INVISIBLE : View.VISIBLE);
}

Expand Down Expand Up @@ -304,7 +292,7 @@ public void onEditScreenAfterReview(String key) {
if (mCurrentPageSequence.get(i).getKey().equals(key)) {
mConsumePageSelectedEvent = true;
mEditingAfterReview = true;
mPager.setCurrentItem(i);
mBinding.pager.setCurrentItem(i);
updateBottomBar();
break;
}
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/layout/activity_first_run_wizard.xml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
android:layout_weight="1" />

<include
android:id="@+id/default_buttons"
layout="@layout/default_buttons"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/layout/dialog_date_range_picker.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
android:layout_weight="2" />

<include
android:id="@+id/defaultButtons"
layout="@layout/default_buttons"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
Expand Down

0 comments on commit cd129cd

Please sign in to comment.