mirror of
https://github.com/wismna/DoNext.git
synced 2025-10-03 07:30:13 -04:00
All dialog fragments are support fragments
Clicking on a task open the new task dialog with existing data
This commit is contained in:
@@ -1,13 +1,13 @@
|
||||
package com.wismna.geoffroy.donext.activities;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.app.DialogFragment;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.support.design.widget.TabLayout;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.app.FragmentPagerAdapter;
|
||||
@@ -16,6 +16,7 @@ import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.support.v7.widget.helper.ItemTouchHelper;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
@@ -92,6 +93,7 @@ public class MainActivity extends AppCompatActivity implements
|
||||
tabLayout.setupWithViewPager(mViewPager);
|
||||
|
||||
// Add Task floating button
|
||||
// TODO: disable or hide button when no lists exist
|
||||
/*FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
|
||||
fab.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
@@ -141,8 +143,9 @@ public class MainActivity extends AppCompatActivity implements
|
||||
super.onDestroy();
|
||||
taskDataAccess.close();
|
||||
}
|
||||
// TODO: change add methods to add or update
|
||||
@Override
|
||||
public void onDialogPositiveClick(DialogFragment dialog) {
|
||||
public void onNewTaskDialogPositiveClick(DialogFragment dialog) {
|
||||
// Get the dialog fragment
|
||||
Dialog dialogView = dialog.getDialog();
|
||||
// Get the controls
|
||||
@@ -153,11 +156,11 @@ public class MainActivity extends AppCompatActivity implements
|
||||
RadioButton priorityRadio = (RadioButton) dialogView.findViewById(priorityGroup.getCheckedRadioButtonId());
|
||||
TaskList taskList = (TaskList) listSpinner.getSelectedItem();
|
||||
// Add the task to the database
|
||||
Task task = taskDataAccess.createTask(
|
||||
nameText.getText().toString(),
|
||||
descText.getText().toString(),
|
||||
priorityRadio.getText().toString(),
|
||||
taskList.getId());
|
||||
Task task = taskDataAccess.createOrUpdateTask(
|
||||
nameText.getText().toString(),
|
||||
descText.getText().toString(),
|
||||
priorityRadio.getText().toString(),
|
||||
taskList.getId());
|
||||
|
||||
// Update the corresponding tab adapter
|
||||
TasksFragment taskFragment = (TasksFragment) mSectionsPagerAdapter.getRegisteredFragment(listSpinner.getSelectedItemPosition());
|
||||
@@ -196,18 +199,17 @@ public class MainActivity extends AppCompatActivity implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDialogPositiveClick(android.support.v4.app.DialogFragment dialog) {
|
||||
public void onConfirmDialogPositiveClick(DialogFragment dialog) {
|
||||
Bundle args = dialog.getArguments();
|
||||
int itemPosition = args.getInt("ItemPosition");
|
||||
int direction = args.getInt("Direction");
|
||||
|
||||
TaskAdapter taskAdapter = ((ConfirmDialogFragment)dialog).getTaskAdapter();
|
||||
PerformSwipeAction(taskDataAccess, taskAdapter, itemPosition, direction, ((ConfirmDialogFragment) dialog).getRecyclerView());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDialogNeutralClick(android.support.v4.app.DialogFragment dialog) {
|
||||
public void onConfirmDialogNeutralClick(android.support.v4.app.DialogFragment dialog) {
|
||||
Bundle args = dialog.getArguments();
|
||||
int itemPosition = args.getInt("ItemPosition");
|
||||
int direction = args.getInt("Direction");
|
||||
@@ -233,7 +235,7 @@ public class MainActivity extends AppCompatActivity implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDialogNegativeClick(android.support.v4.app.DialogFragment dialog) {
|
||||
public void onConfirmDialogNegativeClick(android.support.v4.app.DialogFragment dialog) {
|
||||
Bundle args = dialog.getArguments();
|
||||
int itemPosition = args.getInt("ItemPosition");
|
||||
|
||||
@@ -241,8 +243,14 @@ public class MainActivity extends AppCompatActivity implements
|
||||
taskAdapter.notifyItemChanged(itemPosition);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onConfirmDialogKeyListener(android.support.v4.app.DialogFragment dialog, int keyCode, KeyEvent event) {
|
||||
onConfirmDialogNegativeClick(dialog);
|
||||
return keyCode != KeyEvent.KEYCODE_BACK;
|
||||
}
|
||||
|
||||
private void OpenNewTaskDialog() {
|
||||
android.app.FragmentManager manager = getFragmentManager();
|
||||
FragmentManager manager = getSupportFragmentManager();
|
||||
NewTaskFragment newTaskFragment = new NewTaskFragment();
|
||||
|
||||
// Set current tab value to new task dialog
|
||||
|
@@ -41,7 +41,8 @@ public class TaskDataAccess {
|
||||
dbHelper.close();
|
||||
}
|
||||
|
||||
public Task createTask(String name, String description, String priority, long taskList) {
|
||||
// TODO: add taskID
|
||||
public Task createOrUpdateTask(String name, String description, String priority, long taskList) {
|
||||
ContentValues values = new ContentValues();
|
||||
values.put(DatabaseHelper.TASKS_COLUMN_NAME, name);
|
||||
values.put(DatabaseHelper.TASKS_COLUMN_DESC, description);
|
||||
|
@@ -7,15 +7,17 @@ import android.os.Bundle;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.KeyEvent;
|
||||
|
||||
import com.wismna.geoffroy.donext.R;
|
||||
import com.wismna.geoffroy.donext.adapters.TaskAdapter;
|
||||
|
||||
public class ConfirmDialogFragment extends DialogFragment {
|
||||
public interface ConfirmDialogListener {
|
||||
void onDialogPositiveClick(DialogFragment dialog);
|
||||
void onDialogNeutralClick(DialogFragment dialog);
|
||||
void onDialogNegativeClick(DialogFragment dialog);
|
||||
void onConfirmDialogPositiveClick(DialogFragment dialog);
|
||||
void onConfirmDialogNeutralClick(DialogFragment dialog);
|
||||
void onConfirmDialogNegativeClick(DialogFragment dialog);
|
||||
boolean onConfirmDialogKeyListener(DialogFragment dialog, int keyCode, KeyEvent event);
|
||||
}
|
||||
|
||||
private ConfirmDialogListener confirmDialogListener;
|
||||
@@ -44,6 +46,11 @@ public class ConfirmDialogFragment extends DialogFragment {
|
||||
return recyclerView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCancel(DialogInterface dialog) {
|
||||
super.onCancel(dialog);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(Activity activity) {
|
||||
super.onAttach(activity);
|
||||
@@ -63,23 +70,31 @@ public class ConfirmDialogFragment extends DialogFragment {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
||||
// TODO: Handle on dismiss or similar
|
||||
builder.setMessage(getResources().getString(R.string.settings_confirm_message) + " " + message + "?")
|
||||
.setPositiveButton(R.string.task_swipe_confirmation_yes, new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int id) {
|
||||
confirmDialogListener.onDialogPositiveClick(ConfirmDialogFragment.this);
|
||||
}
|
||||
.setPositiveButton(R.string.task_swipe_confirmation_yes, new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int id) {
|
||||
confirmDialogListener.onConfirmDialogPositiveClick(ConfirmDialogFragment.this);
|
||||
}
|
||||
})
|
||||
.setNegativeButton(R.string.task_swipe_confirmation_no, new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int id) {
|
||||
// User cancelled the dialog
|
||||
confirmDialogListener.onDialogNegativeClick(ConfirmDialogFragment.this);
|
||||
confirmDialogListener.onConfirmDialogNegativeClick(ConfirmDialogFragment.this);
|
||||
}
|
||||
}).setNeutralButton(R.string.task_swipe_confirmation_never, new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int id) {
|
||||
confirmDialogListener.onDialogNeutralClick(ConfirmDialogFragment.this);
|
||||
confirmDialogListener.onConfirmDialogNeutralClick(ConfirmDialogFragment.this);
|
||||
}
|
||||
}
|
||||
);
|
||||
})
|
||||
.setOnKeyListener(new DialogInterface.OnKeyListener() {
|
||||
@Override
|
||||
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
|
||||
//return false;
|
||||
return confirmDialogListener.onConfirmDialogKeyListener(ConfirmDialogFragment.this, keyCode, event);
|
||||
}
|
||||
});
|
||||
// Create the AlertDialog object and return it
|
||||
return builder.create();
|
||||
Dialog dialog = builder.create();
|
||||
dialog.setCanceledOnTouchOutside(true);
|
||||
return dialog;
|
||||
}
|
||||
}
|
||||
|
@@ -3,12 +3,14 @@ package com.wismna.geoffroy.donext.fragments;
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.Dialog;
|
||||
import android.app.DialogFragment;
|
||||
import android.content.DialogInterface;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.EditText;
|
||||
import android.widget.RadioGroup;
|
||||
import android.widget.Spinner;
|
||||
|
||||
import com.wismna.geoffroy.donext.R;
|
||||
@@ -26,7 +28,7 @@ public class NewTaskFragment extends DialogFragment {
|
||||
* implement this interface in order to receive event callbacks.
|
||||
* Each method passes the DialogFragment in case the host needs to query it. */
|
||||
public interface NewTaskListener {
|
||||
void onDialogPositiveClick(DialogFragment dialog);
|
||||
void onNewTaskDialogPositiveClick(DialogFragment dialog);
|
||||
//void onDialogNegativeClick(DialogFragment dialog);
|
||||
}
|
||||
|
||||
@@ -64,7 +66,7 @@ public class NewTaskFragment extends DialogFragment {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int id) {
|
||||
// Send the positive button event back to the host activity
|
||||
mListener.onDialogPositiveClick(NewTaskFragment.this);
|
||||
mListener.onNewTaskDialogPositiveClick(NewTaskFragment.this);
|
||||
}
|
||||
})
|
||||
.setNegativeButton(R.string.new_task_cancel, new DialogInterface.OnClickListener() {
|
||||
@@ -89,12 +91,34 @@ public class NewTaskFragment extends DialogFragment {
|
||||
// Specify the layout to use when the list of choices appears
|
||||
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
spinner.setAdapter(adapter);
|
||||
dataAccess.close();
|
||||
|
||||
// Auto set list value to current tab
|
||||
Bundle args = getArguments();
|
||||
int id = args.getInt("list");
|
||||
spinner.setSelection(id);
|
||||
|
||||
// Set other properties
|
||||
EditText titleText = (EditText) view.findViewById(R.id.new_task_name);
|
||||
titleText.setText(args.getString("title"));
|
||||
EditText descText = (EditText) view.findViewById(R.id.new_task_description);
|
||||
descText.setText(args.getString("description"));
|
||||
RadioGroup priorityGroup = (RadioGroup) view.findViewById(R.id.new_task_priority);
|
||||
int priority = args.getInt("priority");
|
||||
switch (priority)
|
||||
{
|
||||
case 0:
|
||||
priorityGroup.check(R.id.new_task_priority_low);
|
||||
break;
|
||||
case 1:
|
||||
priorityGroup.check(R.id.new_task_priority_normal);
|
||||
break;
|
||||
case 2:
|
||||
priorityGroup.check(R.id.new_task_priority_high);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
return builder.create();
|
||||
}
|
||||
}
|
||||
|
@@ -1,8 +1,11 @@
|
||||
package com.wismna.geoffroy.donext.fragments;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
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;
|
||||
@@ -10,7 +13,6 @@ import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.wismna.geoffroy.donext.ItemTouchHelpers.TaskTouchHelper;
|
||||
import com.wismna.geoffroy.donext.R;
|
||||
@@ -27,8 +29,13 @@ import com.wismna.geoffroy.donext.listeners.RecyclerItemClickListener;
|
||||
*/
|
||||
public class TasksFragment extends Fragment {
|
||||
|
||||
/*public interface TasksFragmentListener {
|
||||
void onItemClick(View view, int position);
|
||||
}*/
|
||||
|
||||
private static final String TASK_LIST_ID = "task_list_id";
|
||||
private long taskListId = -1;
|
||||
//private TasksFragmentListener tasksFragmentListener;
|
||||
private OnListFragmentInteractionListener mListener;
|
||||
|
||||
/**
|
||||
@@ -92,16 +99,40 @@ public class TasksFragment extends Fragment {
|
||||
|
||||
// Implements touch listener to add click detection
|
||||
// TODO: conflicts with ItemTouchHelper (maybe add swipe detection there with onFling?)
|
||||
final Toast mToast = Toast.makeText(getActivity(), "", Toast.LENGTH_SHORT);
|
||||
//final Toast mToast = Toast.makeText(getActivity(), "", Toast.LENGTH_SHORT);
|
||||
recyclerView.addOnItemTouchListener(
|
||||
new RecyclerItemClickListener(context, new RecyclerItemClickListener.OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(View view, int position) {
|
||||
// TODO: implement on item click event
|
||||
TextView editText = (TextView) view.findViewById(R.id.task_id);
|
||||
//Toast mToast = Toast.makeText(context, "Item " + editText.getText() + " clicked!", Toast.LENGTH_SHORT);
|
||||
mToast.setText("Item " + editText.getText() + " clicked!");
|
||||
mToast.show();
|
||||
//tasksFragmentListener.onItemClick(view, position);
|
||||
|
||||
/*TextView idTextView = (TextView) view.findViewById(R.id.task_id);
|
||||
mToast.setText("Item " + idTextView.getText() + " clicked!");
|
||||
mToast.show();*/
|
||||
|
||||
FragmentManager manager = getFragmentManager();
|
||||
NewTaskFragment newTaskFragment = new NewTaskFragment();
|
||||
|
||||
Bundle args = new Bundle();
|
||||
|
||||
// Set current tab value to new task dialog
|
||||
ViewPager viewPager =(ViewPager) getActivity().findViewById(R.id.container);
|
||||
args.putInt("list", viewPager.getCurrentItem());
|
||||
|
||||
// Set title
|
||||
TextView titleTextView = (TextView) view.findViewById(R.id.task_name);
|
||||
args.putString("title", titleTextView.getText().toString());
|
||||
// Set description
|
||||
TextView descTextView = (TextView) view.findViewById(R.id.task_description);
|
||||
args.putString("description", descTextView.getText().toString());
|
||||
// Set priority
|
||||
int priority = 1;
|
||||
if (titleTextView.getCurrentTextColor() == Color.LTGRAY) priority = 0;
|
||||
if (titleTextView.getTypeface().isBold()) priority = 2;
|
||||
args.putInt("priority", priority);
|
||||
|
||||
newTaskFragment.setArguments(args);
|
||||
newTaskFragment.show(manager, "Edit task");
|
||||
}
|
||||
})
|
||||
);
|
||||
|
Reference in New Issue
Block a user