From ce7d04b59525480c2111483a9b504894c260cd55 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Mon, 13 Jan 2020 14:12:29 -0600 Subject: [PATCH] Start converting to view binding --- app/build.gradle.kts | 4 ++ .../todoroo/astrid/activity/MainActivity.java | 34 +++++------- .../astrid/activity/TaskEditFragment.java | 22 +++----- .../astrid/core/CustomFilterActivity.java | 24 +++------ .../ui/activity/TaskerCreateTaskActivity.java | 53 +++++++------------ .../res/layout/activity_tasker_create.xml | 4 +- .../res/layout/custom_filter_activity.xml | 6 ++- .../main/res/layout/fragment_task_edit.xml | 4 +- 8 files changed, 58 insertions(+), 93 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 34c9700f1..fbc0d8050 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -113,6 +113,10 @@ android { } } + viewBinding { + isEnabled = true + } + dataBinding { isEnabled = true } diff --git a/app/src/main/java/com/todoroo/astrid/activity/MainActivity.java b/app/src/main/java/com/todoroo/astrid/activity/MainActivity.java index 39c0135a8..52cb7cbda 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/MainActivity.java +++ b/app/src/main/java/com/todoroo/astrid/activity/MainActivity.java @@ -21,15 +21,12 @@ import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.inputmethod.InputMethodManager; -import android.widget.FrameLayout; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.view.ActionMode; import androidx.drawerlayout.widget.DrawerLayout; import androidx.fragment.app.FragmentManager; import androidx.lifecycle.ViewModelProviders; -import butterknife.BindView; -import butterknife.ButterKnife; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.data.Task; @@ -45,6 +42,7 @@ import org.tasks.LocalBroadcastManager; import org.tasks.R; import org.tasks.activities.TagSettingsActivity; import org.tasks.billing.Inventory; +import org.tasks.databinding.TaskListActivityBinding; import org.tasks.dialogs.SortDialog; import org.tasks.fragments.CommentBarFragment; import org.tasks.gtasks.PlayServices; @@ -94,15 +92,6 @@ public class MainActivity extends InjectingAppCompatActivity @Inject PlayServices playServices; @Inject Inventory inventory; - @BindView(R.id.drawer_layout) - DrawerLayout drawerLayout; - - @BindView(R.id.master) - FrameLayout master; - - @BindView(R.id.detail) - FrameLayout detail; - private CompositeDisposable disposables; private NavigationDrawerFragment navigationDrawer; private int currentNightMode; @@ -111,6 +100,8 @@ public class MainActivity extends InjectingAppCompatActivity private Filter filter; private ActionMode actionMode = null; + TaskListActivityBinding binding; + /** @see android.app.Activity#onCreate(Bundle) */ @Override protected void onCreate(Bundle savedInstanceState) { @@ -122,9 +113,8 @@ public class MainActivity extends InjectingAppCompatActivity currentNightMode = getNightMode(); currentPro = inventory.hasPro(); - setContentView(R.layout.task_list_activity); - - ButterKnife.bind(this); + binding = TaskListActivityBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); if (savedInstanceState != null) { filter = savedInstanceState.getParcelable(EXTRA_FILTER); @@ -132,9 +122,9 @@ public class MainActivity extends InjectingAppCompatActivity } navigationDrawer = getNavigationDrawerFragment(); - navigationDrawer.setUp(drawerLayout); + navigationDrawer.setUp(binding.drawerLayout); - drawerLayout.addDrawerListener( + binding.drawerLayout.addDrawerListener( new DrawerLayout.SimpleDrawerListener() { @Override public void onDrawerStateChanged(int newState) { @@ -244,8 +234,8 @@ public class MainActivity extends InjectingAppCompatActivity private void showDetailFragment() { if (isSinglePaneLayout()) { - detail.setVisibility(View.VISIBLE); - master.setVisibility(View.GONE); + binding.detail.setVisibility(View.VISIBLE); + binding.master.setVisibility(View.GONE); } } @@ -256,8 +246,8 @@ public class MainActivity extends InjectingAppCompatActivity .commit(); if (isSinglePaneLayout()) { - master.setVisibility(View.VISIBLE); - detail.setVisibility(View.GONE); + binding.master.setVisibility(View.VISIBLE); + binding.detail.setVisibility(View.GONE); } } @@ -281,7 +271,7 @@ public class MainActivity extends InjectingAppCompatActivity private void applyTheme() { ThemeColor filterColor = getFilterColor(); - filterColor.applyToStatusBar(drawerLayout); + filterColor.applyToStatusBar(binding.drawerLayout); filterColor.applyToNavigationBar(this); filterColor.applyTaskDescription( this, filter == null ? getString(R.string.app_name) : filter.listingTitle); diff --git a/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java b/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java index f5afb1784..acc9b0df0 100755 --- a/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java +++ b/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java @@ -21,14 +21,11 @@ import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; -import android.widget.LinearLayout; import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; import androidx.core.content.ContextCompat; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; -import butterknife.BindView; -import butterknife.ButterKnife; import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.astrid.api.Filter; @@ -48,6 +45,7 @@ import org.tasks.R; import org.tasks.analytics.Tracker; import org.tasks.data.UserActivity; import org.tasks.data.UserActivityDao; +import org.tasks.databinding.FragmentTaskEditBinding; import org.tasks.dialogs.DialogBuilder; import org.tasks.fragments.TaskEditControlSetFragmentManager; import org.tasks.injection.ForActivity; @@ -76,15 +74,6 @@ public final class TaskEditFragment extends InjectingFragment @Inject Tracker tracker; @Inject TimerPlugin timerPlugin; - @BindView(R.id.toolbar) - Toolbar toolbar; - - @BindView(R.id.comments) - LinearLayout comments; - - @BindView(R.id.control_sets) - LinearLayout controlSets; - Task model = null; private TaskEditFragmentCallbackHandler callback; @@ -111,12 +100,13 @@ public final class TaskEditFragment extends InjectingFragment @Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_task_edit, container, false); - ButterKnife.bind(this, view); + FragmentTaskEditBinding binding = FragmentTaskEditBinding.inflate(inflater); + View view = binding.getRoot(); Bundle arguments = getArguments(); model = arguments.getParcelable(EXTRA_TASK); + Toolbar toolbar = binding.toolbar.toolbar; final boolean backButtonSavesTask = preferences.backButtonSavesTask(); toolbar.setNavigationIcon( ContextCompat.getDrawable( @@ -142,7 +132,7 @@ public final class TaskEditFragment extends InjectingFragment notificationManager.cancel(model.getId()); } - commentsController.initialize(model, comments); + commentsController.initialize(model, binding.comments); commentsController.reloadView(); FragmentManager fragmentManager = getChildFragmentManager(); @@ -161,7 +151,7 @@ public final class TaskEditFragment extends InjectingFragment fragmentTransaction.commit(); for (int i = taskEditControlFragments.size() - 2; i > 1; i--) { - controlSets.addView(inflater.inflate(R.layout.task_edit_row_divider, controlSets, false), i); + binding.controlSets.addView(inflater.inflate(R.layout.task_edit_row_divider, binding.controlSets, false), i); } return view; diff --git a/app/src/main/java/com/todoroo/astrid/core/CustomFilterActivity.java b/app/src/main/java/com/todoroo/astrid/core/CustomFilterActivity.java index 63dc383fa..54454114e 100644 --- a/app/src/main/java/com/todoroo/astrid/core/CustomFilterActivity.java +++ b/app/src/main/java/com/todoroo/astrid/core/CustomFilterActivity.java @@ -18,12 +18,9 @@ import android.view.ContextMenu.ContextMenuInfo; import android.view.MenuItem; import android.view.View; import android.view.inputmethod.InputMethodManager; -import android.widget.EditText; import android.widget.ListView; import androidx.appcompat.widget.Toolbar; import androidx.core.content.ContextCompat; -import butterknife.BindView; -import butterknife.ButterKnife; import com.todoroo.andlib.data.Property.CountProperty; import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.sql.UnaryCriterion; @@ -46,6 +43,7 @@ import java.util.Map.Entry; import javax.inject.Inject; import org.tasks.R; import org.tasks.data.FilterDao; +import org.tasks.databinding.CustomFilterActivityBinding; import org.tasks.dialogs.DialogBuilder; import org.tasks.filters.FilterCriteriaProvider; import org.tasks.injection.ActivityComponent; @@ -66,20 +64,13 @@ public class CustomFilterActivity extends ThemedInjectingAppCompatActivity private static final String IDENTIFIER_UNIVERSE = "active"; // $NON-NLS-1$ private static final int MENU_GROUP_FILTER = 0; - // --- hierarchy of filter classes @Inject Database database; @Inject FilterDao filterDao; @Inject DialogBuilder dialogBuilder; - - // --- activity @Inject FilterCriteriaProvider filterCriteriaProvider; @Inject Locale locale; - @BindView(R.id.tag_name) - EditText filterName; - - @BindView(R.id.toolbar) - Toolbar toolbar; + CustomFilterActivityBinding binding; private ListView listView; private CustomFilterAdapter adapter; @@ -119,9 +110,10 @@ public class CustomFilterActivity extends ThemedInjectingAppCompatActivity protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.custom_filter_activity); - ButterKnife.bind(this); + binding = CustomFilterActivityBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + Toolbar toolbar = binding.toolbar.toolbar; toolbar.setNavigationIcon(ContextCompat.getDrawable(this, R.drawable.ic_outline_clear_24px)); toolbar.setTitle(R.string.FLA_new_filter); toolbar.inflateMenu(R.menu.menu_custom_filter_activity); @@ -186,7 +178,7 @@ public class CustomFilterActivity extends ThemedInjectingAppCompatActivity @Override public void finish() { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); - imm.hideSoftInputFromWindow(filterName.getWindowToken(), 0); + imm.hideSoftInputFromWindow(binding.filterName.getWindowToken(), 0); super.finish(); } @@ -203,7 +195,7 @@ public class CustomFilterActivity extends ThemedInjectingAppCompatActivity } private void saveAndView() { - String title = filterName.getText().toString().trim(); + String title = binding.filterName.getText().toString().trim(); if (isEmpty(title)) { return; @@ -327,7 +319,7 @@ public class CustomFilterActivity extends ThemedInjectingAppCompatActivity } private void discard() { - if (filterName.getText().toString().trim().isEmpty() && adapter.getCount() <= 1) { + if (binding.filterName.getText().toString().trim().isEmpty() && adapter.getCount() <= 1) { finish(); } else { dialogBuilder diff --git a/app/src/main/java/org/tasks/locale/ui/activity/TaskerCreateTaskActivity.java b/app/src/main/java/org/tasks/locale/ui/activity/TaskerCreateTaskActivity.java index 9f7ece6ed..459ed5f65 100755 --- a/app/src/main/java/org/tasks/locale/ui/activity/TaskerCreateTaskActivity.java +++ b/app/src/main/java/org/tasks/locale/ui/activity/TaskerCreateTaskActivity.java @@ -8,14 +8,13 @@ import android.os.Bundle; import android.view.MenuItem; import androidx.appcompat.widget.Toolbar; import androidx.core.content.ContextCompat; -import butterknife.BindView; -import butterknife.ButterKnife; -import com.google.android.material.textfield.TextInputEditText; import javax.inject.Inject; import net.dinglisch.android.tasker.TaskerPlugin; import org.tasks.LocalBroadcastManager; import org.tasks.R; import org.tasks.billing.Inventory; +import org.tasks.databinding.ActivityTaskerCreateBinding; +import org.tasks.databinding.ToolbarBinding; import org.tasks.injection.ActivityComponent; import org.tasks.locale.bundle.TaskCreationBundle; import org.tasks.preferences.Preferences; @@ -30,23 +29,7 @@ public final class TaskerCreateTaskActivity extends AbstractFragmentPluginAppCom @Inject Inventory inventory; @Inject LocalBroadcastManager localBroadcastManager; - @BindView(R.id.title) - TextInputEditText title; - - @BindView(R.id.toolbar) - Toolbar toolbar; - - @BindView(R.id.due_date) - TextInputEditText dueDate; - - @BindView(R.id.due_time) - TextInputEditText dueTime; - - @BindView(R.id.priority) - TextInputEditText priority; - - @BindView(R.id.description) - TextInputEditText description; + ActivityTaskerCreateBinding binding; private Bundle previousBundle; @@ -54,10 +37,10 @@ public final class TaskerCreateTaskActivity extends AbstractFragmentPluginAppCom public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_tasker_create); - - ButterKnife.bind(this); + binding = ActivityTaskerCreateBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + Toolbar toolbar = binding.toolbar.toolbar; toolbar.setTitle(R.string.tasker_create_task); final boolean backButtonSavesTask = preferences.backButtonSavesTask(); toolbar.setNavigationIcon( @@ -81,7 +64,7 @@ public final class TaskerCreateTaskActivity extends AbstractFragmentPluginAppCom if (savedInstanceState != null) { previousBundle = savedInstanceState.getParcelable(TaskCreationBundle.EXTRA_BUNDLE); TaskCreationBundle bundle = new TaskCreationBundle(previousBundle); - title.setText(bundle.getTitle()); + binding.title.setText(bundle.getTitle()); } if (!inventory.purchasedTasker()) { @@ -98,11 +81,11 @@ public final class TaskerCreateTaskActivity extends AbstractFragmentPluginAppCom final Bundle previousBundle, final String previousBlurb) { this.previousBundle = previousBundle; TaskCreationBundle bundle = new TaskCreationBundle(previousBundle); - title.setText(bundle.getTitle()); - dueDate.setText(bundle.getDueDate()); - dueTime.setText(bundle.getDueTime()); - priority.setText(bundle.getPriority()); - description.setText(bundle.getDescription()); + binding.title.setText(bundle.getTitle()); + binding.dueDate.setText(bundle.getDueDate()); + binding.dueTime.setText(bundle.getDueTime()); + binding.priority.setText(bundle.getPriority()); + binding.description.setText(bundle.getDescription()); } @Override @@ -113,11 +96,11 @@ public final class TaskerCreateTaskActivity extends AbstractFragmentPluginAppCom @Override protected Bundle getResultBundle() { TaskCreationBundle bundle = new TaskCreationBundle(); - bundle.setTitle(title.getText().toString().trim()); - bundle.setDueDate(dueDate.getText().toString().trim()); - bundle.setDueTime(dueTime.getText().toString().trim()); - bundle.setPriority(priority.getText().toString().trim()); - bundle.setDescription(description.getText().toString().trim()); + bundle.setTitle(binding.title.getText().toString().trim()); + bundle.setDueDate(binding.dueDate.getText().toString().trim()); + bundle.setDueTime(binding.dueTime.getText().toString().trim()); + bundle.setPriority(binding.priority.getText().toString().trim()); + bundle.setDescription(binding.description.getText().toString().trim()); Bundle resultBundle = bundle.build(); if (TaskerPlugin.Setting.hostSupportsOnFireVariableReplacement(this)) { TaskerPlugin.Setting.setVariableReplaceKeys( @@ -135,7 +118,7 @@ public final class TaskerCreateTaskActivity extends AbstractFragmentPluginAppCom @Override public String getResultBlurb(final Bundle bundle) { - return title.getText().toString().trim(); + return binding.title.getText().toString().trim(); } @Override diff --git a/app/src/main/res/layout/activity_tasker_create.xml b/app/src/main/res/layout/activity_tasker_create.xml index 62c3b238f..70de7e0ac 100644 --- a/app/src/main/res/layout/activity_tasker_create.xml +++ b/app/src/main/res/layout/activity_tasker_create.xml @@ -5,7 +5,9 @@ android:layout_height="match_parent" android:orientation="vertical"> - + - + - +