diff --git a/app/build.gradle b/app/build.gradle index e623797..8201ac1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,13 +8,14 @@ android { applicationId "com.wismna.geoffroy.donext" minSdkVersion 19 targetSdkVersion 27 - versionCode 23 - versionName "1.4.8" + versionCode 24 + versionName "1.5" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + zipAlignEnabled true } } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index cbf6d54..530aa07 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -50,8 +50,19 @@ + + + + + + + - \ No newline at end of file diff --git a/app/src/main/java/com/wismna/geoffroy/donext/activities/AboutActivity.java b/app/src/main/java/com/wismna/geoffroy/donext/activities/AboutActivity.java index 6f7e88a..072e00a 100644 --- a/app/src/main/java/com/wismna/geoffroy/donext/activities/AboutActivity.java +++ b/app/src/main/java/com/wismna/geoffroy/donext/activities/AboutActivity.java @@ -8,6 +8,9 @@ import android.widget.TextView; import com.wismna.geoffroy.donext.BuildConfig; import com.wismna.geoffroy.donext.R; +/** + * About Activity class + */ public class AboutActivity extends AppCompatActivity { @Override @@ -15,10 +18,10 @@ public class AboutActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_about); - TextView versionDonext = (TextView) findViewById(R.id.version_donext); + TextView versionDonext = findViewById(R.id.version_donext); versionDonext.setText(getResources().getString(R.string.about_version_donext, BuildConfig.VERSION_NAME)); - TextView versionAndroid = (TextView) findViewById(R.id.version_android); + TextView versionAndroid = findViewById(R.id.version_android); versionAndroid.setText(getResources().getString(R.string.about_version_android, Build.VERSION.SDK_INT)); } diff --git a/app/src/main/java/com/wismna/geoffroy/donext/activities/HistoryActivity.java b/app/src/main/java/com/wismna/geoffroy/donext/activities/HistoryActivity.java new file mode 100644 index 0000000..8cb6611 --- /dev/null +++ b/app/src/main/java/com/wismna/geoffroy/donext/activities/HistoryActivity.java @@ -0,0 +1,19 @@ +package com.wismna.geoffroy.donext.activities; + +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; + +import com.wismna.geoffroy.donext.R; + +/** + * Created by gbe on 17-12-19. + * History Activity class + */ +public class HistoryActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_history); + } +} 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 a816c15..3d82a39 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 @@ -12,6 +12,7 @@ import android.view.MenuItem; import android.view.View; import com.wismna.geoffroy.donext.R; +import com.wismna.geoffroy.donext.adapters.SectionsPagerAdapter; import com.wismna.geoffroy.donext.fragments.MainFragment; import com.wismna.geoffroy.donext.fragments.TaskFormDialogFragment; import com.wismna.geoffroy.donext.fragments.TaskListsDialogFragment; @@ -73,9 +74,8 @@ public class MainActivity extends AppCompatActivity { editor.apply(); // Update the ViewPagerAdapter to refresh all tabs - MainFragment fragment = getMainFragment(); - fragment.getViewPager().getAdapter().notifyDataSetChanged(); - //mSectionsPagerAdapter.notifyDataSetChanged(); + ViewPager viewPager = getMainFragmentViewPager(); + viewPager.getAdapter().notifyDataSetChanged(); } /** Called when the user clicks the Edit Lists button */ @@ -96,8 +96,8 @@ public class MainActivity extends AppCompatActivity { /** Called when the user clicks the History button*/ public void openHistory(MenuItem item) { - MainFragment fragment = getMainFragment(); - fragment.toggleHistory(); + Intent intent = new Intent(this, HistoryActivity.class); + startActivity(intent); } /** Called when the user clicks the Settings button */ @@ -114,12 +114,11 @@ public class MainActivity extends AppCompatActivity { /** Called when user clicks on the New Task floating button */ public void onNewTaskClick(View view) { - - MainFragment fragment = getMainFragment(); - ViewPager viewPager = fragment.getViewPager(); + ViewPager viewPager = getMainFragmentViewPager(); if (viewPager == null) return; int currentTabPosition = viewPager.getCurrentItem(); - MainFragment.SectionsPagerAdapter pagerAdapter = (MainFragment.SectionsPagerAdapter) viewPager.getAdapter(); + SectionsPagerAdapter pagerAdapter = (SectionsPagerAdapter) viewPager.getAdapter(); + assert pagerAdapter != null; TaskFormDialogFragment taskDialogFragment = TaskFormDialogFragment.newInstance(null, pagerAdapter.getAllItems(), (TasksFragment) pagerAdapter.getRegisteredFragment(currentTabPosition)); @@ -141,8 +140,9 @@ public class MainActivity extends AppCompatActivity { taskDialogFragment.showFragment(fragmentManager, title, getResources().getBoolean(R.bool.large_layout)); } - private MainFragment getMainFragment(){ + private ViewPager getMainFragmentViewPager(){ FragmentManager manager = getSupportFragmentManager(); - return (MainFragment)manager.findFragmentById(R.id.fragment_main); + MainFragment fragment = (MainFragment)manager.findFragmentById(R.id.fragment_main); + return fragment.getViewPager(); } } 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 121134e..ef633e6 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 @@ -25,7 +25,7 @@ public class TodayActivity extends AppCompatActivity protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_today); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); // Get a support ActionBar corresponding to this toolbar @@ -79,16 +79,16 @@ public class TodayActivity extends AppCompatActivity @Override public void onTodayTaskDialogPositiveClick(View dialogView) { - FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); + FloatingActionButton fab = findViewById(R.id.fab); fab.setEnabled(false); } @Override public void onTodayTasksUpdated() { - FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); + FloatingActionButton fab = findViewById(R.id.fab); fab.setEnabled(true); try (TaskDataAccess taskDataAccess = new TaskDataAccess(this)) { - RecyclerView recyclerView = (RecyclerView) findViewById(R.id.task_list_view); + RecyclerView recyclerView = findViewById(R.id.task_list_view); ((TaskRecyclerViewAdapter)recyclerView.getAdapter()).setItems(taskDataAccess.getTodayTasks()); } } 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 new file mode 100644 index 0000000..d2f0901 --- /dev/null +++ b/app/src/main/java/com/wismna/geoffroy/donext/adapters/SectionsPagerAdapter.java @@ -0,0 +1,51 @@ +package com.wismna.geoffroy.donext.adapters; + +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentPagerAdapter; + +import com.wismna.geoffroy.donext.dao.TaskList; +import com.wismna.geoffroy.donext.fragments.TasksFragment; + +import java.util.List; + +/** + * A {@link FragmentPagerAdapter} that returns a fragment corresponding to + * one of the sections/tabs/pages. + */ +public class SectionsPagerAdapter extends SmartFragmentStatePagerAdapter { + + private List taskLists; + + public SectionsPagerAdapter(FragmentManager fm, List taskLists) { + super(fm); + this.taskLists = taskLists; + } + + @Override + public Fragment getItem(int position) { + // getItem is called to instantiate the fragment for the given page. + // Return a PlaceholderFragment (defined as a static inner class below). + TaskList taskList = taskLists.get(position); + return TasksFragment.newTaskListInstance(taskList.getId()); + } + + @Override + public int getCount() { + if (taskLists != null) { + // Show the task lists + return taskLists.size(); + } + return 0; + } + + @Override + public CharSequence getPageTitle(int position) { + if (taskLists == null) return "N/A"; + return taskLists.get(position).getName(); + } + + public List getAllItems(){ + return taskLists; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/wismna/geoffroy/donext/adapters/SmartFragmentStatePagerAdapter.java b/app/src/main/java/com/wismna/geoffroy/donext/adapters/SmartFragmentStatePagerAdapter.java index bae6059..09bb5c7 100644 --- a/app/src/main/java/com/wismna/geoffroy/donext/adapters/SmartFragmentStatePagerAdapter.java +++ b/app/src/main/java/com/wismna/geoffroy/donext/adapters/SmartFragmentStatePagerAdapter.java @@ -1,5 +1,6 @@ package com.wismna.geoffroy.donext.adapters; +import android.support.annotation.NonNull; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; @@ -17,16 +18,17 @@ public abstract class SmartFragmentStatePagerAdapter extends FragmentStatePagerA // Sparse array to keep track of registered fragments in memory private final SparseArray registeredFragments = new SparseArray<>(); - public SmartFragmentStatePagerAdapter(FragmentManager fragmentManager) { + SmartFragmentStatePagerAdapter(FragmentManager fragmentManager) { super(fragmentManager); } @Override - public int getItemPosition(Object object) { + public int getItemPosition(@NonNull Object object) { return POSITION_NONE; } // Register the fragment when the item is instantiated + @NonNull @Override public Object instantiateItem(ViewGroup container, int position) { Fragment fragment = (Fragment) super.instantiateItem(container, position); diff --git a/app/src/main/java/com/wismna/geoffroy/donext/adapters/TaskListRecyclerViewAdapter.java b/app/src/main/java/com/wismna/geoffroy/donext/adapters/TaskListRecyclerViewAdapter.java index ab05915..8e3b8f9 100644 --- a/app/src/main/java/com/wismna/geoffroy/donext/adapters/TaskListRecyclerViewAdapter.java +++ b/app/src/main/java/com/wismna/geoffroy/donext/adapters/TaskListRecyclerViewAdapter.java @@ -1,6 +1,5 @@ package com.wismna.geoffroy.donext.adapters; -import android.support.v4.view.MotionEventCompat; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.MotionEvent; @@ -54,12 +53,11 @@ public class TaskListRecyclerViewAdapter extends RecyclerView.Adapter { if (convertView == null) { convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_task_item, parent, false); } - TextView titleView = (TextView) convertView.findViewById(R.id.task_list_item_title); - TextView taskView = (TextView) convertView.findViewById(R.id.task_list_item_tasklist); - LinearLayout layoutView = (LinearLayout) convertView.findViewById(R.id.task_list_item_layout); + TextView titleView = convertView.findViewById(R.id.task_list_item_title); + TextView taskView = convertView.findViewById(R.id.task_list_item_tasklist); + LinearLayout layoutView = convertView.findViewById(R.id.task_list_item_layout); Task item = this.getItem(position); if (item != null) { titleView.setText(item.getName()); 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 15c8457..a1f3672 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 @@ -59,18 +59,10 @@ public class Task { this.cycle = cycle; } - public boolean isDone() { - return done != 0; - } - public void setDone(int done) { this.done = done; } - public boolean isDeleted() { - return deleted != 0; - } - public void setDeleted(int deleted) { this.deleted = deleted; } 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 a4ae8f8..940c11a 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 @@ -8,8 +8,6 @@ public class TaskList { private long id; private String name; private long taskCount; - private int order; - private Boolean visible; public long getId() { return id; @@ -35,20 +33,6 @@ public class TaskList { this.taskCount = taskCount; } - public int getOrder() { - return order; - } - - public void setOrder(int order) { - this.order = order; - } - - public void setVisible(int visible) { - this.visible = visible != 0; - } - public Boolean isVisible() { - return visible; - } @Override public String toString() { return 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 6fe760f..c83fb7a 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 @@ -133,25 +133,25 @@ public class TaskDataAccess implements AutoCloseable { return getTasksFromCursor(cursor); } - public int setDone(long id) { - return update(id, DatabaseHelper.TASKS_COLUMN_DONE, 1); + public void setDone(long id) { + update(id, DatabaseHelper.TASKS_COLUMN_DONE, 1); } - public int increaseCycle(int newCycle, long id) { - return update(id, DatabaseHelper.TASKS_COLUMN_CYCLE, newCycle); + public void increaseCycle(int newCycle, long id) { + update(id, DatabaseHelper.TASKS_COLUMN_CYCLE, newCycle); } - public int deleteTask(long id) { + public void deleteTask(long id) { /*database.delete(DatabaseHelper.TASKS_TABLE_NAME, DatabaseHelper.COLUMN_ID + " = " + taskId, null);*/ - return update(id, DatabaseHelper.TASKS_COLUMN_DELETED, 1); + update(id, DatabaseHelper.TASKS_COLUMN_DELETED, 1); } - private int update(long id, String column, Object value) { + private void update(long id, String column, Object value) { ContentValues contentValues = new ContentValues(); if (value instanceof Integer) contentValues.put(column, (int) value); - return database.update(DatabaseHelper.TASKS_TABLE_NAME, contentValues, DatabaseHelper.COLUMN_ID + " = " + id, null); + database.update(DatabaseHelper.TASKS_TABLE_NAME, contentValues, DatabaseHelper.COLUMN_ID + " = " + id, null); } private Task cursorToTask(Cursor cursor) { 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 192dcb1..290a1a3 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 @@ -133,8 +133,8 @@ public class TaskListDataAccess implements AutoCloseable { TaskList taskList = new TaskList(); taskList.setId(cursor.getLong(0)); taskList.setName(cursor.getString(1)); - taskList.setOrder(cursor.getInt(2)); - taskList.setVisible(cursor.getInt(3)); + //taskList.setOrder(cursor.getInt(2)); + //taskList.setVisible(cursor.getInt(3)); // Get "false" count column if it exists if (cursor.getColumnCount() == 5) taskList.setTaskCount(cursor.getLong(4)); 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 f16f53f..eb33a55 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 @@ -1,6 +1,5 @@ package com.wismna.geoffroy.donext.fragments; -import android.annotation.SuppressLint; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; @@ -49,7 +48,8 @@ public class ConfirmDialogFragment extends DialogFragment { Bundle args = getArguments(); LayoutInflater inflater = getActivity().getLayoutInflater(); // No need for a parent in a Dialog Fragment - @SuppressLint("InflateParams") View view = inflater.inflate(R.layout.fragment_task_confirmation, null); + 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) { 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 571dddf..8123fef 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 @@ -1,6 +1,5 @@ package com.wismna.geoffroy.donext.fragments; -import android.annotation.SuppressLint; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; @@ -63,10 +62,12 @@ public abstract class DynamicDialogFragment extends DialogFragment { @NonNull public Dialog onCreateDialog(Bundle savedInstanceState) { // Inflate and set the layout for the dialog - LayoutInflater inflater = getActivity().getLayoutInflater(); + Activity activity = getActivity(); + assert activity != null; + LayoutInflater inflater = activity.getLayoutInflater(); // As it is a Dialog, the root ViewGroup can be null without issues - @SuppressLint("InflateParams") final View view = inflater.inflate(R.layout.fragment_dynamic_dialog, null); - AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + final View view = inflater.inflate(R.layout.fragment_dynamic_dialog, null); + AlertDialog.Builder builder = new AlertDialog.Builder(activity); Bundle args = getArguments(); // Set the dialog buttons assert args != null; @@ -102,7 +103,6 @@ public abstract class DynamicDialogFragment extends DialogFragment { @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { - //super.onCreateOptionsMenu(menu, inflater); menu.clear(); getActivity().getMenuInflater().inflate(R.menu.menu_dynamic_fragment, menu); } @@ -110,6 +110,7 @@ public abstract class DynamicDialogFragment extends DialogFragment { @Override public void onPrepareOptionsMenu(Menu menu) { Bundle args = getArguments(); + assert args != null; // Show the neutral button if needed if (mButtonCount < 3) { menu.removeItem(R.id.menu_neutral_button); 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 f1035d2..5988c06 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 @@ -1,14 +1,15 @@ package com.wismna.geoffroy.donext.fragments; +import android.app.Activity; import android.content.SharedPreferences; import android.graphics.Point; import android.os.Build; import android.os.Bundle; import android.preference.PreferenceManager; +import android.support.annotation.NonNull; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.RecyclerView; @@ -21,7 +22,7 @@ import android.widget.ArrayAdapter; import android.widget.ListView; import com.wismna.geoffroy.donext.R; -import com.wismna.geoffroy.donext.adapters.SmartFragmentStatePagerAdapter; +import com.wismna.geoffroy.donext.adapters.SectionsPagerAdapter; import com.wismna.geoffroy.donext.adapters.TaskRecyclerViewAdapter; import com.wismna.geoffroy.donext.dao.Task; import com.wismna.geoffroy.donext.dao.TaskList; @@ -38,72 +39,46 @@ public class MainFragment extends Fragment implements TasksFragment.TaskChangedA private ViewPager mViewPager; private SectionsPagerAdapter mSectionsPagerAdapter; private TabLayout tabLayout; - private List taskLists; - private boolean isHistory = false; public MainFragment() { // Required empty public constructor } - /** - * Use this factory method to create a new instance of - * this fragment using the provided parameters. - * - * @param isHistory Will this fragment show the task history? - * @return A new instance of fragment MainFragment. - */ - // TODO: Rename and change types and number of parameters - // TODO: History should get its own activity and this fragment - public static MainFragment newInstance(boolean isHistory) { - MainFragment fragment = new MainFragment(); - Bundle args = new Bundle(); - args.putBoolean("history", isHistory); - fragment.setArguments(args); - return fragment; - } - public ViewPager getViewPager() { return mViewPager; } - public void toggleHistory() { - isHistory = !isHistory; - mSectionsPagerAdapter.notifyDataSetChanged(); - } - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - if (getArguments() != null) { - isHistory = getArguments().getBoolean("history"); - } - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment mView = inflater.inflate(R.layout.fragment_main, container, false); AppCompatActivity activity = (AppCompatActivity) getActivity(); Toolbar toolbar = mView.findViewById(R.id.toolbar); + assert activity != null; activity.setSupportActionBar(toolbar); - // Create the adapter that will return a fragment for each of the three - // primary sections of the activity. - mSectionsPagerAdapter = new SectionsPagerAdapter(getFragmentManager()); - SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(activity); // Access database to retrieve Tabs + List taskLists; try (TaskListDataAccess taskListDataAccess = new TaskListDataAccess(activity)) { taskLists = taskListDataAccess.getAllTaskLists(); + + // Create the adapter that will return a fragment for each of the three + // primary sections of the activity. + mSectionsPagerAdapter = new SectionsPagerAdapter(getFragmentManager(), taskLists); mSectionsPagerAdapter.notifyDataSetChanged(); } + boolean isLargeLayout = getResources().getBoolean(R.bool.large_layout); + + // TODO: determine whether this is the first startup, and if so, show a tutorial of sorts + // No tasks, show the edit task lists fragment if (taskLists.size() == 0) { TaskListsDialogFragment taskListFragment = new TaskListsDialogFragment(); String title = getString(R.string.task_list_no_lists); - FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); + FragmentManager fragmentManager = activity.getSupportFragmentManager(); // Set the arguments Bundle args = new Bundle(); @@ -113,6 +88,7 @@ public class MainFragment extends Fragment implements TasksFragment.TaskChangedA taskListFragment.showFragment(fragmentManager, title, getResources().getBoolean(R.bool.large_layout)); } + // Otherwise, show the normal view else { int lastOpenedList = sharedPref.getInt("last_opened_tab", 0); // Set up the ViewPager with the sections adapter. @@ -121,9 +97,11 @@ public class MainFragment extends Fragment implements TasksFragment.TaskChangedA // Open last opened tab mViewPager.setCurrentItem(lastOpenedList); - if (!getResources().getBoolean(R.bool.large_layout)) { + if (!isLargeLayout) { tabLayout = mView.findViewById(R.id.tabs); + // Hide the tabs if there is only one task list + if (taskLists.size() == 1) tabLayout.setVisibility(View.INVISIBLE); tabLayout.setupWithViewPager(mViewPager); // Handles scroll detection (only available for SDK version >=23) @@ -140,6 +118,8 @@ public class MainFragment extends Fragment implements TasksFragment.TaskChangedA } else { ListView listView = mView.findViewById(R.id.list); + // Hide the list if there is only one task list + if (taskLists.size() == 1) listView.setVisibility(View.INVISIBLE); //listView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, taskLists)); listView.setAdapter(new ArrayAdapter<>(activity, R.layout.list_tasklist_item, taskLists)); //listView.setSelection(lastOpenedList); @@ -196,48 +176,12 @@ public class MainFragment extends Fragment implements TasksFragment.TaskChangedA View rightArrow = mView.findViewById(R.id.right_arrow); if (rightArrow != null) { Point size = new Point(); - getActivity().getWindowManager().getDefaultDisplay().getSize(size); + Activity activity = getActivity(); + assert activity != null; + activity.getWindowManager().getDefaultDisplay().getSize(size); if (scrollX == tabLayout.getChildAt(0).getMeasuredWidth() - tabLayout.getMeasuredWidth()) rightArrow.setVisibility(View.INVISIBLE); else rightArrow.setVisibility(View.VISIBLE); } } - - /** - * A {@link FragmentPagerAdapter} that returns a fragment corresponding to - * one of the sections/tabs/pages. - */ - public class SectionsPagerAdapter extends SmartFragmentStatePagerAdapter { - - SectionsPagerAdapter(FragmentManager fm) { - super(fm); - } - - @Override - public Fragment getItem(int position) { - // getItem is called to instantiate the fragment for the given page. - // Return a PlaceholderFragment (defined as a static inner class below). - TaskList taskList = taskLists.get(position); - return TasksFragment.newTaskListInstance(taskList.getId(), isHistory, MainFragment.this); - } - - @Override - public int getCount() { - if (taskLists != null) { - // Show the task lists - return taskLists.size(); - } - return 3; - } - - @Override - public CharSequence getPageTitle(int position) { - if (taskLists == null) return "N/A"; - return taskLists.get(position).getName(); - } - - public List getAllItems(){ - return taskLists; - } - } } 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 c79ac65..3cd503b 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 @@ -22,6 +22,7 @@ import com.wismna.geoffroy.donext.dao.TaskList; import com.wismna.geoffroy.donext.database.TaskListDataAccess; import com.wismna.geoffroy.donext.helpers.TaskListTouchHelper; +import java.lang.ref.WeakReference; import java.util.List; /** @@ -53,38 +54,9 @@ public class TaskListsDialogFragment extends DynamicDialogFragment implements mContentLayoutId = R.layout.content_tasklists; taskListDataAccess = new TaskListDataAccess(getContext(), TaskListDataAccess.MODE.WRITE); - new GetTaskListsTask().execute(taskListDataAccess); + new GetTaskListsTask(this).execute(taskListDataAccess); } - /*@Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - - mView = inflater.inflate(R.layout.content_tasklists, container, false); - - Button createTaskListButton = mView.findViewById(R.id.new_task_list_button); - createTaskListButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - EditText editText = mView.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(mView); - } - }); - - return mView; - }*/ - @Override public void onStart() { super.onStart(); @@ -223,7 +195,13 @@ public class TaskListsDialogFragment extends DynamicDialogFragment implements } } - private class GetTaskListsTask extends AsyncTask> { + private static class GetTaskListsTask extends AsyncTask> { + private WeakReference fragmentReference; + + GetTaskListsTask(TaskListsDialogFragment context) { + fragmentReference = new WeakReference<>(context); + } + @Override protected List doInBackground(TaskListDataAccess... params) { TaskListDataAccess taskListDataAccess = params[0]; @@ -233,21 +211,23 @@ public class TaskListsDialogFragment extends DynamicDialogFragment implements @Override protected void onPostExecute(List taskLists) { super.onPostExecute(taskLists); - taskListRecyclerViewAdapter = - new TaskListRecyclerViewAdapter(taskLists, TaskListsDialogFragment.this); + TaskListsDialogFragment fragment = fragmentReference.get(); + if (fragment == null) return; + fragment.taskListRecyclerViewAdapter = + new TaskListRecyclerViewAdapter(taskLists, fragment); // Set the adapter - Context context = getContext(); - RecyclerView recyclerView = (RecyclerView) findViewById(R.id.task_lists_view); + Context context = fragment.getContext(); + RecyclerView recyclerView = (RecyclerView) fragment.findViewById(R.id.task_lists_view); recyclerView.setLayoutManager(new LinearLayoutManager(context)); - recyclerView.setAdapter(taskListRecyclerViewAdapter); + recyclerView.setAdapter(fragment.taskListRecyclerViewAdapter); // Set the Touch Helper - ItemTouchHelper.Callback callback = new TaskListTouchHelper(taskListRecyclerViewAdapter); - mItemTouchHelper = new ItemTouchHelper(callback); - mItemTouchHelper.attachToRecyclerView(recyclerView); + ItemTouchHelper.Callback callback = new TaskListTouchHelper(fragment.taskListRecyclerViewAdapter); + fragment.mItemTouchHelper = new ItemTouchHelper(callback); + fragment.mItemTouchHelper.attachToRecyclerView(recyclerView); - toggleVisibleCreateNewTaskListLayout(); + fragment.toggleVisibleCreateNewTaskListLayout(); } } } 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 335e337..6e2bf73 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 @@ -1,17 +1,19 @@ package com.wismna.geoffroy.donext.fragments; +import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.content.res.Resources; import android.os.Bundle; import android.preference.PreferenceManager; +import android.support.annotation.NonNull; import android.support.design.widget.Snackbar; import android.support.v4.app.DialogFragment; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentTransaction; import android.support.v4.content.ContextCompat; import android.support.v4.view.ViewPager; +import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.helper.ItemTouchHelper; import android.view.LayoutInflater; @@ -26,6 +28,9 @@ import android.widget.Spinner; import android.widget.TextView; import com.wismna.geoffroy.donext.R; +import com.wismna.geoffroy.donext.activities.HistoryActivity; +import com.wismna.geoffroy.donext.activities.TodayActivity; +import com.wismna.geoffroy.donext.adapters.SectionsPagerAdapter; import com.wismna.geoffroy.donext.adapters.TaskRecyclerViewAdapter; import com.wismna.geoffroy.donext.dao.Task; import com.wismna.geoffroy.donext.dao.TaskList; @@ -48,7 +53,7 @@ public class TasksFragment extends Fragment implements ConfirmDialogFragment.ConfirmDialogListener, TaskTouchHelper.TaskTouchHelperAdapter{ - interface TaskChangedAdapter { + public interface TaskChangedAdapter { void onTaskListChanged(Task task, int tabPosition); } @@ -69,15 +74,11 @@ public class TasksFragment extends Fragment implements public TasksFragment() { } - public static TasksFragment newTaskListInstance(long taskListId, boolean isHistory, - TaskChangedAdapter taskChangedAdapter) { + public static TasksFragment newTaskListInstance(long taskListId) { TasksFragment fragment = new TasksFragment(); Bundle args = new Bundle(); args.putLong(TASK_LIST_ID, taskListId); - args.putBoolean("history", isHistory); fragment.setArguments(args); - fragment.mAdapter = taskChangedAdapter; - fragment.isTodayView = false; fragment.setRetainInstance(true); return fragment; } @@ -88,19 +89,23 @@ public class TasksFragment extends Fragment implements if (getArguments() != null) { taskListId = getArguments().getLong(TASK_LIST_ID); - isHistory = getArguments().getBoolean("history"); + Activity parentActivity = getActivity(); + if (parentActivity instanceof HistoryActivity) isHistory = true; + if (parentActivity instanceof TodayActivity) isTodayView = true; + // TODO: check that this works! + mAdapter = (MainFragment)getParentFragment(); } } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { view = inflater.inflate(R.layout.fragment_tasks, container, false); final Context context = view.getContext(); // Set the Recycler view recyclerView = view.findViewById(R.id.task_list_view); - recyclerView.setLayoutManager(new NoScrollingLayoutManager(context)); + recyclerView.setLayoutManager(isHistory ? new LinearLayoutManager(context) : new NoScrollingLayoutManager(context)); // Set RecyclerView Adapter SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getContext()); @@ -113,14 +118,17 @@ public class TasksFragment extends Fragment implements } recyclerView.setAdapter(taskRecyclerViewAdapter); - // Set ItemTouch helper in RecyclerView to handle swipe move on elements - final Resources resources = getResources(); - ItemTouchHelper.Callback callback = new TaskTouchHelper(this, - ContextCompat.getColor(context, R.color.colorPrimary), - ContextCompat.getColor(context, R.color.colorAccent)); - ItemTouchHelper helper = new ItemTouchHelper(callback); - helper.attachToRecyclerView(recyclerView); + if (!isHistory) { + // Set ItemTouch helper in RecyclerView to handle swipe move on elements + ItemTouchHelper.Callback callback = new TaskTouchHelper(this, + ContextCompat.getColor(context, R.color.colorPrimary), + ContextCompat.getColor(context, R.color.colorAccent)); + ItemTouchHelper helper = new ItemTouchHelper(callback); + helper.attachToRecyclerView(recyclerView); + } + + final Resources resources = getResources(); // Implements touch listener to add click detection recyclerView.addOnItemTouchListener( new RecyclerItemClickListener(context, new RecyclerItemClickListener.OnItemClickListener() { @@ -131,9 +139,10 @@ public class TasksFragment extends Fragment implements Bundle args = new Bundle(); args.putInt("position", position); args.putBoolean("today", sharedPref.getBoolean("pref_conf_today_enable", false)); - args.putBoolean("neutral", true); + args.putInt("button_count", isHistory ? 1 : 3); args.putString("button_positive", getString(R.string.new_task_save)); - args.putString("button_negative", getString(R.string.new_task_cancel)); + 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)); // Set current tab value to new task dialog @@ -141,7 +150,7 @@ public class TasksFragment extends Fragment implements List taskLists; Task task = taskRecyclerViewAdapter.getItem(position); if (viewPager != null) { - taskLists = ((MainFragment.SectionsPagerAdapter) viewPager.getAdapter()).getAllItems(); + taskLists = ((SectionsPagerAdapter) viewPager.getAdapter()).getAllItems(); args.putInt("list", viewPager.getCurrentItem()); } else { @@ -164,19 +173,8 @@ public class TasksFragment extends Fragment implements // Open the fragment as a dialog or as full-screen depending on screen size String title = getString(R.string.action_edit_task); - if (isLargeLayout) { - taskDialogFragment.show(manager, title); - } - else { - // The device is smaller, so show the fragment fullscreen - FragmentTransaction transaction = manager.beginTransaction(); - // For a little polish, specify a transition animation - transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); - // To make it fullscreen, use the 'content' root view as the container - // for the fragment, which is always the root view for the activity - transaction.add(android.R.id.content, taskDialogFragment, title) - .addToBackStack(null).commit(); - } + assert manager != null; + taskDialogFragment.showFragment(manager, title, isLargeLayout); } }) ); @@ -235,6 +233,7 @@ public class TasksFragment extends Fragment implements @Override public void onConfirmDialogClick(DialogFragment dialog, ConfirmDialogFragment.ButtonEvent event) { Bundle args = dialog.getArguments(); + assert args != null; int itemPosition = args.getInt("ItemPosition"); int direction = args.getInt("Direction"); @@ -317,6 +316,7 @@ public class TasksFragment extends Fragment implements } // Update the task else { + assert args != null; int position = args.getInt("position"); // Check if task list was changed if ((isTodayView && !isToday) || (!isTodayView && task.getTaskListId() != taskList.getId())) @@ -340,6 +340,7 @@ public class TasksFragment extends Fragment implements Bundle args = dialog.getArguments(); // Delete task from Adapter + assert args != null; final int itemPosition = args.getInt("position"); if (showDialog) { @@ -418,6 +419,7 @@ public class TasksFragment extends Fragment implements break; case -1: FragmentManager manager = getFragmentManager(); + assert manager != null; DialogFragment dialog = (DialogFragment) manager.findFragmentByTag(getString(R.string.action_edit_task)); if (dialog != null) dialog.dismiss(); action = resources.getString(R.string.snackabar_action_deleted); 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 75a372e..4743652 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 @@ -18,6 +18,7 @@ import com.wismna.geoffroy.donext.database.TaskDataAccess; import org.joda.time.LocalDate; +import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -50,7 +51,7 @@ public class TodayFormDialogFragment extends DynamicDialogFragment { super.onCreate(savedInstanceState); mContentLayoutId = R.layout.content_today_form; // Load the tasks asynchronously - new LoadTasks().execute(getActivity()); + new LoadTasks(this).execute(getActivity()); } private void setLayoutValues(List tasks) { @@ -94,7 +95,7 @@ public class TodayFormDialogFragment extends DynamicDialogFragment { protected void onPositiveButtonClick(View view) { mListener.onTodayTaskDialogPositiveClick(view); // Only commit the updated tasks to DB - new UpdateTasks().execute(mUpdatedTasks.toArray(new Task[mUpdatedTasks.size()])); + new UpdateTasks(this).execute(mUpdatedTasks.toArray(new Task[mUpdatedTasks.size()])); dismiss(); } @@ -108,7 +109,13 @@ public class TodayFormDialogFragment extends DynamicDialogFragment { dismiss(); } - private class LoadTasks extends AsyncTask> { + static class LoadTasks extends AsyncTask> { + private WeakReference fragmentReference; + + LoadTasks(TodayFormDialogFragment context) { + fragmentReference = new WeakReference<>(context); + } + @Override protected List doInBackground(Context... params) { try(TaskDataAccess taskDataAccess = new TaskDataAccess(params[0])) { @@ -119,15 +126,21 @@ public class TodayFormDialogFragment extends DynamicDialogFragment { @Override protected void onPostExecute(List tasks) { super.onPostExecute(tasks); - setLayoutValues(tasks); + fragmentReference.get().setLayoutValues(tasks); } } - private class UpdateTasks extends AsyncTask { + private static class UpdateTasks extends AsyncTask { + private WeakReference fragmentReference; + + UpdateTasks(TodayFormDialogFragment context) { + fragmentReference = new WeakReference<>(context); + } + @Override protected Integer doInBackground(Task... params) { int elementsUpdated = 0; - try (TaskDataAccess taskDataAccess = new TaskDataAccess(getActivity(), TaskDataAccess.MODE.WRITE)) { + try (TaskDataAccess taskDataAccess = new TaskDataAccess(fragmentReference.get().getActivity(), TaskDataAccess.MODE.WRITE)) { for (Task task : params) { taskDataAccess.updateTodayTasks(task.getId(), task.isToday()); @@ -140,7 +153,7 @@ public class TodayFormDialogFragment extends DynamicDialogFragment { @Override protected void onPostExecute(Integer integer) { super.onPostExecute(integer); - mListener.onTodayTasksUpdated(); + fragmentReference.get().mListener.onTodayTasksUpdated(); } } } 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 f161c52..22f3aba 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 @@ -32,7 +32,6 @@ public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListen @Override public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) { View childView = view.findChildViewUnder(e.getX(), e.getY()); - //int childId = view.getChildAdapterPosition(childView); if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) { mListener.onItemClick(childView, view.getChildAdapterPosition(childView)); return true; diff --git a/app/src/main/java/com/wismna/geoffroy/donext/widgets/NonSwipeableViewPager.java b/app/src/main/java/com/wismna/geoffroy/donext/widgets/NonSwipeableViewPager.java index a5884a9..9c4f457 100644 --- a/app/src/main/java/com/wismna/geoffroy/donext/widgets/NonSwipeableViewPager.java +++ b/app/src/main/java/com/wismna/geoffroy/donext/widgets/NonSwipeableViewPager.java @@ -28,6 +28,12 @@ public class NonSwipeableViewPager extends ViewPager { @Override public boolean onTouchEvent(MotionEvent event) { // Never allow swiping to switch between pages + performClick(); return false; } + + @Override + public boolean performClick() { + return super.performClick(); + } } diff --git a/app/src/main/res/drawable-hdpi-v11/ic_stat_name.png b/app/src/main/res/drawable-hdpi-v11/ic_stat_name.png deleted file mode 100644 index 44943ec..0000000 Binary files a/app/src/main/res/drawable-hdpi-v11/ic_stat_name.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi-v9/ic_stat_name.png b/app/src/main/res/drawable-hdpi-v9/ic_stat_name.png deleted file mode 100644 index b007611..0000000 Binary files a/app/src/main/res/drawable-hdpi-v9/ic_stat_name.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_history_dark.png b/app/src/main/res/drawable-hdpi/ic_history_dark.png new file mode 100644 index 0000000..9f18f65 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_history_dark.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_stat_name.png b/app/src/main/res/drawable-hdpi/ic_stat_name.png deleted file mode 100644 index ae47ddf..0000000 Binary files a/app/src/main/res/drawable-hdpi/ic_stat_name.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_today_dark.png b/app/src/main/res/drawable-hdpi/ic_today_dark.png new file mode 100644 index 0000000..5e217b0 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_today_dark.png differ diff --git a/app/src/main/res/drawable-mdpi-v11/ic_stat_name.png b/app/src/main/res/drawable-mdpi-v11/ic_stat_name.png deleted file mode 100644 index 8c9c68d..0000000 Binary files a/app/src/main/res/drawable-mdpi-v11/ic_stat_name.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi-v9/ic_stat_name.png b/app/src/main/res/drawable-mdpi-v9/ic_stat_name.png deleted file mode 100644 index 9a740c4..0000000 Binary files a/app/src/main/res/drawable-mdpi-v9/ic_stat_name.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/ic_history_dark.png b/app/src/main/res/drawable-mdpi/ic_history_dark.png new file mode 100644 index 0000000..501d208 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_history_dark.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_stat_name.png b/app/src/main/res/drawable-mdpi/ic_stat_name.png deleted file mode 100644 index c7c3474..0000000 Binary files a/app/src/main/res/drawable-mdpi/ic_stat_name.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/ic_today_dark.png b/app/src/main/res/drawable-mdpi/ic_today_dark.png new file mode 100644 index 0000000..7f2e2fc Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_today_dark.png differ diff --git a/app/src/main/res/drawable-xhdpi-v11/ic_stat_name.png b/app/src/main/res/drawable-xhdpi-v11/ic_stat_name.png deleted file mode 100644 index 53b008f..0000000 Binary files a/app/src/main/res/drawable-xhdpi-v11/ic_stat_name.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi-v9/ic_stat_name.png b/app/src/main/res/drawable-xhdpi-v9/ic_stat_name.png deleted file mode 100644 index 961114c..0000000 Binary files a/app/src/main/res/drawable-xhdpi-v9/ic_stat_name.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_history_dark.png b/app/src/main/res/drawable-xhdpi/ic_history_dark.png new file mode 100644 index 0000000..e906ba9 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_history_dark.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_stat_name.png b/app/src/main/res/drawable-xhdpi/ic_stat_name.png deleted file mode 100644 index 68b0ef7..0000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_stat_name.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_today_dark.png b/app/src/main/res/drawable-xhdpi/ic_today_dark.png new file mode 100644 index 0000000..b305279 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_today_dark.png differ diff --git a/app/src/main/res/drawable-xxhdpi-v11/ic_stat_name.png b/app/src/main/res/drawable-xxhdpi-v11/ic_stat_name.png deleted file mode 100644 index dff11a5..0000000 Binary files a/app/src/main/res/drawable-xxhdpi-v11/ic_stat_name.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi-v9/ic_stat_name.png b/app/src/main/res/drawable-xxhdpi-v9/ic_stat_name.png deleted file mode 100644 index f21073b..0000000 Binary files a/app/src/main/res/drawable-xxhdpi-v9/ic_stat_name.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_history_dark.png b/app/src/main/res/drawable-xxhdpi/ic_history_dark.png new file mode 100644 index 0000000..31e1a6d Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_history_dark.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_stat_name.png b/app/src/main/res/drawable-xxhdpi/ic_stat_name.png deleted file mode 100644 index 6cf7492..0000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_stat_name.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_today_dark.png b/app/src/main/res/drawable-xxhdpi/ic_today_dark.png new file mode 100644 index 0000000..e48ce06 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_today_dark.png differ diff --git a/app/src/main/res/layout/activity_history.xml b/app/src/main/res/layout/activity_history.xml new file mode 100644 index 0000000..c53dbe3 --- /dev/null +++ b/app/src/main/res/layout/activity_history.xml @@ -0,0 +1,13 @@ + + + + diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml index 263e3b9..ab93660 100644 --- a/app/src/main/res/menu/menu_main.xml +++ b/app/src/main/res/menu/menu_main.xml @@ -13,7 +13,7 @@ android:orderInCategory="15" android:title="@string/action_todayList" android:onClick="showTodayList" - android:icon="@drawable/ic_stat_name" + android:icon="@drawable/ic_today_dark" android:visible="false" app:showAsAction="ifRoom" /> Sorry, your Android version is not supported. Historique OK + Historique \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cbe2d9a..f03c98c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -20,6 +20,7 @@ Delete task list? Drag handle Create a new task list + OK List @@ -80,5 +81,7 @@ Sorry, your Android version is not supported. History - OK + + History +