diff --git a/DoNExt/app/src/main/AndroidManifest.xml b/DoNExt/app/src/main/AndroidManifest.xml index d3c026f..aecbbe8 100644 --- a/DoNExt/app/src/main/AndroidManifest.xml +++ b/DoNExt/app/src/main/AndroidManifest.xml @@ -9,29 +9,29 @@ android:supportsRtl="true" android:theme="@style/AppTheme"> - + android:parentActivityName=".activities.MainActivity"> + android:value=".activities.MainActivity" /> - + android:parentActivityName=".activities.MainActivity"> + android:value=".activities.MainActivity" /> diff --git a/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/TaskListActivity.java b/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/TaskListActivity.java deleted file mode 100644 index 757d226..0000000 --- a/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/TaskListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.wismna.geoffroy.donext; - -import android.app.ListActivity; -import android.os.Bundle; -import android.view.View; -import android.widget.EditText; -import android.widget.ListView; - -public class TaskListActivity extends ListActivity { - private TasksDataAccess dataAccess; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_task_list); - - ListView listView = (ListView) findViewById(android.R.id.list); - dataAccess = new TasksDataAccess(this); - dataAccess.open(); - - //List values = dataAccess.getAllTaskLists(); - - // use the SimpleCursorAdapter to show the - // elements in a ListView - /*ArrayAdapter adapter = new ArrayAdapter(this, - android.R.layout.simple_list_item_1, values); - setListAdapter(adapter);*/ - - TaskListCursorAdapter adapter = new TaskListCursorAdapter( - this, R.layout.item_task_list, dataAccess.getAllTaskListsCursor(), 0); - listView.setAdapter(adapter); - } - - // Will be called when the create Task List button is clicked - public void onCreateTaskList(View view) { - @SuppressWarnings("unchecked") - //ArrayAdapter adapter = (ArrayAdapter) getListAdapter(); - TaskListCursorAdapter adapter = (TaskListCursorAdapter) getListAdapter(); - TaskList taskList; - - EditText editText = (EditText) findViewById(R.id.new_task_list_name); - // save the new comment to the database - taskList = dataAccess.createTaskList(editText.getText().toString()); - //adapter.add(taskList); - - adapter.notifyDataSetChanged(); - } - - public void onDeleteTaskList(View view) { - @SuppressWarnings("unchecked") - //ArrayAdapter adapter = (ArrayAdapter) getListAdapter(); - TaskListCursorAdapter adapter = (TaskListCursorAdapter) getListAdapter(); - TaskList taskList; - - if (adapter.getCount() > 0) { - taskList = (TaskList) getListAdapter().getItem(0); - dataAccess.deleteTaskList(taskList); - //adapter.remove(taskList); - } - adapter.notifyDataSetChanged(); - } - - @Override - protected void onResume() { - dataAccess.open(); - super.onResume(); - } - - @Override - protected void onPause() { - dataAccess.close(); - super.onPause(); - } -} diff --git a/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/MainActivity.java b/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/activities/MainActivity.java similarity index 82% rename from DoNExt/app/src/main/java/com/wismna/geoffroy/donext/MainActivity.java rename to DoNExt/app/src/main/java/com/wismna/geoffroy/donext/activities/MainActivity.java index e2fc2da..04a8a8a 100644 --- a/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/MainActivity.java +++ b/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/activities/MainActivity.java @@ -1,4 +1,4 @@ -package com.wismna.geoffroy.donext; +package com.wismna.geoffroy.donext.activities; import android.content.Intent; import android.os.Bundle; @@ -16,8 +16,12 @@ import android.view.View; import android.view.ViewGroup; import android.widget.TextView; -/*import android.support.design.widget.FloatingActionButton; -import android.support.design.widget.Snackbar;*/ +import com.wismna.geoffroy.donext.R; +import com.wismna.geoffroy.donext.dao.TaskList; +import com.wismna.geoffroy.donext.database.TasksDataAccess; +import com.wismna.geoffroy.donext.fragments.NewTaskFragment; + +import java.util.List; public class MainActivity extends AppCompatActivity { @@ -36,6 +40,9 @@ public class MainActivity extends AppCompatActivity { */ private ViewPager mViewPager; + private TasksDataAccess dataAccess; + private List taskLists; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -43,10 +50,18 @@ public class MainActivity extends AppCompatActivity { Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); + // Create the adapter that will return a fragment for each of the three // primary sections of the activity. mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); + // Access database to retrieve Tabs + dataAccess = new TasksDataAccess(this); + dataAccess.open(); + + taskLists = dataAccess.getAllTaskLists(); + mSectionsPagerAdapter.notifyDataSetChanged(); + // Set up the ViewPager with the sections adapter. mViewPager = (ViewPager) findViewById(R.id.container); mViewPager.setAdapter(mSectionsPagerAdapter); @@ -54,15 +69,6 @@ public class MainActivity extends AppCompatActivity { TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); tabLayout.setupWithViewPager(mViewPager); - /*FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); - fab.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) - .setAction("Action", null).show(); - } - });*/ - } /** Called when the user clicks the Settings button */ public void openSettings(MenuItem menuItem) { @@ -75,6 +81,13 @@ public class MainActivity extends AppCompatActivity { startActivity(intent); } + /** Called when the user clicks the New Task button */ + public void openNewTaskDialog(MenuItem menuItem) { + android.app.FragmentManager manager = getFragmentManager(); + NewTaskFragment newTaskFragment = new NewTaskFragment(); + newTaskFragment.show(manager, "Create new task"); + } + @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. @@ -151,22 +164,17 @@ public class MainActivity extends AppCompatActivity { @Override public int getCount() { - // Show 3 total pages. - return 7; + if (taskLists != null) { + // Show the task lists + return taskLists.size(); + } + return 3; } @Override public CharSequence getPageTitle(int position) { - /*switch (position) { - case 0: - return "SECTION 1"; - case 1: - return "SECTION 2"; - case 2: - return "SECTION 3"; - } - return null;*/ - return "List " + position; + if (taskLists == null) return "N/A"; + return taskLists.get(position).getName(); } } } diff --git a/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/SettingsActivity.java b/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/activities/SettingsActivity.java similarity index 91% rename from DoNExt/app/src/main/java/com/wismna/geoffroy/donext/SettingsActivity.java rename to DoNExt/app/src/main/java/com/wismna/geoffroy/donext/activities/SettingsActivity.java index 9e1761f..6179088 100644 --- a/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/SettingsActivity.java +++ b/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/activities/SettingsActivity.java @@ -1,10 +1,12 @@ -package com.wismna.geoffroy.donext; +package com.wismna.geoffroy.donext.activities; import android.os.Bundle; import android.preference.PreferenceFragment; import android.preference.PreferenceManager; import android.support.v7.app.AppCompatActivity; +import com.wismna.geoffroy.donext.R; + public class SettingsActivity extends AppCompatActivity { @Override diff --git a/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/activities/TaskListActivity.java b/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/activities/TaskListActivity.java new file mode 100644 index 0000000..933de4b --- /dev/null +++ b/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/activities/TaskListActivity.java @@ -0,0 +1,88 @@ +package com.wismna.geoffroy.donext.activities; + +import android.content.SharedPreferences; +import android.database.Cursor; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.support.v7.app.AppCompatActivity; +import android.view.View; +import android.widget.EditText; +import android.widget.ListView; +import android.widget.RelativeLayout; + +import com.wismna.geoffroy.donext.R; +import com.wismna.geoffroy.donext.adapters.TaskListCursorAdapter; +import com.wismna.geoffroy.donext.database.TasksDataAccess; + +public class TaskListActivity extends AppCompatActivity { + private TasksDataAccess dataAccess; + private TaskListCursorAdapter adapter; + private ListView listView; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_task_list); + + listView = (ListView) findViewById(android.R.id.list); + dataAccess = new TasksDataAccess(this); + dataAccess.open(); + + adapter = new TaskListCursorAdapter( + this, R.layout.item_task_list, dataAccess.getAllTaskListsCursor(), 0); + listView.setAdapter(adapter); + + updateCreateButtonEnabled(); + } + + // Will be called when the create Task List button is clicked + public void onCreateTaskList(View view) { + @SuppressWarnings("unchecked") + EditText editText = (EditText) findViewById(R.id.new_task_list_name); + + Cursor cursor = dataAccess.createTaskList(editText.getText().toString()); + adapter.changeCursor(cursor); + editText.setText(""); + updateCreateButtonEnabled(); + } + + public void onDeleteTaskList(View view) { + @SuppressWarnings("unchecked") + final int position = listView.getPositionForView((View) view.getParent()); + Cursor cursor = dataAccess.deleteTaskList((Cursor) adapter.getItem(position)); + adapter.changeCursor(cursor); + updateCreateButtonEnabled(); + } + + @Override + protected void onResume() { + dataAccess.open(); + super.onResume(); + } + + @Override + protected void onPause() { + dataAccess.close(); + super.onPause(); + } + + private void updateCreateButtonEnabled() { + //Button createButton = (Button) findViewById(R.id.new_task_list_button); + //EditText editText = (EditText) findViewById(R.id.new_task_list_name); + RelativeLayout layout = (RelativeLayout) findViewById(R.id.new_task_list_layout); + int taskListCount = adapter.getCount(); + SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); + String maxTaskListsString = sharedPref.getString("pref_conf_max_lists", "3"); + int maxTaskLists = Integer.valueOf(maxTaskListsString); + //createButton.setEnabled(taskListCount < maxTaskLists); + //editText.setEnabled(taskListCount < maxTaskLists); + if (taskListCount >= maxTaskLists) layout.setVisibility(View.GONE); + else layout.setVisibility(View.VISIBLE); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + dataAccess.close(); + } +} diff --git a/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/TaskListCursorAdapter.java b/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/adapters/TaskListCursorAdapter.java similarity index 84% rename from DoNExt/app/src/main/java/com/wismna/geoffroy/donext/TaskListCursorAdapter.java rename to DoNExt/app/src/main/java/com/wismna/geoffroy/donext/adapters/TaskListCursorAdapter.java index 7b8b119..39ffda9 100644 --- a/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/TaskListCursorAdapter.java +++ b/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/adapters/TaskListCursorAdapter.java @@ -1,4 +1,4 @@ -package com.wismna.geoffroy.donext; +package com.wismna.geoffroy.donext.adapters; import android.content.Context; import android.database.Cursor; @@ -8,6 +8,9 @@ import android.view.ViewGroup; import android.widget.ResourceCursorAdapter; import android.widget.TextView; +import com.wismna.geoffroy.donext.R; +import com.wismna.geoffroy.donext.database.DatabaseHelper; + /** * Created by geoffroy on 15-11-25. */ @@ -38,4 +41,9 @@ public class TaskListCursorAdapter extends ResourceCursorAdapter { taskListCount.setText(String.valueOf(count)); taskListName.setText(name); } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + return super.getView(position, convertView, parent); + } } diff --git a/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/Task.java b/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/dao/Task.java similarity index 97% rename from DoNExt/app/src/main/java/com/wismna/geoffroy/donext/Task.java rename to DoNExt/app/src/main/java/com/wismna/geoffroy/donext/dao/Task.java index cc9b5dc..f7c2fe4 100644 --- a/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/Task.java +++ b/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/dao/Task.java @@ -1,4 +1,4 @@ -package com.wismna.geoffroy.donext; +package com.wismna.geoffroy.donext.dao; /** * Created by geoffroy on 15-11-25. diff --git a/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/TaskList.java b/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/dao/TaskList.java similarity index 86% rename from DoNExt/app/src/main/java/com/wismna/geoffroy/donext/TaskList.java rename to DoNExt/app/src/main/java/com/wismna/geoffroy/donext/dao/TaskList.java index 6d48db1..81f0732 100644 --- a/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/TaskList.java +++ b/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/dao/TaskList.java @@ -1,4 +1,4 @@ -package com.wismna.geoffroy.donext; +package com.wismna.geoffroy.donext.dao; /** * Created by geoffroy on 15-11-25. @@ -26,6 +26,6 @@ public class TaskList { // Will be used by the ArrayAdapter in the ListView @Override public String toString() { - return name; + return String.valueOf(id); } } diff --git a/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/DatabaseHelper.java b/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/database/DatabaseHelper.java similarity index 98% rename from DoNExt/app/src/main/java/com/wismna/geoffroy/donext/DatabaseHelper.java rename to DoNExt/app/src/main/java/com/wismna/geoffroy/donext/database/DatabaseHelper.java index 35ffd03..0b5736d 100644 --- a/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/DatabaseHelper.java +++ b/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/database/DatabaseHelper.java @@ -1,4 +1,4 @@ -package com.wismna.geoffroy.donext; +package com.wismna.geoffroy.donext.database; import android.content.Context; import android.database.sqlite.SQLiteDatabase; diff --git a/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/TasksDataAccess.java b/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/database/TasksDataAccess.java similarity index 71% rename from DoNExt/app/src/main/java/com/wismna/geoffroy/donext/TasksDataAccess.java rename to DoNExt/app/src/main/java/com/wismna/geoffroy/donext/database/TasksDataAccess.java index 47e89ce..65d6062 100644 --- a/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/TasksDataAccess.java +++ b/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/database/TasksDataAccess.java @@ -1,4 +1,4 @@ -package com.wismna.geoffroy.donext; +package com.wismna.geoffroy.donext.database; import android.content.ContentValues; import android.content.Context; @@ -6,6 +6,8 @@ import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; +import com.wismna.geoffroy.donext.dao.TaskList; + import java.util.ArrayList; import java.util.List; @@ -30,7 +32,7 @@ public class TasksDataAccess { dbHelper.close(); } - public TaskList createTaskList(String name) { + /*public TaskList createTaskList(String name) { ContentValues values = new ContentValues(); values.put(DatabaseHelper.TASKLIST_COLUMN_NAME, name); long insertId = database.insert(DatabaseHelper.TASKLIST_TABLE_NAME, null, @@ -42,17 +44,33 @@ public class TasksDataAccess { TaskList newTaskList = cursorToTaskList(cursor); cursor.close(); return newTaskList; + }*/ + + public Cursor createTaskList(String name) { + ContentValues values = new ContentValues(); + values.put(DatabaseHelper.TASKLIST_COLUMN_NAME, name); + database.insert(DatabaseHelper.TASKLIST_TABLE_NAME, null, values); + return getAllTaskListsCursor(); } - public void deleteTaskList(TaskList comment) { + /*public void deleteTaskList(TaskList comment) { long id = comment.getId(); System.out.println("Comment deleted with id: " + id); database.delete(DatabaseHelper.TASKLIST_TABLE_NAME, DatabaseHelper.COLUMN_ID + " = " + id, null); + }*/ + + public Cursor deleteTaskList(Cursor taskListCursor) { + TaskList taskList = cursorToTaskList(taskListCursor); + long id = taskList.getId(); + System.out.println("Comment deleted with id: " + id); + database.delete(DatabaseHelper.TASKLIST_TABLE_NAME, DatabaseHelper.COLUMN_ID + + " = " + id, null); + return getAllTaskListsCursor(); } public List getAllTaskLists() { - List taskLists = new ArrayList(); + List taskLists = new ArrayList<>(); Cursor cursor = getAllTaskListsCursor(); diff --git a/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/fragments/NewTaskFragment.java b/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/fragments/NewTaskFragment.java new file mode 100644 index 0000000..c914780 --- /dev/null +++ b/DoNExt/app/src/main/java/com/wismna/geoffroy/donext/fragments/NewTaskFragment.java @@ -0,0 +1,66 @@ +package com.wismna.geoffroy.donext.fragments; + +import android.app.AlertDialog; +import android.app.Dialog; +import android.app.DialogFragment; +import android.content.DialogInterface; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.ArrayAdapter; +import android.widget.Spinner; + +import com.wismna.geoffroy.donext.R; +import com.wismna.geoffroy.donext.dao.TaskList; +import com.wismna.geoffroy.donext.database.TasksDataAccess; + +import java.util.List; + +/** + * Created by geoffroy on 15-11-26. + */ +public class NewTaskFragment extends DialogFragment { + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + // Get the layout inflater + LayoutInflater inflater = getActivity().getLayoutInflater(); + + // Inflate and set the layout for the dialog + // Pass null as the parent view because its going in the dialog layout + builder.setView(inflater.inflate(R.layout.new_task, null)) + // Add action buttons + .setPositiveButton(R.string.new_task_save, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int id) { + // TODO: create the task in DB + } + }) + .setNegativeButton(R.string.new_task_cancel, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + NewTaskFragment.this.getDialog().cancel(); + } + }); + return builder.create(); + } + + @Override + public void onViewCreated(View view, Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + + // Access database to retrieve task lists + TasksDataAccess dataAccess = new TasksDataAccess(getActivity()); + dataAccess.open(); + + // Populate spinner with task lists + Spinner spinner = (Spinner) view.findViewById(R.id.new_task_list); + // Create an ArrayAdapter using the string array and a default spinner layout + List taskLists = dataAccess.getAllTaskLists(); + ArrayAdapter adapter = new ArrayAdapter<>( + getActivity(), android.R.layout.simple_spinner_item, taskLists); + // Specify the layout to use when the list of choices appears + adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + spinner.setAdapter(adapter); + } +} diff --git a/DoNExt/app/src/main/res/layout/activity_main.xml b/DoNExt/app/src/main/res/layout/activity_main.xml index 6604477..8699855 100644 --- a/DoNExt/app/src/main/res/layout/activity_main.xml +++ b/DoNExt/app/src/main/res/layout/activity_main.xml @@ -6,7 +6,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" - tools:context="com.wismna.geoffroy.donext.MainActivity"> + tools:context=".activities.MainActivity"> - - + app:popupTheme="@style/AppTheme.PopupOverlay" /> - +