diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml
new file mode 100644
index 0000000..bc8736c
--- /dev/null
+++ b/.idea/assetWizardSettings.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
index 531e415..d2c15c1 100644
Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ
diff --git a/app/build.gradle b/app/build.gradle
index f8a0872..7935ce6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -9,7 +9,7 @@ android {
minSdkVersion 19
targetSdkVersion 28
versionCode 27
- versionName "1.6"
+ versionName "1.7"
}
buildTypes {
release {
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 8abe79e..6a53894 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
@@ -75,22 +75,6 @@ public class MainActivity extends AppCompatActivity {
startActivity(intent);
}
- /** Called when the user clicks on the Change Layout button */
- public void changeLayout(MenuItem item) {
- SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
- SharedPreferences.Editor editor = sharedPref.edit();
- String layoutTypeString = sharedPref.getString("pref_conf_task_layout", "1");
- int layoutType = Integer.parseInt(layoutTypeString);
- editor.putString("pref_conf_task_layout", String.valueOf(layoutType % 2 + 1));
- editor.apply();
-
- // Update the ViewPagerAdapter to refresh all tabs
- ViewPager viewPager = getMainFragmentViewPager();
- if (viewPager != null) {
- Objects.requireNonNull(viewPager.getAdapter()).notifyDataSetChanged();
- }
- }
-
/** Called when the user clicks the Edit Lists button */
public void openTaskLists(MenuItem menuItem) {
FragmentManager fragmentManager = getSupportFragmentManager();
diff --git a/app/src/main/java/com/wismna/geoffroy/donext/activities/TodayActivity.java b/app/src/main/java/com/wismna/geoffroy/donext/activities/TodayActivity.java
index bdddd32..5e194d2 100644
--- a/app/src/main/java/com/wismna/geoffroy/donext/activities/TodayActivity.java
+++ b/app/src/main/java/com/wismna/geoffroy/donext/activities/TodayActivity.java
@@ -1,15 +1,12 @@
package com.wismna.geoffroy.donext.activities;
-import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
-import android.preference.PreferenceManager;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.FragmentManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
-import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
@@ -21,6 +18,7 @@ import com.wismna.geoffroy.donext.fragments.TodayFormDialogFragment;
import org.joda.time.LocalDate;
import java.util.Locale;
+import java.util.Objects;
public class TodayActivity extends ToolBarActivityBase
implements TodayFormDialogFragment.TodayTaskListener {
@@ -66,24 +64,10 @@ public class TodayActivity extends ToolBarActivityBase
fab.setEnabled(true);
try (TaskDataAccess taskDataAccess = new TaskDataAccess(this)) {
RecyclerView recyclerView = findViewById(R.id.task_list_view);
- ((TaskRecyclerViewAdapter)recyclerView.getAdapter()).setItems(taskDataAccess.getTodayTasks());
+ ((TaskRecyclerViewAdapter)Objects.requireNonNull(recyclerView.getAdapter())).setItems(taskDataAccess.getTodayTasks());
}
}
- /** Called when the user clicks on the Change Layout button */
- public void changeLayout(MenuItem item) {
- SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
- SharedPreferences.Editor editor = sharedPref.edit();
- String layoutTypeString = sharedPref.getString("pref_conf_task_layout", "1");
- int layoutType = Integer.parseInt(layoutTypeString);
- editor.putString("pref_conf_task_layout", String.valueOf(layoutType % 2 + 1));
- editor.apply();
-
- // TODO: find a less ugly way to refresh the list
- // Update the ViewPagerAdapter to refresh all tabs
- this.recreate();
- }
-
public void onNewTaskClick(View view) {
TodayFormDialogFragment taskDialogFragment =
TodayFormDialogFragment.newInstance(TodayActivity.this);
diff --git a/app/src/main/java/com/wismna/geoffroy/donext/adapters/TaskRecyclerViewAdapter.java b/app/src/main/java/com/wismna/geoffroy/donext/adapters/TaskRecyclerViewAdapter.java
index 966a991..b88a1bb 100644
--- a/app/src/main/java/com/wismna/geoffroy/donext/adapters/TaskRecyclerViewAdapter.java
+++ b/app/src/main/java/com/wismna/geoffroy/donext/adapters/TaskRecyclerViewAdapter.java
@@ -21,48 +21,53 @@ import java.util.List;
/**
* {@link RecyclerView.Adapter} that can display a {@link Task}.
*/
-public class TaskRecyclerViewAdapter extends RecyclerView.Adapter {
+public class TaskRecyclerViewAdapter extends RecyclerView.Adapter {
private List mValues;
- private int viewType;
private boolean mIsToday;
+ private boolean mIsHistory;
- public TaskRecyclerViewAdapter(List items, int viewType, boolean isToday) {
+ public TaskRecyclerViewAdapter(List items, boolean isToday, boolean isHistory) {
mValues = items;
mIsToday = isToday;
- this.viewType = viewType;
+ mIsHistory = isHistory;
}
@NonNull
@Override
- public SimpleViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- View view;
- switch (viewType)
- {
- case 2:
- view = LayoutInflater.from(parent.getContext())
- .inflate(R.layout.fragment_task_detailed, parent, false);
- return new DetailedViewHolder(view);
- default:
- view = LayoutInflater.from(parent.getContext())
- .inflate(R.layout.fragment_task_simple, parent, false);
- return new SimpleViewHolder(view);
- }
+ public StandardViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ View view = LayoutInflater.from(parent.getContext())
+ .inflate(viewType, parent, false);
+ return new StandardViewHolder(view);
}
@Override
- public void onBindViewHolder(@NonNull final SimpleViewHolder holder, int position) {
+ public void onBindViewHolder(@NonNull final StandardViewHolder holder, int position) {
// Set basic information
holder.mItem = mValues.get(position);
holder.mIdView.setText(String.valueOf(holder.mItem.getId()));
holder.mCycleView.setText(String.valueOf(holder.mItem.getCycle()));
holder.mTitleView.setText(holder.mItem.getName());
- // Set optional description
- if (holder instanceof DetailedViewHolder)
- ((DetailedViewHolder)holder).mDescriptionView.setText(holder.mItem.getDescription());
+ holder.mDescriptionView.setText(holder.mItem.getDescription());
// Set task rendering
- holder.mTitleView.setTypeface(Typeface.DEFAULT);
- holder.mTitleView.setTextColor(Color.BLACK);
+ if (position > 0) {
+ holder.mTitleView.setTypeface(Typeface.DEFAULT);
+ holder.mTitleView.setTextColor(Color.BLACK);
+ }
+
+ // Set priority
+ switch (holder.mItem.getPriority())
+ {
+ case 0:
+ holder.mIconView.setImageResource(R.drawable.ic_low_priority_lightgray_24dp);
+ break;
+ case 2:
+ holder.mIconView.setImageResource(R.drawable.ic_priority_high_red_24dp);
+ break;
+ default:
+ holder.mIconView.setImageDrawable(null);
+ break;
+ }
// Additional information will not be displayed in Today view
if (mIsToday) return;
@@ -74,21 +79,7 @@ public class TaskRecyclerViewAdapter extends RecyclerView.Adapter taskLists;
Task task = taskRecyclerViewAdapter.getItem(position);
if (viewPager != null) {
- taskLists = ((SectionsPagerAdapter) viewPager.getAdapter()).getAllItems();
+ taskLists = ((SectionsPagerAdapter) Objects.requireNonNull(viewPager.getAdapter())).getAllItems();
args.putInt("list", viewPager.getCurrentItem());
}
else {
@@ -215,7 +212,7 @@ public class TasksFragment extends Fragment implements
// Update remaining tasks - only when needed
TextView remainingTasksView = view.findViewById(R.id.remaining_task_count);
NoScrollingLayoutManager noScrollingLayoutManager = (NoScrollingLayoutManager)layoutManager;
- int remainingTaskCount = totalTasks - noScrollingLayoutManager.findLastVisibleItemPosition() - 1;
+ int remainingTaskCount = totalTasks - (noScrollingLayoutManager != null ? noScrollingLayoutManager.findLastVisibleItemPosition() : 1) - 1;
if (remainingTaskCount == 0) remainingTasksView.setText("");
else remainingTasksView.setText(resources.getQuantityString(R.plurals.task_remaining, remainingTaskCount, remainingTaskCount));
@@ -223,7 +220,7 @@ public class TasksFragment extends Fragment implements
}
});
- recyclerView.addItemDecoration(new DividerItemDecoration(getActivity()));
+ //recyclerView.addItemDecoration(new DividerItemDecoration(getActivity()));
return view;
}
@@ -319,8 +316,7 @@ public class TasksFragment extends Fragment implements
}
// Update the task
else {
- assert args != null;
- int position = args.getInt("position");
+ int position = args != null ? args.getInt("position") : 0;
// Check if task list was changed
if ((isTodayView && !isToday) || (!isTodayView && task.getTaskListId() != taskList.getId()))
{
@@ -356,7 +352,10 @@ public class TasksFragment extends Fragment implements
confirmArgs.putInt("ItemPosition", itemPosition);
confirmArgs.putInt("Direction", -1);
confirmDialogFragment.setArguments(confirmArgs);
- confirmDialogFragment.show(getFragmentManager(), title);
+ FragmentManager fragmentManager = getFragmentManager();
+ if (fragmentManager != null) {
+ confirmDialogFragment.show(fragmentManager, title);
+ }
}
else {
PerformTaskAction(itemPosition, -1);
@@ -394,7 +393,10 @@ public class TasksFragment extends Fragment implements
args.putInt("ItemPosition", itemPosition);
args.putInt("Direction", direction);
confirmDialogFragment.setArguments(args);
- confirmDialogFragment.show(getFragmentManager(), title);
+ FragmentManager fragmentManager = getFragmentManager();
+ if (fragmentManager != null) {
+ confirmDialogFragment.show(fragmentManager, title);
+ }
}
else PerformTaskAction(itemPosition, direction);
}
@@ -430,6 +432,7 @@ public class TasksFragment extends Fragment implements
}
// Setup the snack bar
+ // TODO: use the main activity view instead
snackbar = Snackbar.make(view, resources.getString(R.string.snackabar_label, action), Snackbar.LENGTH_LONG)
.setAction(resources.getString(R.string.snackabar_button), new View.OnClickListener() {
@Override
diff --git a/app/src/main/java/com/wismna/geoffroy/donext/helpers/TaskTouchHelper.java b/app/src/main/java/com/wismna/geoffroy/donext/helpers/TaskTouchHelper.java
index 4152523..f0027bf 100644
--- a/app/src/main/java/com/wismna/geoffroy/donext/helpers/TaskTouchHelper.java
+++ b/app/src/main/java/com/wismna/geoffroy/donext/helpers/TaskTouchHelper.java
@@ -4,6 +4,7 @@ import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
+import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.helper.ItemTouchHelper;
import android.text.Layout;
@@ -35,7 +36,7 @@ public class TaskTouchHelper extends ItemTouchHelper.SimpleCallback {
}
@Override
- public int getSwipeDirs(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
+ public int getSwipeDirs(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
// Allow both directions swiping on first item, only left on the others
if (viewHolder.getAdapterPosition() == 0)
return ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT;
@@ -43,17 +44,17 @@ public class TaskTouchHelper extends ItemTouchHelper.SimpleCallback {
}
@Override
- public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
+ public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
return false;
}
@Override
- public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
+ public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
mAdapter.onItemSwiped(viewHolder.getAdapterPosition(), direction);
}
@Override
- public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder,
+ public void onChildDraw(@NonNull Canvas c, @NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder,
float dX, float dY, int actionState, boolean isCurrentlyActive) {
// Get RecyclerView item from the ViewHolder
View itemView = viewHolder.itemView;
diff --git a/app/src/main/java/com/wismna/geoffroy/donext/listeners/RecyclerItemClickListener.java b/app/src/main/java/com/wismna/geoffroy/donext/listeners/RecyclerItemClickListener.java
index 22f3aba..325d996 100644
--- a/app/src/main/java/com/wismna/geoffroy/donext/listeners/RecyclerItemClickListener.java
+++ b/app/src/main/java/com/wismna/geoffroy/donext/listeners/RecyclerItemClickListener.java
@@ -1,6 +1,7 @@
package com.wismna.geoffroy.donext.listeners;
import android.content.Context;
+import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.GestureDetector;
import android.view.MotionEvent;
@@ -30,7 +31,7 @@ public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListen
}
@Override
- public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) {
+ public boolean onInterceptTouchEvent(@NonNull RecyclerView view, @NonNull MotionEvent e) {
View childView = view.findChildViewUnder(e.getX(), e.getY());
if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) {
mListener.onItemClick(childView, view.getChildAdapterPosition(childView));
@@ -40,7 +41,7 @@ public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListen
}
@Override
- public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) {
+ public void onTouchEvent(@NonNull RecyclerView view, @NonNull MotionEvent motionEvent) {
}
diff --git a/app/src/main/java/com/wismna/geoffroy/donext/widgets/DividerItemDecoration.java b/app/src/main/java/com/wismna/geoffroy/donext/widgets/DividerItemDecoration.java
index e2751b7..93ebc8d 100644
--- a/app/src/main/java/com/wismna/geoffroy/donext/widgets/DividerItemDecoration.java
+++ b/app/src/main/java/com/wismna/geoffroy/donext/widgets/DividerItemDecoration.java
@@ -4,6 +4,7 @@ import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
+import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
@@ -34,7 +35,7 @@ public class DividerItemDecoration extends RecyclerView.ItemDecoration {
}*/
@Override
- public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
+ public void onDraw(@NonNull Canvas c, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
int left = parent.getPaddingLeft();
int right = parent.getWidth() - parent.getPaddingRight();
diff --git a/app/src/main/res/drawable/ic_low_priority_lightgray_24dp.xml b/app/src/main/res/drawable/ic_low_priority_lightgray_24dp.xml
new file mode 100644
index 0000000..812517c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_low_priority_lightgray_24dp.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_priority_high_red_24dp.xml b/app/src/main/res/drawable/ic_priority_high_red_24dp.xml
new file mode 100644
index 0000000..b526720
--- /dev/null
+++ b/app/src/main/res/drawable/ic_priority_high_red_24dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 1010560..b5dc49f 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -19,7 +19,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom"
- android:layout_margin="@dimen/fab_margin"
+ android:layout_margin="16dp"
android:onClick="onNewTaskClick"
android:src="@drawable/ic_add" />
diff --git a/app/src/main/res/layout/fragment_task_detailed.xml b/app/src/main/res/layout/fragment_task_detailed.xml
index 0dab5c5..a0b821b 100644
--- a/app/src/main/res/layout/fragment_task_detailed.xml
+++ b/app/src/main/res/layout/fragment_task_detailed.xml
@@ -10,7 +10,7 @@
android:id="@+id/task_cycle"
android:layout_width="30dp"
android:layout_height="wrap_content"
- android:paddingTop="10dp"
+ android:layout_margin="10dp"
android:textAppearance="?attr/textAppearanceListItem" />
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_tasks.xml b/app/src/main/res/layout/fragment_tasks.xml
index c1e72ed..8bf512e 100644
--- a/app/src/main/res/layout/fragment_tasks.xml
+++ b/app/src/main/res/layout/fragment_tasks.xml
@@ -6,15 +6,6 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/task_select" >
-
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml
index ab93660..7776e1f 100644
--- a/app/src/main/res/menu/menu_main.xml
+++ b/app/src/main/res/menu/menu_main.xml
@@ -2,30 +2,17 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".activities.MainActivity">
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 7c90b86..917ff1a 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -2,6 +2,7 @@
#3F51B5
#303F9F
+ #dde2ff
#FF4081
@color/colorPrimaryDark
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 0f986c9..3ef3cd8 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -74,7 +74,7 @@
DoNext is a new kind of task manager, based on the premise that creating too many tasks is counterproductive. Instead, swipe tasks left and right to push them back to the bottom of your backlog to work on them at a later time!
DoNext version %s
Android version %d
- https://github.com/wismna
+ https://wismna.github.io/DoNext/
Today
@@ -84,7 +84,7 @@
Select tasks
List name
Sorry, your Android version is not supported.
- Noting to do today
+ Nothing to do today
Add some tasks there