mirror of
https://github.com/wismna/DoNext.git
synced 2025-10-03 15:40:14 -04:00
TodayForm dynamic fragment now fully functional: allows selecting tasks form the task list, allows text filtering
Creation of an ArrayAdapter to handle selection for the above Moved code out of Today Activity into Today Form where it belonged Replaced TaskFragment Coordinator Layout with a Frame Layout Re-moved the Floating Action Button into the Activities out of Task Fragment Simplification of Preferences
This commit is contained in:
10
DoNExt/.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
10
DoNExt/.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<profile version="1.0">
|
||||||
|
<option name="myName" value="Project Default" />
|
||||||
|
<inspection_tool class="AndroidLintHardcodedText" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||||
|
<inspection_tool class="LoggerInitializedWithForeignClass" enabled="false" level="WARNING" enabled_by_default="false">
|
||||||
|
<option name="loggerClassName" value="org.apache.log4j.Logger,org.slf4j.LoggerFactory,org.apache.commons.logging.LogFactory,java.util.logging.Logger" />
|
||||||
|
<option name="loggerFactoryMethodName" value="getLogger,getLogger,getLog,getLogger" />
|
||||||
|
</inspection_tool>
|
||||||
|
</profile>
|
||||||
|
</component>
|
7
DoNExt/.idea/inspectionProfiles/profiles_settings.xml
generated
Normal file
7
DoNExt/.idea/inspectionProfiles/profiles_settings.xml
generated
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<settings>
|
||||||
|
<option name="PROJECT_PROFILE" value="Project Default" />
|
||||||
|
<option name="USE_PROJECT_PROFILE" value="true" />
|
||||||
|
<version value="1.0" />
|
||||||
|
</settings>
|
||||||
|
</component>
|
@@ -1,25 +1,29 @@
|
|||||||
package com.wismna.geoffroy.donext.activities;
|
package com.wismna.geoffroy.donext.activities;
|
||||||
|
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v4.app.DialogFragment;
|
import android.preference.PreferenceManager;
|
||||||
|
import android.support.design.widget.FloatingActionButton;
|
||||||
import android.support.v4.app.FragmentManager;
|
import android.support.v4.app.FragmentManager;
|
||||||
import android.support.v4.app.FragmentTransaction;
|
import android.support.v4.app.FragmentTransaction;
|
||||||
import android.support.v7.app.ActionBar;
|
import android.support.v7.app.ActionBar;
|
||||||
import android.support.v7.app.AppCompatActivity;
|
import android.support.v7.app.AppCompatActivity;
|
||||||
|
import android.support.v7.widget.RecyclerView;
|
||||||
import android.support.v7.widget.Toolbar;
|
import android.support.v7.widget.Toolbar;
|
||||||
|
import android.view.Menu;
|
||||||
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
import com.wismna.geoffroy.donext.R;
|
import com.wismna.geoffroy.donext.R;
|
||||||
import com.wismna.geoffroy.donext.dao.Task;
|
import com.wismna.geoffroy.donext.adapters.TaskRecyclerViewAdapter;
|
||||||
import com.wismna.geoffroy.donext.database.TaskDataAccess;
|
import com.wismna.geoffroy.donext.database.TaskDataAccess;
|
||||||
import com.wismna.geoffroy.donext.fragments.TodayFormDialogFragment;
|
import com.wismna.geoffroy.donext.fragments.TodayFormDialogFragment;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class TodayActivity extends AppCompatActivity
|
public class TodayActivity extends AppCompatActivity
|
||||||
implements TodayFormDialogFragment.TodayTaskListener {
|
implements TodayFormDialogFragment.TodayTaskListener {
|
||||||
|
|
||||||
private boolean mIsLargeLayout;
|
private boolean mIsLargeLayout;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@@ -33,18 +37,54 @@ public class TodayActivity extends AppCompatActivity
|
|||||||
if (ab != null) {
|
if (ab != null) {
|
||||||
// Enable the Up button
|
// Enable the Up button
|
||||||
ab.setDisplayHomeAsUpEnabled(true);
|
ab.setDisplayHomeAsUpEnabled(true);
|
||||||
|
ab.setHomeButtonEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
mIsLargeLayout = getResources().getBoolean(R.bool.large_layout);
|
mIsLargeLayout = getResources().getBoolean(R.bool.large_layout);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onNewTaskClick(View view) {
|
@Override
|
||||||
List<Task> tasks;
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
try(TaskDataAccess taskDataAccess = new TaskDataAccess(this)) {
|
getMenuInflater().inflate(R.menu.menu_today, menu);
|
||||||
tasks = taskDataAccess.getAllTasks();
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onPrepareOptionsMenu(Menu menu) {
|
||||||
|
MenuItem displayLayoutItem = menu.findItem(R.id.action_changeLayout);
|
||||||
|
if (displayLayoutItem == null) return false;
|
||||||
|
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
|
||||||
|
String layoutType = sharedPref.getString("pref_conf_task_layout", "1");
|
||||||
|
switch (layoutType) {
|
||||||
|
case "1" :
|
||||||
|
displayLayoutItem.setIcon(R.drawable.ic_list_white_24dp);
|
||||||
|
break;
|
||||||
|
case "2" :
|
||||||
|
displayLayoutItem.setIcon(R.drawable.ic_view_list_white_24dp);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
return super.onPrepareOptionsMenu(menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 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.valueOf(layoutTypeString);
|
||||||
|
editor.putString("pref_conf_task_layout", String.valueOf(layoutType % 2 + 1));
|
||||||
|
editor.apply();
|
||||||
|
|
||||||
|
// Update the ViewPagerAdapter to refresh all tabs
|
||||||
|
//mSectionsPagerAdapter.notifyDataSetChanged();
|
||||||
|
// Invalidate the menu to redraw the icon
|
||||||
|
invalidateOptionsMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void onNewTaskClick(View view) {
|
||||||
TodayFormDialogFragment taskDialogFragment =
|
TodayFormDialogFragment taskDialogFragment =
|
||||||
TodayFormDialogFragment.newInstance(tasks, TodayActivity.this);
|
TodayFormDialogFragment.newInstance(this, TodayActivity.this);
|
||||||
|
|
||||||
// Set some configuration values for the dialog
|
// Set some configuration values for the dialog
|
||||||
Bundle args = new Bundle();
|
Bundle args = new Bundle();
|
||||||
@@ -70,7 +110,18 @@ public class TodayActivity extends AppCompatActivity
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onTodayTaskDialogPositiveClick(DialogFragment dialog, View dialogView) {
|
public void onTodayTaskDialogPositiveClick(View dialogView) {
|
||||||
|
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
|
||||||
|
fab.setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTodayTasksUpdated() {
|
||||||
|
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
|
||||||
|
fab.setEnabled(true);
|
||||||
|
try (TaskDataAccess taskDataAccess = new TaskDataAccess(this)) {
|
||||||
|
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.task_list_view);
|
||||||
|
((TaskRecyclerViewAdapter)recyclerView.getAdapter()).setItems(taskDataAccess.getTodayTasks());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -22,7 +22,7 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
public class TaskRecyclerViewAdapter extends RecyclerView.Adapter<TaskRecyclerViewAdapter.SimpleViewHolder> {
|
public class TaskRecyclerViewAdapter extends RecyclerView.Adapter<TaskRecyclerViewAdapter.SimpleViewHolder> {
|
||||||
|
|
||||||
private final List<Task> mValues;
|
private List<Task> mValues;
|
||||||
private int viewType;
|
private int viewType;
|
||||||
|
|
||||||
public TaskRecyclerViewAdapter(List<Task> items, int viewType) {
|
public TaskRecyclerViewAdapter(List<Task> items, int viewType) {
|
||||||
@@ -112,11 +112,15 @@ public class TaskRecyclerViewAdapter extends RecyclerView.Adapter<TaskRecyclerVi
|
|||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setItems(List<Task> tasks) {
|
||||||
|
this.mValues = tasks;
|
||||||
|
notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
|
||||||
public Task getItem(int position) {
|
public Task getItem(int position) {
|
||||||
return mValues.get(position);
|
return mValues.get(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class SimpleViewHolder extends RecyclerView.ViewHolder {
|
class SimpleViewHolder extends RecyclerView.ViewHolder {
|
||||||
final View mView;
|
final View mView;
|
||||||
final TextView mIdView;
|
final TextView mIdView;
|
||||||
|
@@ -0,0 +1,50 @@
|
|||||||
|
package com.wismna.geoffroy.donext.adapters;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.graphics.Typeface;
|
||||||
|
import android.support.annotation.NonNull;
|
||||||
|
import android.support.annotation.Nullable;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.ArrayAdapter;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import com.wismna.geoffroy.donext.R;
|
||||||
|
import com.wismna.geoffroy.donext.dao.Task;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by bg45 on 2017-03-22.
|
||||||
|
* Custom array adapter for the Today Task list view
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class TodayArrayAdapter extends ArrayAdapter<Task> {
|
||||||
|
public TodayArrayAdapter(@NonNull Context context, @NonNull List<Task> objects) {
|
||||||
|
super(context, R.layout.list_task_item, objects);
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
|
||||||
|
//return super.getView(position, convertView, parent);
|
||||||
|
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);
|
||||||
|
Task item = this.getItem(position);
|
||||||
|
if (item != null) {
|
||||||
|
titleView.setText(item.getName());
|
||||||
|
if (item.isToday()) {
|
||||||
|
titleView.setTypeface(titleView.getTypeface(), Typeface.BOLD);
|
||||||
|
titleView.setBackgroundColor(Color.parseColor("#B2DFDB"));
|
||||||
|
} else {
|
||||||
|
titleView.setTypeface(Typeface.DEFAULT);
|
||||||
|
titleView.setBackgroundColor(Color.WHITE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return convertView;
|
||||||
|
}
|
||||||
|
}
|
@@ -90,6 +90,13 @@ public class TaskDataAccess implements AutoCloseable {
|
|||||||
" AND " + DatabaseHelper.TASKS_COLUMN_LIST + " = " + taskListId, null);
|
" AND " + DatabaseHelper.TASKS_COLUMN_LIST + " = " + taskListId, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int updateTodayTasks(long id, boolean isTodayList){
|
||||||
|
ContentValues contentValues = new ContentValues();
|
||||||
|
contentValues.put(DatabaseHelper.TASKS_COLUMN_TODAYDATE, isTodayList? LocalDate.now().toString() : "");
|
||||||
|
return database.update(DatabaseHelper.TASKS_TABLE_NAME, contentValues,
|
||||||
|
DatabaseHelper.COLUMN_ID + " == " + id, null);
|
||||||
|
}
|
||||||
|
|
||||||
public List<Task> getAllTasks() {
|
public List<Task> getAllTasks() {
|
||||||
Cursor cursor = database.query(DatabaseHelper.TASKS_TABLE_NAME, taskColumns,
|
Cursor cursor = database.query(DatabaseHelper.TASKS_TABLE_NAME, taskColumns,
|
||||||
DatabaseHelper.TASKS_COLUMN_DONE + " = " + 0 +
|
DatabaseHelper.TASKS_COLUMN_DONE + " = " + 0 +
|
||||||
|
@@ -110,10 +110,15 @@ public abstract class DynamicDialogFragment extends DialogFragment {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPrepareOptionsMenu(Menu menu) {
|
public void onPrepareOptionsMenu(Menu menu) {
|
||||||
|
Bundle args = getArguments();
|
||||||
// Show the neutral button if needed
|
// Show the neutral button if needed
|
||||||
if (!mHasNeutralButton) {
|
if (!mHasNeutralButton) {
|
||||||
menu.removeItem(R.id.menu_neutral_button);
|
menu.removeItem(R.id.menu_neutral_button);
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
menu.findItem(R.id.menu_neutral_button).setTitle(args.getString("button_neutral"));
|
||||||
|
}
|
||||||
|
menu.findItem(R.id.menu_positive_button).setTitle(args.getString("button_positive"));
|
||||||
super.onPrepareOptionsMenu(menu);
|
super.onPrepareOptionsMenu(menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -46,7 +46,7 @@ import java.util.List;
|
|||||||
public class TasksFragment extends Fragment implements
|
public class TasksFragment extends Fragment implements
|
||||||
TaskFormDialogFragment.NewTaskListener,
|
TaskFormDialogFragment.NewTaskListener,
|
||||||
ConfirmDialogFragment.ConfirmDialogListener,
|
ConfirmDialogFragment.ConfirmDialogListener,
|
||||||
TaskTouchHelper.TaskTouchHelperAdapter {
|
TaskTouchHelper.TaskTouchHelperAdapter{
|
||||||
|
|
||||||
public interface TaskChangedAdapter {
|
public interface TaskChangedAdapter {
|
||||||
void onTaskListChanged(Task task, int tabPosition);
|
void onTaskListChanged(Task task, int tabPosition);
|
||||||
|
@@ -1,18 +1,22 @@
|
|||||||
package com.wismna.geoffroy.donext.fragments;
|
package com.wismna.geoffroy.donext.fragments;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.os.AsyncTask;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.support.v4.app.DialogFragment;
|
|
||||||
import android.text.Editable;
|
import android.text.Editable;
|
||||||
import android.text.TextWatcher;
|
import android.text.TextWatcher;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
import android.widget.ArrayAdapter;
|
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
|
|
||||||
import com.wismna.geoffroy.donext.R;
|
import com.wismna.geoffroy.donext.R;
|
||||||
|
import com.wismna.geoffroy.donext.adapters.TodayArrayAdapter;
|
||||||
import com.wismna.geoffroy.donext.dao.Task;
|
import com.wismna.geoffroy.donext.dao.Task;
|
||||||
|
import com.wismna.geoffroy.donext.database.TaskDataAccess;
|
||||||
|
|
||||||
|
import org.joda.time.LocalDate;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -26,16 +30,20 @@ public class TodayFormDialogFragment extends DynamicDialogFragment {
|
|||||||
* implement this interface in order to receive event callbacks.
|
* implement this interface in order to receive event callbacks.
|
||||||
* Each method passes the DialogFragment in case the host needs to query it. */
|
* Each method passes the DialogFragment in case the host needs to query it. */
|
||||||
public interface TodayTaskListener {
|
public interface TodayTaskListener {
|
||||||
void onTodayTaskDialogPositiveClick(DialogFragment dialog, View dialogView);
|
void onTodayTaskDialogPositiveClick(View dialogView);
|
||||||
|
void onTodayTasksUpdated();
|
||||||
}
|
}
|
||||||
|
|
||||||
private TodayFormDialogFragment.TodayTaskListener mListener;
|
private TodayFormDialogFragment.TodayTaskListener mListener;
|
||||||
private List<Task> tasks;
|
private List<Task> tasks;
|
||||||
|
|
||||||
public static TodayFormDialogFragment newInstance(List<Task> tasks, TodayTaskListener todayTaskListener) {
|
public static TodayFormDialogFragment newInstance(Context context, TodayTaskListener todayTaskListener) {
|
||||||
TodayFormDialogFragment fragment = new TodayFormDialogFragment();
|
TodayFormDialogFragment fragment = new TodayFormDialogFragment();
|
||||||
fragment.tasks = tasks;
|
|
||||||
fragment.mListener = todayTaskListener;
|
fragment.mListener = todayTaskListener;
|
||||||
|
// TODO: put this in an AsyncTask
|
||||||
|
try(TaskDataAccess taskDataAccess = new TaskDataAccess(context)) {
|
||||||
|
fragment.tasks = taskDataAccess.getAllTasks();
|
||||||
|
}
|
||||||
fragment.setRetainInstance(true);
|
fragment.setRetainInstance(true);
|
||||||
return fragment;
|
return fragment;
|
||||||
}
|
}
|
||||||
@@ -59,15 +67,17 @@ public class TodayFormDialogFragment extends DynamicDialogFragment {
|
|||||||
|
|
||||||
private void setLayoutValues(View view) {
|
private void setLayoutValues(View view) {
|
||||||
EditText editText = (EditText) view.findViewById(R.id.today_search);
|
EditText editText = (EditText) view.findViewById(R.id.today_search);
|
||||||
ListView listView = (ListView) view.findViewById(R.id.today_tasks);
|
final ListView listView = (ListView) view.findViewById(R.id.today_tasks);
|
||||||
final ArrayAdapter<Task> adapter = new ArrayAdapter<>(getActivity(), R.layout.list_task_item, tasks);
|
final TodayArrayAdapter adapter = new TodayArrayAdapter(getActivity(), tasks);
|
||||||
listView.setAdapter(adapter);
|
listView.setAdapter(adapter);
|
||||||
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||||
// Set as selected
|
// Set Today date for the task
|
||||||
Task task = tasks.get(position);
|
Task task = adapter.getItem(position);
|
||||||
view.setSelected(!view.isSelected());
|
if (task == null) return;
|
||||||
|
task.setTodayDate(task.isToday() ? "" : LocalDate.now().toString());
|
||||||
|
adapter.notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
editText.addTextChangedListener(new TextWatcher() {
|
editText.addTextChangedListener(new TextWatcher() {
|
||||||
@@ -90,7 +100,10 @@ public class TodayFormDialogFragment extends DynamicDialogFragment {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPositiveButtonClick(View view) {
|
protected void onPositiveButtonClick(View view) {
|
||||||
mListener.onTodayTaskDialogPositiveClick(TodayFormDialogFragment.this, view);
|
mListener.onTodayTaskDialogPositiveClick(view);
|
||||||
|
// TODO: find a way to filter this list to only get changed tasks
|
||||||
|
new UpdateTasks().execute(tasks.toArray(new Task[tasks.size()]));
|
||||||
|
dismiss();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -102,4 +115,25 @@ public class TodayFormDialogFragment extends DynamicDialogFragment {
|
|||||||
protected void onNegativeButtonClick() {
|
protected void onNegativeButtonClick() {
|
||||||
dismiss();
|
dismiss();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
private class UpdateTasks extends AsyncTask<Task, Void, Integer> {
|
||||||
|
@Override
|
||||||
|
protected Integer doInBackground(Task... params) {
|
||||||
|
int elementsUpdated = 0;
|
||||||
|
try (TaskDataAccess taskDataAccess = new TaskDataAccess(getActivity(), TaskDataAccess.MODE.WRITE)) {
|
||||||
|
for (Task task :
|
||||||
|
params) {
|
||||||
|
taskDataAccess.updateTodayTasks(task.getId(), task.isToday());
|
||||||
|
elementsUpdated++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return elementsUpdated;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPostExecute(Integer integer) {
|
||||||
|
super.onPostExecute(integer);
|
||||||
|
mListener.onTodayTasksUpdated();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -8,7 +8,7 @@
|
|||||||
android:paddingRight="@dimen/activity_horizontal_margin"
|
android:paddingRight="@dimen/activity_horizontal_margin"
|
||||||
android:paddingTop="@dimen/activity_vertical_margin"
|
android:paddingTop="@dimen/activity_vertical_margin"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
tools:context="com.wismna.geoffroy.donext.activities.AboutActivity">
|
tools:context=".activities.AboutActivity">
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/version_donext"
|
android:id="@+id/version_donext"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@@ -51,4 +51,13 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
|
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
|
||||||
|
|
||||||
|
<android.support.design.widget.FloatingActionButton
|
||||||
|
android:id="@+id/fab"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="end|bottom"
|
||||||
|
android:layout_margin="@dimen/fab_margin"
|
||||||
|
android:onClick="onNewTaskClick"
|
||||||
|
android:src="@drawable/ic_add_white_24dp" />
|
||||||
|
|
||||||
</android.support.design.widget.CoordinatorLayout>
|
</android.support.design.widget.CoordinatorLayout>
|
||||||
|
@@ -4,19 +4,14 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context="com.wismna.geoffroy.donext.activities.TodayActivity">
|
android:fitsSystemWindows="true"
|
||||||
|
tools:context=".activities.TodayActivity">
|
||||||
|
|
||||||
<android.support.design.widget.AppBarLayout
|
<android.support.design.widget.AppBarLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:theme="@style/AppTheme.AppBarOverlay">
|
android:theme="@style/AppTheme.AppBarOverlay">
|
||||||
|
<include layout="@layout/toolbar" android:id="@+id/toolbar" />
|
||||||
<android.support.v7.widget.Toolbar
|
|
||||||
android:id="@+id/toolbar"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="?attr/actionBarSize"
|
|
||||||
android:background="?attr/colorPrimary"
|
|
||||||
app:popupTheme="@style/AppTheme.PopupOverlay" />
|
|
||||||
|
|
||||||
</android.support.design.widget.AppBarLayout>
|
</android.support.design.widget.AppBarLayout>
|
||||||
|
|
||||||
@@ -28,4 +23,13 @@
|
|||||||
app:layout_behavior="@string/appbar_scrolling_view_behavior"
|
app:layout_behavior="@string/appbar_scrolling_view_behavior"
|
||||||
tools:layout="@layout/fragment_tasks" />
|
tools:layout="@layout/fragment_tasks" />
|
||||||
|
|
||||||
|
<android.support.design.widget.FloatingActionButton
|
||||||
|
android:id="@+id/fab"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="end|bottom"
|
||||||
|
android:layout_margin="@dimen/fab_margin"
|
||||||
|
android:onClick="onNewTaskClick"
|
||||||
|
android:src="@drawable/ic_add_white_24dp" />
|
||||||
|
|
||||||
</android.support.design.widget.CoordinatorLayout>
|
</android.support.design.widget.CoordinatorLayout>
|
||||||
|
@@ -4,6 +4,8 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_marginTop="?attr/actionBarSize"
|
android:layout_marginTop="?attr/actionBarSize"
|
||||||
|
android:focusable="true"
|
||||||
|
android:focusableInTouchMode="true"
|
||||||
android:background="@android:color/background_light" >
|
android:background="@android:color/background_light" >
|
||||||
<EditText
|
<EditText
|
||||||
android:id="@+id/today_search"
|
android:id="@+id/today_search"
|
||||||
@@ -17,7 +19,9 @@
|
|||||||
android:id="@+id/today_tasks"
|
android:id="@+id/today_tasks"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:textFilterEnabled="true">
|
android:textFilterEnabled="true"
|
||||||
|
android:drawSelectorOnTop="true"
|
||||||
|
android:choiceMode="multipleChoice">
|
||||||
|
|
||||||
</ListView>
|
</ListView>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
@@ -10,6 +10,7 @@
|
|||||||
android:theme="@style/AppTheme.AppBarOverlay">
|
android:theme="@style/AppTheme.AppBarOverlay">
|
||||||
<include layout="@layout/toolbar" android:id="@+id/dialog_toolbar" />
|
<include layout="@layout/toolbar" android:id="@+id/dialog_toolbar" />
|
||||||
</android.support.design.widget.AppBarLayout>
|
</android.support.design.widget.AppBarLayout>
|
||||||
|
<!-- This will contain the actual contents of the dialog -->
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@+id/dynamic_fragment_content"
|
android:id="@+id/dynamic_fragment_content"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<FrameLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@@ -63,14 +64,4 @@
|
|||||||
android:layout_width="150dp"
|
android:layout_width="150dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="bottom|center"/>
|
android:layout_gravity="bottom|center"/>
|
||||||
|
</FrameLayout>
|
||||||
<android.support.design.widget.FloatingActionButton
|
|
||||||
android:id="@+id/fab"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="end|bottom"
|
|
||||||
android:layout_margin="@dimen/fab_margin"
|
|
||||||
android:onClick="onNewTaskClick"
|
|
||||||
android:src="@drawable/ic_add_white_24dp" />
|
|
||||||
|
|
||||||
</android.support.design.widget.CoordinatorLayout>
|
|
@@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<TextView
|
<TextView
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:id="@+id/task_list_item_title"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:padding="20dp"
|
android:padding="20dp"
|
||||||
|
@@ -4,11 +4,11 @@
|
|||||||
<item
|
<item
|
||||||
android:id="@+id/menu_positive_button"
|
android:id="@+id/menu_positive_button"
|
||||||
android:orderInCategory="100"
|
android:orderInCategory="100"
|
||||||
android:title="@string/new_task_save"
|
android:title="@android:string/ok"
|
||||||
app:showAsAction="always"/>
|
app:showAsAction="always"/>
|
||||||
<item
|
<item
|
||||||
android:id="@+id/menu_neutral_button"
|
android:id="@+id/menu_neutral_button"
|
||||||
android:orderInCategory="50"
|
android:orderInCategory="50"
|
||||||
android:title="@string/new_task_delete"
|
android:title="@android:string/untitled"
|
||||||
app:showAsAction="ifRoom"/>
|
app:showAsAction="ifRoom"/>
|
||||||
</menu>
|
</menu>
|
11
DoNExt/app/src/main/res/menu/menu_today.xml
Normal file
11
DoNExt/app/src/main/res/menu/menu_today.xml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_changeLayout"
|
||||||
|
android:orderInCategory="20"
|
||||||
|
android:title="@string/action_changeLayout"
|
||||||
|
android:onClick="changeLayout"
|
||||||
|
android:icon="@drawable/ic_view_list_white_24dp"
|
||||||
|
app:showAsAction="always" />
|
||||||
|
</menu>
|
@@ -6,6 +6,6 @@
|
|||||||
</string-array>
|
</string-array>
|
||||||
<string-array name="settings_today_actions">
|
<string-array name="settings_today_actions">
|
||||||
<item>Terminer</item>
|
<item>Terminer</item>
|
||||||
<item>Supprimer</item>
|
<item>Réinitialiser</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
</resources>
|
</resources>
|
@@ -23,7 +23,7 @@
|
|||||||
<string name="new_task_priority_low">Basse</string>
|
<string name="new_task_priority_low">Basse</string>
|
||||||
<string name="new_task_priority_normal">Normale</string>
|
<string name="new_task_priority_normal">Normale</string>
|
||||||
<string name="new_task_save">Enregistrer</string>
|
<string name="new_task_save">Enregistrer</string>
|
||||||
<string name="settings_category_tasklists">Liste de tâche</string>
|
<string name="settings_category_tasklists">Listes de tâche</string>
|
||||||
<string name="settings_category_tasks">Tâches</string>
|
<string name="settings_category_tasks">Tâches</string>
|
||||||
<string name="settings_confirm_delete">Confirmation de suppression</string>
|
<string name="settings_confirm_delete">Confirmation de suppression</string>
|
||||||
<string name="settings_confirm_donext">Confirmation sur suivant</string>
|
<string name="settings_confirm_donext">Confirmation sur suivant</string>
|
||||||
@@ -59,9 +59,9 @@
|
|||||||
<string name="task_total">%1$d tâche%2$s</string>
|
<string name="task_total">%1$d tâche%2$s</string>
|
||||||
<string name="task_total_cycles">%1$d cycle%2$s</string>
|
<string name="task_total_cycles">%1$d cycle%2$s</string>
|
||||||
<string name="title_activity_task_list">TaskListActivity</string>
|
<string name="title_activity_task_list">TaskListActivity</string>
|
||||||
<string name="settings_today_title">Liste Aujourd\'hui</string>
|
<string name="settings_today_title">Vue Aujourd\'hui</string>
|
||||||
<string name="settings_today_enable">Activer la liste Aujourd\'hui?</string>
|
<string name="settings_today_enable">Activer la vue Aujourd\'hui?</string>
|
||||||
<string name="settings_today_desc">La liste Aujourd\'hui est une liste spéciale, dans laquelle les tâches n\'existent que pour la journée en cours. Chaque jour, cette liste est réinitialisée.</string>
|
<string name="settings_today_desc">La vue Aujourd\'hui est une façon particulière d\'organiser vos tâches. Choisissez quelles tâches vous voulez faire dans la journée et elles apparaîtront dans cette vue. À la fin de la journée, cette vue est réinitialisée.</string>
|
||||||
<string name="task_list_today">Aujourd\'hui</string>
|
<string name="task_list_today">Aujourd\'hui</string>
|
||||||
<string name="task_list_today_list_error">Le nom \"Aujourd\'hui\" est réservé. Vous pouvez activer la liste Aujourd\'hui dans les paramètres.</string>
|
<string name="task_list_today_list_error">Le nom \"Aujourd\'hui\" est réservé. Vous pouvez activer la liste Aujourd\'hui dans les paramètres.</string>
|
||||||
<string name="settings_today_action_title">Action à entreprendre à la fin de la journée:</string>
|
<string name="settings_today_action_title">Action à entreprendre à la fin de la journée:</string>
|
||||||
@@ -70,6 +70,6 @@
|
|||||||
<string name="action_todayList">Vue Aujourd\'hui</string>
|
<string name="action_todayList">Vue Aujourd\'hui</string>
|
||||||
<string name="title_activity_today">Aujourd\'hui</string>
|
<string name="title_activity_today">Aujourd\'hui</string>
|
||||||
<string name="new_task_today">Ajouter la tâche à la vue Aujourd\'hui?</string>
|
<string name="new_task_today">Ajouter la tâche à la vue Aujourd\'hui?</string>
|
||||||
<string name="today_search_hint">Rechercher...</string>
|
<string name="today_search_hint">Rechercher…</string>
|
||||||
<string name="action_today_select">Choisissez des tâches</string>
|
<string name="action_today_select">Choisissez des tâches</string>
|
||||||
</resources>
|
</resources>
|
@@ -19,7 +19,7 @@
|
|||||||
</string-array>
|
</string-array>
|
||||||
<string-array name="settings_today_actions">
|
<string-array name="settings_today_actions">
|
||||||
<item>Done</item>
|
<item>Done</item>
|
||||||
<item>Delete</item>
|
<item>Reset</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
<string-array name="settings_today_action_values" translatable="false">
|
<string-array name="settings_today_action_values" translatable="false">
|
||||||
<item>1</item>
|
<item>1</item>
|
||||||
|
@@ -75,9 +75,9 @@
|
|||||||
<string name="settings_confirm_markdone">Confirm on done?</string>
|
<string name="settings_confirm_markdone">Confirm on done?</string>
|
||||||
<string name="settings_confirm_delete">Confirm on delete?</string>
|
<string name="settings_confirm_delete">Confirm on delete?</string>
|
||||||
<string name="settings_task_layout">Task layout</string>
|
<string name="settings_task_layout">Task layout</string>
|
||||||
<string name="settings_today_title">Today list</string>
|
<string name="settings_today_title">Today view</string>
|
||||||
<string name="settings_today_enable">Enable Today list?</string>
|
<string name="settings_today_enable">Enable Today view?</string>
|
||||||
<string name="settings_today_desc">The Today list is a special kind of list, in which tasks only exist for the current day. Each day, the list is reset.</string>
|
<string name="settings_today_desc">The Today view is a special way of showing your tasks. Select which tasks you want to do during the day and they will show up in this view. At the end of the day, the view is reset.</string>
|
||||||
<string name="settings_today_action_title">Action at the end of the day</string>
|
<string name="settings_today_action_title">Action at the end of the day</string>
|
||||||
<string name="settings_max_lists_label">Maximum number of lists</string>
|
<string name="settings_max_lists_label">Maximum number of lists</string>
|
||||||
|
|
||||||
@@ -85,13 +85,11 @@
|
|||||||
<string name="about_version_donext">DoNext version %s</string>
|
<string name="about_version_donext">DoNext version %s</string>
|
||||||
<string name="about_version_android">Android version %d</string>
|
<string name="about_version_android">Android version %d</string>
|
||||||
<string name="about_link" translatable="false">https://github.com/wismna</string>
|
<string name="about_link" translatable="false">https://github.com/wismna</string>
|
||||||
<string name="action_todayList">Today View</string>
|
|
||||||
<string name="title_activity_today">Today</string>
|
|
||||||
<string name="new_task_today">Add task to Today View?</string>
|
|
||||||
<string name="title_activity_main2">Main2Activity</string>
|
|
||||||
|
|
||||||
<!-- TODO: Remove or change this placeholder text -->
|
<!-- Strings related to Today -->
|
||||||
<string name="hello_blank_fragment">Hello blank fragment</string>
|
<string name="title_activity_today">Today</string>
|
||||||
<string name="today_search_hint">Search...</string>
|
<string name="action_todayList">Today View</string>
|
||||||
|
<string name="new_task_today">Add task to Today View?</string>
|
||||||
|
<string name="today_search_hint">Search…</string>
|
||||||
<string name="action_today_select">Select tasks</string>
|
<string name="action_today_select">Select tasks</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -27,30 +27,20 @@
|
|||||||
android:key="pref_conf_tasklist_del"
|
android:key="pref_conf_tasklist_del"
|
||||||
android:title="@string/settings_confirm_delete"
|
android:title="@string/settings_confirm_delete"
|
||||||
android:defaultValue="true" />
|
android:defaultValue="true" />
|
||||||
<ListPreference
|
<ListPreference
|
||||||
android:key="pref_conf_max_lists"
|
android:key="pref_conf_max_lists"
|
||||||
android:title="@string/settings_max_lists_label"
|
android:title="@string/settings_max_lists_label"
|
||||||
android:dialogTitle="@string/settings_max_lists_label"
|
android:dialogTitle="@string/settings_max_lists_label"
|
||||||
android:entries="@array/settings_max_lists_number"
|
android:entries="@array/settings_max_lists_number"
|
||||||
android:entryValues="@array/settings_max_lists_number"
|
android:entryValues="@array/settings_max_lists_number"
|
||||||
android:summary="%s"
|
android:summary="%s"
|
||||||
android:defaultValue="5" />
|
android:defaultValue="5" />
|
||||||
<PreferenceScreen
|
</PreferenceCategory>
|
||||||
android:title="@string/settings_today_title">
|
<PreferenceCategory
|
||||||
<PreferenceCategory
|
android:title="@string/settings_today_title">
|
||||||
android:title="@string/settings_today_title" />
|
<SwitchPreference
|
||||||
<SwitchPreference
|
android:key="pref_conf_today_enable"
|
||||||
android:key="pref_conf_today_enable"
|
android:title="@string/settings_today_enable"
|
||||||
android:title="@string/settings_today_enable"
|
android:summary="@string/settings_today_desc"/>
|
||||||
android:summary="@string/settings_today_desc"/>
|
|
||||||
<ListPreference
|
|
||||||
android:key="pref_conf_today_action"
|
|
||||||
android:title="@string/settings_today_action_title"
|
|
||||||
android:dialogTitle="@string/settings_today_title"
|
|
||||||
android:entries="@array/settings_today_actions"
|
|
||||||
android:entryValues="@array/settings_today_action_values"
|
|
||||||
android:summary="%s"
|
|
||||||
android:defaultValue="2" />
|
|
||||||
</PreferenceScreen>
|
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
Reference in New Issue
Block a user