diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
index 0c0c338..63a9cd8 100644
--- a/.idea/deploymentTargetDropDown.xml
+++ b/.idea/deploymentTargetDropDown.xml
@@ -3,7 +3,20 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.idea/misc.xml b/.idea/misc.xml
index c94868c..d312de9 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,10 +1,11 @@
+
-
+
diff --git a/app/src/main/java/com/wismna/geoffroy/donext/activities/MainActivity.java b/app/src/main/java/com/wismna/geoffroy/donext/activities/MainActivity.java
index fb4a086..817d627 100644
--- a/app/src/main/java/com/wismna/geoffroy/donext/activities/MainActivity.java
+++ b/app/src/main/java/com/wismna/geoffroy/donext/activities/MainActivity.java
@@ -4,13 +4,14 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
-import androidx.fragment.app.FragmentManager;
-import androidx.viewpager.widget.ViewPager;
-import androidx.appcompat.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.FragmentManager;
+import androidx.viewpager.widget.ViewPager;
+
import com.microsoft.appcenter.AppCenter;
import com.microsoft.appcenter.analytics.Analytics;
import com.microsoft.appcenter.crashes.Crashes;
@@ -135,7 +136,7 @@ public class MainActivity extends AppCompatActivity {
getString(R.string.action_new_task), getResources().getBoolean(R.bool.large_layout));
}
- private ViewPager getMainFragmentViewPager(){
+ private ViewPager getMainFragmentViewPager() {
FragmentManager manager = getSupportFragmentManager();
MainFragment fragment = (MainFragment)manager.findFragmentById(R.id.fragment_main);
return fragment != null ? fragment.getViewPager() : null;
diff --git a/app/src/main/java/com/wismna/geoffroy/donext/adapters/SectionsPagerAdapter.java b/app/src/main/java/com/wismna/geoffroy/donext/adapters/SectionsPagerAdapter.java
index 99f7e30..845cb43 100644
--- a/app/src/main/java/com/wismna/geoffroy/donext/adapters/SectionsPagerAdapter.java
+++ b/app/src/main/java/com/wismna/geoffroy/donext/adapters/SectionsPagerAdapter.java
@@ -1,8 +1,8 @@
package com.wismna.geoffroy.donext.adapters;
+import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
-import androidx.fragment.app.FragmentPagerAdapter;
import com.wismna.geoffroy.donext.dao.TaskList;
import com.wismna.geoffroy.donext.fragments.TasksFragment;
@@ -10,18 +10,19 @@ import com.wismna.geoffroy.donext.fragments.TasksFragment;
import java.util.List;
/**
- * A {@link FragmentPagerAdapter} that returns a fragment corresponding to
+ * A {@link SmartFragmentStatePagerAdapter} that returns a fragment corresponding to
* one of the sections/tabs/pages.
*/
public class SectionsPagerAdapter extends SmartFragmentStatePagerAdapter {
- private List taskLists;
+ private final List taskLists;
public SectionsPagerAdapter(FragmentManager fm, List taskLists) {
super(fm);
this.taskLists = taskLists;
}
+ @NonNull
@Override
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
diff --git a/app/src/main/java/com/wismna/geoffroy/donext/dao/Task.java b/app/src/main/java/com/wismna/geoffroy/donext/dao/Task.java
index 664f34b..89b4498 100644
--- a/app/src/main/java/com/wismna/geoffroy/donext/dao/Task.java
+++ b/app/src/main/java/com/wismna/geoffroy/donext/dao/Task.java
@@ -9,7 +9,6 @@ import org.joda.time.LocalDate;
* Data access object class that represents a Task
*/
-@Deprecated
public class Task {
private long id;
private String name;
diff --git a/app/src/main/java/com/wismna/geoffroy/donext/dao/TaskList.java b/app/src/main/java/com/wismna/geoffroy/donext/dao/TaskList.java
index fb09136..f573850 100644
--- a/app/src/main/java/com/wismna/geoffroy/donext/dao/TaskList.java
+++ b/app/src/main/java/com/wismna/geoffroy/donext/dao/TaskList.java
@@ -7,7 +7,6 @@ import androidx.annotation.NonNull;
* Data access object class that represents a Task List
*/
-@Deprecated
public class TaskList {
private long id;
private String name;
diff --git a/app/src/main/java/com/wismna/geoffroy/donext/database/TaskDataAccess.java b/app/src/main/java/com/wismna/geoffroy/donext/database/TaskDataAccess.java
index 133cf1d..42619db 100644
--- a/app/src/main/java/com/wismna/geoffroy/donext/database/TaskDataAccess.java
+++ b/app/src/main/java/com/wismna/geoffroy/donext/database/TaskDataAccess.java
@@ -16,7 +16,6 @@ import java.util.List;
* Created by geoffroy on 15-11-27.
* Data access class that handles Tasks
*/
-@Deprecated
public class TaskDataAccess implements AutoCloseable {
public enum MODE {
READ,
diff --git a/app/src/main/java/com/wismna/geoffroy/donext/database/TaskListDataAccess.java b/app/src/main/java/com/wismna/geoffroy/donext/database/TaskListDataAccess.java
index 3d68d1c..b7d1b5a 100644
--- a/app/src/main/java/com/wismna/geoffroy/donext/database/TaskListDataAccess.java
+++ b/app/src/main/java/com/wismna/geoffroy/donext/database/TaskListDataAccess.java
@@ -14,7 +14,6 @@ import java.util.List;
* Created by geoffroy on 15-11-25.
* Data access class that handles Task Lists
*/
-@Deprecated
public class TaskListDataAccess implements AutoCloseable {
public enum MODE {
READ,
diff --git a/app/src/main/java/com/wismna/geoffroy/donext/fragments/ConfirmDialogFragment.java b/app/src/main/java/com/wismna/geoffroy/donext/fragments/ConfirmDialogFragment.java
index b394f9b..e754a15 100644
--- a/app/src/main/java/com/wismna/geoffroy/donext/fragments/ConfirmDialogFragment.java
+++ b/app/src/main/java/com/wismna/geoffroy/donext/fragments/ConfirmDialogFragment.java
@@ -3,16 +3,15 @@ package com.wismna.geoffroy.donext.fragments;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
-import androidx.annotation.NonNull;
-import androidx.fragment.app.DialogFragment;
-import androidx.appcompat.app.AlertDialog;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
-import com.wismna.geoffroy.donext.R;
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AlertDialog;
+import androidx.fragment.app.DialogFragment;
-import java.util.Objects;
+import com.wismna.geoffroy.donext.R;
public class ConfirmDialogFragment extends DialogFragment {
interface ConfirmDialogListener {
@@ -33,7 +32,7 @@ public class ConfirmDialogFragment extends DialogFragment {
}
@Override
- public void onCancel(DialogInterface dialog) {
+ public void onCancel(@NonNull DialogInterface dialog) {
super.onCancel(dialog);
// Allows refreshing the first item of the adapter
@@ -43,7 +42,7 @@ public class ConfirmDialogFragment extends DialogFragment {
@Override
@NonNull
public Dialog onCreateDialog(Bundle savedInstanceState) {
- AlertDialog.Builder builder = new AlertDialog.Builder(Objects.requireNonNull(getActivity()));
+ AlertDialog.Builder builder = new AlertDialog.Builder(requireActivity());
Bundle args = getArguments();
LayoutInflater inflater = getActivity().getLayoutInflater();
@@ -51,23 +50,12 @@ public class ConfirmDialogFragment extends DialogFragment {
View view = inflater.inflate(R.layout.fragment_task_confirmation, null);
assert args != null;
builder.setView(view).setMessage(args.getString("message"))
- .setPositiveButton(args.getInt("button"), new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int id) {
- confirmDialogListener.onConfirmDialogClick(ConfirmDialogFragment.this, ButtonEvent.YES);
- }
+ .setPositiveButton(args.getInt("button"), (dialog, id) -> confirmDialogListener.onConfirmDialogClick(ConfirmDialogFragment.this, ButtonEvent.YES))
+ .setNegativeButton(R.string.task_confirmation_no_button, (dialog, id) -> {
+ // User cancelled the dialog
+ ConfirmDialogFragment.this.getDialog().cancel();
})
- .setNegativeButton(R.string.task_confirmation_no_button, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int id) {
- // User cancelled the dialog
- ConfirmDialogFragment.this.getDialog().cancel();
- }
- })
- .setOnKeyListener(new DialogInterface.OnKeyListener() {
- @Override
- public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
- return keyCode != KeyEvent.KEYCODE_BACK;
- }
- });
+ .setOnKeyListener((dialog, keyCode, event) -> keyCode != KeyEvent.KEYCODE_BACK);
// Create the AlertDialog object and return it
Dialog dialog = builder.create();
dialog.setCanceledOnTouchOutside(true);
diff --git a/app/src/main/java/com/wismna/geoffroy/donext/fragments/DynamicDialogFragment.java b/app/src/main/java/com/wismna/geoffroy/donext/fragments/DynamicDialogFragment.java
index 15a3cb2..452106c 100644
--- a/app/src/main/java/com/wismna/geoffroy/donext/fragments/DynamicDialogFragment.java
+++ b/app/src/main/java/com/wismna/geoffroy/donext/fragments/DynamicDialogFragment.java
@@ -4,7 +4,6 @@ import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
-import android.content.DialogInterface;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -76,27 +75,16 @@ public abstract class DynamicDialogFragment extends DialogFragment {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
// Add action buttons
builder.setView(view)
- .setNegativeButton(mNegativeButtonString, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int id) {
- // Send the negative button event back to the host activity
- // Canceled creation, nothing to do
- onNegativeButtonClick();
- }
+ .setNegativeButton(mNegativeButtonString, (dialog, id) -> {
+ // Send the negative button event back to the host activity
+ // Canceled creation, nothing to do
+ onNegativeButtonClick();
});
if (mButtonCount >= 2) {
- builder.setPositiveButton(mPositiveButtonString, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int id) {
- onPositiveButtonClick(view);
- }
- });
+ builder.setPositiveButton(mPositiveButtonString, (dialog, id) -> onPositiveButtonClick(view));
}
if (mButtonCount == 3) {
- builder.setNeutralButton(mNeutralButtonString, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- onNeutralButtonClick(view);
- }
- });
+ builder.setNeutralButton(mNeutralButtonString, (dialog, which) -> onNeutralButtonClick(view));
}
setToolbarTitle(view);
insertContentView(view, inflater);
@@ -104,13 +92,13 @@ public abstract class DynamicDialogFragment extends DialogFragment {
}
@Override
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+ public void onCreateOptionsMenu(Menu menu, @NonNull MenuInflater inflater) {
menu.clear();
- Objects.requireNonNull(getActivity()).getMenuInflater().inflate(R.menu.menu_dynamic_fragment, menu);
+ requireActivity().getMenuInflater().inflate(R.menu.menu_dynamic_fragment, menu);
}
@Override
- public void onPrepareOptionsMenu(Menu menu) {
+ public void onPrepareOptionsMenu(@NonNull Menu menu) {
/*switch (mButtonCount) {
case 1:
menu.removeItem(R.id.menu_positive_button);
@@ -148,7 +136,7 @@ public abstract class DynamicDialogFragment extends DialogFragment {
// Hide the keyboard if present
if (view != null) {
- InputMethodManager imm = (InputMethodManager) Objects.requireNonNull(getActivity()).getSystemService(Activity.INPUT_METHOD_SERVICE);
+ InputMethodManager imm = (InputMethodManager) requireActivity().getSystemService(Activity.INPUT_METHOD_SERVICE);
assert imm != null;
imm.hideSoftInputFromWindow(getView().getWindowToken(), 0);
}
@@ -201,7 +189,7 @@ public abstract class DynamicDialogFragment extends DialogFragment {
/** Helper function to get a View, without having to worry about the fact that is a Dialog or not*/
protected T findViewById(int id) {
if (getShowsDialog()) return getDialog().findViewById(id);
- return Objects.requireNonNull(getView()).findViewById(id);
+ return requireView().findViewById(id);
}
@@ -212,7 +200,7 @@ public abstract class DynamicDialogFragment extends DialogFragment {
view.requestFocus();
// Hide keyboard
- InputMethodManager inputMethodManager = (InputMethodManager) Objects.requireNonNull(getContext()).getSystemService(Context.INPUT_METHOD_SERVICE);
+ InputMethodManager inputMethodManager = (InputMethodManager) requireContext().getSystemService(Context.INPUT_METHOD_SERVICE);
Objects.requireNonNull(inputMethodManager).hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
diff --git a/app/src/main/java/com/wismna/geoffroy/donext/fragments/MainFragment.java b/app/src/main/java/com/wismna/geoffroy/donext/fragments/MainFragment.java
index b4c3d3d..1e27035 100644
--- a/app/src/main/java/com/wismna/geoffroy/donext/fragments/MainFragment.java
+++ b/app/src/main/java/com/wismna/geoffroy/donext/fragments/MainFragment.java
@@ -6,22 +6,22 @@ import android.graphics.Point;
import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceManager;
-import androidx.annotation.NonNull;
-import androidx.constraintlayout.widget.ConstraintLayout;
-import androidx.constraintlayout.widget.Guideline;
-import com.google.android.material.tabs.TabLayout;
-import androidx.fragment.app.Fragment;
-import androidx.viewpager.widget.ViewPager;
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.recyclerview.widget.RecyclerView;
-import androidx.appcompat.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
+import androidx.constraintlayout.widget.ConstraintLayout;
+import androidx.constraintlayout.widget.Guideline;
+import androidx.fragment.app.Fragment;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.viewpager.widget.ViewPager;
+
+import com.google.android.material.tabs.TabLayout;
import com.wismna.geoffroy.donext.R;
import com.wismna.geoffroy.donext.activities.HistoryActivity;
import com.wismna.geoffroy.donext.adapters.SectionsPagerAdapter;
@@ -126,7 +126,7 @@ public class MainFragment extends Fragment implements
// Create the adapter that will return a fragment for each of the three
// primary sections of the activity.
- mSectionsPagerAdapter = new SectionsPagerAdapter(getFragmentManager(), taskLists);
+ mSectionsPagerAdapter = new SectionsPagerAdapter(getParentFragmentManager(), taskLists);
mSectionsPagerAdapter.notifyDataSetChanged();
}
@@ -145,12 +145,7 @@ public class MainFragment extends Fragment implements
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
toggleTabLayoutArrows(tabLayout.getScrollX());
//tabLayout.setScrollIndicators(TabLayout.SCROLL_INDICATOR_LEFT | TabLayout.SCROLL_INDICATOR_RIGHT);
- tabLayout.setOnScrollChangeListener(new View.OnScrollChangeListener() {
- @Override
- public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
- toggleTabLayoutArrows(scrollX);
- }
- });
+ tabLayout.setOnScrollChangeListener((v, scrollX, scrollY, oldScrollX, oldScrollY) -> toggleTabLayoutArrows(scrollX));
}
}
else {
@@ -164,12 +159,7 @@ public class MainFragment extends Fragment implements
// Hide the list if there is only one task list
listView.setAdapter(new ArrayAdapter<>(activity, R.layout.list_tasklist_item, taskLists));
//listView.setSelection(lastOpenedList);
- listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView> parent, View view, int position, long id) {
- mViewPager.setCurrentItem(position);
- }
- });
+ listView.setOnItemClickListener((parent, view, position, id) -> mViewPager.setCurrentItem(position));
}
}
diff --git a/app/src/main/java/com/wismna/geoffroy/donext/fragments/TaskFormDialogFragment.java b/app/src/main/java/com/wismna/geoffroy/donext/fragments/TaskFormDialogFragment.java
index c1c1725..bc37a88 100644
--- a/app/src/main/java/com/wismna/geoffroy/donext/fragments/TaskFormDialogFragment.java
+++ b/app/src/main/java/com/wismna/geoffroy/donext/fragments/TaskFormDialogFragment.java
@@ -2,18 +2,18 @@ package com.wismna.geoffroy.donext.fragments;
import android.app.Activity;
import android.os.Bundle;
-import androidx.annotation.Nullable;
-import androidx.fragment.app.DialogFragment;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
-import android.widget.CompoundButton;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.SeekBar;
import android.widget.Spinner;
import android.widget.TextView;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.DialogFragment;
+
import com.wismna.geoffroy.donext.R;
import com.wismna.geoffroy.donext.activities.HistoryActivity;
import com.wismna.geoffroy.donext.dao.Task;
@@ -66,7 +66,7 @@ public class TaskFormDialogFragment extends DynamicDialogFragment {
mButtonCount = args.getInt("button_count");
mPositiveButtonString = getString(R.string.new_task_save);
mNegativeButtonString = getString(R.string.new_task_cancel);
- mNeutralButtonString = getString(mTask.isHistory() ? R.string.new_task_restore : R.string.new_task_delete);
+ if (mTask != null) mNeutralButtonString = getString(mTask.isHistory() ? R.string.new_task_restore : R.string.new_task_delete);
listId = args.getInt("list");
isToday = args.getBoolean("today");
}
@@ -141,12 +141,7 @@ public class TaskFormDialogFragment extends DynamicDialogFragment {
final DatePicker dueDatePicker = findViewById(R.id.new_task_due_date);
// Handle due date spinner depending on check box
CheckBox setDueDate = findViewById(R.id.new_task_due_date_set);
- setDueDate.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- dueDatePicker.setVisibility(isChecked ? View.VISIBLE : View.GONE);
- }
- });
+ setDueDate.setOnCheckedChangeListener((buttonView, isChecked) -> dueDatePicker.setVisibility(isChecked ? View.VISIBLE : View.GONE));
// Handle priority changes
final TextView tooltip = findViewById(R.id.new_task_priority_tooltip);
diff --git a/app/src/main/java/com/wismna/geoffroy/donext/fragments/TaskListsDialogFragment.java b/app/src/main/java/com/wismna/geoffroy/donext/fragments/TaskListsDialogFragment.java
index ea7c388..5526c5b 100644
--- a/app/src/main/java/com/wismna/geoffroy/donext/fragments/TaskListsDialogFragment.java
+++ b/app/src/main/java/com/wismna/geoffroy/donext/fragments/TaskListsDialogFragment.java
@@ -23,7 +23,6 @@ import com.wismna.geoffroy.donext.helpers.TaskListTouchHelper;
import java.lang.ref.WeakReference;
import java.util.List;
-import java.util.Objects;
/**
* A fragment representing a list of Items.
@@ -71,23 +70,20 @@ public class TaskListsDialogFragment extends DynamicDialogFragment implements
public void onStart() {
super.onStart();
Button createTaskListButton = findViewById(R.id.new_task_list_button);
- createTaskListButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- EditText editText = findViewById(R.id.new_task_list_name);
- String text = editText.getText().toString();
- if (text.matches("")) {
- editText.setError(getResources().getString(R.string.task_list_new_list_error));
- return;
- }
- int position = taskListRecyclerViewAdapter.getItemCount();
-
- TaskList taskList = taskListDataAccess.createTaskList(text, position);
- taskListRecyclerViewAdapter.add(taskList, position);
-
- editText.setText("");
- toggleVisibleCreateNewTaskListLayout();
+ createTaskListButton.setOnClickListener(v -> {
+ EditText editText = findViewById(R.id.new_task_list_name);
+ String text = editText.getText().toString();
+ if (text.matches("")) {
+ editText.setError(getResources().getString(R.string.task_list_new_list_error));
+ return;
}
+ int position = taskListRecyclerViewAdapter.getItemCount();
+
+ TaskList taskList = taskListDataAccess.createTaskList(text, position);
+ taskListRecyclerViewAdapter.add(taskList, position);
+
+ editText.setText("");
+ toggleVisibleCreateNewTaskListLayout();
});
}
@@ -127,7 +123,7 @@ public class TaskListsDialogFragment extends DynamicDialogFragment implements
int taskListCount = taskListRecyclerViewAdapter.getItemCount();
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getContext());
String maxTaskListsString = sharedPref.getString("pref_conf_max_lists", "5");
- int maxTaskLists = Integer.valueOf(maxTaskListsString);
+ int maxTaskLists = Integer.parseInt(maxTaskListsString);
if (taskListCount >= maxTaskLists) layout.setVisibility(View.GONE);
else layout.setVisibility(View.VISIBLE);
clearFocus();
@@ -152,7 +148,7 @@ public class TaskListsDialogFragment extends DynamicDialogFragment implements
args.putInt("ItemPosition", position);
args.putLong("ItemId", id);
confirmDialogFragment.setArguments(args);
- confirmDialogFragment.show(Objects.requireNonNull(getFragmentManager()), title);
+ confirmDialogFragment.show(getParentFragmentManager(), title);
}
else deleteTaskList(position, id);
}
@@ -196,7 +192,7 @@ public class TaskListsDialogFragment extends DynamicDialogFragment implements
}
private static class GetTaskListsTask extends AsyncTask> {
- private WeakReference fragmentReference;
+ private final WeakReference fragmentReference;
GetTaskListsTask(TaskListsDialogFragment context) {
fragmentReference = new WeakReference<>(context);
diff --git a/app/src/main/java/com/wismna/geoffroy/donext/fragments/TasksFragment.java b/app/src/main/java/com/wismna/geoffroy/donext/fragments/TasksFragment.java
index ebf2522..93ec895 100644
--- a/app/src/main/java/com/wismna/geoffroy/donext/fragments/TasksFragment.java
+++ b/app/src/main/java/com/wismna/geoffroy/donext/fragments/TasksFragment.java
@@ -6,20 +6,9 @@ import android.content.SharedPreferences;
import android.content.res.Resources;
import android.os.Bundle;
import android.preference.PreferenceManager;
-import androidx.annotation.NonNull;
-import com.google.android.material.snackbar.Snackbar;
-import androidx.fragment.app.DialogFragment;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
-import androidx.core.content.ContextCompat;
-import androidx.viewpager.widget.ViewPager;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-import androidx.recyclerview.widget.ItemTouchHelper;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.view.ViewTreeObserver;
import android.widget.CheckBox;
import android.widget.DatePicker;
import android.widget.EditText;
@@ -27,6 +16,17 @@ import android.widget.SeekBar;
import android.widget.Spinner;
import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.core.content.ContextCompat;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.recyclerview.widget.ItemTouchHelper;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.viewpager.widget.ViewPager;
+
+import com.google.android.material.snackbar.Snackbar;
import com.wismna.geoffroy.donext.R;
import com.wismna.geoffroy.donext.activities.HistoryActivity;
import com.wismna.geoffroy.donext.activities.TodayActivity;
@@ -92,7 +92,6 @@ public class TasksFragment extends Fragment implements
Activity parentActivity = getActivity();
if (parentActivity instanceof HistoryActivity) isHistory = true;
if (parentActivity instanceof TodayActivity) isTodayView = true;
- mAdapter = (MainFragment)getParentFragment();
}
@Override
@@ -101,6 +100,10 @@ public class TasksFragment extends Fragment implements
view = inflater.inflate(R.layout.fragment_tasks, container, false);
final Context context = view.getContext();
+ // TODO: is null...
+ FragmentManager manager = getParentFragmentManager();
+ mAdapter = (MainFragment)manager.findFragmentById(R.id.fragment_main);
+
// Set the Recycler view
recyclerView = view.findViewById(R.id.task_list_view);
recyclerView.setLayoutManager(new LinearLayoutManager(context));
@@ -125,88 +128,80 @@ public class TasksFragment extends Fragment implements
final Resources resources = getResources();
// Implements touch listener to add click detection
recyclerView.addOnItemTouchListener(
- new RecyclerItemClickListener(context, new RecyclerItemClickListener.OnItemClickListener() {
- @Override
- public void onItemClick(View view, int position) {
- boolean isLargeLayout = resources.getBoolean(R.bool.large_layout);
- SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getContext());
- Bundle args = new Bundle();
- args.putBoolean("today", sharedPref.getBoolean("pref_conf_today_enable", false));
- args.putInt("button_count", isHistory ? 1 : 3);
- args.putString("button_positive", getString(R.string.new_task_save));
- args.putString("button_negative",
- isHistory ? getString(R.string.task_list_ok) : getString(R.string.new_task_cancel));
- args.putString("button_neutral", getString(R.string.new_task_delete));
- args.putInt("position", position);
+ new RecyclerItemClickListener(context, (view, position) -> {
+ boolean isLargeLayout = resources.getBoolean(R.bool.large_layout);
+ SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getContext());
+ Bundle args = new Bundle();
+ args.putBoolean("today", sharedPref.getBoolean("pref_conf_today_enable", false));
+ args.putInt("button_count", isHistory ? 1 : 3);
+ args.putString("button_positive", getString(R.string.new_task_save));
+ args.putString("button_negative",
+ isHistory ? getString(R.string.task_list_ok) : getString(R.string.new_task_cancel));
+ args.putString("button_neutral", getString(R.string.new_task_delete));
+ args.putInt("position", position);
- // Set current tab value to new task dialog
- ViewPager viewPager = Objects.requireNonNull(getActivity()).findViewById(R.id.container);
- List taskLists;
- Task task = taskRecyclerViewAdapter.getItem(position);
- if (viewPager != null) {
- taskLists = ((SectionsPagerAdapter) Objects.requireNonNull(viewPager.getAdapter())).getAllItems();
- args.putInt("list", viewPager.getCurrentItem());
- }
- else {
- try (TaskListDataAccess taskListDataAccess = new TaskListDataAccess(getActivity())) {
- taskLists = taskListDataAccess.getTaskLists(isHistory);
- }
- for (TaskList taskList :
- taskLists) {
- if (taskList.getId() == task.getTaskListId()) {
- args.putInt("list", taskLists.indexOf(taskList));
- break;
- }
- }
- }
-
- FragmentManager manager = getFragmentManager();
- TaskFormDialogFragment taskDialogFragment = TaskFormDialogFragment.newInstance(
- task, taskLists, TasksFragment.this);
- taskDialogFragment.setArguments(args);
-
- // Open the fragment as a dialog or as full-screen depending on screen size
- assert manager != null;
- taskDialogFragment.showFragment(manager,
- getString(isHistory ? R.string.action_view_task : R.string.action_edit_task), isLargeLayout);
+ // Set current tab value to new task dialog
+ ViewPager viewPager = requireActivity().findViewById(R.id.container);
+ List taskLists;
+ Task task = taskRecyclerViewAdapter.getItem(position);
+ if (viewPager != null) {
+ taskLists = ((SectionsPagerAdapter) Objects.requireNonNull(viewPager.getAdapter())).getAllItems();
+ args.putInt("list", viewPager.getCurrentItem());
}
+ else {
+ try (TaskListDataAccess taskListDataAccess = new TaskListDataAccess(getActivity())) {
+ taskLists = taskListDataAccess.getTaskLists(isHistory);
+ }
+ for (TaskList taskList :
+ taskLists) {
+ if (taskList.getId() == task.getTaskListId()) {
+ args.putInt("list", taskLists.indexOf(taskList));
+ break;
+ }
+ }
+ }
+
+ TaskFormDialogFragment taskDialogFragment = TaskFormDialogFragment.newInstance(
+ task, taskLists, TasksFragment.this);
+ taskDialogFragment.setArguments(args);
+
+ // Open the fragment as a dialog or as full-screen depending on screen size
+ taskDialogFragment.showFragment(manager,
+ getString(isHistory ? R.string.action_view_task : R.string.action_edit_task), isLargeLayout);
})
);
// Handle updating total counts in a listener to be sure that the layout is available
- recyclerView.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
- @Override
- public boolean onPreDraw() {
- // isAdded is tested to prevent an IllegalStateException when fast switching between tabs
- if (!isAdded()) return true;
- Resources resources = getResources();
+ recyclerView.getViewTreeObserver().addOnPreDrawListener(() -> {
+ // isAdded is tested to prevent an IllegalStateException when fast switching between tabs
+ if (!isAdded()) return true;
+ Resources resources1 = getResources();
- // Update total cycle count
- int totalCycles = taskRecyclerViewAdapter.getCycleCount();
- TextView totalCyclesView = view.findViewById(R.id.total_task_cycles);
- if (totalCycles != 0)
- totalCyclesView.setText(resources.getQuantityString(R.plurals.task_total_cycles, totalCycles, totalCycles));
- else totalCyclesView.setText("");
+ // Update total cycle count
+ int totalCycles = taskRecyclerViewAdapter.getCycleCount();
+ TextView totalCyclesView = view.findViewById(R.id.total_task_cycles);
+ if (totalCycles != 0)
+ totalCyclesView.setText(resources1.getQuantityString(R.plurals.task_total_cycles, totalCycles, totalCycles));
+ else totalCyclesView.setText("");
- // Update total tasks
- int totalTasks = taskRecyclerViewAdapter.getItemCount();
- TextView totalTasksView = view.findViewById(R.id.total_task_count);
- View noMoreTasks = view.findViewById(R.id.no_more_tasks);
- View createTasks = view.findViewById(R.id.create_tasks);
- if (totalTasks == 0) {
- noMoreTasks.setVisibility(View.VISIBLE);
- createTasks.setVisibility(View.VISIBLE);
- totalTasksView.setVisibility(View.GONE);
- }
- else {
- noMoreTasks.setVisibility(View.GONE);
- createTasks.setVisibility(View.GONE);
- totalTasksView.setVisibility(View.VISIBLE);
- totalTasksView.setText(resources.getQuantityString(R.plurals.task_total, totalTasks, totalTasks));
- }
-
- return true;
+ // Update total tasks
+ int totalTasks = taskRecyclerViewAdapter.getItemCount();
+ TextView totalTasksView = view.findViewById(R.id.total_task_count);
+ View noMoreTasks = view.findViewById(R.id.no_more_tasks);
+ View createTasks = view.findViewById(R.id.create_tasks);
+ if (totalTasks == 0) {
+ noMoreTasks.setVisibility(View.VISIBLE);
+ createTasks.setVisibility(View.VISIBLE);
+ totalTasksView.setVisibility(View.GONE);
}
+ else {
+ noMoreTasks.setVisibility(View.GONE);
+ createTasks.setVisibility(View.GONE);
+ totalTasksView.setVisibility(View.VISIBLE);
+ totalTasksView.setText(resources1.getQuantityString(R.plurals.task_total, totalTasks, totalTasks));
+ }
+
+ return true;
});
//recyclerView.addItemDecoration(new DividerItemDecoration(getActivity()));
@@ -235,15 +230,9 @@ public class TasksFragment extends Fragment implements
// Set system settings
switch (direction) {
- case ItemTouchHelper.LEFT:
- editor.putBoolean("pref_conf_done", false);
- break;
- case ItemTouchHelper.RIGHT:
- editor.putBoolean("pref_conf_next", false);
- break;
- case -1:
- editor.putBoolean("pref_conf_del", false);
- break;
+ case ItemTouchHelper.LEFT -> editor.putBoolean("pref_conf_done", false);
+ case ItemTouchHelper.RIGHT -> editor.putBoolean("pref_conf_next", false);
+ case -1 -> editor.putBoolean("pref_conf_del", false);
}
editor.apply();
}
@@ -344,10 +333,8 @@ public class TasksFragment extends Fragment implements
confirmArgs.putInt("ItemPosition", itemPosition);
confirmArgs.putInt("Direction", -1);
confirmDialogFragment.setArguments(confirmArgs);
- FragmentManager fragmentManager = getFragmentManager();
- if (fragmentManager != null) {
- confirmDialogFragment.show(fragmentManager, title);
- }
+ FragmentManager fragmentManager = getParentFragmentManager();
+ confirmDialogFragment.show(fragmentManager, title);
}
else {
PerformTaskAction(itemPosition, -1);
@@ -361,20 +348,19 @@ public class TasksFragment extends Fragment implements
boolean showDialog = false;
int buttonLabel = -1;
- switch (direction)
- {
+ switch (direction) {
// Mark item as Done
- case ItemTouchHelper.LEFT:
+ case ItemTouchHelper.LEFT -> {
title = getResources().getString(R.string.task_confirmation_done_text);
showDialog = sharedPref.getBoolean("pref_conf_done", true);
buttonLabel = R.string.task_confirmation_done_button;
- break;
+ }
// Increase task cycle count
- case ItemTouchHelper.RIGHT:
+ case ItemTouchHelper.RIGHT -> {
title = getResources().getString(R.string.task_confirmation_next_text);
showDialog = sharedPref.getBoolean("pref_conf_next", true);
buttonLabel = R.string.task_confirmation_next_button;
- break;
+ }
}
if (showDialog) {
ConfirmDialogFragment confirmDialogFragment =
@@ -385,10 +371,8 @@ public class TasksFragment extends Fragment implements
args.putInt("ItemPosition", itemPosition);
args.putInt("Direction", direction);
confirmDialogFragment.setArguments(args);
- FragmentManager fragmentManager = getFragmentManager();
- if (fragmentManager != null) {
- confirmDialogFragment.show(fragmentManager, title);
- }
+ FragmentManager fragmentManager = getParentFragmentManager();
+ confirmDialogFragment.show(fragmentManager, title);
}
else PerformTaskAction(itemPosition, direction);
}
@@ -402,50 +386,46 @@ public class TasksFragment extends Fragment implements
taskRecyclerViewAdapter.remove(itemPosition);
- switch (direction)
- {
+ switch (direction) {
// Mark item as Done
- case ItemTouchHelper.LEFT:
- action = resources.getString(R.string.snackabar_action_done);
- break;
+ case ItemTouchHelper.LEFT ->
+ action = resources.getString(R.string.snackabar_action_done);
+
// Increase task cycle count
- case ItemTouchHelper.RIGHT:
+ case ItemTouchHelper.RIGHT -> {
action = resources.getString(R.string.snackabar_action_next);
task.setCycle(task.getCycle() + 1);
taskRecyclerViewAdapter.add(task, taskRecyclerViewAdapter.getItemCount());
- break;
- case -1:
- FragmentManager manager = getFragmentManager();
+ }
+ case -1 -> {
+ FragmentManager manager = getParentFragmentManager();
DialogFragment dialog = (DialogFragment) Objects.requireNonNull(manager).findFragmentByTag(getString(R.string.action_edit_task));
if (dialog != null) dialog.dismiss();
action = resources.getString(R.string.snackabar_action_deleted);
- break;
+ }
}
// Setup the snack bar
- View parentView = Objects.requireNonNull(getActivity()).findViewById(R.id.main_content);
+ View parentView = requireActivity().findViewById(R.id.main_content);
snackbar = Snackbar.make(parentView, resources.getString(R.string.snackabar_label, action), Snackbar.LENGTH_LONG)
- .setAction(resources.getString(R.string.snackabar_button), new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- // Undo adapter changes
- switch (direction) {
- // Nothing special to do for done
- case ItemTouchHelper.LEFT:
- break;
- // Remove the last item
- case ItemTouchHelper.RIGHT:
- taskRecyclerViewAdapter.remove(taskRecyclerViewAdapter.getItemCount() - 1);
- task.setCycle(task.getCycle() - 1);
- break;
- // Nothing special to do for delete
- case -1:
- break;
- }
- // Reset the first item
- taskRecyclerViewAdapter.add(task, itemPosition);
- recyclerView.scrollToPosition(0);
+ .setAction(resources.getString(R.string.snackabar_button), v -> {
+ // Undo adapter changes
+ switch (direction) {
+ // Nothing special to do for done
+ case ItemTouchHelper.LEFT:
+ break;
+ // Remove the last item
+ case ItemTouchHelper.RIGHT:
+ taskRecyclerViewAdapter.remove(taskRecyclerViewAdapter.getItemCount() - 1);
+ task.setCycle(task.getCycle() - 1);
+ break;
+ // Nothing special to do for delete
+ case -1:
+ break;
}
+ // Reset the first item
+ taskRecyclerViewAdapter.add(task, itemPosition);
+ recyclerView.scrollToPosition(0);
});
snackbar.addCallback(new Snackbar.Callback() {
@Override
@@ -458,17 +438,16 @@ public class TasksFragment extends Fragment implements
try (TaskDataAccess taskDataAccess = new TaskDataAccess(view.getContext(), TaskDataAccess.MODE.WRITE)) {
switch (direction) {
// Mark item as Done
- case ItemTouchHelper.LEFT:
- taskDataAccess.setDone(itemId, isTodayView);
- break;
+ case ItemTouchHelper.LEFT -> taskDataAccess.setDone(itemId, isTodayView);
+
// Increase task cycle count
- case ItemTouchHelper.RIGHT:
+ case ItemTouchHelper.RIGHT -> {
taskDataAccess.increaseCycle(task, isTodayView);
taskRecyclerViewAdapter.notifyItemChanged(taskRecyclerViewAdapter.getItemCount() - 1);
- break;
- case -1:
+ }
+ case -1 ->
// Delete the task
- taskDataAccess.deleteTask(itemId, isTodayView);
+ taskDataAccess.deleteTask(itemId, isTodayView);
}
}
}
diff --git a/app/src/main/java/com/wismna/geoffroy/donext/fragments/TodayFormDialogFragment.java b/app/src/main/java/com/wismna/geoffroy/donext/fragments/TodayFormDialogFragment.java
index fd54006..07efce8 100644
--- a/app/src/main/java/com/wismna/geoffroy/donext/fragments/TodayFormDialogFragment.java
+++ b/app/src/main/java/com/wismna/geoffroy/donext/fragments/TodayFormDialogFragment.java
@@ -7,7 +7,6 @@ import androidx.annotation.Nullable;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
-import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ListView;
@@ -21,7 +20,6 @@ import org.joda.time.LocalDate;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
-import java.util.Objects;
/**
* Created by bg45 on 2017-03-21.
@@ -61,21 +59,18 @@ public class TodayFormDialogFragment extends DynamicDialogFragment {
private void setLayoutValues(List tasks) {
EditText editText = findViewById(R.id.today_search);
final ListView listView = findViewById(R.id.today_tasks);
- final TodayArrayAdapter adapter = new TodayArrayAdapter(Objects.requireNonNull(getActivity()), tasks);
+ final TodayArrayAdapter adapter = new TodayArrayAdapter(requireActivity(), tasks);
listView.setAdapter(adapter);
- listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView> parent, View view, int position, long id) {
- // Set Today date for the task
- Task task = adapter.getItem(position);
- if (task == null) return;
- task.setTodayDate(task.isToday() ? "" : LocalDate.now().toString());
- // Maintain a list of actually updated tasks to commit to DB
- if (!mUpdatedTasks.contains(task)) mUpdatedTasks.add(task);
- else mUpdatedTasks.remove(task);
- // Refresh the view
- adapter.notifyDataSetChanged();
- }
+ listView.setOnItemClickListener((parent, view, position, id) -> {
+ // Set Today date for the task
+ Task task = adapter.getItem(position);
+ if (task == null) return;
+ task.setTodayDate(task.isToday() ? "" : LocalDate.now().toString());
+ // Maintain a list of actually updated tasks to commit to DB
+ if (!mUpdatedTasks.contains(task)) mUpdatedTasks.add(task);
+ else mUpdatedTasks.remove(task);
+ // Refresh the view
+ adapter.notifyDataSetChanged();
});
editText.addTextChangedListener(new TextWatcher() {
@Override
@@ -114,7 +109,7 @@ public class TodayFormDialogFragment extends DynamicDialogFragment {
}
static class LoadTasks extends AsyncTask> {
- private WeakReference fragmentReference;
+ private final WeakReference fragmentReference;
LoadTasks(TodayFormDialogFragment context) {
fragmentReference = new WeakReference<>(context);
@@ -135,7 +130,7 @@ public class TodayFormDialogFragment extends DynamicDialogFragment {
}
private static class UpdateTasks extends AsyncTask {
- private WeakReference fragmentReference;
+ private final WeakReference fragmentReference;
UpdateTasks(TodayFormDialogFragment context) {
fragmentReference = new WeakReference<>(context);