diff --git a/app/build.gradle b/app/build.gradle index ba2d9dedf..a718579e0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,7 +20,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.1.0' + classpath 'com.android.tools.build:gradle:2.2.1' // the latest version of the android-apt plugin for annotations classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4' // For publishing stuff to Google Play @@ -32,10 +32,6 @@ buildscript { apply plugin: 'com.android.application' apply plugin: 'com.github.triplet.play' -// For annotations -apply plugin: 'android-apt' -def AAVersion = '3.3.2' - repositories { jcenter() } @@ -54,7 +50,9 @@ def gitCommitCount = android { compileSdkVersion 23 - buildToolsVersion '23.0.2' + buildToolsVersion '23.0.3' + + dataBinding.enabled = true lintOptions { abortOnError false @@ -120,14 +118,6 @@ android { } } -// annotations -apt { - arguments { - //resourcePackageName android.defaultConfig.applicationId - androidManifestFile variant.outputs[0].processResources.manifestFile - } -} - dependencies { //compile fileTree(dir: 'libs', include: '*.jar') compile 'com.android.support:support-v4:23.1.0' @@ -146,9 +136,6 @@ dependencies { compile 'com.squareup.retrofit:retrofit:1.6.1' // Included libraries compile project(':external:datetimepicker') - // annotations - apt "org.androidannotations:androidannotations:$AAVersion" - compile "org.androidannotations:androidannotations-api:$AAVersion" // Dropbox and non-free stuff playCompile fileTree(dir: 'src/play/libs', include: '*.jar') playBetaCompile fileTree(dir: 'src/play/libs', include: '*.jar') diff --git a/app/src/androidTest/java/com/nononsenseapps/notepad/test/ActivityMainTest.java b/app/src/androidTest/java/com/nononsenseapps/notepad/test/ActivityMainTest.java deleted file mode 100644 index 5b7c508e7..000000000 --- a/app/src/androidTest/java/com/nononsenseapps/notepad/test/ActivityMainTest.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.nononsenseapps.notepad.test; - -public class ActivityMainTest { - -} diff --git a/app/src/androidTest/java/com/nononsenseapps/notepad/test/DBFreshTest.java b/app/src/androidTest/java/com/nononsenseapps/notepad/test/DBFreshTest.java index 75b96fba1..0cad5f652 100644 --- a/app/src/androidTest/java/com/nononsenseapps/notepad/test/DBFreshTest.java +++ b/app/src/androidTest/java/com/nononsenseapps/notepad/test/DBFreshTest.java @@ -1,18 +1,14 @@ package com.nononsenseapps.notepad.test; -import com.nononsenseapps.notepad.database.DatabaseHandler; -import com.nononsenseapps.notepad.database.LegacyDBHelper; -import com.nononsenseapps.notepad.database.MyContentProvider; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.database.TaskList; +import com.nononsenseapps.notepad.data.local.sql.DatabaseHandler; +import com.nononsenseapps.notepad.data.local.sql.LegacyDBHelper; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.data.model.sql.TaskList; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.test.AndroidTestCase; -import android.test.ProviderTestCase2; -import android.test.RenamingDelegatingContext; -import android.test.mock.MockContentResolver; import android.test.suitebuilder.annotation.SmallTest; public class DBFreshTest extends AndroidTestCase { diff --git a/app/src/androidTest/java/com/nononsenseapps/notepad/test/DBProviderMovementTest.java b/app/src/androidTest/java/com/nononsenseapps/notepad/test/DBProviderMovementTest.java index 698a0018d..ede09b5ff 100644 --- a/app/src/androidTest/java/com/nononsenseapps/notepad/test/DBProviderMovementTest.java +++ b/app/src/androidTest/java/com/nononsenseapps/notepad/test/DBProviderMovementTest.java @@ -4,9 +4,9 @@ import java.util.HashSet; import java.util.Random; -import com.nononsenseapps.notepad.database.DAO; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.database.TaskList; +import com.nononsenseapps.notepad.data.model.sql.DAO; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.data.model.sql.TaskList; import android.content.ContentResolver; import android.content.ContentValues; diff --git a/app/src/androidTest/java/com/nononsenseapps/notepad/test/DBProviderTest.java b/app/src/androidTest/java/com/nononsenseapps/notepad/test/DBProviderTest.java index 0bec15c63..6e1aa05dd 100644 --- a/app/src/androidTest/java/com/nononsenseapps/notepad/test/DBProviderTest.java +++ b/app/src/androidTest/java/com/nononsenseapps/notepad/test/DBProviderTest.java @@ -4,9 +4,8 @@ import java.util.Calendar; import java.util.List; -import com.nononsenseapps.notepad.database.DatabaseHandler; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.database.TaskList; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.data.model.sql.TaskList; import android.content.ContentResolver; import android.content.Context; @@ -15,10 +14,10 @@ import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.MediumTest; -import static com.nononsenseapps.notepad.database.DatabaseHandler.resetTestDatabase; -import static com.nononsenseapps.notepad.database.DatabaseHandler.setEmptyTestDatabase; -import static com.nononsenseapps.notepad.database.DatabaseHandler.setFreshTestDatabase; -import static com.nononsenseapps.notepad.database.DatabaseHandler.setTestDatabase; +import static com.nononsenseapps.notepad.data.local.sql.DatabaseHandler.resetTestDatabase; +import static com.nononsenseapps.notepad.data.local.sql.DatabaseHandler.setEmptyTestDatabase; +import static com.nononsenseapps.notepad.data.local.sql.DatabaseHandler.setFreshTestDatabase; +import static com.nononsenseapps.notepad.data.local.sql.DatabaseHandler.setTestDatabase; public class DBProviderTest extends AndroidTestCase { diff --git a/app/src/androidTest/java/com/nononsenseapps/notepad/test/DBUpgradeTest.java b/app/src/androidTest/java/com/nononsenseapps/notepad/test/DBUpgradeTest.java index 849d0a3de..c531ea91f 100644 --- a/app/src/androidTest/java/com/nononsenseapps/notepad/test/DBUpgradeTest.java +++ b/app/src/androidTest/java/com/nononsenseapps/notepad/test/DBUpgradeTest.java @@ -1,25 +1,19 @@ package com.nononsenseapps.notepad.test; -import java.io.File; +import com.nononsenseapps.notepad.data.local.sql.DatabaseHandler; +import com.nononsenseapps.notepad.data.local.sql.LegacyDBHelper; +import com.nononsenseapps.notepad.data.local.sql.LegacyDBHelper.NotePad; +import com.nononsenseapps.notepad.data.model.sql.Notification; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.data.model.sql.TaskList; -import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.DatabaseHandler; -import com.nononsenseapps.notepad.database.LegacyDBHelper; -import com.nononsenseapps.notepad.database.LegacyDBHelper.NotePad; -import com.nononsenseapps.notepad.database.Notification; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.database.TaskList; - -import android.annotation.SuppressLint; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.provider.BaseColumns; import android.test.AndroidTestCase; -import android.test.RenamingDelegatingContext; import android.test.suitebuilder.annotation.MediumTest; -import android.test.suitebuilder.annotation.SmallTest; public class DBUpgradeTest extends AndroidTestCase { static final String PREFIX = "dbupgrade_test_"; diff --git a/app/src/androidTest/java/com/nononsenseapps/notepad/test/DaoTaskTest.java b/app/src/androidTest/java/com/nononsenseapps/notepad/test/DaoTaskTest.java index cfb47ba4a..5865f4cd0 100644 --- a/app/src/androidTest/java/com/nononsenseapps/notepad/test/DaoTaskTest.java +++ b/app/src/androidTest/java/com/nononsenseapps/notepad/test/DaoTaskTest.java @@ -1,6 +1,6 @@ package com.nononsenseapps.notepad.test; -import com.nononsenseapps.notepad.database.Task; +import com.nononsenseapps.notepad.data.model.sql.Task; import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.MediumTest; diff --git a/app/src/androidTest/java/com/nononsenseapps/notepad/test/DashClockSettingsTest.java b/app/src/androidTest/java/com/nononsenseapps/notepad/test/DashClockSettingsTest.java index 67d11cdc2..ea29c6535 100644 --- a/app/src/androidTest/java/com/nononsenseapps/notepad/test/DashClockSettingsTest.java +++ b/app/src/androidTest/java/com/nononsenseapps/notepad/test/DashClockSettingsTest.java @@ -20,7 +20,7 @@ import android.test.ActivityInstrumentationTestCase2; import android.test.suitebuilder.annotation.SmallTest; -import com.nononsenseapps.notepad.dashclock.TasksSettings; +import com.nononsenseapps.notepad.ui.dashclock.TasksSettings; import com.squareup.spoon.Spoon; /** diff --git a/app/src/androidTest/java/com/nononsenseapps/notepad/test/FragmentTaskDetailTest.java b/app/src/androidTest/java/com/nononsenseapps/notepad/test/FragmentTaskDetailTest.java index 20f968c00..365e035e0 100644 --- a/app/src/androidTest/java/com/nononsenseapps/notepad/test/FragmentTaskDetailTest.java +++ b/app/src/androidTest/java/com/nononsenseapps/notepad/test/FragmentTaskDetailTest.java @@ -24,8 +24,8 @@ import android.test.suitebuilder.annotation.SmallTest; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.activities.ActivityEditor; -import com.nononsenseapps.notepad.database.Task; +import com.nononsenseapps.notepad.ui.editor.ActivityEditor; +import com.nononsenseapps.notepad.data.model.sql.Task; import com.squareup.spoon.Spoon; public class FragmentTaskDetailTest extends ActivityInstrumentationTestCase2 { diff --git a/app/src/androidTest/java/com/nononsenseapps/notepad/test/FragmentTaskListsTest.java b/app/src/androidTest/java/com/nononsenseapps/notepad/test/FragmentTaskListsTest.java index 6d12633ee..daa501077 100644 --- a/app/src/androidTest/java/com/nononsenseapps/notepad/test/FragmentTaskListsTest.java +++ b/app/src/androidTest/java/com/nononsenseapps/notepad/test/FragmentTaskListsTest.java @@ -22,10 +22,9 @@ import android.test.ActivityInstrumentationTestCase2; import android.test.suitebuilder.annotation.SmallTest; import android.view.View; -import android.widget.ListView; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.activities.ActivityList; +import com.nononsenseapps.notepad.ui.list.ActivityList; import com.squareup.spoon.Spoon; public class FragmentTaskListsTest extends ActivityInstrumentationTestCase2 { diff --git a/app/src/androidTest/java/com/nononsenseapps/notepad/test/GTaskSyncTest.java b/app/src/androidTest/java/com/nononsenseapps/notepad/test/GTaskSyncTest.java index e98479c34..00e3d5e4d 100644 --- a/app/src/androidTest/java/com/nononsenseapps/notepad/test/GTaskSyncTest.java +++ b/app/src/androidTest/java/com/nononsenseapps/notepad/test/GTaskSyncTest.java @@ -5,12 +5,11 @@ import java.util.HashMap; import java.util.List; -import com.nononsenseapps.notepad.database.DatabaseHandler; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.database.TaskList; -import com.nononsenseapps.notepad.sync.googleapi.GoogleTask; -import com.nononsenseapps.notepad.sync.googleapi.GoogleTaskList; -import com.nononsenseapps.notepad.sync.googleapi.GoogleTaskSync; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.data.model.sql.TaskList; +import com.nononsenseapps.notepad.data.model.gtasks.GoogleTask; +import com.nononsenseapps.notepad.data.model.gtasks.GoogleTaskList; +import com.nononsenseapps.notepad.data.remote.gtasks.GoogleTaskSync; import android.database.Cursor; import android.test.AndroidTestCase; @@ -18,10 +17,10 @@ import android.util.Log; import android.util.Pair; -import static com.nononsenseapps.notepad.database.DatabaseHandler.resetTestDatabase; -import static com.nononsenseapps.notepad.database.DatabaseHandler.setEmptyTestDatabase; -import static com.nononsenseapps.notepad.database.DatabaseHandler.setFreshTestDatabase; -import static com.nononsenseapps.notepad.database.DatabaseHandler.setTestDatabase; +import static com.nononsenseapps.notepad.data.local.sql.DatabaseHandler.resetTestDatabase; +import static com.nononsenseapps.notepad.data.local.sql.DatabaseHandler.setEmptyTestDatabase; +import static com.nononsenseapps.notepad.data.local.sql.DatabaseHandler.setFreshTestDatabase; +import static com.nononsenseapps.notepad.data.local.sql.DatabaseHandler.setTestDatabase; public class GTaskSyncTest extends AndroidTestCase { String balle = "balle"; diff --git a/app/src/androidTest/java/com/nononsenseapps/notepad/test/Helper.java b/app/src/androidTest/java/com/nononsenseapps/notepad/test/Helper.java deleted file mode 100644 index cce4355c0..000000000 --- a/app/src/androidTest/java/com/nononsenseapps/notepad/test/Helper.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.nononsenseapps.notepad.test; - -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.database.TaskList; - -import android.content.Context; -import android.database.Cursor; - -public class Helper { - - public static Task getATask(final Context context) { - Cursor c = context.getContentResolver().query(Task.URI, Task.Columns.FIELDS, null, null, null); - Task result = null; - if (c.moveToFirst()) - result = new Task(c); - return result; - } - - public static TaskList getATaskList(final Context context) { - Cursor c = context.getContentResolver().query(TaskList.URI, TaskList.Columns.FIELDS, null, null, null); - TaskList result = null; - if (c.moveToFirst()) - result = new TaskList(c); - return result; - } -} diff --git a/app/src/androidTest/java/com/nononsenseapps/notepad/test/OrgSyncTest.java b/app/src/androidTest/java/com/nononsenseapps/notepad/test/OrgSyncTest.java index 99ab5547a..815cc528b 100644 --- a/app/src/androidTest/java/com/nononsenseapps/notepad/test/OrgSyncTest.java +++ b/app/src/androidTest/java/com/nononsenseapps/notepad/test/OrgSyncTest.java @@ -6,12 +6,12 @@ import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.SmallTest; -import com.nononsenseapps.notepad.database.RemoteTask; -import com.nononsenseapps.notepad.database.RemoteTaskList; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.database.TaskList; -import com.nononsenseapps.notepad.sync.orgsync.OrgConverter; -import com.nononsenseapps.notepad.sync.orgsync.SDSynchronizer; +import com.nononsenseapps.notepad.data.model.sql.RemoteTask; +import com.nononsenseapps.notepad.data.model.sql.RemoteTaskList; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.data.model.sql.TaskList; +import com.nononsenseapps.notepad.data.local.orgmode.OrgConverter; +import com.nononsenseapps.notepad.data.local.orgmode.SDSynchronizer; import org.cowboyprogrammer.org.OrgFile; @@ -21,9 +21,9 @@ import java.util.ArrayList; import java.util.HashSet; -import static com.nononsenseapps.notepad.database.DatabaseHandler.resetTestDatabase; -import static com.nononsenseapps.notepad.database.DatabaseHandler.setEmptyTestDatabase; -import static com.nononsenseapps.notepad.database.DatabaseHandler.setTestDatabase; +import static com.nononsenseapps.notepad.data.local.sql.DatabaseHandler.resetTestDatabase; +import static com.nononsenseapps.notepad.data.local.sql.DatabaseHandler.setEmptyTestDatabase; +import static com.nononsenseapps.notepad.data.local.sql.DatabaseHandler.setTestDatabase; /** * Test the synchronizer code. diff --git a/app/src/androidTest/java/com/nononsenseapps/notepad/test/RFCDateTest.java b/app/src/androidTest/java/com/nononsenseapps/notepad/test/RFCDateTest.java index 50beab1e1..f41081271 100644 --- a/app/src/androidTest/java/com/nononsenseapps/notepad/test/RFCDateTest.java +++ b/app/src/androidTest/java/com/nononsenseapps/notepad/test/RFCDateTest.java @@ -1,14 +1,11 @@ package com.nononsenseapps.notepad.test; -import java.text.ParseException; import java.util.Calendar; -import java.util.Date; -import java.util.GregorianCalendar; import android.test.AndroidTestCase; import android.util.Log; -import com.nononsenseapps.utils.time.RFC3339Date; +import com.nononsenseapps.notepad.util.RFC3339Date; public class RFCDateTest extends AndroidTestCase { diff --git a/app/src/free/java/com/nononsenseapps/notepad/ActivityLocation.java b/app/src/free/java/com/nononsenseapps/notepad/ActivityLocation.java deleted file mode 100644 index 655b9f22d..000000000 --- a/app/src/free/java/com/nononsenseapps/notepad/ActivityLocation.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2015 Jonas Kalderstam. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nononsenseapps.notepad; - -/** - * Dummy implementation. See Play build flavor for actual class. - */ -public class ActivityLocation { - public static final String EXTRA_LATITUDE = "DUMMY"; - public static final String EXTRA_LONGITUDE = "DUMMY"; - public static final String EXTRA_RADIUS = "DUMMY"; - public static final String EXTRA_LOCATION_NAME = "DUMMY"; - public static final String EXTRA_ID = "DUMMY"; - - /** - * - * @return the class defined in the manifest. - */ - public static Class getAnnotatedActivityClass() { - return ActivityLocation.class; - } -} diff --git a/app/src/free/java/com/nononsenseapps/notepad/sync/orgsync/DropboxSyncHelper.java b/app/src/free/java/com/nononsenseapps/notepad/data/remote/orgmodedropbox/DropboxSyncHelper.java similarity index 94% rename from app/src/free/java/com/nononsenseapps/notepad/sync/orgsync/DropboxSyncHelper.java rename to app/src/free/java/com/nononsenseapps/notepad/data/remote/orgmodedropbox/DropboxSyncHelper.java index 9dfaab561..664dec239 100644 --- a/app/src/free/java/com/nononsenseapps/notepad/sync/orgsync/DropboxSyncHelper.java +++ b/app/src/free/java/com/nononsenseapps/notepad/data/remote/orgmodedropbox/DropboxSyncHelper.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.sync.orgsync; +package com.nononsenseapps.notepad.data.remote.orgmodedropbox; import android.content.Context; import android.support.annotation.NonNull; diff --git a/app/src/free/java/com/nononsenseapps/notepad/sync/orgsync/DropboxSynchronizer.java b/app/src/free/java/com/nononsenseapps/notepad/data/remote/orgmodedropbox/DropboxSynchronizer.java similarity index 92% rename from app/src/free/java/com/nononsenseapps/notepad/sync/orgsync/DropboxSynchronizer.java rename to app/src/free/java/com/nononsenseapps/notepad/data/remote/orgmodedropbox/DropboxSynchronizer.java index 6594681f4..4308d9cef 100644 --- a/app/src/free/java/com/nononsenseapps/notepad/sync/orgsync/DropboxSynchronizer.java +++ b/app/src/free/java/com/nononsenseapps/notepad/data/remote/orgmodedropbox/DropboxSynchronizer.java @@ -15,11 +15,14 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.sync.orgsync; +package com.nononsenseapps.notepad.data.remote.orgmodedropbox; import android.app.Activity; -import com.nononsenseapps.notepad.prefs.SyncPrefs; +import com.nononsenseapps.notepad.data.local.orgmode.Monitor; +import com.nononsenseapps.notepad.data.local.orgmode.SynchronizerInterface; +import com.nononsenseapps.notepad.data.service.OrgSyncService; +import com.nononsenseapps.notepad.ui.settings.SyncPrefs; import org.cowboyprogrammer.org.OrgFile; diff --git a/app/src/free/java/com/nononsenseapps/filepicker/DropboxFilePickerActivity.java b/app/src/free/java/com/nononsenseapps/notepad/ui/orgmodedropbox/DropboxFilePickerActivity.java similarity index 93% rename from app/src/free/java/com/nononsenseapps/filepicker/DropboxFilePickerActivity.java rename to app/src/free/java/com/nononsenseapps/notepad/ui/orgmodedropbox/DropboxFilePickerActivity.java index 956403bb9..6f0cb16ae 100644 --- a/app/src/free/java/com/nononsenseapps/filepicker/DropboxFilePickerActivity.java +++ b/app/src/free/java/com/nononsenseapps/notepad/ui/orgmodedropbox/DropboxFilePickerActivity.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.filepicker; +package com.nononsenseapps.notepad.ui.orgmodedropbox; /** * Dummy class. See Play build flavor for real one. diff --git a/app/src/free/java/com/nononsenseapps/util/GeofenceRemover.java b/app/src/free/java/com/nononsenseapps/util/GeofenceRemover.java deleted file mode 100644 index b1a1fdd17..000000000 --- a/app/src/free/java/com/nononsenseapps/util/GeofenceRemover.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2015 Jonas Kalderstam. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nononsenseapps.util; - -import android.content.Context; - -import java.util.ArrayList; - -/** - * Dummy class, see play build flavor for actual class - */ -public class GeofenceRemover { - public static void removeFences(Context context, ArrayList idsToClear) {} - public static void removeFences(Context context, String s) {} -} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index acc15e8ad..2c00f121e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -66,22 +66,15 @@ - - - - @@ -89,14 +82,13 @@ - @@ -127,13 +119,12 @@ - @@ -169,12 +160,12 @@ + android:value="com.nononsenseapps.notepad.ui.list.ActivityList"/> @@ -186,13 +177,13 @@ + android:value="com.nononsenseapps.notepad.ui.list.ActivityList"/> @@ -210,7 +201,7 @@ android:theme="@style/FilePickerTheme"/> @@ -223,7 +214,7 @@ - + @@ -234,7 +225,7 @@ @@ -248,7 +239,7 @@ @@ -257,7 +248,7 @@ @@ -278,7 +269,7 @@ @@ -298,7 +289,7 @@ - - - @@ -330,7 +315,7 @@ diff --git a/app/src/main/java/com/nononsenseapps/notepad/ActivityMain.java b/app/src/main/java/com/nononsenseapps/notepad/ActivityMain.java deleted file mode 100644 index b1fd662c0..000000000 --- a/app/src/main/java/com/nononsenseapps/notepad/ActivityMain.java +++ /dev/null @@ -1,1097 +0,0 @@ -/* - * Copyright (c) 2015 Jonas Kalderstam. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nononsenseapps.notepad; - -import android.annotation.SuppressLint; -import android.annotation.TargetApi; -import android.content.Intent; -import android.content.SharedPreferences; -import android.content.SharedPreferences.OnSharedPreferenceChangeListener; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageManager; -import android.content.res.Configuration; -import android.database.Cursor; -import android.net.Uri; -import android.os.Build; -import android.os.Bundle; -import android.preference.PreferenceManager; -import android.support.annotation.NonNull; -import android.support.design.widget.Snackbar; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentTransaction; -import android.support.v4.app.LoaderManager.LoaderCallbacks; -import android.support.v4.content.CursorLoader; -import android.support.v4.content.Loader; -import android.support.v4.view.GravityCompat; -import android.support.v4.widget.DrawerLayout; -import android.support.v7.app.ActionBar; -import android.support.v7.app.ActionBarDrawerToggle; -import android.support.v7.app.AppCompatActivity; -import android.util.Log; -import android.view.KeyEvent; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.inputmethod.InputMethodManager; -import android.widget.AdapterView; -import android.widget.AdapterView.OnItemClickListener; -import android.widget.AdapterView.OnItemLongClickListener; -import android.widget.ListView; -import android.widget.Toast; - -import com.nononsenseapps.helpers.ActivityHelper; -import com.nononsenseapps.helpers.NotificationHelper; -import com.nononsenseapps.notepad.database.LegacyDBHelper; -import com.nononsenseapps.notepad.database.LegacyDBHelper.NotePad; -import com.nononsenseapps.notepad.database.Notification; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.database.TaskList; -import com.nononsenseapps.notepad.fragments.DialogConfirmBase; -import com.nononsenseapps.notepad.fragments.DialogEditList.EditListDialogListener; -import com.nononsenseapps.notepad.fragments.DialogEditList_; -import com.nononsenseapps.notepad.fragments.TaskDetailFragment; -import com.nononsenseapps.notepad.fragments.TaskListFragment; -import com.nononsenseapps.notepad.fragments.TaskListViewPagerFragment; -import com.nononsenseapps.notepad.interfaces.MenuStateController; -import com.nononsenseapps.notepad.legacy.DonateMigrator; -import com.nononsenseapps.notepad.legacy.DonateMigrator_; -import com.nononsenseapps.notepad.prefs.MainPrefs; -import com.nononsenseapps.notepad.prefs.PrefsActivity; -import com.nononsenseapps.notepad.sync.orgsync.BackgroundSyncScheduler; -import com.nononsenseapps.notepad.sync.orgsync.OrgSyncService; -import com.nononsenseapps.ui.ExtraTypesCursorAdapter; - -import org.androidannotations.annotations.AfterViews; -import org.androidannotations.annotations.EActivity; -import org.androidannotations.annotations.InstanceState; -import org.androidannotations.annotations.SystemService; -import org.androidannotations.annotations.UiThread; -import org.androidannotations.annotations.UiThread.Propagation; -import org.androidannotations.annotations.ViewById; - -import java.util.ArrayList; -import java.util.List; - -@EActivity(resName = "activity_main") -public class ActivityMain extends AppCompatActivity implements TaskListFragment - .TaskListCallbacks, MenuStateController, OnSharedPreferenceChangeListener, - TaskDetailFragment.TaskEditorCallbacks { - - // Intent notification argument - public static final String NOTIFICATION_CANCEL_ARG = "notification_cancel_arg"; - public static final String NOTIFICATION_DELETE_ARG = "notification_delete_arg"; - // If donate version has been migrated - public static final String MIGRATED = "donate_inapp_or_oldversion"; - // Set to true in bundle if exits should be animated - public static final String ANIMATEEXIT = "animateexit"; - // Using tags for test - public static final String DETAILTAG = "detailfragment"; - public static final String LISTPAGERTAG = "listpagerfragment"; - protected boolean reverseAnimation = false; - @ViewById(resName = "leftDrawer") - ListView leftDrawer; - - DrawerLayout mDrawerLayout; - // Only present on tablets - @ViewById(resName = "fragment2") - View fragment2; - // Shown on tablets on start up. Hide on selection - @ViewById(resName = "taskHint") - View taskHint; - @SystemService - LayoutInflater layoutInflater; - @SystemService - InputMethodManager inputManager; - // private MenuItem mSyncMenuItem; - boolean mAnimateExit = false; - // Changes depending on what we're showing since the started activity can - // receive new intents - @InstanceState - boolean showingEditor = false; - boolean isDrawerClosed = true; - // WIll only be the viewpager fragment - ListOpener listOpener = null; - private ActionBarDrawerToggle mDrawerToggle; - // Only not if opening note directly - private boolean shouldAddToBackStack = true; - private Bundle state; - private boolean shouldRestart = false; - - private void setupNavDrawer() { - // Show icon - ActionBar ab = getSupportActionBar(); - if (ab != null) { - ab.setDisplayHomeAsUpEnabled(true); - ab.setHomeButtonEnabled(true); - } - - mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); - if (mDrawerLayout == null) { - return; - } - - /*if (selfItem == NAVDRAWER_ITEM_INVALID) { - // do not show a nav drawer - View navDrawer = mDrawerLayout.findViewById(R.id.navdrawer); - if (navDrawer != null) { - ((ViewGroup) navDrawer.getParent()).removeView(navDrawer); - } - mDrawerLayout = null; - return; - }*/ - - mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string - .navigation_drawer_open, R.string.navigation_drawer_close) { - @Override - public void onDrawerSlide(View drawerView, float slideOffset) { - super.onDrawerSlide(drawerView, slideOffset); - } - - @Override - public void onDrawerOpened(View drawerView) { - super.onDrawerOpened(drawerView); - isDrawerClosed = false; - //onNavDrawerStateChanged(true, false); - } - - @Override - public void onDrawerClosed(View drawerView) { - super.onDrawerClosed(drawerView); - isDrawerClosed = true; - // creates call to onPrepareOptionsMenu() - invalidateOptionsMenu(); - //onNavDrawerStateChanged(false, false); - } - - @Override - public void onDrawerStateChanged(int newState) { - super.onDrawerStateChanged(newState); - /*onNavDrawerStateChanged(isNavDrawerOpen(), newState != DrawerLayout - .STATE_IDLE);*/ - - if (DrawerLayout.STATE_IDLE != newState) { - getActionBar().setTitle(R.string.show_from_all_lists); - // Is in motion, hide action items - isDrawerClosed = false; - invalidateOptionsMenu(); // creates call to - // onPrepareOptionsMenu() - } - } - }; - - mDrawerToggle.syncState(); - - populateNavDrawer(); - - // Recycler view stuff - /*RecyclerView mRecyclerView = (RecyclerView) mDrawerLayout.findViewById(R.id - .navdrawer_list); - mRecyclerView.setHasFixedSize(true); - mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - - mNavAdapter = new FeedsAdapter(); - mRecyclerView.setAdapter(mNavAdapter); - - populateNavDrawer();*/ - } - - protected boolean isNavDrawerOpen() { - return mDrawerLayout != null && mDrawerLayout.isDrawerOpen(GravityCompat.START); - } - - // Subclasses can override to decide what happens on nav item selection - protected void onNavigationDrawerItemSelected(long id, String title, String url, String tag) { - // TODO add default start activity with arguments - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - super.onCreateOptionsMenu(menu); - getMenuInflater().inflate(R.menu.activity_main, menu); - - return true; - } - - @Override - public boolean onPrepareOptionsMenu(Menu menu) { - menu.setGroupVisible(R.id.activity_menu_group, isDrawerClosed); - menu.setGroupVisible(R.id.activity_reverse_menu_group, !isDrawerClosed); - - return super.onPrepareOptionsMenu(menu); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - // Pass the event to ActionBarDrawerToggle, if it returns - // true, then it has handled the app icon touch event - if (mDrawerToggle.onOptionsItemSelected(item)) { - return true; - } - // Handle your other action bar items... - int itemId = item.getItemId(); - if (itemId == android.R.id.home) { - if (showingEditor) { - // Only true in portrait mode - final View focusView = ActivityMain.this.getCurrentFocus(); - if (inputManager != null && focusView != null) { - inputManager.hideSoftInputFromWindow(focusView.getWindowToken(), - InputMethodManager.HIDE_NOT_ALWAYS); - } - - // Should load the same list again - // Try getting the list from the original intent - final long listId = getListId(getIntent()); - - final Intent intent = new Intent().setAction(Intent.ACTION_VIEW).setClass - (ActivityMain.this, ActivityMain_.class); - if (listId > 0) { - intent.setData(TaskList.getUri(listId)); - } - - // Set the intent before, so we set the correct - // action bar - setIntent(intent); - while (getSupportFragmentManager().popBackStackImmediate()) { - // Need to pop the entire stack and then load - } - - reverseAnimation = true; - Log.d("nononsenseapps fragment", "starting activity"); - - intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); - startActivity(intent); - } - // else - // Handled by drawer - return true; - } else if (itemId == R.id.drawer_menu_createlist) { - // Show fragment - DialogEditList_ dialog = DialogEditList_.getInstance(); - dialog.setListener(new EditListDialogListener() { - - @Override - public void onFinishEditDialog(long id) { - openList(id); - } - }); - dialog.show(getSupportFragmentManager(), "fragment_create_list"); - return true; - } else if (itemId == R.id.menu_preferences) { - Intent intent = new Intent(); - intent.setClass(this, PrefsActivity.class); - startActivity(intent); - return true; - } else if (itemId == R.id.menu_delete) { - return false; - } else { - return false; - } - } - - @Override - public void finish() { - super.finish(); - // Only animate when specified. Should be when it was animated "in" - if (mAnimateExit) { - overridePendingTransition(R.anim.activity_slide_in_right, R.anim - .activity_slide_out_right_full); - } - } - - /** - * Returns a list id from an intent if it contains one, either as part of - * its URI or as an extra - *

- * Returns -1 if no id was contained, this includes insert actions - */ - long getListId(final Intent intent) { - long retval = -1; - if (intent != null && - intent.getData() != null && - (Intent.ACTION_EDIT.equals(intent.getAction()) || - Intent.ACTION_VIEW.equals(intent.getAction()) || - Intent.ACTION_INSERT.equals(intent.getAction()))) { - if ((intent.getData().getPath().startsWith(NotePad.Lists.PATH_VISIBLE_LISTS) || - intent.getData().getPath().startsWith(NotePad.Lists.PATH_LISTS) || - intent.getData().getPath().startsWith(TaskList.URI.getPath()))) { - try { - retval = Long.parseLong(intent.getData().getLastPathSegment()); - } catch (NumberFormatException e) { - retval = -1; - } - } else if (-1 != intent.getLongExtra(LegacyDBHelper.NotePad.Notes.COLUMN_NAME_LIST, - -1)) { - retval = intent.getLongExtra(LegacyDBHelper.NotePad.Notes.COLUMN_NAME_LIST, -1); - } else if (-1 != intent.getLongExtra(TaskDetailFragment.ARG_ITEM_LIST_ID, -1)) { - retval = intent.getLongExtra(TaskDetailFragment.ARG_ITEM_LIST_ID, -1); - } else if (-1 != intent.getLongExtra(Task.Columns.DBLIST, -1)) { - retval = intent.getLongExtra(Task.Columns.DBLIST, -1); - } - } - return retval; - } - - /** - * Opens the specified list and closes the left drawer - */ - void openList(final long id) { - // Open list - Intent i = new Intent(ActivityMain.this, ActivityMain_.class); - i.setAction(Intent.ACTION_VIEW).setData(TaskList.getUri(id)).addFlags(Intent - .FLAG_ACTIVITY_SINGLE_TOP); - - // If editor is on screen, we need to reload fragments - if (listOpener == null) { - while (getSupportFragmentManager().popBackStackImmediate()) { - // Need to pop the entire stack and then load - } - reverseAnimation = true; - startActivity(i); - } else { - // If not popped, then send the call to the fragment - // directly - Log.d("nononsenseapps list", "calling listOpener"); - listOpener.openList(id); - } - - // And then close drawer - if (mDrawerLayout != null && leftDrawer != null) { - mDrawerLayout.closeDrawer(leftDrawer); - } - } - - @Override - public void onCreate(Bundle b) { - // Must do this before super.onCreate - ActivityHelper.readAndSetSettings(this); - super.onCreate(b); - - // First load, then don't add to backstack - shouldAddToBackStack = false; - - // To know if we should animate exits - if (getIntent() != null && getIntent().getBooleanExtra(ANIMATEEXIT, false)) { - mAnimateExit = true; - } - - // If user has donated some other time - final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); - - // To listen on fragment changes - // TODO probably remove this? - getSupportFragmentManager().addOnBackStackChangedListener(new FragmentManager - .OnBackStackChangedListener() { - public void onBackStackChanged() { - if (showingEditor && !isNoteIntent(getIntent())) { - setHomeAsDrawer(true); - } - // Always update menu - invalidateOptionsMenu(); - } - }); - - if (b != null) { - Log.d("nononsenseapps list", "Activity Saved not null: " + b); - this.state = b; - } - - // Clear possible notifications, schedule future ones - final Intent intent = getIntent(); - // Clear notification if present - clearNotification(intent); - // Schedule notifications - NotificationHelper.schedule(this); - // Schedule syncs - BackgroundSyncScheduler.scheduleSync(this); - } - - @Override - protected void onPostCreate(Bundle savedInstanceState) { - super.onPostCreate(savedInstanceState); - setupNavDrawer(); - } - - @Override - public void onConfigurationChanged(Configuration newConfig) { - super.onConfigurationChanged(newConfig); - if (mDrawerToggle != null) { - mDrawerToggle.onConfigurationChanged(newConfig); - } - } - - @Override - public void onDestroy() { - super.onDestroy(); - OrgSyncService.stop(this); - } - - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - if ((keyCode == KeyEvent.KEYCODE_BACK)) { - // Reset intent so we get proper fragment handling when the stack - // pops - if (getSupportFragmentManager().getBackStackEntryCount() <= 1) { - setIntent(new Intent(this, ActivityMain_.class)); - } - } - return super.onKeyDown(keyCode, event); - } - - @Override - public void onPause() { - super.onPause(); - // Pause sync monitors - OrgSyncService.pause(this); - } - - @Override - public void onNewIntent(Intent intent) { - setIntent(intent); - loadFragments(); - // Just to be sure it gets done - // Clear notification if present - clearNotification(intent); - } - - @Override - public void onResume() { - if (shouldRestart) { - restartAndRefresh(); - } - super.onResume(); - - // Sync if appropriate - } - - @Override - public void onSaveInstanceState(Bundle outState) { - // Do absolutely NOT call super class here. Will bug out the viewpager! - super.onSaveInstanceState(outState); - } - - private void restartAndRefresh() { - shouldRestart = false; - Intent intent = getIntent(); - overridePendingTransition(0, 0); - intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); - finish(); - overridePendingTransition(0, 0); - startActivity(intent); - } - - void isOldDonateVersionInstalled() { - final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences - (ActivityMain.this); - if (prefs.getBoolean(MIGRATED, false)) { - // already migrated - return; - } - try { - PackageManager pm = getPackageManager(); - List packages = pm.getInstalledApplications(0); - for (ApplicationInfo packageInfo : packages) { - if (packageInfo.packageName.equals("com.nononsenseapps.notepad_donate")) { - migrateDonateUser(); - // Don't migrate again - prefs.edit().putBoolean(MIGRATED, true).commit(); - // Stop loop - break; - } - } - } catch (Exception e) { - // Can't allow crashing - } - } - - @SuppressLint("ValidFragment") - @UiThread - void migrateDonateUser() { - // migrate user - if (!DonateMigrator.hasImported(this)) { - final DialogConfirmBase dialog = new DialogConfirmBase() { - - @Override - public int getTitle() { - return R.string.import_data_question; - } - - @Override - public int getMessage() { - return R.string.import_data_msg; - } - - @Override - public void onOKClick() { - startService(new Intent(ActivityMain.this, DonateMigrator_.class)); - } - }; - dialog.show(getSupportFragmentManager(), "migrate_question"); - } - } - - @UiThread(propagation = Propagation.REUSE) - void loadFragments() { - final Intent intent = getIntent(); - - // Mandatory - Fragment left = null; - String leftTag = null; - // Only if fragment2 is not null - Fragment right = null; - - if (this.state != null) { - this.state = null; - if (showingEditor && fragment2 != null) { - // Should only be true in portrait - showingEditor = false; - } - - // Find fragments - // This is an instance state variable - if (showingEditor) { - // Portrait, with editor, modify action bar - setHomeAsDrawer(false); - // Done - return; - } else { - // Find the listpager - left = getSupportFragmentManager().findFragmentByTag(LISTPAGERTAG); - listOpener = (ListOpener) left; - - if (left != null && fragment2 == null) { - // Done - return; - } else if (left != null && fragment2 != null) { - right = getSupportFragmentManager().findFragmentByTag(DETAILTAG); - } - - if (left != null && right != null) { - // Done - return; - } - } - } - - // Load stuff - final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); - if (reverseAnimation) { - reverseAnimation = false; - transaction.setCustomAnimations(R.anim.slide_in_bottom, R.anim.slide_out_top, R.anim - .slide_in_top, R.anim.slide_out_bottom); - } else { - transaction.setCustomAnimations(R.anim.slide_in_top, R.anim.slide_out_bottom, R.anim - .slide_in_bottom, R.anim.slide_out_top); - } - - /* - * If it contains a noteId, load an editor. If also tablet, load the - * lists. - */ - /*if (fragment2 != null) { - if (right == null) { - if (getNoteId(intent) > 0) { - right = TaskDetailFragment_.getInstance(getNoteId(intent)); - } else if (isNoteIntent(intent)) { - right = TaskDetailFragment_.getInstance(getNoteShareText(intent), - TaskListViewPagerFragment.getAShowList(this, getListId(intent))); - } - } - } else if (isNoteIntent(intent)) { - showingEditor = true; - listOpener = null; - leftTag = DETAILTAG; - if (getNoteId(intent) > 0) { - left = TaskDetailFragment_.getInstance(getNoteId(intent)); - } else { - // Get a share text (null safe) - // In a list (if specified, or default otherwise) - left = TaskDetailFragment_.getInstance(getNoteShareText(intent), - TaskListViewPagerFragment.getARealList(this, getListId(intent))); - } - // fucking stack - while (getSupportFragmentManager().popBackStackImmediate()) { - // Need to pop the entire stack and then load - } - if (shouldAddToBackStack) { - transaction.addToBackStack(null); - } - - setHomeAsDrawer(false); - }*/ - /* - * Other case, is a list id or a tablet - */ - if (!isNoteIntent(intent) || fragment2 != null) { - // If we're no longer in the editor, reset the action bar - if (fragment2 == null) { - setHomeAsDrawer(true); - } - // TODO - showingEditor = false; - - left = TaskListViewPagerFragment.getInstance(getListIdToShow(intent)); - leftTag = LISTPAGERTAG; - listOpener = (ListOpener) left; - } - - if (fragment2 != null && right != null) { - transaction.replace(R.id.fragment2, right, DETAILTAG); - taskHint.setVisibility(View.GONE); - } - transaction.replace(R.id.fragment1, left, leftTag); - - // Commit transaction - // Allow state loss as workaround for bug - // https://code.google.com/p/android/issues/detail?id=19917 - transaction.commitAllowingStateLoss(); - // Next go, always add - shouldAddToBackStack = true; - } - - /** - * Returns a note id from an intent if it contains one, either as part of - * its URI or as an extra - *

- * Returns -1 if no id was contained, this includes insert actions - */ - long getNoteId(final Intent intent) { - long retval = -1; - if (intent != null && - intent.getData() != null && - (Intent.ACTION_EDIT.equals(intent.getAction()) || Intent.ACTION_VIEW.equals - (intent.getAction()))) { - if (intent.getData().getPath().startsWith(TaskList.URI.getPath())) { - // Find it in the extras. See DashClock extension for an example - retval = intent.getLongExtra(Task.TABLE_NAME, -1); - } else if ((intent.getData().getPath().startsWith(LegacyDBHelper.NotePad.Notes - .PATH_VISIBLE_NOTES) || - intent.getData().getPath().startsWith(LegacyDBHelper.NotePad.Notes - .PATH_NOTES) || - intent.getData().getPath().startsWith(Task.URI.getPath()))) { - retval = Long.parseLong(intent.getData().getLastPathSegment()); - } - // else if (null != intent - // .getStringExtra(TaskDetailFragment.ARG_ITEM_ID)) { - // retval = Long.parseLong(intent - // .getStringExtra(TaskDetailFragment.ARG_ITEM_ID)); - // } - } - return retval; - } - - /** - * Returns the text that has been shared with the app. Does not check - * anything other than EXTRA_SUBJECT AND EXTRA_TEXT - *

- * If it is a Google Now intent, will ignore the subject which is - * "Note to self" - */ - String getNoteShareText(final Intent intent) { - if (intent == null || intent.getExtras() == null) { - return ""; - } - - StringBuilder retval = new StringBuilder(); - // possible title - if (intent.getExtras().containsKey(Intent.EXTRA_SUBJECT) && !("com.google.android.gm" + "" + - ".action.AUTO_SEND").equals(intent.getAction())) { - retval.append(intent.getExtras().get(Intent.EXTRA_SUBJECT)); - } - // possible note - if (intent.getExtras().containsKey(Intent.EXTRA_TEXT)) { - if (retval.length() > 0) { - retval.append("\n"); - } - retval.append(intent.getExtras().get(Intent.EXTRA_TEXT)); - } - return retval.toString(); - } - - /** - * If intent contains a list_id, returns that. Else, checks preferences for - * default list setting. Else, -1. - */ - long getListIdToShow(final Intent intent) { - long result = getListId(intent); - return TaskListViewPagerFragment.getAShowList(this, result); - } - - /** - * Returns true the intent URI targets a note. Either an edit/view or - * insert. - */ - boolean isNoteIntent(final Intent intent) { - if (intent == null) { - return false; - } - if (Intent.ACTION_SEND.equals(intent.getAction()) || ("com.google.android.gm.action" + "" + - ".AUTO_SEND").equals(intent.getAction())) { - return true; - } - - return intent.getData() != null && - (Intent.ACTION_EDIT.equals(intent.getAction()) || - Intent.ACTION_VIEW.equals(intent.getAction()) || - Intent.ACTION_INSERT.equals(intent.getAction())) && - (intent.getData().getPath().startsWith(NotePad.Notes.PATH_VISIBLE_NOTES) || - intent.getData().getPath().startsWith(NotePad.Notes.PATH_NOTES) || - intent.getData().getPath().startsWith(Task.URI.getPath())) && - !intent.getData().getPath().startsWith(TaskList.URI.getPath()); - - } - - void setHomeAsDrawer(final boolean value) { - mDrawerToggle.setDrawerIndicatorEnabled(value); - } - - private void clearNotification(final Intent intent) { - if (intent != null && intent.getLongExtra(NOTIFICATION_DELETE_ARG, -1) > 0) { - Notification.deleteOrReschedule(this, Notification.getUri(intent.getLongExtra - (NOTIFICATION_DELETE_ARG, -1))); - } - if (intent != null && intent.getLongExtra(NOTIFICATION_CANCEL_ARG, -1) > 0) { - NotificationHelper.cancelNotification(this, (int) intent.getLongExtra - (NOTIFICATION_CANCEL_ARG, -1)); - } - - } - - /** - * Loads the appropriate fragments depending on state and intent. - */ - @AfterViews - protected void loadContent() { - loadFragments(); - } - - /** - * Load a list of lists in the left - */ - protected void populateNavDrawer() { - // Use extra items for All Lists - final int[] extraIds = new int[]{-1, TaskListFragment.LIST_ID_OVERDUE, TaskListFragment - .LIST_ID_TODAY, TaskListFragment.LIST_ID_WEEK, -1}; - // This is fine for initial conditions - final int[] extraStrings = new int[]{R.string.tasks, R.string.date_header_overdue, R - .string.date_header_today, R.string.next_5_days, R.string.lists}; - // Use this for real data - final ArrayList> extraData = new ArrayList>(); - // Task header - extraData.add(new ArrayList()); - extraData.get(0).add(R.string.tasks); - // Overdue - extraData.add(new ArrayList()); - extraData.get(1).add(R.string.date_header_overdue); - // Today - extraData.add(new ArrayList()); - extraData.get(2).add(R.string.date_header_today); - // Week - extraData.add(new ArrayList()); - extraData.get(3).add(R.string.next_5_days); - // Lists header - extraData.add(new ArrayList()); - extraData.get(4).add(R.string.lists); - - final int[] extraTypes = new int[]{1, 0, 0, 0, 1}; - - final ExtraTypesCursorAdapter adapter = new ExtraTypesCursorAdapter(this, R.layout - .simple_light_list_item_2, null, new String[]{TaskList.Columns.TITLE, TaskList - .Columns.VIEW_COUNT}, new int[]{android.R.id.text1, android.R.id.text2}, - // id -1 for headers, ignore clicks on them - extraIds, extraStrings, extraTypes, new int[]{R.layout.drawer_header}); - adapter.setExtraData(extraData); - - // Load count of tasks in each one - Log.d("nononsenseapps drawer", TaskList.CREATE_COUNT_VIEW); - - // Adapter for list titles and ids - // final SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, - // R.layout.simple_light_list_item_1, null, - // new String[] { TaskList.Columns.TITLE }, - // new int[] { android.R.id.text1 }, 0); - leftDrawer.setAdapter(adapter); - // Todo update what happens on click here - // Set click handler - leftDrawer.setOnItemClickListener(new OnItemClickListener() { - @Override - public void onItemClick(AdapterView arg0, View v, int pos, long id) { - if (id < -1) { - // Set preference which type was chosen - PreferenceManager.getDefaultSharedPreferences(ActivityMain.this).edit() - .putLong(TaskListFragment.LIST_ALL_ID_PREF_KEY, id).commit(); - } - openList(id); - } - }); - leftDrawer.setOnItemLongClickListener(new OnItemLongClickListener() { - - @Override - public boolean onItemLongClick(AdapterView arg0, View arg1, int pos, long id) { - // Open dialog to edit list - if (id > 0) { - DialogEditList_ dialog = DialogEditList_.getInstance(id); - dialog.show(getSupportFragmentManager(), "fragment_edit_list"); - return true; - } else if (id < -1) { - // Set as "default" - PreferenceManager.getDefaultSharedPreferences(ActivityMain.this).edit() - .putLong(getString(R.string.pref_defaultstartlist), id).putLong - (TaskListFragment.LIST_ALL_ID_PREF_KEY, id).commit(); - Toast.makeText(ActivityMain.this, R.string.new_default_set, Toast - .LENGTH_SHORT).show(); - // openList(id); - return true; - } else { - return false; - } - } - }); - // Define the callback handler - final LoaderCallbacks callbacks = new LoaderCallbacks() { - - final String[] COUNTROWS = new String[]{"COUNT(1)"}; - final String NOTCOMPLETED = Task.Columns.COMPLETED + " IS NULL "; - - @Override - public Loader onCreateLoader(int id, Bundle arg1) { - // Normal lists - switch (id) { - case TaskListFragment.LIST_ID_OVERDUE: - return new CursorLoader(ActivityMain.this, Task.URI, COUNTROWS, - NOTCOMPLETED + TaskListFragment.andWhereOverdue(), null, null); - case TaskListFragment.LIST_ID_TODAY: - return new CursorLoader(ActivityMain.this, Task.URI, COUNTROWS, - NOTCOMPLETED + TaskListFragment.andWhereToday(), null, null); - case TaskListFragment.LIST_ID_WEEK: - return new CursorLoader(ActivityMain.this, Task.URI, COUNTROWS, - NOTCOMPLETED + TaskListFragment.andWhereWeek(), null, null); - case 0: - default: - return new CursorLoader(ActivityMain.this, TaskList.URI_WITH_COUNT, new - String[]{TaskList.Columns._ID, TaskList.Columns.TITLE, TaskList - .Columns.VIEW_COUNT}, null, null, getResources().getString(R - .string.const_as_alphabetic, TaskList.Columns.TITLE)); - } - } - - @Override - public void onLoadFinished(Loader l, Cursor c) { - switch (l.getId()) { - case TaskListFragment.LIST_ID_OVERDUE: - if (c.moveToFirst()) { - updateExtra(1, c.getInt(0)); - } - break; - case TaskListFragment.LIST_ID_TODAY: - if (c.moveToFirst()) { - updateExtra(2, c.getInt(0)); - } - break; - case TaskListFragment.LIST_ID_WEEK: - if (c.moveToFirst()) { - updateExtra(3, c.getInt(0)); - } - break; - case 0: - default: - adapter.swapCursor(c); - } - } - - @Override - public void onLoaderReset(Loader l) { - switch (l.getId()) { - case TaskListFragment.LIST_ID_OVERDUE: - case TaskListFragment.LIST_ID_TODAY: - case TaskListFragment.LIST_ID_WEEK: - break; - case 0: - default: - adapter.swapCursor(null); - } - } - - private void updateExtra(final int pos, final int count) { - while (extraData.get(pos).size() < 2) { - // To avoid crashes - extraData.get(pos).add("0"); - } - extraData.get(pos).set(1, Integer.toString(count)); - adapter.notifyDataSetChanged(); - } - }; - - // Load actual data - getSupportLoaderManager().restartLoader(0, null, callbacks); - // special views - getSupportLoaderManager().restartLoader(TaskListFragment.LIST_ID_OVERDUE, null, callbacks); - getSupportLoaderManager().restartLoader(TaskListFragment.LIST_ID_TODAY, null, callbacks); - getSupportLoaderManager().restartLoader(TaskListFragment.LIST_ID_WEEK, null, callbacks); - } - - @TargetApi(Build.VERSION_CODES.JELLY_BEAN) - @Override - public void openTask(final Uri taskUri, final long listId, final View origin) { - final Intent intent = new Intent().setAction(Intent.ACTION_EDIT).setClass(this, - ActivityMain_.class).setData(taskUri).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP) - .putExtra(TaskDetailFragment.ARG_ITEM_LIST_ID, listId); - // User clicked a task in the list - // tablet - /*if (fragment2 != null) { - // Set the intent here also so rotations open the same item - setIntent(intent); - getSupportFragmentManager().beginTransaction().setCustomAnimations(R.anim - .slide_in_top, R.anim.slide_out_bottom).replace(R.id.fragment2, - TaskDetailFragment_.getInstance(taskUri)).commitAllowingStateLoss(); - taskHint.setVisibility(View.GONE); - } - // phone - else { - - // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN - // && origin != null) { - // Log.d("nononsenseapps animation", "Animating"); - // //intent.putExtra(ANIMATEEXIT, true); - // startActivity( - // intent, - // ActivityOptions.makeCustomAnimation(this, - // R.anim.activity_slide_in_left, - // R.anim.activity_slide_out_left).toBundle()); - - // } - // else { - startActivity(intent); - // } - }*/ - } - - @Override - public void deleteTasksWithUndo(Snackbar.Callback dismissCallback, View.OnClickListener listener, Task... tasks) { - - } - - public void addTaskInList(final String text, final long listId) { - if (listId < 1) { - // Cant add to invalid lists - return; - } - final Intent intent = new Intent().setAction(Intent.ACTION_INSERT).setClass(this, - ActivityMain_.class).setData(Task.URI).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP) - .putExtra(TaskDetailFragment.ARG_ITEM_LIST_ID, listId); - /*if (fragment2 != null) { - // Set intent to preserve state when rotating - setIntent(intent); - // Replace editor fragment - getSupportFragmentManager().beginTransaction().setCustomAnimations(R.anim - .slide_in_top, R.anim.slide_out_bottom).replace(R.id.fragment2, - TaskDetailFragment_.getInstance(text, listId)).commitAllowingStateLoss(); - taskHint.setVisibility(View.GONE); - } else { - // Open an activity - - // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { - // Log.d("nononsenseapps animation", "Animating"); - // intent.putExtra(ANIMATEEXIT, true); - // startActivity( - // intent, - // ActivityOptions.makeCustomAnimation(this, - // R.anim.activity_slide_in_left, - // R.anim.activity_slide_out_left).toBundle()); - // } - // else { - startActivity(intent); - // } - }*/ - } - - private void simulateBack() { - if (getSupportFragmentManager().getBackStackEntryCount() <= 1) { - setIntent(new Intent(this, ActivityMain_.class)); - } - - if (!getSupportFragmentManager().popBackStackImmediate()) { - finish(); - // Intent i = new Intent(this, ActivityMain_.class); - // i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); - // startActivity(i); - } - } - - /** - * Only call this when pressing the up-navigation. Makes sure the new - * activity comes in on top of this one. - */ - void finishSlideTop() { - super.finish(); - overridePendingTransition(R.anim.activity_slide_in_right_full, R.anim - .activity_slide_out_right); - } - - @Override - public boolean childItemsVisible() { - return isDrawerClosed; - } - - @Override - public void onSharedPreferenceChanged(final SharedPreferences prefs, final String key) { - if (key.equals(MainPrefs.KEY_THEME) || key.equals(getString(R.string - .const_preference_locale_key))) { - shouldRestart = true; - } else if (key.startsWith("pref_restart")) { - shouldRestart = true; - } - } - - @Override - public long getEditorTaskId() { - return -1; - } - - @Override - public long getListOfTask() { - return 0; - } - - @Override - public void closeEditor(Fragment fragment) { - if (fragment2 != null) { - getSupportFragmentManager().beginTransaction().setCustomAnimations(R.anim - .slide_in_top, R.anim.slide_out_bottom).remove(fragment) - .commitAllowingStateLoss(); - taskHint.setAlpha(0f); - taskHint.setVisibility(View.VISIBLE); - taskHint.animate().alpha(1f).setStartDelay(500); - } else { - // Phone case, simulate back button - // finish(); - simulateBack(); - } - } - - @NonNull - @Override - public String getInitialTaskText() { - return null; - } - - public interface ListOpener { - void openList(final long id); - } -} diff --git a/app/src/main/java/com/nononsenseapps/notepad/ActivitySearch.java b/app/src/main/java/com/nononsenseapps/notepad/ActivitySearch.java deleted file mode 100644 index 9dc5bfcde..000000000 --- a/app/src/main/java/com/nononsenseapps/notepad/ActivitySearch.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (c) 2015 Jonas Kalderstam. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nononsenseapps.notepad; - -import org.androidannotations.annotations.AfterViews; -import org.androidannotations.annotations.EActivity; -import com.nononsenseapps.helpers.ActivityHelper; -import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.fragments.FragmentSearch; - -import android.app.ActionBar; -import android.app.SearchManager; -import android.content.Intent; -import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentActivity; -import android.view.MenuItem; - -@EActivity(resName="fullscreen_fragment") -public class ActivitySearch extends FragmentActivity { - - protected String mQuery = ""; - - @Override - public void onCreate(Bundle savedInstanceState) { - // Must do this before super.onCreate - ActivityHelper.readAndSetSettings(this); - super.onCreate(savedInstanceState); - - final ActionBar actionBar = getActionBar(); - actionBar.setDisplayShowTitleEnabled(true); - actionBar.setDisplayHomeAsUpEnabled(true); - - handleIntent(getIntent()); - } - - /** - * To allow child classes to override content - */ - protected Fragment getFragment() { - return FragmentSearch.getInstance(mQuery); - } - - @AfterViews - void loadContent() { - getSupportFragmentManager() - .beginTransaction() - .add(R.id.fragmentPlaceHolder, - getFragment()).commit(); - } - - @Override - protected void onNewIntent(Intent intent) { - setIntent(intent); - handleIntent(intent); - } - - void handleIntent(Intent intent) { - if (intent == null) return; - - if (Intent.ACTION_SEARCH.equals(intent.getAction())) { - mQuery = intent.getStringExtra(SearchManager.QUERY); - } - else if (Intent.ACTION_VIEW.equals(intent.getAction())) { - intent.setClass(getApplicationContext(), ActivityMain_.class); - startActivity(intent); - finish(); - } - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - finish(); - return true; - default: - return false; - } - } -} diff --git a/app/src/main/java/com/nononsenseapps/notepad/ActivitySearchDeleted.java b/app/src/main/java/com/nononsenseapps/notepad/ActivitySearchDeleted.java deleted file mode 100644 index 357c65735..000000000 --- a/app/src/main/java/com/nononsenseapps/notepad/ActivitySearchDeleted.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2015 Jonas Kalderstam. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nononsenseapps.notepad; - -import android.support.v4.app.Fragment; - -import org.androidannotations.annotations.AfterViews; -import org.androidannotations.annotations.EActivity; -import com.nononsenseapps.notepad.fragments.FragmentSearch; -import com.nononsenseapps.notepad.fragments.FragmentSearchDeleted_; - -@EActivity(resName="fullscreen_fragment") -public class ActivitySearchDeleted extends ActivitySearch { - - @Override - protected Fragment getFragment() { - return new FragmentSearchDeleted_(); - } -} diff --git a/app/src/main/java/com/nononsenseapps/notepad/BackupAgent.java b/app/src/main/java/com/nononsenseapps/notepad/BackupAgent.java deleted file mode 100644 index 120cf8ab3..000000000 --- a/app/src/main/java/com/nononsenseapps/notepad/BackupAgent.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2015 Jonas Kalderstam. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nononsenseapps.notepad; - -import com.nononsenseapps.notepad.prefs.SyncPrefs; -import com.nononsenseapps.notepad.sync.googleapi.GoogleTaskSync; - -import android.app.backup.BackupAgentHelper; -import android.app.backup.BackupDataInputStream; -import android.app.backup.SharedPreferencesBackupHelper; -import android.content.Context; -import android.preference.PreferenceManager; - -/** - * Backs up the user's preferences - */ -public class BackupAgent extends BackupAgentHelper { - private static final String PREFS_BACKUP_KEY = "prefs"; - - // Allocate a helper and add it to the backup agent - @Override - public void onCreate() { - // Compute the default preferences filename. - String defaultPrefsFilename = getPackageName() + "_preferences"; - addHelper(PREFS_BACKUP_KEY, new PrefBackupHelper(this, - defaultPrefsFilename)); - } - - public static class PrefBackupHelper extends SharedPreferencesBackupHelper { - - final Context mContext; - - public PrefBackupHelper(Context context, String... prefGroups) { - super(context, prefGroups); - mContext = context; - } - - /** - * Restore as usual, but when complete, delete information about sync - * times! - */ - @Override - public void restoreEntity(BackupDataInputStream data) { - super.restoreEntity(data); - PreferenceManager.getDefaultSharedPreferences(mContext).edit() - .remove(GoogleTaskSync.PREFS_GTASK_LAST_SYNC_TIME) - .remove(SyncPrefs.KEY_LAST_SYNC).commit(); - } - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/nononsenseapps/helpers/UpdateNotifier.java b/app/src/main/java/com/nononsenseapps/notepad/data/local/UpdateNotifier.java similarity index 89% rename from app/src/main/java/com/nononsenseapps/helpers/UpdateNotifier.java rename to app/src/main/java/com/nononsenseapps/notepad/data/local/UpdateNotifier.java index 4f39af32d..a389d43f8 100644 --- a/app/src/main/java/com/nononsenseapps/helpers/UpdateNotifier.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/local/UpdateNotifier.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.helpers; +package com.nononsenseapps.notepad.data.local; import android.appwidget.AppWidgetManager; import android.content.ComponentName; @@ -23,12 +23,12 @@ import android.net.Uri; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.Notification; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.database.TaskList; -import com.nononsenseapps.notepad.widget.ListWidgetProvider; -import com.nononsenseapps.notepad.widget.WidgetPrefs; -import com.nononsenseapps.util.SyncGtaskHelper; +import com.nononsenseapps.notepad.data.model.sql.Notification; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.data.model.sql.TaskList; +import com.nononsenseapps.notepad.ui.widget.ListWidgetProvider; +import com.nononsenseapps.notepad.ui.widget.WidgetPrefs; +import com.nononsenseapps.notepad.util.SyncGtaskHelper; /** * The purpose here is to make it easy for other classes to notify that diff --git a/app/src/main/java/com/nononsenseapps/notepad/sync/files/JSONBackup.java b/app/src/main/java/com/nononsenseapps/notepad/data/local/json/JSONBackup.java similarity index 96% rename from app/src/main/java/com/nononsenseapps/notepad/sync/files/JSONBackup.java rename to app/src/main/java/com/nononsenseapps/notepad/data/local/json/JSONBackup.java index e58658e84..a18a980b3 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/sync/files/JSONBackup.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/local/json/JSONBackup.java @@ -15,7 +15,24 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.sync.files; +package com.nononsenseapps.notepad.data.local.json; + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.os.Environment; +import android.util.Log; + +import com.nononsenseapps.notepad.data.model.sql.Notification; +import com.nononsenseapps.notepad.data.model.sql.RemoteTask; +import com.nononsenseapps.notepad.data.model.sql.RemoteTaskList; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.data.model.sql.TaskList; +import com.nononsenseapps.notepad.data.receiver.NotificationHelper; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; import java.io.BufferedReader; import java.io.File; @@ -26,23 +43,6 @@ import java.util.ArrayList; import java.util.List; -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; - -import android.content.ContentValues; -import android.content.Context; -import android.database.Cursor; -import android.os.Environment; -import android.util.Log; - -import com.nononsenseapps.helpers.NotificationHelper; -import com.nononsenseapps.notepad.database.Notification; -import com.nononsenseapps.notepad.database.RemoteTask; -import com.nononsenseapps.notepad.database.RemoteTaskList; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.database.TaskList; - public class JSONBackup { public static final String DEFAULT_BACKUP_DIR = Environment .getExternalStorageDirectory().toString() + "/NoNonsenseNotes"; diff --git a/app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/DBSyncBase.java b/app/src/main/java/com/nononsenseapps/notepad/data/local/orgmode/DBSyncBase.java similarity index 98% rename from app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/DBSyncBase.java rename to app/src/main/java/com/nononsenseapps/notepad/data/local/orgmode/DBSyncBase.java index 3f3b49816..701931388 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/DBSyncBase.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/local/orgmode/DBSyncBase.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.sync.orgsync; +package com.nononsenseapps.notepad.data.local.orgmode; import android.content.ContentResolver; import android.content.Context; @@ -23,10 +23,10 @@ import android.util.Log; import android.util.Pair; -import com.nononsenseapps.notepad.database.RemoteTask; -import com.nononsenseapps.notepad.database.RemoteTaskList; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.database.TaskList; +import com.nononsenseapps.notepad.data.model.sql.RemoteTask; +import com.nononsenseapps.notepad.data.model.sql.RemoteTaskList; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.data.model.sql.TaskList; import org.cowboyprogrammer.org.parser.OrgParser; import org.cowboyprogrammer.org.parser.RegexParser; diff --git a/app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/Monitor.java b/app/src/main/java/com/nononsenseapps/notepad/data/local/orgmode/Monitor.java similarity index 83% rename from app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/Monitor.java rename to app/src/main/java/com/nononsenseapps/notepad/data/local/orgmode/Monitor.java index 745f238d7..1d79fd5d9 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/Monitor.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/local/orgmode/Monitor.java @@ -15,7 +15,9 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.sync.orgsync; +package com.nononsenseapps.notepad.data.local.orgmode; + +import com.nononsenseapps.notepad.data.service.OrgSyncService; /** * An interface which defines a "Monitor". A monitor is an object which @@ -27,15 +29,15 @@ public interface Monitor { * Start monitoring. Call handler on changes. * @param handler */ - public void startMonitor(final OrgSyncService.SyncHandler handler); + void startMonitor(final OrgSyncService.SyncHandler handler); /** * Pausing, it might be restarted later. */ - public void pauseMonitor(); + void pauseMonitor(); /** * Service is destroying itself. Remove any references. */ - public void terminate(); + void terminate(); } diff --git a/app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/OrgConverter.java b/app/src/main/java/com/nononsenseapps/notepad/data/local/orgmode/OrgConverter.java similarity index 94% rename from app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/OrgConverter.java rename to app/src/main/java/com/nononsenseapps/notepad/data/local/orgmode/OrgConverter.java index 99a368193..8afad0bb9 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/OrgConverter.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/local/orgmode/OrgConverter.java @@ -15,15 +15,17 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.sync.orgsync; +package com.nononsenseapps.notepad.data.local.orgmode; import android.annotation.SuppressLint; -import com.nononsenseapps.notepad.database.Notification; -import com.nononsenseapps.notepad.database.RemoteTask; -import com.nononsenseapps.notepad.database.RemoteTaskList; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.database.TaskList; +import com.nononsenseapps.notepad.data.model.orgmode.RemoteTaskListFile; +import com.nononsenseapps.notepad.data.model.orgmode.RemoteTaskNode; +import com.nononsenseapps.notepad.data.model.sql.Notification; +import com.nononsenseapps.notepad.data.model.sql.RemoteTask; +import com.nononsenseapps.notepad.data.model.sql.RemoteTaskList; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.data.model.sql.TaskList; import org.cowboyprogrammer.org.OrgFile; import org.cowboyprogrammer.org.OrgNode; diff --git a/app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/SDSynchronizer.java b/app/src/main/java/com/nononsenseapps/notepad/data/local/orgmode/SDSynchronizer.java similarity index 97% rename from app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/SDSynchronizer.java rename to app/src/main/java/com/nononsenseapps/notepad/data/local/orgmode/SDSynchronizer.java index 35a8b61e5..b39f95967 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/SDSynchronizer.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/local/orgmode/SDSynchronizer.java @@ -15,15 +15,16 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.sync.orgsync; +package com.nononsenseapps.notepad.data.local.orgmode; import android.annotation.SuppressLint; import android.content.Context; import android.os.Environment; import android.os.FileObserver; -import com.nononsenseapps.util.PermissionsHelper; -import com.nononsenseapps.util.SharedPreferencesHelper; +import com.nononsenseapps.notepad.data.service.OrgSyncService; +import com.nononsenseapps.notepad.util.PermissionsHelper; +import com.nononsenseapps.notepad.util.SharedPreferencesHelper; import org.cowboyprogrammer.org.OrgFile; import org.cowboyprogrammer.org.parser.OrgParser; diff --git a/app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/Synchronizer.java b/app/src/main/java/com/nononsenseapps/notepad/data/local/orgmode/Synchronizer.java similarity index 96% rename from app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/Synchronizer.java rename to app/src/main/java/com/nononsenseapps/notepad/data/local/orgmode/Synchronizer.java index d83119ae5..bcf9b85ec 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/Synchronizer.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/local/orgmode/Synchronizer.java @@ -15,15 +15,17 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.sync.orgsync; +package com.nononsenseapps.notepad.data.local.orgmode; import android.content.Context; import android.util.Pair; -import com.nononsenseapps.notepad.database.RemoteTask; -import com.nononsenseapps.notepad.database.RemoteTaskList; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.database.TaskList; +import com.nononsenseapps.notepad.data.model.orgmode.RemoteTaskListFile; +import com.nononsenseapps.notepad.data.model.orgmode.RemoteTaskNode; +import com.nononsenseapps.notepad.data.model.sql.RemoteTask; +import com.nononsenseapps.notepad.data.model.sql.RemoteTaskList; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.data.model.sql.TaskList; import org.cowboyprogrammer.org.OrgFile; import org.cowboyprogrammer.org.OrgNode; diff --git a/app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/SynchronizerInterface.java b/app/src/main/java/com/nononsenseapps/notepad/data/local/orgmode/SynchronizerInterface.java similarity index 79% rename from app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/SynchronizerInterface.java rename to app/src/main/java/com/nononsenseapps/notepad/data/local/orgmode/SynchronizerInterface.java index 1c7764ddc..37a92dd8e 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/SynchronizerInterface.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/local/orgmode/SynchronizerInterface.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.sync.orgsync; +package com.nononsenseapps.notepad.data.local.orgmode; import org.cowboyprogrammer.org.OrgFile; @@ -35,20 +35,20 @@ public interface SynchronizerInterface { * @return A unique name for this service. Should be descriptive, like * DropboxOrg, SDOrg or SSHOrg. */ - public String getServiceName(); + String getServiceName(); /** * * @return The username of the configured service. Likely an e-mail. */ - public String getAccountName(); + String getAccountName(); /** * Returns true if the synchronizer has been configured. This is called * before synchronization. It will be true if the user has selected an * account, folder etc... */ - public boolean isConfigured(); + boolean isConfigured(); /** * Returns an OrgFile object with a filename set that is guaranteed to @@ -62,7 +62,7 @@ public interface SynchronizerInterface { * @throws IOException * @throws IllegalArgumentException */ - public OrgFile getNewFile(final String desiredName) throws IOException, + OrgFile getNewFile(final String desiredName) throws IOException, IllegalArgumentException; /** @@ -71,7 +71,7 @@ public OrgFile getNewFile(final String desiredName) throws IOException, * @param orgFile * The file to save. Uses the filename stored in the object. */ - public void putRemoteFile(final OrgFile orgFile) throws IOException; + void putRemoteFile(final OrgFile orgFile) throws IOException; /** * Delete the file on the remote end. @@ -79,7 +79,7 @@ public OrgFile getNewFile(final String desiredName) throws IOException, * @param orgFile * The file to delete. */ - public void deleteRemoteFile(final OrgFile orgFile) throws IOException; + void deleteRemoteFile(final OrgFile orgFile) throws IOException; /** * Rename the file on the remote end. @@ -89,7 +89,7 @@ public OrgFile getNewFile(final String desiredName) throws IOException, * @param orgFile * This contains the new name. */ - public void renameRemoteFile(final String oldName, final OrgFile orgFile) throws IOException; + void renameRemoteFile(final String oldName, final OrgFile orgFile) throws IOException; /** * Returns a BufferedReader to the remote file. Null if it doesn't exist. @@ -97,27 +97,27 @@ public OrgFile getNewFile(final String desiredName) throws IOException, * @param filename * Name of the file, without path */ - public BufferedReader getRemoteFile(final String filename) throws IOException; + BufferedReader getRemoteFile(final String filename) throws IOException; /** * * @return a set of all remote files. */ - public HashSet getRemoteFilenames() throws IOException; + HashSet getRemoteFilenames() throws IOException; /** * Do a full 2-way sync. */ - public void fullSync() throws IOException, ParseException; + void fullSync() throws IOException, ParseException; /** * Use this to disconnect from any services and cleanup. */ - public void postSynchronize(); + void postSynchronize(); /** * * @return a Monitor for this source. May be null. */ - public Monitor getMonitor(); + Monitor getMonitor(); } diff --git a/app/src/main/java/com/nononsenseapps/notepad/database/DatabaseHandler.java b/app/src/main/java/com/nononsenseapps/notepad/data/local/sql/DatabaseHandler.java similarity index 96% rename from app/src/main/java/com/nononsenseapps/notepad/database/DatabaseHandler.java rename to app/src/main/java/com/nononsenseapps/notepad/data/local/sql/DatabaseHandler.java index cff3350f9..ea1598b82 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/database/DatabaseHandler.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/local/sql/DatabaseHandler.java @@ -15,18 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.database; - -import java.text.ParseException; -import java.util.Calendar; -import java.util.HashMap; - -import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.prefs.SyncPrefs; -import com.nononsenseapps.notepad.sync.googleapi.GoogleTask; -import com.nononsenseapps.notepad.sync.googleapi.GoogleTaskList; - -import com.nononsenseapps.utils.time.RFC3339Date; +package com.nononsenseapps.notepad.data.local.sql; import android.content.ContentResolver; import android.content.Context; @@ -39,6 +28,20 @@ import android.provider.BaseColumns; import android.support.annotation.NonNull; +import com.nononsenseapps.notepad.R; +import com.nononsenseapps.notepad.data.model.sql.RemoteTask; +import com.nononsenseapps.notepad.data.model.sql.RemoteTaskList; +import com.nononsenseapps.notepad.data.model.sql.Notification; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.data.model.sql.TaskList; +import com.nononsenseapps.notepad.data.model.gtasks.GoogleTask; +import com.nononsenseapps.notepad.data.model.gtasks.GoogleTaskList; +import com.nononsenseapps.notepad.ui.settings.SyncPrefs; +import com.nononsenseapps.notepad.util.RFC3339Date; + +import java.util.Calendar; +import java.util.HashMap; + public class DatabaseHandler extends SQLiteOpenHelper { public static final String DEFAULT_TEXT_PREFIX = "test"; diff --git a/app/src/main/java/com/nononsenseapps/notepad/database/LegacyDBHelper.java b/app/src/main/java/com/nononsenseapps/notepad/data/local/sql/LegacyDBHelper.java similarity index 99% rename from app/src/main/java/com/nononsenseapps/notepad/database/LegacyDBHelper.java rename to app/src/main/java/com/nononsenseapps/notepad/data/local/sql/LegacyDBHelper.java index 5bf67fa2d..b448ad3e5 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/database/LegacyDBHelper.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/local/sql/LegacyDBHelper.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.database; +package com.nononsenseapps.notepad.data.local.sql; import android.app.SearchManager; import android.content.ContentValues; @@ -27,8 +27,10 @@ import android.net.Uri; import android.provider.BaseColumns; -import com.nononsenseapps.helpers.Log; -import com.nononsenseapps.utils.time.RFC3339Date; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.data.model.sql.TaskList; +import com.nononsenseapps.notepad.util.Log; +import com.nononsenseapps.notepad.util.RFC3339Date; /** * This class contains the code that has been called over the versions to diff --git a/app/src/main/java/com/nononsenseapps/notepad/database/MyContentProvider.java b/app/src/main/java/com/nononsenseapps/notepad/data/local/sql/MyContentProvider.java similarity index 97% rename from app/src/main/java/com/nononsenseapps/notepad/database/MyContentProvider.java rename to app/src/main/java/com/nononsenseapps/notepad/data/local/sql/MyContentProvider.java index 54d01760b..f11edb65e 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/database/MyContentProvider.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/local/sql/MyContentProvider.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.database; +package com.nononsenseapps.notepad.data.local.sql; import android.app.SearchManager; import android.content.ContentProvider; @@ -29,7 +29,13 @@ import android.net.Uri; import android.util.Log; -import com.nononsenseapps.helpers.UpdateNotifier; +import com.nononsenseapps.notepad.data.local.UpdateNotifier; +import com.nononsenseapps.notepad.data.model.sql.RemoteTask; +import com.nononsenseapps.notepad.data.model.sql.RemoteTaskList; +import com.nononsenseapps.notepad.data.model.sql.DAO; +import com.nononsenseapps.notepad.data.model.sql.Notification; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.data.model.sql.TaskList; import java.util.ArrayList; diff --git a/app/src/main/java/com/nononsenseapps/notepad/sync/googleapi/GoogleTask.java b/app/src/main/java/com/nononsenseapps/notepad/data/model/gtasks/GoogleTask.java similarity index 95% rename from app/src/main/java/com/nononsenseapps/notepad/sync/googleapi/GoogleTask.java rename to app/src/main/java/com/nononsenseapps/notepad/data/model/gtasks/GoogleTask.java index 6a50c6d8f..5919a0d1c 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/sync/googleapi/GoogleTask.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/model/gtasks/GoogleTask.java @@ -15,17 +15,16 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.sync.googleapi; - -import com.nononsenseapps.notepad.database.LegacyDBHelper.NotePad; -import com.nononsenseapps.notepad.database.RemoteTask; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.utils.time.RFC3339Date; +package com.nononsenseapps.notepad.data.model.gtasks; import android.content.ContentValues; import android.database.Cursor; -import com.nononsenseapps.helpers.Log; +import com.nononsenseapps.notepad.data.local.sql.LegacyDBHelper.NotePad; +import com.nononsenseapps.notepad.data.model.sql.RemoteTask; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.data.remote.gtasks.GoogleTasksAPI; +import com.nononsenseapps.notepad.util.RFC3339Date; public class GoogleTask extends RemoteTask { diff --git a/app/src/main/java/com/nononsenseapps/notepad/sync/googleapi/GoogleTaskList.java b/app/src/main/java/com/nononsenseapps/notepad/data/model/gtasks/GoogleTaskList.java similarity index 90% rename from app/src/main/java/com/nononsenseapps/notepad/sync/googleapi/GoogleTaskList.java rename to app/src/main/java/com/nononsenseapps/notepad/data/model/gtasks/GoogleTaskList.java index 7b9bca9fd..3d9759f09 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/sync/googleapi/GoogleTaskList.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/model/gtasks/GoogleTaskList.java @@ -15,14 +15,15 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.sync.googleapi; +package com.nononsenseapps.notepad.data.model.gtasks; -import com.nononsenseapps.notepad.database.RemoteTaskList; -import com.nononsenseapps.notepad.database.TaskList; -import com.nononsenseapps.utils.time.RFC3339Date; +import com.nononsenseapps.notepad.data.model.sql.RemoteTaskList; +import com.nononsenseapps.notepad.data.model.sql.TaskList; +import com.nononsenseapps.notepad.data.remote.gtasks.GoogleTasksAPI; +import com.nononsenseapps.notepad.util.RFC3339Date; import android.database.Cursor; -import com.nononsenseapps.helpers.Log; +import com.nononsenseapps.notepad.util.Log; public class GoogleTaskList extends RemoteTaskList { diff --git a/app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/RemoteTaskListFile.java b/app/src/main/java/com/nononsenseapps/notepad/data/model/orgmode/RemoteTaskListFile.java similarity index 90% rename from app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/RemoteTaskListFile.java rename to app/src/main/java/com/nononsenseapps/notepad/data/model/orgmode/RemoteTaskListFile.java index 8d1237224..f58d03dc9 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/RemoteTaskListFile.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/model/orgmode/RemoteTaskListFile.java @@ -15,9 +15,9 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.sync.orgsync; +package com.nononsenseapps.notepad.data.model.orgmode; -import com.nononsenseapps.notepad.database.RemoteTaskList; +import com.nononsenseapps.notepad.data.model.sql.RemoteTaskList; public class RemoteTaskListFile { diff --git a/app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/RemoteTaskNode.java b/app/src/main/java/com/nononsenseapps/notepad/data/model/orgmode/RemoteTaskNode.java similarity index 92% rename from app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/RemoteTaskNode.java rename to app/src/main/java/com/nononsenseapps/notepad/data/model/orgmode/RemoteTaskNode.java index 8523b3ff4..8a5cfc934 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/RemoteTaskNode.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/model/orgmode/RemoteTaskNode.java @@ -15,9 +15,9 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.sync.orgsync; +package com.nononsenseapps.notepad.data.model.orgmode; -import com.nononsenseapps.notepad.database.RemoteTask; +import com.nononsenseapps.notepad.data.model.sql.RemoteTask; public class RemoteTaskNode { diff --git a/app/src/main/java/com/nononsenseapps/notepad/database/DAO.java b/app/src/main/java/com/nononsenseapps/notepad/data/model/sql/DAO.java similarity index 98% rename from app/src/main/java/com/nononsenseapps/notepad/database/DAO.java rename to app/src/main/java/com/nononsenseapps/notepad/data/model/sql/DAO.java index fa0ab576c..cd2631e3c 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/database/DAO.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/model/sql/DAO.java @@ -15,9 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.database; - -import java.util.ArrayList; +package com.nononsenseapps.notepad.data.model.sql; import android.content.ContentValues; import android.content.Context; @@ -27,6 +25,10 @@ import android.net.Uri; import android.provider.BaseColumns; +import com.nononsenseapps.notepad.data.local.sql.MyContentProvider; + +import java.util.ArrayList; + public abstract class DAO { private static final String whereIdIs = "" + BaseColumns._ID + " IS ?"; diff --git a/app/src/main/java/com/nononsenseapps/notepad/database/Notification.java b/app/src/main/java/com/nononsenseapps/notepad/data/model/sql/Notification.java similarity index 96% rename from app/src/main/java/com/nononsenseapps/notepad/database/Notification.java rename to app/src/main/java/com/nononsenseapps/notepad/data/model/sql/Notification.java index acc5d21a5..3f09ea943 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/database/Notification.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/model/sql/Notification.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.database; +package com.nononsenseapps.notepad.data.model.sql; import android.content.ContentValues; import android.content.Context; @@ -26,9 +26,10 @@ import android.provider.BaseColumns; import android.view.View; -import com.nononsenseapps.helpers.NotificationHelper; -import com.nononsenseapps.helpers.TimeFormatter; -import com.nononsenseapps.ui.WeekDaysView; +import com.nononsenseapps.notepad.data.receiver.NotificationHelper; +import com.nononsenseapps.notepad.data.local.sql.MyContentProvider; +import com.nononsenseapps.notepad.util.TimeFormatter; +import com.nononsenseapps.notepad.ui.common.WeekDaysView; import org.json.JSONException; import org.json.JSONObject; @@ -508,7 +509,7 @@ protected Void doInBackground(final Long... ids) { // Task.Columns.FIELDS, // Task.Columns.DBLIST // + " IS ? AND " - // + com.nononsenseapps.notepad.database.Notification.Columns.RADIUS + // + com.nononsenseapps.notepad.data.model.sql.Notification.Columns.RADIUS // + " IS NULL", // new String[] { Long.toString(listId) }, null); // @@ -536,10 +537,10 @@ protected Void doInBackground(final Long... ids) { public static List getNotificationsOfTask(final Context context, final long taskId) { return getNotificationsWithTasks( context, - new StringBuilder().append(com.nononsenseapps.notepad.database.Notification.Columns.TASKID) + new StringBuilder().append(Notification.Columns.TASKID) + " IS ?", new String[] { Long.toString(taskId) }, - new StringBuilder().append(com.nononsenseapps.notepad.database.Notification.Columns.TIME) + new StringBuilder().append(Notification.Columns.TIME) .toString()); } @@ -553,14 +554,14 @@ public static List getNotificationsWithTime(final Context context, final String comparison = before ? " <= ?" : " > ?"; return getNotificationsWithTasks( context, - new StringBuilder().append(com.nononsenseapps.notepad.database.Notification.Columns.TIME) + new StringBuilder().append(Notification.Columns.TIME) .append(comparison) .append(" AND ") - .append(com.nononsenseapps.notepad.database.Notification.Columns.RADIUS) + .append(Notification.Columns.RADIUS) .append(" IS NULL") .toString(), new String[]{Long.toString(time)}, - new StringBuilder().append(com.nononsenseapps.notepad.database.Notification.Columns.TIME) + new StringBuilder().append(Notification.Columns.TIME) .toString()); } @@ -607,7 +608,7 @@ protected Void doInBackground(final Long... ids) { Task.Columns.FIELDS, Task.Columns.DBLIST + " IS ? AND " - + com.nononsenseapps.notepad.database.Notification.Columns.RADIUS + + Notification.Columns.RADIUS + " IS NULL", new String[] { Long.toString(listId) }, null); diff --git a/app/src/main/java/com/nononsenseapps/notepad/database/RemoteTask.java b/app/src/main/java/com/nononsenseapps/notepad/data/model/sql/RemoteTask.java similarity index 98% rename from app/src/main/java/com/nononsenseapps/notepad/database/RemoteTask.java rename to app/src/main/java/com/nononsenseapps/notepad/data/model/sql/RemoteTask.java index 836bd03e4..145954610 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/database/RemoteTask.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/model/sql/RemoteTask.java @@ -15,12 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.database; - -import org.json.JSONException; -import org.json.JSONObject; - -import com.nononsenseapps.notepad.database.RemoteTaskList.Columns; +package com.nononsenseapps.notepad.data.model.sql; import android.content.ContentValues; import android.content.Context; @@ -29,6 +24,11 @@ import android.net.Uri; import android.provider.BaseColumns; +import com.nononsenseapps.notepad.data.local.sql.MyContentProvider; + +import org.json.JSONException; +import org.json.JSONObject; + public class RemoteTask extends DAO { // SQL convention says Table name should be "singular" diff --git a/app/src/main/java/com/nononsenseapps/notepad/database/RemoteTaskList.java b/app/src/main/java/com/nononsenseapps/notepad/data/model/sql/RemoteTaskList.java similarity index 98% rename from app/src/main/java/com/nononsenseapps/notepad/database/RemoteTaskList.java rename to app/src/main/java/com/nononsenseapps/notepad/data/model/sql/RemoteTaskList.java index 468881ad3..9cf224e95 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/database/RemoteTaskList.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/model/sql/RemoteTaskList.java @@ -15,10 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.database; - -import org.json.JSONException; -import org.json.JSONObject; +package com.nononsenseapps.notepad.data.model.sql; import android.content.ContentValues; import android.content.Context; @@ -27,6 +24,11 @@ import android.net.Uri; import android.provider.BaseColumns; +import com.nononsenseapps.notepad.data.local.sql.MyContentProvider; + +import org.json.JSONException; +import org.json.JSONObject; + public class RemoteTaskList extends DAO { // SQL convention says Table name should be "singular" diff --git a/app/src/main/java/com/nononsenseapps/notepad/database/Task.java b/app/src/main/java/com/nononsenseapps/notepad/data/model/sql/Task.java similarity index 99% rename from app/src/main/java/com/nononsenseapps/notepad/database/Task.java rename to app/src/main/java/com/nononsenseapps/notepad/data/model/sql/Task.java index 1067084a1..5cc1804b6 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/database/Task.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/model/sql/Task.java @@ -15,13 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.database; - -import java.security.InvalidParameterException; -import java.util.Calendar; - -import org.json.JSONException; -import org.json.JSONObject; +package com.nononsenseapps.notepad.data.model.sql; import android.app.SearchManager; import android.content.ContentResolver; @@ -33,7 +27,15 @@ import android.os.AsyncTask; import android.provider.BaseColumns; import android.text.format.Time; -import android.util.Log; + +import com.nononsenseapps.notepad.data.local.sql.LegacyDBHelper; +import com.nononsenseapps.notepad.data.local.sql.MyContentProvider; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.security.InvalidParameterException; +import java.util.Calendar; /** * An object that represents the task information contained in the database. diff --git a/app/src/main/java/com/nononsenseapps/notepad/database/TaskList.java b/app/src/main/java/com/nononsenseapps/notepad/data/model/sql/TaskList.java similarity index 97% rename from app/src/main/java/com/nononsenseapps/notepad/database/TaskList.java rename to app/src/main/java/com/nononsenseapps/notepad/data/model/sql/TaskList.java index f73a29765..44490629e 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/database/TaskList.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/model/sql/TaskList.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.database; +package com.nononsenseapps.notepad.data.model.sql; import java.util.Calendar; @@ -29,6 +29,9 @@ import android.net.Uri; import android.provider.BaseColumns; +import com.nononsenseapps.notepad.data.local.sql.LegacyDBHelper; +import com.nononsenseapps.notepad.data.local.sql.MyContentProvider; + public class TaskList extends DAO { // SQL convention says Table name should be "singular" diff --git a/app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/BackgroundSyncScheduler.java b/app/src/main/java/com/nononsenseapps/notepad/data/receiver/BackgroundSyncScheduler.java similarity index 95% rename from app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/BackgroundSyncScheduler.java rename to app/src/main/java/com/nononsenseapps/notepad/data/receiver/BackgroundSyncScheduler.java index 2f697283c..01e1ca91b 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/BackgroundSyncScheduler.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/receiver/BackgroundSyncScheduler.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.sync.orgsync; +package com.nononsenseapps.notepad.data.receiver; import android.app.AlarmManager; import android.app.PendingIntent; @@ -24,6 +24,8 @@ import android.content.Intent; import android.os.SystemClock; +import com.nononsenseapps.notepad.data.service.OrgSyncService; + public class BackgroundSyncScheduler extends BroadcastReceiver { // Unique ID for schedule private final static int scheduleCode = 2832; diff --git a/app/src/main/java/com/nononsenseapps/notepad/NotePadBroadcastReceiver.java b/app/src/main/java/com/nononsenseapps/notepad/data/receiver/NotePadBroadcastReceiver.java similarity index 93% rename from app/src/main/java/com/nononsenseapps/notepad/NotePadBroadcastReceiver.java rename to app/src/main/java/com/nononsenseapps/notepad/data/receiver/NotePadBroadcastReceiver.java index 10a185d5b..e74965d7f 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/NotePadBroadcastReceiver.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/receiver/NotePadBroadcastReceiver.java @@ -15,10 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad; - -import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.Task; +package com.nononsenseapps.notepad.data.receiver; import android.content.BroadcastReceiver; import android.content.Context; @@ -27,6 +24,9 @@ import android.provider.BaseColumns; import android.widget.Toast; +import com.nononsenseapps.notepad.R; +import com.nononsenseapps.notepad.data.model.sql.Task; + public class NotePadBroadcastReceiver extends BroadcastReceiver { @Override diff --git a/app/src/main/java/com/nononsenseapps/helpers/NotificationHelper.java b/app/src/main/java/com/nononsenseapps/notepad/data/receiver/NotificationHelper.java similarity index 83% rename from app/src/main/java/com/nononsenseapps/helpers/NotificationHelper.java rename to app/src/main/java/com/nononsenseapps/notepad/data/receiver/NotificationHelper.java index 80df6e315..0919502a7 100644 --- a/app/src/main/java/com/nononsenseapps/helpers/NotificationHelper.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/receiver/NotificationHelper.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.helpers; +package com.nononsenseapps.notepad.data.receiver; import android.app.AlarmManager; import android.app.Notification; @@ -33,9 +33,9 @@ import android.support.annotation.NonNull; import android.support.v4.app.NotificationCompat; -import com.nononsenseapps.notepad.ActivityMain; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.Task; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.util.Log; import java.util.ArrayList; import java.util.Calendar; @@ -67,15 +67,13 @@ private static ContextObserver getObserver(final Context context) { private static void monitorUri(final Context context) { context.getContentResolver().unregisterContentObserver(getObserver(context)); - context.getContentResolver().registerContentObserver(com.nononsenseapps.notepad.database - .Notification.URI, true, getObserver(context)); + context.getContentResolver().registerContentObserver(com.nononsenseapps.notepad.data.model.sql.Notification.URI, true, getObserver(context)); } public static void clearNotification(@NonNull final Context context, @NonNull final Intent intent) { if (intent.getLongExtra(NOTIFICATION_DELETE_ARG, -1) > 0) { - com.nononsenseapps.notepad.database.Notification.deleteOrReschedule(context, com - .nononsenseapps.notepad.database.Notification.getUri(intent.getLongExtra + com.nononsenseapps.notepad.data.model.sql.Notification.deleteOrReschedule(context, com.nononsenseapps.notepad.data.model.sql.Notification.getUri(intent.getLongExtra (NOTIFICATION_DELETE_ARG, -1))); } if (intent.getLongExtra(NOTIFICATION_CANCEL_ARG, -1) > 0) { @@ -93,7 +91,7 @@ private static void notifyPast(Context context, boolean alertOnce) { // Get list of past notifications final Calendar now = Calendar.getInstance(); - final List notifications = com.nononsenseapps.notepad.database.Notification + final List notifications = com.nononsenseapps.notepad.data.model.sql.Notification .getNotificationsWithTime(context, now.getTimeInMillis(), true); // Remove duplicates @@ -143,7 +141,7 @@ private static void notifyPast(Context context, boolean alertOnce) { // .getString(R.string.key_pref_ringtone), // "DEFAULT_NOTIFICATION_URI")), alertOnce); // - // List subList = + // List subList = // getSubList( // listId, notifications); // if (subList.size() == 1) { @@ -159,7 +157,7 @@ private static void notifyPast(Context context, boolean alertOnce) { // } // else { // Notify for each individually - for (com.nononsenseapps.notepad.database.Notification note : notifications) { + for (com.nononsenseapps.notepad.data.model.sql.Notification note : notifications) { builder = getNotificationBuilder( context, lightAndVibrate, Uri.parse(prefs.getString(context.getString(R.string.const_preference_ringtone_key), @@ -198,11 +196,11 @@ private static NotificationCompat.Builder getNotificationBuilder(final Context c */ private static void makeUnique( final Context context, - final List notifications) { + final List notifications) { // get duplicates and iterate over them - for (com.nononsenseapps.notepad.database.Notification noti : getLatestOccurence(notifications)) { + for (com.nononsenseapps.notepad.data.model.sql.Notification noti : getLatestOccurence(notifications)) { // remove all but the first one from database, and big list - for (com.nononsenseapps.notepad.database.Notification dupNoti : getDuplicates( + for (com.nononsenseapps.notepad.data.model.sql.Notification dupNoti : getDuplicates( noti, notifications)) { notifications.remove(dupNoti); cancelNotification(context, dupNoti); @@ -220,12 +218,12 @@ private static void makeUnique( * @param notifications * @return */ - private static List getLatestOccurence( - final List notifications) { + private static List getLatestOccurence( + final List notifications) { final ArrayList seenIds = new ArrayList(); - final ArrayList firsts = new ArrayList(); + final ArrayList firsts = new ArrayList(); - com.nononsenseapps.notepad.database.Notification noti; + com.nononsenseapps.notepad.data.model.sql.Notification noti; for (int i = notifications.size() - 1; i >= 0; i--) { noti = notifications.get(i); if (!seenIds.contains(noti.taskID)) { @@ -236,12 +234,12 @@ private static List getLatestO return firsts; } - private static List getDuplicates( - final com.nononsenseapps.notepad.database.Notification first, - final List notifications) { - final ArrayList dups = new ArrayList(); + private static List getDuplicates( + final com.nononsenseapps.notepad.data.model.sql.Notification first, + final List notifications) { + final ArrayList dups = new ArrayList(); - for (com.nononsenseapps.notepad.database.Notification noti : notifications) { + for (com.nononsenseapps.notepad.data.model.sql.Notification noti : notifications) { if (noti.taskID == first.taskID && noti._id != first._id) { dups.add(noti); } @@ -256,7 +254,7 @@ private static List getDuplica private static void notifyBigText(final Context context, final NotificationManager notificationManager, final NotificationCompat.Builder builder, - final com.nononsenseapps.notepad.database.Notification note) { + final com.nononsenseapps.notepad.data.model.sql.Notification note) { final Intent delIntent = new Intent(Intent.ACTION_DELETE, note.getUri()); if (note.repeats != 0) { delIntent.setAction(ACTION_RESCHEDULE); @@ -277,10 +275,10 @@ private static void notifyBigText(final Context context, // Delete intent on non-location repeats // Opening the note should delete/reschedule the notification - openIntent.putExtra(ActivityMain.NOTIFICATION_DELETE_ARG, note._id); + openIntent.putExtra(NOTIFICATION_DELETE_ARG, note._id); // Opening always cancels the notification though - openIntent.putExtra(ActivityMain.NOTIFICATION_CANCEL_ARG, note._id); + openIntent.putExtra(NOTIFICATION_CANCEL_ARG, note._id); // Open note on click PendingIntent clickIntent = PendingIntent.getActivity(context, 0, @@ -324,10 +322,9 @@ private static void notifyBigText(final Context context, notificationManager.notify((int) note._id, noti); } - private static long getLatestTime(final List notifications) { + private static long getLatestTime(final List notifications) { long latest = 0; - for (com.nononsenseapps.notepad.database.Notification noti : notifications) { + for (com.nononsenseapps.notepad.data.model.sql.Notification noti : notifications) { if (noti.time > latest) latest = noti.time; } @@ -339,11 +336,11 @@ private static long getLatestTime(final List + // final List // notifications) { // // Delete intent must delete all notifications // Intent delint = new Intent(Intent.ACTION_DELETE, - // com.nononsenseapps.notepad.database.Notification.URI); + // com.nononsenseapps.notepad.data.model.sql.Notification.URI); // // Add extra so we don't delete all // final long maxTime = getLatestTime(notifications); // delint.putExtra(ARG_MAX_TIME, maxTime); @@ -395,7 +392,7 @@ private static long getLatestTime(final List notifications = com.nononsenseapps.notepad.database.Notification + final List notifications = com.nononsenseapps.notepad.data.model.sql.Notification .getNotificationsWithTime(context, now.getTimeInMillis(), false); // if not empty, schedule alarm wake up @@ -447,7 +444,7 @@ public static void schedule(final Context context) { * @param notification */ public static void updateNotification(final Context context, - final com.nononsenseapps.notepad.database.Notification notification) { + final com.nononsenseapps.notepad.data.model.sql.Notification notification) { /* * Only don't insert if update is success This way the editor can update * a deleted notification and still have it persisted in the database @@ -479,7 +476,7 @@ public static void updateNotification(final Context context, * @param not */ public static void cancelNotification(final Context context, - final com.nononsenseapps.notepad.database.Notification not) { + final com.nononsenseapps.notepad.data.model.sql.Notification not) { if (not != null) { cancelNotification(context, not.getUri()); } @@ -507,9 +504,9 @@ public static void cancelNotification(final Context context, final int notId) { * belong to. */ private static Collection getRelatedLists( - final List notifications) { + final List notifications) { final HashSet lists = new HashSet(); - for (com.nononsenseapps.notepad.database.Notification not : notifications) { + for (com.nononsenseapps.notepad.data.model.sql.Notification not : notifications) { lists.add(not.listID); } @@ -521,7 +518,7 @@ private static Collection getRelatedLists( */ // public static void deleteNotification(final Context context, long listId, // long maxTime) { - // com.nononsenseapps.notepad.database.Notification.removeWithListId( + // com.nononsenseapps.notepad.data.model.sql.Notification.removeWithListId( // context, listId, maxTime); // // final NotificationManager notificationManager = (NotificationManager) @@ -534,11 +531,11 @@ private static Collection getRelatedLists( * Returns a list of those notifications that are associated to notes in the * specified list. */ - private static List getSubList( + private static List getSubList( final long listId, - final List notifications) { - final ArrayList subList = new ArrayList(); - for (com.nononsenseapps.notepad.database.Notification not : notifications) { + final List notifications) { + final ArrayList subList = new ArrayList(); + for (com.nononsenseapps.notepad.data.model.sql.Notification not : notifications) { if (not.listID == listId) { subList.add(not); } @@ -566,20 +563,20 @@ public void onReceive(Context context, Intent intent) { if (Intent.ACTION_DELETE.equals(intent.getAction()) || ACTION_RESCHEDULE.equals (intent.getAction())) { // Just a notification - com.nononsenseapps.notepad.database.Notification.deleteOrReschedule(context, + com.nononsenseapps.notepad.data.model.sql.Notification.deleteOrReschedule(context, intent.getData()); } else if (ACTION_SNOOZE.equals(intent.getAction())) { // msec/sec * sec/min * 30 long delay30min = 1000 * 60 * 30; final Calendar now = Calendar.getInstance(); - com.nononsenseapps.notepad.database.Notification.setTime(context, intent.getData + com.nononsenseapps.notepad.data.model.sql.Notification.setTime(context, intent.getData (), delay30min + now.getTimeInMillis()); } else if (ACTION_COMPLETE.equals(intent.getAction())) { // Complete note Task.setCompletedSynced(context, true, intent.getLongExtra(ARG_TASKID, -1)); // Delete notifications with the same task id - com.nononsenseapps.notepad.database.Notification.removeWithTaskIdsSynced(context, intent.getLongExtra(ARG_TASKID, -1)); + com.nononsenseapps.notepad.data.model.sql.Notification.removeWithTaskIdsSynced(context, intent.getLongExtra(ARG_TASKID, -1)); } } diff --git a/app/src/main/java/com/nononsenseapps/helpers/SyncStatusMonitor.java b/app/src/main/java/com/nononsenseapps/notepad/data/receiver/SyncStatusMonitor.java similarity index 94% rename from app/src/main/java/com/nononsenseapps/helpers/SyncStatusMonitor.java rename to app/src/main/java/com/nononsenseapps/notepad/data/receiver/SyncStatusMonitor.java index 584a4b536..bb821deb4 100644 --- a/app/src/main/java/com/nononsenseapps/helpers/SyncStatusMonitor.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/receiver/SyncStatusMonitor.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.helpers; +package com.nononsenseapps.notepad.data.receiver; import android.accounts.Account; import android.accounts.AccountManager; @@ -30,9 +30,10 @@ import android.widget.Toast; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.MyContentProvider; -import com.nononsenseapps.notepad.prefs.SyncPrefs; -import com.nononsenseapps.notepad.sync.SyncAdapter; +import com.nononsenseapps.notepad.data.local.sql.MyContentProvider; +import com.nononsenseapps.notepad.ui.settings.SyncPrefs; +import com.nononsenseapps.notepad.data.service.gtasks.SyncAdapter; +import com.nononsenseapps.notepad.util.Log; public class SyncStatusMonitor extends BroadcastReceiver { private static final String TAG = "SyncStatusMonitor"; @@ -142,4 +143,4 @@ public interface OnSyncStartStopListener { */ void onSyncStartStop(final boolean ongoing); } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/nononsenseapps/notepad/sync/googleapi/GoogleTaskSync.java b/app/src/main/java/com/nononsenseapps/notepad/data/remote/gtasks/GoogleTaskSync.java similarity index 97% rename from app/src/main/java/com/nononsenseapps/notepad/sync/googleapi/GoogleTaskSync.java rename to app/src/main/java/com/nononsenseapps/notepad/data/remote/gtasks/GoogleTaskSync.java index 392cf4bb6..551eb61f1 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/sync/googleapi/GoogleTaskSync.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/remote/gtasks/GoogleTaskSync.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.sync.googleapi; +package com.nononsenseapps.notepad.data.remote.gtasks; import android.accounts.Account; import android.accounts.AccountManager; @@ -29,13 +29,15 @@ import android.util.Pair; import com.nononsenseapps.build.Config; -import com.nononsenseapps.helpers.Log; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.database.TaskList; -import com.nononsenseapps.notepad.prefs.SyncPrefs; -import com.nononsenseapps.util.PermissionsHelper; -import com.nononsenseapps.util.SyncGtaskHelper; -import com.nononsenseapps.utils.time.RFC3339Date; +import com.nononsenseapps.notepad.data.model.gtasks.GoogleTask; +import com.nononsenseapps.notepad.data.model.gtasks.GoogleTaskList; +import com.nononsenseapps.notepad.util.Log; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.data.model.sql.TaskList; +import com.nononsenseapps.notepad.ui.settings.SyncPrefs; +import com.nononsenseapps.notepad.util.PermissionsHelper; +import com.nononsenseapps.notepad.util.SyncGtaskHelper; +import com.nononsenseapps.notepad.util.RFC3339Date; import org.json.JSONException; diff --git a/app/src/main/java/com/nononsenseapps/notepad/sync/googleapi/GoogleTasksAPI.java b/app/src/main/java/com/nononsenseapps/notepad/data/remote/gtasks/GoogleTasksAPI.java similarity index 98% rename from app/src/main/java/com/nononsenseapps/notepad/sync/googleapi/GoogleTasksAPI.java rename to app/src/main/java/com/nononsenseapps/notepad/data/remote/gtasks/GoogleTasksAPI.java index f2193a14f..028d1b39b 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/sync/googleapi/GoogleTasksAPI.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/remote/gtasks/GoogleTasksAPI.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.sync.googleapi; +package com.nononsenseapps.notepad.data.remote.gtasks; import java.util.List; diff --git a/app/src/main/java/com/nononsenseapps/notepad/sync/googleapi/GoogleTasksClient.java b/app/src/main/java/com/nononsenseapps/notepad/data/remote/gtasks/GoogleTasksClient.java similarity index 96% rename from app/src/main/java/com/nononsenseapps/notepad/sync/googleapi/GoogleTasksClient.java rename to app/src/main/java/com/nononsenseapps/notepad/data/remote/gtasks/GoogleTasksClient.java index f08e0073f..4f11b3735 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/sync/googleapi/GoogleTasksClient.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/remote/gtasks/GoogleTasksClient.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.sync.googleapi; +package com.nononsenseapps.notepad.data.remote.gtasks; import android.accounts.Account; import android.accounts.AccountManager; @@ -25,7 +25,9 @@ import android.app.Activity; import android.os.Bundle; -import com.nononsenseapps.helpers.Log; +import com.nononsenseapps.notepad.data.model.gtasks.GoogleTask; +import com.nononsenseapps.notepad.data.model.gtasks.GoogleTaskList; +import com.nononsenseapps.notepad.util.Log; import java.io.IOException; import java.util.ArrayList; diff --git a/app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/OrgSyncService.java b/app/src/main/java/com/nononsenseapps/notepad/data/service/OrgSyncService.java similarity index 93% rename from app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/OrgSyncService.java rename to app/src/main/java/com/nononsenseapps/notepad/data/service/OrgSyncService.java index 0e6c8f78e..07bd76bdd 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/sync/orgsync/OrgSyncService.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/service/OrgSyncService.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.sync.orgsync; +package com.nononsenseapps.notepad.data.service; import android.app.NotificationManager; import android.app.PendingIntent; @@ -33,14 +33,18 @@ import android.preference.PreferenceManager; import android.support.v4.app.NotificationCompat; -import com.nononsenseapps.helpers.Log; +import com.nononsenseapps.notepad.data.remote.orgmodedropbox.DropboxSynchronizer; +import com.nononsenseapps.notepad.data.local.orgmode.Monitor; +import com.nononsenseapps.notepad.data.local.orgmode.SDSynchronizer; +import com.nononsenseapps.notepad.data.local.orgmode.SynchronizerInterface; +import com.nononsenseapps.notepad.util.Log; import com.nononsenseapps.notepad.BuildConfig; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.database.TaskList; -import com.nononsenseapps.notepad.prefs.PrefsActivity; -import com.nononsenseapps.notepad.prefs.SyncPrefs; -import com.nononsenseapps.notepad.sync.SyncAdapter; -import com.nononsenseapps.util.SharedPreferencesHelper; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.data.model.sql.TaskList; +import com.nononsenseapps.notepad.ui.settings.PrefsActivity; +import com.nononsenseapps.notepad.ui.settings.SyncPrefs; +import com.nononsenseapps.notepad.data.service.gtasks.SyncAdapter; +import com.nononsenseapps.notepad.util.SharedPreferencesHelper; import java.io.IOException; import java.text.ParseException; diff --git a/app/src/main/java/com/nononsenseapps/helpers/GTasksSyncDelay.java b/app/src/main/java/com/nononsenseapps/notepad/data/service/gtasks/GTasksSyncDelay.java similarity index 95% rename from app/src/main/java/com/nononsenseapps/helpers/GTasksSyncDelay.java rename to app/src/main/java/com/nononsenseapps/notepad/data/service/gtasks/GTasksSyncDelay.java index cf7418ca9..543edb91f 100644 --- a/app/src/main/java/com/nononsenseapps/helpers/GTasksSyncDelay.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/service/gtasks/GTasksSyncDelay.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.helpers; +package com.nononsenseapps.notepad.data.service.gtasks; import android.app.AlarmManager; import android.app.PendingIntent; @@ -24,7 +24,7 @@ import android.content.Intent; import android.os.IBinder; -import com.nononsenseapps.util.SyncGtaskHelper; +import com.nononsenseapps.notepad.util.SyncGtaskHelper; import java.util.Calendar; diff --git a/app/src/main/java/com/nononsenseapps/notepad/sync/SyncAdapter.java b/app/src/main/java/com/nononsenseapps/notepad/data/service/gtasks/SyncAdapter.java similarity index 96% rename from app/src/main/java/com/nononsenseapps/notepad/sync/SyncAdapter.java rename to app/src/main/java/com/nononsenseapps/notepad/data/service/gtasks/SyncAdapter.java index a9921ef60..21beffcdd 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/sync/SyncAdapter.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/service/gtasks/SyncAdapter.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.sync; +package com.nononsenseapps.notepad.data.service.gtasks; import android.accounts.Account; import android.content.AbstractThreadedSyncAdapter; @@ -27,8 +27,8 @@ import android.os.Bundle; import android.preference.PreferenceManager; -import com.nononsenseapps.notepad.prefs.SyncPrefs; -import com.nononsenseapps.notepad.sync.googleapi.GoogleTaskSync; +import com.nononsenseapps.notepad.ui.settings.SyncPrefs; +import com.nononsenseapps.notepad.data.remote.gtasks.GoogleTaskSync; /** * This adapter syncs with GoogleTasks API. Each sync is an incremental sync diff --git a/app/src/main/java/com/nononsenseapps/helpers/SyncHelper.java b/app/src/main/java/com/nononsenseapps/notepad/data/service/gtasks/SyncHelper.java similarity index 88% rename from app/src/main/java/com/nononsenseapps/helpers/SyncHelper.java rename to app/src/main/java/com/nononsenseapps/notepad/data/service/gtasks/SyncHelper.java index 16ac97232..a06ce7edb 100644 --- a/app/src/main/java/com/nononsenseapps/helpers/SyncHelper.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/service/gtasks/SyncHelper.java @@ -15,12 +15,12 @@ * along with this program. If not, see . */ -package com.nononsenseapps.helpers; +package com.nononsenseapps.notepad.data.service.gtasks; import android.content.Context; -import com.nononsenseapps.notepad.sync.orgsync.OrgSyncService; -import com.nononsenseapps.util.SyncGtaskHelper; +import com.nononsenseapps.notepad.data.service.OrgSyncService; +import com.nononsenseapps.notepad.util.SyncGtaskHelper; /** * This class handles sync logic for all configured syncers and calls through to each individual @@ -45,4 +45,4 @@ public static boolean onManualSyncRequest(final Context context) { return syncing; } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/nononsenseapps/notepad/sync/SyncService.java b/app/src/main/java/com/nononsenseapps/notepad/data/service/gtasks/SyncService.java similarity index 96% rename from app/src/main/java/com/nononsenseapps/notepad/sync/SyncService.java rename to app/src/main/java/com/nononsenseapps/notepad/data/service/gtasks/SyncService.java index 7fdbc4ef7..ef5405d63 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/sync/SyncService.java +++ b/app/src/main/java/com/nononsenseapps/notepad/data/service/gtasks/SyncService.java @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.nononsenseapps.notepad.sync; +package com.nononsenseapps.notepad.data.service.gtasks; import android.app.Service; import android.content.Intent; diff --git a/app/src/main/java/com/nononsenseapps/notepad/database/SQLUtils.java b/app/src/main/java/com/nononsenseapps/notepad/database/SQLUtils.java deleted file mode 100644 index 0e4d4a295..000000000 --- a/app/src/main/java/com/nononsenseapps/notepad/database/SQLUtils.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2015 Jonas Kalderstam. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nononsenseapps.notepad.database; - -import android.util.Log; - -public class SQLUtils { - - public static String[] repeatTwice(final String[] org) { - if (org == null || org.length == 0) { - return null; - } - - String[] result = new String[2*org.length]; - for (int i = 0; i < org.length; i++) { - Log.d("nononsenseapps widget", "twice: " + org[i]); - result[2*i] = org[i]; - result[2*i + 1] = org[i]; - } - - return result; - } -} diff --git a/app/src/main/java/com/nononsenseapps/notepad/fragments/DialogRestore.java b/app/src/main/java/com/nononsenseapps/notepad/fragments/DialogRestore.java deleted file mode 100644 index 3df9e6946..000000000 --- a/app/src/main/java/com/nononsenseapps/notepad/fragments/DialogRestore.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (c) 2015 Jonas Kalderstam. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nononsenseapps.notepad.fragments; - -import org.androidannotations.annotations.AfterTextChange; -import org.androidannotations.annotations.AfterViews; -import org.androidannotations.annotations.Click; -import org.androidannotations.annotations.EFragment; -import org.androidannotations.annotations.UiThread; -import org.androidannotations.annotations.ViewById; -import com.nononsenseapps.notepad.ActivityMain; -import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.TaskList; -import com.nononsenseapps.notepad.fragments.DialogConfirmBase.DialogConfirmedListener; - -import android.database.Cursor; -import android.net.Uri; -import android.os.Bundle; -import android.preference.PreferenceManager; -import android.support.v4.app.DialogFragment; -import android.support.v4.app.LoaderManager.LoaderCallbacks; -import android.support.v4.content.CursorLoader; -import android.support.v4.content.Loader; -import android.support.v4.widget.SimpleCursorAdapter; -import android.text.Editable; -import android.util.Log; -import android.view.View; -import android.widget.ArrayAdapter; -import android.widget.Button; -import android.widget.CheckBox; -import android.widget.EditText; -import android.widget.Spinner; -import android.widget.TextView; -import android.widget.Toast; - -@EFragment(resName="fragment_dialog_restore") -public class DialogRestore extends DialogFragment { - - public interface OnListSelectedListener { - void onListSelected(long listId); - } - - @ViewById(resName="listSpinner") - Spinner listSpinner; - - @ViewById(resName="dialog_yes") - Button okButton; - - @ViewById(resName="dialog_no") - Button cancelButton; - - private OnListSelectedListener listener; - - /** - * Use to create new list - */ - public static DialogRestore_ getInstance() { - DialogRestore_ dialog = new DialogRestore_(); - dialog.setArguments(new Bundle()); - return dialog; - } - - public DialogRestore() { - - } - - public void setListener(final OnListSelectedListener listener) { - this.listener = listener; - } - - @AfterViews - void setup() { - getDialog().setTitle(R.string.restore_to); - - final SimpleCursorAdapter adapter = - new SimpleCursorAdapter(getActivity(), - R.layout.spinner_item, null, - new String[] {TaskList.Columns.TITLE}, - new int[] {R.id.textViewSpinnerItem}, 0); - - listSpinner.setAdapter(adapter); - - getLoaderManager().restartLoader(0, null, - new LoaderCallbacks() { - - @Override - public Loader onCreateLoader(int arg0, - Bundle arg1) { - return new CursorLoader(getActivity(), - TaskList.URI, - TaskList.Columns.FIELDS, null, null, TaskList.Columns.TITLE); - } - - @Override - public void onLoadFinished(Loader arg0, Cursor c) { - adapter.swapCursor(c); - } - - @Override - public void onLoaderReset(Loader arg0) { - adapter.swapCursor(null); - } - }); - } - - @Click(resName="dialog_no") - void cancelClicked() { - dismiss(); - } - - @Click(resName="dialog_yes") - void okClicked() { - Toast.makeText(getActivity(), R.string.saved, Toast.LENGTH_SHORT) - .show(); - - // TODO do something - if (listener != null) { - listener.onListSelected(listSpinner.getSelectedItemId()); - } - - this.dismiss(); - } -} diff --git a/app/src/main/java/com/nononsenseapps/notepad/fragments/FragmentSearchDeleted.java b/app/src/main/java/com/nononsenseapps/notepad/fragments/FragmentSearchDeleted.java deleted file mode 100644 index 4b3c00ee9..000000000 --- a/app/src/main/java/com/nononsenseapps/notepad/fragments/FragmentSearchDeleted.java +++ /dev/null @@ -1,279 +0,0 @@ -/* - * Copyright (c) 2015 Jonas Kalderstam. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nononsenseapps.notepad.fragments; - -import android.content.SharedPreferences; -import android.database.Cursor; -import android.net.Uri; -import android.os.Bundle; -import android.preference.PreferenceManager; -import android.support.v4.widget.SimpleCursorAdapter; -import android.support.v4.widget.SimpleCursorAdapter.ViewBinder; -import android.view.ActionMode; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.View; -import android.widget.AbsListView.MultiChoiceModeListener; -import android.widget.AdapterView; -import android.widget.AdapterView.OnItemClickListener; -import android.widget.ListView; -import android.widget.Toast; - -import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.DAO; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.fragments.DialogConfirmBase.DialogConfirmedListener; -import com.nononsenseapps.notepad.fragments.DialogRestore.OnListSelectedListener; -import com.nononsenseapps.utils.views.TitleNoteTextView; - -import org.androidannotations.annotations.AfterViews; -import org.androidannotations.annotations.Background; -import org.androidannotations.annotations.EFragment; -import org.androidannotations.annotations.UiThread; - -import java.util.HashSet; - -@EFragment(resName="fragment_search") -public class FragmentSearchDeleted extends FragmentSearch { - - @AfterViews - void setSelection() { - list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); - list.setMultiChoiceModeListener(new MultiChoiceModeListener() { - - HashSet selectedItems = new HashSet(); - - @Override - public boolean onCreateActionMode(ActionMode mode, Menu menu) { - final MenuInflater inflater = getActivity().getMenuInflater(); - inflater.inflate(R.menu.activity_deleted_context, menu); - return true; - } - - @Override - public boolean onPrepareActionMode(ActionMode mode, Menu menu) { - return false; - } - - @Override - public boolean onActionItemClicked(final ActionMode mode, - final MenuItem item) { - int itemId = item.getItemId(); - if (itemId == R.id.menu_restore) { - DialogRestore d = DialogRestore.getInstance(); - d.setListener(new OnListSelectedListener() { - @Override - public void onListSelected(long listId) { - if (listId > 0) { - restoreSelected(mode, listId); - } - } - }); - d.show(getFragmentManager(), "listselect"); - return true; - } else if (itemId == R.id.menu_delete) { - DialogDeleteTask.showDialog(getFragmentManager(), -1, - new DialogConfirmedListener() { - @Override - public void onConfirm() { - deleteSelected(mode); - } - }); - return true; - } - return false; - } - - @Override - public void onDestroyActionMode(ActionMode mode) { - selectedItems.clear(); - } - - String[] getIdArray() { - final String[] result = new String[selectedItems.size()]; - int i = 0; - for (final long id : selectedItems) { - result[i] = Long.toString(id); - i++; - } - return result; - } - - @Background - void deleteSelected(final ActionMode mode) { - getActivity().getContentResolver().delete( - Task.URI_DELETED_QUERY, - Task.Columns._ID + " IN (" - + DAO.arrayToCommaString(getIdArray()) + ")", - null); - selectedItems.clear(); - mode.finish(); - } - - @Background - void restoreSelected(final ActionMode mode, final long listId) { - for (final Long id : selectedItems) { - final int pos = getPosOfId(id); - if (pos > -1) { - final Cursor c = (Cursor) list.getItemAtPosition(pos); - - // restore task - final Task t = new Task(); - t.dblist = listId; - t.title = c.getString(1); - t.note = c.getString(2); - t.completed = c.isNull(3) ? null : c.getLong(3); - t.due = c.isNull(4) ? null : c.getLong(4); - t.save(getActivity()); - } - } - notifySuccess(); - deleteSelected(mode); - } - - int getPosOfId(final long id) { - int length = list.getCount(); - int position; - boolean found = false; - for (position = 0; position < length; position++) { - if (id == list.getItemIdAtPosition(position)) { - found = true; - break; - } - } - if (!found) { - // Happens both if list is empty - // and if id is -1 - position = -1; - } - return position; - } - - @UiThread - void notifySuccess() { - Toast.makeText(getActivity(), R.string.saved, - Toast.LENGTH_SHORT).show(); - } - - @Override - public void onItemCheckedStateChanged(ActionMode mode, - int position, long id, boolean checked) { - if (checked) { - selectedItems.add(id); - } - else { - selectedItems.remove(id); - } - } - }); - } - - // @Override - // public boolean onCreateOptionsMenu(Menu menu) { - // return super.onCreateOptionsMenu(menu); - // } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } - - @Override - protected Uri getSearchUri() { - return Task.URI_DELETED_QUERY; - } - - @Override - protected String[] getFields() { - return Task.Columns.DELETEFIELDS; - } - - @Override - protected String getSortOrder() { - return Task.Columns.TRIG_DELETED + " DESC"; - } - - @Override - protected SimpleCursorAdapter getAdapter() { - return new SimpleCursorAdapter(getActivity(), - R.layout.tasklist_item_rich, null, new String[] { - Task.Columns.TITLE, Task.Columns.NOTE, - Task.Columns.DUE, Task.Columns.COMPLETED, - Task.Columns.TRIG_DELETED, Task.Columns.TRIG_DELETED }, - new int[] { android.R.id.text1, android.R.id.text1, R.id.date, - R.id.checkbox, R.id.drag_handle, R.id.dragpadding }, 0); - } - - @Override - protected OnItemClickListener getOnItemClickListener() { - return new OnItemClickListener() { - @Override - public void onItemClick(AdapterView arg0, View origin, int pos, - long id) { - list.setItemChecked(pos, true); - } - }; - } - - @Override - protected ViewBinder getViewBinder() { - // Get the global list settings - final SharedPreferences prefs = PreferenceManager - .getDefaultSharedPreferences(getActivity()); - - // Load pref for item height - final int rowCount = 3; - - return new ViewBinder() { - String sTemp = ""; - - @Override - public boolean setViewValue(View view, Cursor c, int colIndex) { - switch (colIndex) { - // Matches order in Task.Columns.Fields - case 1: - // Title - sTemp = c.getString(colIndex); - - // Set height of text for non-headers - if (rowCount == 1) { - ((TitleNoteTextView) view).setSingleLine(true); - } - else { - ((TitleNoteTextView) view).setSingleLine(false); - ((TitleNoteTextView) view).setMaxLines(rowCount); - } - - // Change color based on complete status - ((TitleNoteTextView) view).useSecondaryColor(!c.isNull(3)); - - ((TitleNoteTextView) view).setTextTitle(sTemp); - return true; - case 2: - // Note - ((TitleNoteTextView) view).setTextRest(""); - return true; - default: - view.setVisibility(View.GONE); - return true; - } - } - }; - } -} diff --git a/app/src/main/java/com/nononsenseapps/notepad/fragments/TaskListViewPagerFragment.java b/app/src/main/java/com/nononsenseapps/notepad/fragments/TaskListViewPagerFragment.java deleted file mode 100644 index fd9e963b8..000000000 --- a/app/src/main/java/com/nononsenseapps/notepad/fragments/TaskListViewPagerFragment.java +++ /dev/null @@ -1,515 +0,0 @@ -/* - * Copyright (c) 2015 Jonas Kalderstam. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nononsenseapps.notepad.fragments; - -import org.androidannotations.annotations.AfterViews; -import org.androidannotations.annotations.EFragment; -import org.androidannotations.annotations.SystemService; -import org.androidannotations.annotations.ViewById; - -import com.nononsenseapps.notepad.ActivityMain.ListOpener; -import com.nononsenseapps.notepad.ActivitySearchDeleted_; -import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.TaskList; -import com.nononsenseapps.notepad.fragments.DialogEditList.EditListDialogListener; -import com.nononsenseapps.notepad.interfaces.MenuStateController; - -import com.nononsenseapps.utils.ViewsHelper; - -import android.app.SearchManager; -import android.content.Context; -import android.content.Intent; -import android.content.SharedPreferences; -import android.content.SharedPreferences.OnSharedPreferenceChangeListener; -import android.database.Cursor; -import android.database.DataSetObserver; -import android.os.Bundle; -import android.preference.PreferenceManager; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentPagerAdapter; -import android.support.v4.app.LoaderManager.LoaderCallbacks; -import android.support.v4.content.CursorLoader; -import android.support.v4.content.Loader; -import android.support.v4.view.ViewPager; -import android.support.v4.widget.CursorAdapter; -import android.support.v4.widget.SimpleCursorAdapter; -import android.util.Log; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.widget.SearchView; - -/** - * Displays many listfragments across a viewpager. Supports selecting a certain - * one on startup. - * - */ -@EFragment(resName="fragment_tasklist_viewpager") -public class TaskListViewPagerFragment extends Fragment implements - EditListDialogListener, ListOpener { - - public static final String START_LIST_ID = "start_list_id"; - - @ViewById(resName="pager") - ViewPager pager; - - @SystemService - SearchManager searchManager; - - private SectionsPagerAdapter mSectionsPagerAdapter; - SimpleCursorAdapter mTaskListsAdapter; - - // boolean firstLoad = true; - - private long mListIdToSelect = -1; - - private LoaderCallbacks loaderCallbacks; - - public static TaskListViewPagerFragment getInstance() { - return getInstance(-1); - } - - public static TaskListViewPagerFragment getInstance(final long startListId) { - TaskListViewPagerFragment_ f = new TaskListViewPagerFragment_(); - Bundle args = new Bundle(); - args.putLong(START_LIST_ID, startListId); - f.setArguments(args); - return f; - } - - public TaskListViewPagerFragment() { - super(); - } - - public SectionsPagerAdapter getSectionsPagerAdapter() { - return mSectionsPagerAdapter; - } - - @Override - public void onCreate(Bundle savedState) { - super.onCreate(savedState); - setHasOptionsMenu(true); - - mListIdToSelect = getArguments().getLong(START_LIST_ID, -1); - Log.d("nononsenseapps list", "onCreate: " + savedState); - if (savedState != null) { - mListIdToSelect = savedState.getLong(START_LIST_ID); - } - - // Adapter for list titles and ids - mTaskListsAdapter = new SimpleCursorAdapter(getActivity(), - android.R.layout.simple_dropdown_item_1line, null, - new String[] { TaskList.Columns.TITLE }, - new int[] { android.R.id.text1 }, 0); - // Adapter for view pager - mSectionsPagerAdapter = new SectionsPagerAdapter( - getChildFragmentManager(), mTaskListsAdapter); - } - - @Override - public void onActivityCreated(final Bundle state) { - super.onActivityCreated(state); - - loaderCallbacks = new LoaderCallbacks() { - - @Override - public Loader onCreateLoader(int arg0, Bundle arg1) { - return new CursorLoader(getActivity(), TaskList.URI, - new String[] { TaskList.Columns._ID, - TaskList.Columns.TITLE }, null, null, - getResources().getString(R.string.const_as_alphabetic, - TaskList.Columns.TITLE)); - } - - @Override - public void onLoadFinished(Loader arg0, Cursor c) { - mTaskListsAdapter.swapCursor(c); - final int pos; - if (mListIdToSelect != -1) { - pos = mSectionsPagerAdapter - .getItemPosition(mListIdToSelect); - } - else { - pos = -1; - } - if (pos >= 0) { - pager.setCurrentItem(pos); - mListIdToSelect = -1; - } - } - - @Override - public void onLoaderReset(Loader arg0) { - mTaskListsAdapter.swapCursor(null); - } - }; - - // Load actual data - getLoaderManager().restartLoader(0, null, loaderCallbacks); - } - - @AfterViews - void setAdapter() { - // Set space between fragments - pager.setPageMargin(ViewsHelper.convertDip2Pixels(getActivity(), 16)); - // Set adapters - pager.setAdapter(mSectionsPagerAdapter); - - } - - @Override - public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { - inflater.inflate(R.menu.fragment_tasklists_viewpager, menu); - - if (menu.findItem(R.id.menu_search) != null) { - SearchView searchView = (SearchView) menu - .findItem(R.id.menu_search).getActionView(); - // Assumes current activity is the searchable activity - searchView.setSearchableInfo(searchManager - .getSearchableInfo(getActivity().getComponentName())); - // searchView.setIconifiedByDefault(false); // Do not iconify the - // widget; expand it by default - searchView.setQueryRefinementEnabled(true); - searchView.setSubmitButtonEnabled(false); - } - } - - @Override - public void onPrepareOptionsMenu(Menu menu) { - if (getActivity() instanceof MenuStateController) { - final boolean visible = ((MenuStateController) getActivity()) - .childItemsVisible(); - - menu.setGroupVisible(R.id.viewpager_menu_group, visible); - // Outside group to allow for action bar placement - if (menu.findItem(R.id.menu_search) != null) - menu.findItem(R.id.menu_search).setVisible(visible); - if (menu.findItem(R.id.menu_sync) != null) - menu.findItem(R.id.menu_sync).setVisible(visible); - // if (menu.findItem(R.id.menu_createlist) != null) - // menu.findItem(R.id.menu_createlist).setVisible(visible); - } - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - int itemId = item.getItemId(); - if (itemId == R.id.menu_search) { - // Always visible, but do this if not visible - // getActivity().onSearchRequested(); - return true; - } else if (itemId == R.id.menu_deletedtasks) { - startActivity(new Intent(getActivity(), - ActivitySearchDeleted_.class)); - return true; - } else { - return false; - } - } - - @Override - public void onFinishEditDialog(final long id) { - openList(id); - } - - @Override - public void openList(final long id) { - // If it fails, will load on refresh - mListIdToSelect = id; - Log.d("nononsenseapps list", "openList: " + mListIdToSelect); - if (mSectionsPagerAdapter != null) { - - final int pos; - if (id < 1) - pos = 0; - else - pos = mSectionsPagerAdapter.getItemPosition(id); - - if (pos > -1) { - pager.setCurrentItem(pos, true); - mListIdToSelect = -1; - } - } - } - - @Override - public void onSaveInstanceState(Bundle outState) { - super.onSaveInstanceState(outState); - if (mTaskListsAdapter != null && pager != null) { - outState.putLong(START_LIST_ID, - mTaskListsAdapter.getItemId(pager.getCurrentItem())); - Log.d("nononsenseapps list", - "Save state: " - + mTaskListsAdapter.getItemId(pager - .getCurrentItem())); - } - } - - @Override - public void onResume() { - super.onResume(); - } - - @Override - public void onDestroy() { - if (mSectionsPagerAdapter != null) { - mSectionsPagerAdapter.destroy(); - } - getLoaderManager().destroyLoader(0); - - super.onDestroy(); - } - - /** - * If temp list is > 0, returns it. Else, checks if a default list is set - * then returns that. If none set, then returns first (alphabetical) list - * Returns -1 if no lists in database. - * - * Guarantees default list is valid - */ - public static long getARealList(final Context context, final long tempList) { - long returnList = tempList; - - if (returnList == -1) { - // Then check if a default list is specified - SharedPreferences prefs = PreferenceManager - .getDefaultSharedPreferences(context); - returnList = Long.parseLong(prefs.getString(context - .getString(R.string.pref_defaultlist), "-1")); - } - - if (returnList > 0) { - // See if it exists - final Cursor c = context.getContentResolver().query(TaskList.URI, - TaskList.Columns.FIELDS, TaskList.Columns._ID + " IS ?", - new String[] { Long.toString(returnList) }, null); - if (c.moveToFirst()) { - returnList = c.getLong(0); - } - else { - returnList = -1; - } - c.close(); - } - - if (returnList == -1) { - // Fetch a valid list from database if previous attempts are invalid - final Cursor c = context.getContentResolver().query( - TaskList.URI, - TaskList.Columns.FIELDS, - null, - null, - context.getResources().getString( - R.string.const_as_alphabetic, - TaskList.Columns.TITLE)); - if (c.moveToFirst()) { - returnList = c.getLong(0); - } - c.close(); - } - - return returnList; - } - - /** - * Might be a meta list - */ - public static long getAShowList(final Context context, final long tempList) { - long returnList = tempList; - - if (returnList == -1) { - // Then check if a default list is specified - SharedPreferences prefs = PreferenceManager - .getDefaultSharedPreferences(context); - returnList = prefs - .getLong( - context.getString(R.string.pref_defaultstartlist), - Long.parseLong(prefs.getString(context - .getString(R.string.pref_defaultlist), "-1"))); - } - - if (returnList == -1) { - returnList = getARealList(context, returnList); - } - - // If nothing was found, show ALL - if (returnList == -1) { - returnList = TaskListFragment.LIST_ID_ALL; - } - - return returnList; - } - - public class SectionsPagerAdapter extends FragmentPagerAdapter { - - private final CursorAdapter wrappedAdapter; - private final DataSetObserver subObserver; - private final OnSharedPreferenceChangeListener prefListener; - - private long all_id = -2; - - public SectionsPagerAdapter(final FragmentManager fm, - final CursorAdapter wrappedAdapter) { - super(fm); - this.wrappedAdapter = wrappedAdapter; - - subObserver = new DataSetObserver() { - @Override - public void onChanged() { - notifyDataSetChanged(); - } - - @Override - public void onInvalidated() { - // Probably destroying the loader - } - }; - - if (wrappedAdapter != null) - wrappedAdapter.registerDataSetObserver(subObserver); - - // also monitor changes of all tasks choice - final SharedPreferences prefs = PreferenceManager - .getDefaultSharedPreferences(getActivity()); - - prefListener = new OnSharedPreferenceChangeListener() { - - @Override - public void onSharedPreferenceChanged( - SharedPreferences sharedPreferences, String key) { - if (TaskListFragment.LIST_ALL_ID_PREF_KEY.equals(key)) { - all_id = prefs.getLong( - TaskListFragment.LIST_ALL_ID_PREF_KEY, - TaskListFragment.LIST_ID_WEEK); - notifyDataSetChanged(); - } - } - }; - prefs.registerOnSharedPreferenceChangeListener(prefListener); - - // Set all value - all_id = prefs.getLong(TaskListFragment.LIST_ALL_ID_PREF_KEY, - TaskListFragment.LIST_ID_WEEK); - } - - public void destroy() { - if (wrappedAdapter != null) { - wrappedAdapter.unregisterDataSetObserver(subObserver); - } - if (prefListener != null) { - PreferenceManager.getDefaultSharedPreferences(getActivity()) - .unregisterOnSharedPreferenceChangeListener( - prefListener); - } - } - - @Override - public Fragment getItem(int pos) { - long id = getItemId(pos); - // if (id < 0) return null; - return TaskListFragment_.getInstance(id); - } - - @Override - public long getItemId(int position) { - long id = all_id; - if (wrappedAdapter != null && position > 0) { - Cursor c = (Cursor) wrappedAdapter.getItem(position - 1); - if (c != null && !c.isAfterLast() && !c.isBeforeFirst()) { - id = c.getLong(0); - } - } - return id; - } - - @Override - public int getCount() { - if (wrappedAdapter != null) - return 1 + wrappedAdapter.getCount(); - else - return 1; - } - - @Override - public CharSequence getPageTitle(int position) { - if (position >= getCount()) return null; - CharSequence title = ""; - - if (position == 0) { - switch ((int) all_id) { - case TaskListFragment.LIST_ID_OVERDUE: - title = getString(R.string.date_header_overdue); - break; - case TaskListFragment.LIST_ID_TODAY: - title = getString(R.string.date_header_today); - break; - case TaskListFragment.LIST_ID_WEEK: - title = getString(R.string.next_5_days); - break; - case TaskListFragment.LIST_ID_ALL: - default: - title = getString(R.string.all_tasks); - break; - } - } - else if (wrappedAdapter != null) { - Cursor c = (Cursor) wrappedAdapter.getItem(position - 1); - if (c != null && !c.isAfterLast() && !c.isBeforeFirst()) { - title = c.getString(1); - } - } - - return title; - } - - /** - * {@inheritDoc} - * - * Called when the host view is attempting to determine if an item's - * position has changed. Returns POSITION_UNCHANGED if the position of - * the given item has not changed or POSITION_NONE if the item is no - * longer present in the adapter. - * - * Argument is the object previously returned by instantiateItem - */ - @Override - public int getItemPosition(Object object) { - Fragment f = (Fragment) object; - long listId = f.getArguments().getLong(TaskListFragment.LIST_ID); - return getItemPosition(listId); - } - - /** - * Returns a negative number if id wasn't found in adapter - */ - public int getItemPosition(final long listId) { - int length = getCount(); - int result = POSITION_NONE; - int position; - for (position = 0; position < length; position++) { - if (listId == getItemId(position)) { - result = position; - break; - } - } - - return result; - } - } -} diff --git a/app/src/main/java/com/nononsenseapps/notepad/interfaces/OnModalDeleteListener.java b/app/src/main/java/com/nononsenseapps/notepad/interfaces/OnModalDeleteListener.java deleted file mode 100644 index 7a16885ce..000000000 --- a/app/src/main/java/com/nononsenseapps/notepad/interfaces/OnModalDeleteListener.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 2015 Jonas Kalderstam. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nononsenseapps.notepad.interfaces; - -import java.util.Collection; - -public interface OnModalDeleteListener { - public void onModalDelete(Collection positions); -} diff --git a/app/src/main/java/com/nononsenseapps/notepad/legacy/Backup.java b/app/src/main/java/com/nononsenseapps/notepad/legacy/Backup.java deleted file mode 100644 index c27ea4d83..000000000 --- a/app/src/main/java/com/nononsenseapps/notepad/legacy/Backup.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) 2015 Jonas Kalderstam. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nononsenseapps.notepad.legacy; - -import android.content.Context; -import android.os.AsyncTask; -import android.support.annotation.NonNull; -import android.widget.Toast; - -import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.sync.files.JSONBackup; - -import java.io.FileNotFoundException; - -/** - * Legacy backup importer. - */ -public class Backup { - - public static void importLegacyBackup(@NonNull Context context) { - - JSONBackup backupMaker = new JSONBackup(context); - - } - - private class RestoreBackupTask extends AsyncTask { - private final Context context; - private final JSONBackup backupMaker; - - /** - * Creates a new asynchronous task. This constructor must be invoked on the UI thread. - */ - public RestoreBackupTask(@NonNull Context context, @NonNull JSONBackup backupMaker) { - super(); - this.context = context; - this.backupMaker = backupMaker; - } - - protected Integer doInBackground(Void... params) { - try { - backupMaker.restoreBackup(); - return 0; - } catch (FileNotFoundException e) { - return 1; - } catch (Exception e) { - return 2; - } - } - - protected void onPostExecute(final Integer result) { - switch (result) { - case 0: - Toast.makeText(context, R.string.backup_import_success, Toast.LENGTH_SHORT) - .show(); - break; - case 1: - Toast.makeText(context, R.string.backup_file_not_found, Toast.LENGTH_SHORT) - .show(); - break; - case 2: - Toast.makeText(context, R.string.backup_import_failed, Toast.LENGTH_SHORT) - .show(); - break; - } - } - } - -} diff --git a/app/src/main/java/com/nononsenseapps/notepad/legacy/DonateMigrator.java b/app/src/main/java/com/nononsenseapps/notepad/legacy/DonateMigrator.java deleted file mode 100644 index 58217d6b3..000000000 --- a/app/src/main/java/com/nononsenseapps/notepad/legacy/DonateMigrator.java +++ /dev/null @@ -1,283 +0,0 @@ -/* - * Copyright (c) 2015 Jonas Kalderstam. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nononsenseapps.notepad.legacy; - -import java.text.ParseException; -import java.util.HashMap; - -import org.androidannotations.annotations.EService; -import org.androidannotations.annotations.UiThread; -import com.nononsenseapps.notepad.ActivityMain; -import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.MyContentProvider; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.database.TaskList; -import com.nononsenseapps.notepad.database.LegacyDBHelper.NotePad; -import com.nononsenseapps.notepad.fragments.DialogConfirmBase; -import com.nononsenseapps.notepad.sync.googleapi.GoogleTask; -import com.nononsenseapps.notepad.sync.googleapi.GoogleTaskList; -import com.nononsenseapps.utils.time.RFC3339Date; - -import android.app.IntentService; -import android.app.Service; -import android.content.Context; -import android.content.Intent; -import android.database.Cursor; -import android.net.Uri; -import android.os.IBinder; -import android.preference.PreferenceManager; -import android.util.Log; -import android.widget.Toast; - -@EService -public class DonateMigrator extends IntentService { - - public static final String PREFS_ALREADY_IMPORTED = "already_imported_donate_data"; - static final String DONATE_AUTHORITY = "com.nononsenseapps.donate.NotePad"; - static final Uri BASEURI = Uri.parse(MyContentProvider.SCHEME - + DONATE_AUTHORITY); - static final String PATH_NOTES = "notes"; - static final String PATH_LISTS = "lists"; - static final String PATH_GTASKS = "gtasks"; - static final String PATH_GTASKLISTS = "gtasklists"; - - static final String[] NOTEPROJECTION = new String[] { NotePad.Notes._ID, - NotePad.Notes.COLUMN_NAME_TITLE, NotePad.Notes.COLUMN_NAME_NOTE, - NotePad.Notes.COLUMN_NAME_DUE_DATE, - NotePad.Notes.COLUMN_NAME_GTASKS_STATUS, - NotePad.Notes.COLUMN_NAME_LIST, - NotePad.Notes.COLUMN_NAME_MODIFICATION_DATE }; - static final String[] GTASKPROJECTION = new String[] { NotePad.GTasks._ID, - NotePad.GTasks.COLUMN_NAME_GTASKS_ID, - NotePad.GTasks.COLUMN_NAME_GOOGLE_ACCOUNT, - NotePad.GTasks.COLUMN_NAME_DB_ID }; - - static final String[] LISTPROJECTION = new String[] { NotePad.Lists._ID, - NotePad.Lists.COLUMN_NAME_TITLE }; - static final String[] GTASKLISTPROJECTION = new String[] { - NotePad.GTaskLists._ID, NotePad.GTaskLists.COLUMN_NAME_GTASKS_ID, - NotePad.GTaskLists.COLUMN_NAME_GOOGLE_ACCOUNT, - NotePad.GTaskLists.COLUMN_NAME_DB_ID }; - - int mNotesImportedCount = 0; - int mListsImportedCount = 0; - String mError = null; - - public DonateMigrator() { - super("DonateMigrateService"); - } - - @Override - protected void onHandleIntent(Intent intent) { - // This app does only one thing - if (hasImported(this)) { - return; - } - - reportStarting(); - importNotes(); - if (mError != null) { - reportFailure(mError); - } - else { - PreferenceManager.getDefaultSharedPreferences(this).edit() - .putBoolean(PREFS_ALREADY_IMPORTED, true).commit(); - reportCompleteStatus(mNotesImportedCount, mListsImportedCount); - askIfUninstall(); - } - } - - public static boolean hasImported(final Context context) { - return PreferenceManager.getDefaultSharedPreferences(context) - .getBoolean(PREFS_ALREADY_IMPORTED, false); - } - - /** - * Copies data from the donate app's database to this app's database. Result - * is updated in fields. - */ - void importNotes() { - final HashMap listIDMap = new HashMap(); - final HashMap taskIDMap = new HashMap(); - - // Work through, list by list - final Cursor listCursor = getContentResolver().query( - Uri.withAppendedPath(BASEURI, PATH_LISTS), LISTPROJECTION, - NotePad.Lists.COLUMN_NAME_DELETED + " IS NOT 1", null, - NotePad.Lists.COLUMN_NAME_TITLE); - try { - while (listCursor.moveToNext()) { - TaskList tl = new TaskList(); - tl.title = listCursor.getString(1); - if (tl.save(this) > 0) { - listIDMap.put(listCursor.getLong(0), tl._id); - mListsImportedCount += 1; - } - // Gtasklist - final Cursor gtasklistCursor = getContentResolver().query( - Uri.withAppendedPath(BASEURI, PATH_GTASKLISTS), - GTASKLISTPROJECTION, - NotePad.GTaskLists.COLUMN_NAME_DB_ID + " IS ?", - new String[] { Long.toString(listCursor.getLong(0)) }, - null); - try { - if (gtasklistCursor.moveToFirst()) { - GoogleTaskList gl = new GoogleTaskList(tl, - gtasklistCursor.getString(2)); - gl.remoteId = gtasklistCursor.getString(1); - gl.updated = tl.updated; - gl.save(this); - } - } - catch (Exception e) { - mError = e.getLocalizedMessage(); - return; - } - finally { - if (gtasklistCursor != null) gtasklistCursor.close(); - } - } - } - catch (Exception e) { - mError = e.getLocalizedMessage(); - return; - } - finally { - if (listCursor != null) listCursor.close(); - } - - final Cursor noteCursor = getContentResolver().query( - Uri.withAppendedPath(BASEURI, PATH_NOTES), - NOTEPROJECTION, - NotePad.Notes.COLUMN_NAME_DELETED + " IS NOT 1 AND " - + NotePad.Notes.COLUMN_NAME_HIDDEN + " IS NOT 1", null, - NotePad.Notes.COLUMN_NAME_POSSUBSORT); - try { - while (noteCursor.moveToNext()) { - Task t = new Task(); - t.title = noteCursor.getString(1); - t.note = noteCursor.getString(2); - - if (t.note.contains("[locked]")) { - t.locked = true; - t.note = t.note.replace("[locked]", ""); - } - - try { - t.due = RFC3339Date.parseRFC3339Date( - noteCursor.getString(3)).getTime(); - } - catch (Exception e) { - } - - // completed must be converted - if (noteCursor.getString(4) != null - && "completed".equals(noteCursor.getString(4))) { - t.setAsCompleted(); - } - t.dblist = listIDMap.get(noteCursor.getLong(5)); - - t.updated = noteCursor.getLong(6); - - if (t.dblist != null) { - t.save(this, t.updated); - taskIDMap.put(noteCursor.getLong(0), t._id); - mNotesImportedCount += 1; - } - // Gtask - final Cursor gtaskCursor = getContentResolver().query( - Uri.withAppendedPath(BASEURI, PATH_GTASKS), - GTASKPROJECTION, - NotePad.GTasks.COLUMN_NAME_DB_ID + " IS ?", - new String[] { Long.toString(noteCursor.getLong(0)) }, - null); - try { - if (gtaskCursor.moveToFirst()) { - GoogleTask gt = new GoogleTask(t, - gtaskCursor.getString(2)); - gt.remoteId = gtaskCursor.getString(1); - gt.updated = t.updated; - gt.save(this); - } - } - catch (Exception e) { - mError = e.getLocalizedMessage(); - return; - } - finally { - if (gtaskCursor != null) gtaskCursor.close(); - } - } - } - catch (Exception e) { - mError = e.getLocalizedMessage(); - return; - } - finally { - if (noteCursor != null) noteCursor.close(); - } - } - - /** - * Tell the user how much was imported and ask if he wants to uninstall the - * app now. - */ - @UiThread - void reportCompleteStatus(final int noteCount, final int listCount) { - try { - Toast.makeText(this, - getString(R.string.imported_result, noteCount, listCount), - Toast.LENGTH_LONG).show(); - } - catch (Exception e) { - // In case of bad translations - } - } - - @UiThread - void reportFailure(final String errorMessage) { - try { - Log.d("nononsenseapps migrate", errorMessage); - Toast.makeText(this, - getString(R.string.import_error, errorMessage), - Toast.LENGTH_LONG).show(); - } - catch (Exception e) { - // In case of bad translations - } - } - - @UiThread - void reportStarting() { - try { - Toast.makeText(this, getString(R.string.import_started), - Toast.LENGTH_SHORT).show(); - } - catch (Exception e) { - // In case of bad translations - } - } - - void askIfUninstall() { - Uri packageURI = Uri.parse("package:com.nononsenseapps.notepad_donate"); - Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI); - // Need this flag since this is a service - uninstallIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - startActivity(uninstallIntent); - } -} diff --git a/app/src/main/java/com/nononsenseapps/notepad/ui/SortingSpinnerAdapter.java b/app/src/main/java/com/nononsenseapps/notepad/ui/SortingSpinnerAdapter.java deleted file mode 100644 index 41cd066e5..000000000 --- a/app/src/main/java/com/nononsenseapps/notepad/ui/SortingSpinnerAdapter.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright (c) 2015. Jonas Kalderstam - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nononsenseapps.notepad.ui; - -import android.content.Context; -import android.content.res.Resources; -import android.database.DataSetObserver; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v7.widget.ThemedSpinnerAdapter; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import com.nononsenseapps.notepad.R; - -/** - * Adapter which holds the sorting options. - */ -public class SortingSpinnerAdapter implements ThemedSpinnerAdapter { - public static final int VIEWTYPE_COUNT = 1; - public static final int VIEWTYPE_SORT_OPTION = 1; - private final Helper mHelper; - private final Context mContext; - private final String[] mKeys; - private final String[] mValues; - private final int mLength; - - public SortingSpinnerAdapter(@NonNull Context context) { - this.mContext = context; - this.mHelper = new Helper(context); - this.mKeys = context.getResources().getStringArray(R.array.sorting_preference); - this.mValues = context.getResources().getStringArray(R.array.sortingvalues_preference); - - // Just a safeguard against non-aligned lengths - this.mLength = Math.min(mKeys.length, mValues.length); - } - - @Override - public void setDropDownViewTheme(Resources.Theme theme) { - mHelper.setDropDownViewTheme(theme); - } - - @Nullable - @Override - public Resources.Theme getDropDownViewTheme() { - return mHelper.getDropDownViewTheme(); - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - if (convertView == null) { - convertView = inflateView(position, parent); - } - bindView(position, convertView); - return convertView; - } - - private void bindView(int position, View convertView) { - ((TextView) convertView.findViewById(android.R.id.text1)).setText(getItem(position)); - } - - private View inflateView(int position, ViewGroup parent) { - return mHelper.getDropDownViewInflater().inflate(android.R.layout - .simple_spinner_dropdown_item, parent, false); - } - - @Override - public View getDropDownView(int position, View convertView, ViewGroup parent) { - return getView(position, convertView, parent); - } - - @Override - public void registerDataSetObserver(DataSetObserver observer) { - } - - @Override - public void unregisterDataSetObserver(DataSetObserver observer) { - } - - @Override - public int getCount() { - return mLength; - } - - @Override - public String getItem(int position) { - return mValues[position]; - } - - @Override - public long getItemId(int position) { - return position; - } - - @Override - public boolean hasStableIds() { - return true; - } - - @Override - public int getItemViewType(int position) { - return VIEWTYPE_SORT_OPTION; - } - - @Override - public int getViewTypeCount() { - return VIEWTYPE_COUNT; - } - - @Override - public boolean isEmpty() { - return mLength == 0; - } -} diff --git a/app/src/main/java/com/nononsenseapps/notepad/activities/ActivityBase.java b/app/src/main/java/com/nononsenseapps/notepad/ui/base/ActivityBase.java similarity index 96% rename from app/src/main/java/com/nononsenseapps/notepad/activities/ActivityBase.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/base/ActivityBase.java index 1ede0cd9f..daeff4ef5 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/activities/ActivityBase.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/base/ActivityBase.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.activities; +package com.nononsenseapps.notepad.ui.base; import android.content.Intent; import android.content.SharedPreferences; @@ -24,7 +24,7 @@ import android.support.v7.app.AppCompatActivity; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.util.ActivityHelper; +import com.nononsenseapps.notepad.util.ActivityHelper; /** * A base activity which sets the user's configured language and theme. diff --git a/app/src/main/java/com/nononsenseapps/notepad/fragments/DialogConfirmBase.java b/app/src/main/java/com/nononsenseapps/notepad/ui/base/DialogConfirmBase.java similarity index 95% rename from app/src/main/java/com/nononsenseapps/notepad/fragments/DialogConfirmBase.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/base/DialogConfirmBase.java index 617dfef6c..d62ebc40b 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/fragments/DialogConfirmBase.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/base/DialogConfirmBase.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.fragments; +package com.nononsenseapps.notepad.ui.base; import android.app.Dialog; import android.content.DialogInterface; @@ -29,7 +29,7 @@ */ public abstract class DialogConfirmBase extends DialogFragment { - DialogConfirmedListener listener; + protected DialogConfirmedListener listener; public DialogConfirmBase() { } diff --git a/app/src/main/java/com/nononsenseapps/notepad/fragments/DialogConfirmBaseV11.java b/app/src/main/java/com/nononsenseapps/notepad/ui/base/DialogConfirmBaseV11.java similarity index 95% rename from app/src/main/java/com/nononsenseapps/notepad/fragments/DialogConfirmBaseV11.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/base/DialogConfirmBaseV11.java index 63705dd9e..e2babdd54 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/fragments/DialogConfirmBaseV11.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/base/DialogConfirmBaseV11.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.fragments; +package com.nononsenseapps.notepad.ui.base; import android.app.Dialog; import android.app.DialogFragment; @@ -29,7 +29,7 @@ */ public abstract class DialogConfirmBaseV11 extends DialogFragment { - DialogConfirmedListener listener; + protected DialogConfirmedListener listener; public DialogConfirmBaseV11() { } diff --git a/app/src/main/java/com/nononsenseapps/helpers/ActivityHelper.java b/app/src/main/java/com/nononsenseapps/notepad/ui/common/ActivityHelper.java similarity index 96% rename from app/src/main/java/com/nononsenseapps/helpers/ActivityHelper.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/common/ActivityHelper.java index dfcc71b36..0d3f0a26f 100644 --- a/app/src/main/java/com/nononsenseapps/helpers/ActivityHelper.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/common/ActivityHelper.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.helpers; +package com.nononsenseapps.notepad.ui.common; import android.app.Activity; import android.content.SharedPreferences; @@ -24,7 +24,7 @@ import android.preference.PreferenceManager; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.prefs.MainPrefs; +import com.nononsenseapps.notepad.ui.settings.MainPrefs; import java.util.Locale; diff --git a/app/src/main/java/com/nononsenseapps/ui/DateView.java b/app/src/main/java/com/nononsenseapps/notepad/ui/common/DateView.java similarity index 96% rename from app/src/main/java/com/nononsenseapps/ui/DateView.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/common/DateView.java index da41ab32c..f90d83ef2 100644 --- a/app/src/main/java/com/nononsenseapps/ui/DateView.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/common/DateView.java @@ -15,24 +15,22 @@ * along with this program. If not, see . */ -package com.nononsenseapps.ui; - -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.TimeZone; +package com.nononsenseapps.notepad.ui.common; import android.annotation.SuppressLint; import android.content.Context; -import android.content.SharedPreferences; -import android.preference.PreferenceManager; import android.text.format.DateFormat; import android.text.format.Time; import android.util.AttributeSet; import android.widget.TextView; -import com.nononsenseapps.helpers.TimeFormatter; import com.nononsenseapps.notepad.R; +import com.nononsenseapps.notepad.util.TimeFormatter; + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.TimeZone; /** * A simple textview that can display time. diff --git a/app/src/main/java/com/nononsenseapps/ui/DelegateFrame.java b/app/src/main/java/com/nononsenseapps/notepad/ui/common/DelegateFrame.java similarity index 96% rename from app/src/main/java/com/nononsenseapps/ui/DelegateFrame.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/common/DelegateFrame.java index 9eb610195..ecb259d3c 100644 --- a/app/src/main/java/com/nononsenseapps/ui/DelegateFrame.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/common/DelegateFrame.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.ui; +package com.nononsenseapps.notepad.ui.common; import android.content.Context; import android.content.res.TypedArray; @@ -32,7 +32,7 @@ * * Define it entirely in XML as the following example demonstrates: * - * . */ -package com.nononsenseapps.notepad.fragments; +package com.nononsenseapps.notepad.ui.common; import android.app.Dialog; import android.os.Bundle; diff --git a/app/src/main/java/com/nononsenseapps/notepad/fragments/DialogDeleteCompletedTasks.java b/app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogDeleteCompletedTasks.java similarity index 93% rename from app/src/main/java/com/nononsenseapps/notepad/fragments/DialogDeleteCompletedTasks.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogDeleteCompletedTasks.java index 28a6e5a97..4859d0df4 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/fragments/DialogDeleteCompletedTasks.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogDeleteCompletedTasks.java @@ -15,14 +15,15 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.fragments; +package com.nononsenseapps.notepad.ui.common; import android.os.Bundle; import android.support.v4.app.FragmentManager; import android.widget.Toast; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.Task; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.ui.list.TaskListFragment; public class DialogDeleteCompletedTasks extends DialogDeleteTask { public static void showDialog(final FragmentManager fm, final long listId, diff --git a/app/src/main/java/com/nononsenseapps/notepad/fragments/DialogDeleteList.java b/app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogDeleteList.java similarity index 91% rename from app/src/main/java/com/nononsenseapps/notepad/fragments/DialogDeleteList.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogDeleteList.java index 00c66e572..63ec43657 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/fragments/DialogDeleteList.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogDeleteList.java @@ -15,14 +15,15 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.fragments; +package com.nononsenseapps.notepad.ui.common; import android.os.Bundle; import android.support.v4.app.FragmentManager; import android.widget.Toast; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.TaskList; +import com.nononsenseapps.notepad.data.model.sql.TaskList; +import com.nononsenseapps.notepad.ui.base.DialogConfirmBase; public class DialogDeleteList extends DialogConfirmBase { static final String ID = "id"; diff --git a/app/src/main/java/com/nononsenseapps/notepad/fragments/DialogDeleteTask.java b/app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogDeleteTask.java similarity index 91% rename from app/src/main/java/com/nononsenseapps/notepad/fragments/DialogDeleteTask.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogDeleteTask.java index eade93010..e739d7792 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/fragments/DialogDeleteTask.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogDeleteTask.java @@ -15,14 +15,15 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.fragments; +package com.nononsenseapps.notepad.ui.common; import android.os.Bundle; import android.support.v4.app.FragmentManager; import android.widget.Toast; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.Task; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.ui.base.DialogConfirmBase; public class DialogDeleteTask extends DialogConfirmBase { static final String ID = "id"; diff --git a/app/src/main/java/com/nononsenseapps/notepad/fragments/DialogEditList.java b/app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogEditList.java similarity index 66% rename from app/src/main/java/com/nononsenseapps/notepad/fragments/DialogEditList.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogEditList.java index 0734310bb..9ecc8c008 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/fragments/DialogEditList.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogEditList.java @@ -15,50 +15,36 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.fragments; +package com.nononsenseapps.notepad.ui.common; import android.database.Cursor; +import android.databinding.DataBindingUtil; import android.os.Bundle; import android.preference.PreferenceManager; +import android.support.annotation.Nullable; import android.support.v4.app.DialogFragment; import android.support.v4.app.LoaderManager.LoaderCallbacks; import android.support.v4.content.CursorLoader; import android.support.v4.content.Loader; import android.text.Editable; +import android.text.TextWatcher; +import android.view.LayoutInflater; import android.view.View; -import android.widget.EditText; -import android.widget.Switch; -import android.widget.TextView; +import android.view.ViewGroup; import android.widget.Toast; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.TaskList; -import com.nononsenseapps.notepad.fragments.DialogConfirmBase.DialogConfirmedListener; - -import org.androidannotations.annotations.AfterTextChange; -import org.androidannotations.annotations.AfterViews; -import org.androidannotations.annotations.Click; -import org.androidannotations.annotations.EFragment; -import org.androidannotations.annotations.UiThread; -import org.androidannotations.annotations.UiThread.Propagation; -import org.androidannotations.annotations.ViewById; - -@EFragment(resName = "fragment_dialog_editlist") +import com.nononsenseapps.notepad.data.model.sql.TaskList; +import com.nononsenseapps.notepad.databinding.FragmentDialogEditlistBinding; +import com.nononsenseapps.notepad.ui.base.DialogConfirmBase.DialogConfirmedListener; + public class DialogEditList extends DialogFragment { static final String LIST_ID = "list_id"; - @ViewById(resName = "titleField") - EditText titleField; - @ViewById(resName = "defaultListBox") - Switch defaultListBox; - @ViewById(resName = "deleteButton") - View deleteButton; - @ViewById(resName = "dialog_yes") - View okButton; - @ViewById(resName = "dialog_no") - View cancelButton; + private TaskList mTaskList; private EditListDialogListener listener; + private FragmentDialogEditlistBinding binding; public DialogEditList() { } @@ -66,14 +52,14 @@ public DialogEditList() { /** * Use to create new list */ - public static DialogEditList_ getInstance() { - DialogEditList_ dialog = new DialogEditList_(); + public static DialogEditList getInstance() { + DialogEditList dialog = new DialogEditList(); dialog.setArguments(Bundle.EMPTY); return dialog; } - public static DialogEditList_ getInstance(final long listid) { - DialogEditList_ dialog = new DialogEditList_(); + public static DialogEditList getInstance(final long listid) { + DialogEditList dialog = new DialogEditList(); Bundle args = new Bundle(); args.putLong(LIST_ID, listid); dialog.setArguments(args); @@ -84,12 +70,24 @@ public void setListener(final EditListDialogListener listener) { this.listener = listener; } - @AfterViews + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + binding = DataBindingUtil.inflate(inflater, R.layout.fragment_dialog_editlist, container, true); + return binding.getRoot(); + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + setup(); + } + void setup() { // New item hides delete button and disables OK initially if (getArguments().getLong(LIST_ID, -1) < 1) { - deleteButton.setVisibility(View.GONE); - okButton.setEnabled(false); + binding.deleteButton.setVisibility(View.GONE); + binding.buttons.dialogYes.setEnabled(false); } if (getArguments().getLong(LIST_ID, -1) > 0) { @@ -121,26 +119,57 @@ public void onLoaderReset(Loader arg0) { getDialog().setTitle(R.string.menu_createlist); mTaskList = new TaskList(); } + + binding.titleField.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { + + } + + @Override + public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { + + } + + @Override + public void afterTextChanged(Editable editable) { + binding.buttons.dialogYes.setEnabled(editable.length() > 0); + } + }); + + binding.deleteButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + deleteClicked(); + } + }); + + binding.buttons.dialogNo.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + dismiss(); + } + }); + + binding.buttons.dialogYes.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + okClicked(); + } + }); } - @UiThread(propagation = Propagation.REUSE) void fillViews() { - titleField.setText(mTaskList.title); + binding.titleField.setText(mTaskList.title); // Check if this is the default list final long defList = Long.parseLong(PreferenceManager.getDefaultSharedPreferences (getActivity()).getString(getString(R.string.pref_defaultlist), "-1")); if (mTaskList._id > 0 && defList == mTaskList._id) { - defaultListBox.setChecked(true); + binding.defaultListBox.setChecked(true); } } - @AfterTextChange(resName = "titleField") - void titleChanged(Editable text, TextView v) { - okButton.setEnabled(text.length() > 0); - } - - @Click(resName = "deleteButton") void deleteClicked() { if (mTaskList._id > 0) { DialogDeleteList.showDialog(getFragmentManager(), mTaskList._id, new @@ -153,20 +182,14 @@ public void onConfirm() { } } - @Click(resName = "dialog_no") - void cancelClicked() { - dismiss(); - } - - @Click(resName = "dialog_yes") void okClicked() { Toast.makeText(getActivity(), R.string.saved, Toast.LENGTH_SHORT).show(); - mTaskList.title = titleField.getText().toString(); + mTaskList.title = binding.titleField.getText().toString(); mTaskList.save(getActivity()); - if (mTaskList._id > 0 && defaultListBox.isChecked()) { + if (mTaskList._id > 0 && binding.defaultListBox.isChecked()) { PreferenceManager.getDefaultSharedPreferences(getActivity()).edit().putLong(getString (R.string.pref_defaultstartlist), mTaskList._id).putString(getString(R.string .pref_defaultlist), Long.toString(mTaskList._id)).commit(); diff --git a/app/src/main/java/com/nononsenseapps/notepad/fragments/DialogExportBackup.java b/app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogExportBackup.java similarity index 89% rename from app/src/main/java/com/nononsenseapps/notepad/fragments/DialogExportBackup.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogExportBackup.java index e7f105dd5..1bfe4b379 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/fragments/DialogExportBackup.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogExportBackup.java @@ -15,15 +15,14 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.fragments; +package com.nononsenseapps.notepad.ui.common; import android.app.FragmentManager; import android.os.Bundle; -import android.widget.Toast; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.TaskList; -import com.nononsenseapps.notepad.sync.files.JSONBackup; +import com.nononsenseapps.notepad.data.local.json.JSONBackup; +import com.nononsenseapps.notepad.ui.base.DialogConfirmBaseV11; public class DialogExportBackup extends DialogConfirmBaseV11 { static final String ID = "id"; diff --git a/app/src/main/java/com/nononsenseapps/notepad/fragments/DialogGoogleAccount.java b/app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogGoogleAccount.java similarity index 97% rename from app/src/main/java/com/nononsenseapps/notepad/fragments/DialogGoogleAccount.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogGoogleAccount.java index 23671fc6c..bc8136a95 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/fragments/DialogGoogleAccount.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogGoogleAccount.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.fragments; +package com.nononsenseapps.notepad.ui.common; import android.accounts.Account; import android.accounts.AccountManager; @@ -31,7 +31,7 @@ import android.support.v7.app.AlertDialog; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.sync.googleapi.GoogleTasksClient; +import com.nononsenseapps.notepad.data.remote.gtasks.GoogleTasksClient; /** * Dialog which allows the user to select a Google account. Requests permission to handle tasks diff --git a/app/src/main/java/com/nononsenseapps/notepad/fragments/DialogMoveToList.java b/app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogMoveToList.java similarity index 73% rename from app/src/main/java/com/nononsenseapps/notepad/fragments/DialogMoveToList.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogMoveToList.java index 51c8bd8d7..705703598 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/fragments/DialogMoveToList.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogMoveToList.java @@ -15,34 +15,31 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.fragments; +package com.nononsenseapps.notepad.ui.common; import android.content.ContentValues; import android.database.Cursor; +import android.databinding.DataBindingUtil; import android.os.Bundle; +import android.support.annotation.Nullable; import android.support.v4.app.DialogFragment; import android.support.v4.app.LoaderManager.LoaderCallbacks; import android.support.v4.content.CursorLoader; import android.support.v4.content.Loader; import android.support.v4.widget.SimpleCursorAdapter; +import android.view.LayoutInflater; import android.view.View; +import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; -import android.widget.ListView; import android.widget.Toast; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.DAO; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.database.TaskList; +import com.nononsenseapps.notepad.data.model.sql.DAO; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.data.model.sql.TaskList; +import com.nononsenseapps.notepad.databinding.FragmentDialogMovetolistBinding; -import org.androidannotations.annotations.AfterViews; -import org.androidannotations.annotations.Background; -import org.androidannotations.annotations.Click; -import org.androidannotations.annotations.EFragment; -import org.androidannotations.annotations.ViewById; - -@EFragment(resName="fragment_dialog_movetolist") public class DialogMoveToList extends DialogFragment { // public interface EditListDialogListener { @@ -51,18 +48,10 @@ public class DialogMoveToList extends DialogFragment { static final String TASK_IDS = "task_ids"; - @ViewById(resName="listView") - ListView listView; - - @ViewById(resName="dialog_yes") - View okButton; - - @ViewById(resName="dialog_no") - View cancelButton; - private TaskList mTaskList; private long[] taskIds = null; + private FragmentDialogMovetolistBinding binding; // private EditListDialogListener listener; @@ -76,7 +65,7 @@ public static DialogMoveToList getInstance(final Long... tasks) { } public static DialogMoveToList getInstance(final long... taskIds) { - DialogMoveToList dialog = new DialogMoveToList_(); + DialogMoveToList dialog = new DialogMoveToList(); Bundle args = new Bundle(); args.putLongArray(TASK_IDS, taskIds); dialog.setArguments(args); @@ -87,11 +76,23 @@ public DialogMoveToList() { } + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + binding = DataBindingUtil.inflate(inflater, R.layout.fragment_dialog_movetolist, container, true); + return binding.getRoot(); + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + setup(); + } + // public void setListener(final EditListDialogListener listener) { // this.listener = listener; // } - @AfterViews void setup() { if (!getArguments().containsKey(TASK_IDS)) { dismiss(); @@ -105,7 +106,7 @@ void setup() { getDialog().setTitle(R.string.move_to); // Must select item first - okButton.setEnabled(false); + binding.buttons.dialogYes.setEnabled(false); // Adapter for list titles and ids final SimpleCursorAdapter adapter = new SimpleCursorAdapter( @@ -113,17 +114,31 @@ void setup() { null, new String[] { TaskList.Columns.TITLE }, new int[] { android.R.id.text1 }, 0); // Set it to the view - listView.setAdapter(adapter); + binding.listView.setAdapter(adapter); - listView.setOnItemClickListener(new OnItemClickListener() { + binding.listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView arg0, View arg1, int pos, long id) { - okButton.setEnabled(true); + binding.buttons.dialogYes.setEnabled(true); } }); + binding.buttons.dialogNo.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + dismiss(); + } + }); + + binding.buttons.dialogYes.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + okClicked(); + } + }); + // Load content getLoaderManager().restartLoader(0, null, new LoaderCallbacks() { @@ -149,9 +164,8 @@ public void onLoaderReset(Loader arg0) { }); } - @Background void moveItems(final long toListId, final long[] taskIds) { - + // TODO do in background // for (long id: taskIds) { // final Cursor c = // getActivity().getContentResolver().query(Task.getUri(id), @@ -182,19 +196,13 @@ void moveItems(final long toListId, final long[] taskIds) { getActivity().getContentResolver().update(Task.URI, val, whereId, null); } - @Click(resName="dialog_no") - void cancelClicked() { - dismiss(); - } - - @Click(resName="dialog_yes") void okClicked() { // move items - if (listView.getCheckedItemPosition() == listView.INVALID_POSITION) { + if (binding.listView.getCheckedItemPosition() == AdapterView.INVALID_POSITION) { return; } - final Cursor c = (Cursor) listView.getItemAtPosition(listView + final Cursor c = (Cursor) binding.listView.getItemAtPosition(binding.listView .getCheckedItemPosition()); if (c != null) { final long targetListId = c.getLong(0); diff --git a/app/src/main/java/com/nononsenseapps/notepad/fragments/DialogPassword.java b/app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogPassword.java similarity index 74% rename from app/src/main/java/com/nononsenseapps/notepad/fragments/DialogPassword.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogPassword.java index 41961dc2f..9e36db0dd 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/fragments/DialogPassword.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogPassword.java @@ -15,9 +15,10 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.fragments; +package com.nononsenseapps.notepad.ui.common; import android.content.SharedPreferences; +import android.databinding.DataBindingUtil; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v4.app.DialogFragment; @@ -28,30 +29,15 @@ import android.view.ViewGroup; import android.view.animation.Animation; import android.view.animation.AnimationUtils; -import android.widget.EditText; import android.widget.Toast; import com.nononsenseapps.notepad.R; +import com.nononsenseapps.notepad.databinding.FragmentDialogPasswordBinding; -import org.androidannotations.annotations.AfterViews; -import org.androidannotations.annotations.Click; -import org.androidannotations.annotations.EFragment; -import org.androidannotations.annotations.ViewById; - -@EFragment(resName="fragment_dialog_password") public class DialogPassword extends DialogFragment { - @ViewById(resName="passwordField") - EditText passwordField; - - @ViewById(resName="passwordVerificationField") - EditText passwordVerificationField; - - @ViewById(resName="dialog_yes") - View dialog_yes; - @ViewById(resName="dialog_no") - View dialog_no; PasswordConfirmedListener listener = null; + private FragmentDialogPasswordBinding binding; public void setListener(final PasswordConfirmedListener listener) { this.listener = listener; @@ -70,24 +56,30 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, else { getDialog().setTitle(R.string.password_required); } - // Let annotations deal with it - return null; + + binding = DataBindingUtil.inflate(inflater, R.layout.fragment_dialog_password, container, true); + return binding.getRoot(); + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + showField(); } - @AfterViews public void showField() { final SharedPreferences settings = PreferenceManager .getDefaultSharedPreferences(getActivity()); final String currentPassword = settings.getString( DialogPasswordSettings.KEY_PASSWORD, ""); if (currentPassword.isEmpty()) { - passwordVerificationField.setVisibility(View.VISIBLE); + binding.passwordVerificationField.setVisibility(View.VISIBLE); } else { - passwordVerificationField.setVisibility(View.GONE); + binding.passwordVerificationField.setVisibility(View.GONE); } - passwordField.addTextChangedListener(new TextWatcher() { + binding.passwordField.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @@ -98,24 +90,32 @@ public void onTextChanged(CharSequence s, int start, int before, int count) { @Override public void afterTextChanged(Editable s) { - dialog_yes.setEnabled(s.length() > 0); + binding.buttons.dialogYes.setEnabled(s.length() > 0); } }); - } - @Click(resName="dialog_no") - void cancel() { - dismiss(); + binding.buttons.dialogNo.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + dismiss(); + } + }); + + binding.buttons.dialogYes.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + confirm(); + } + }); } - @Click(resName="dialog_yes") void confirm() { final SharedPreferences settings = PreferenceManager .getDefaultSharedPreferences(getActivity()); final String currentPassword = settings.getString(DialogPasswordSettings.KEY_PASSWORD, ""); - final String enteredPassword = passwordField.getText().toString(); - final String verifiedPassword = passwordVerificationField.getText() + final String enteredPassword = binding.passwordField.getText().toString(); + final String verifiedPassword = binding.passwordVerificationField.getText() .toString(); if (currentPassword.isEmpty()) { @@ -139,7 +139,7 @@ private void checkPassword(final String enteredPassword, else { Animation shake = AnimationUtils.loadAnimation(getActivity(), R.anim.shake); - passwordField.startAnimation(shake); + binding.passwordField.startAnimation(shake); Toast.makeText(getActivity(), getText(R.string.password_incorrect), Toast.LENGTH_SHORT).show(); } @@ -157,7 +157,7 @@ private void setPassword(final String pass1, final String pass2) { else { Animation shake = AnimationUtils.loadAnimation(getActivity(), R.anim.shake); - passwordVerificationField.startAnimation(shake); + binding.passwordVerificationField.startAnimation(shake); Toast.makeText(getActivity(), getText(R.string.passwords_dont_match), Toast.LENGTH_SHORT) .show(); @@ -167,4 +167,4 @@ private void setPassword(final String pass1, final String pass2) { public interface PasswordConfirmedListener { void onPasswordConfirmed(); } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/nononsenseapps/notepad/fragments/DialogPasswordSettings.java b/app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogPasswordSettings.java similarity index 99% rename from app/src/main/java/com/nononsenseapps/notepad/fragments/DialogPasswordSettings.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogPasswordSettings.java index 4f96ea374..dcc838c37 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/fragments/DialogPasswordSettings.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogPasswordSettings.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.fragments; +package com.nononsenseapps.notepad.ui.common; import android.app.Dialog; import android.content.DialogInterface; @@ -175,4 +175,4 @@ private boolean verifyCurrentPassword(SharedPreferences sharedPreferences) { return false; } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/nononsenseapps/notepad/fragments/DialogRestoreBackup.java b/app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogRestoreBackup.java similarity index 89% rename from app/src/main/java/com/nononsenseapps/notepad/fragments/DialogRestoreBackup.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogRestoreBackup.java index 7de1740f3..fdfbeb1d6 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/fragments/DialogRestoreBackup.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/common/DialogRestoreBackup.java @@ -15,15 +15,14 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.fragments; +package com.nononsenseapps.notepad.ui.common; import android.app.FragmentManager; import android.os.Bundle; -import android.widget.Toast; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.TaskList; -import com.nononsenseapps.notepad.sync.files.JSONBackup; +import com.nononsenseapps.notepad.data.local.json.JSONBackup; +import com.nononsenseapps.notepad.ui.base.DialogConfirmBaseV11; public class DialogRestoreBackup extends DialogConfirmBaseV11 { static final String ID = "id"; diff --git a/app/src/main/java/com/nononsenseapps/notepad/fragments/FragmentSearch.java b/app/src/main/java/com/nononsenseapps/notepad/ui/common/FragmentSearch.java similarity index 82% rename from app/src/main/java/com/nononsenseapps/notepad/fragments/FragmentSearch.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/common/FragmentSearch.java index 0190f5caf..9a0fedb96 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/fragments/FragmentSearch.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/common/FragmentSearch.java @@ -15,52 +15,42 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.fragments; +package com.nononsenseapps.notepad.ui.common; import android.app.SearchManager; +import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.database.Cursor; +import android.databinding.DataBindingUtil; import android.net.Uri; import android.os.Bundle; import android.preference.PreferenceManager; +import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v4.app.LoaderManager.LoaderCallbacks; import android.support.v4.content.CursorLoader; import android.support.v4.content.Loader; import android.support.v4.widget.SimpleCursorAdapter; import android.support.v4.widget.SimpleCursorAdapter.ViewBinder; +import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.View; +import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; -import android.widget.ListView; import android.widget.SearchView; import android.widget.SearchView.OnQueryTextListener; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.utils.views.TitleNoteTextView; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.databinding.FragmentSearchBinding; -import org.androidannotations.annotations.AfterViews; -import org.androidannotations.annotations.EFragment; -import org.androidannotations.annotations.SystemService; -import org.androidannotations.annotations.ViewById; - -@EFragment(resName="fragment_search") public class FragmentSearch extends Fragment { public final static String QUERY = "query"; - @SystemService - protected - SearchManager searchManager; - - @ViewById(resName="list") - protected - ListView list; - protected SimpleCursorAdapter mAdapter; protected LoaderCallbacks mCallback; @@ -68,9 +58,10 @@ public class FragmentSearch extends Fragment { protected String mQuery = ""; protected SearchView mSearchView; - - public static FragmentSearch_ getInstance(final String initialQuery) { - FragmentSearch_ f = new FragmentSearch_(); + private FragmentSearchBinding binding; + + public static FragmentSearch getInstance(final String initialQuery) { + FragmentSearch f = new FragmentSearch(); Bundle args = new Bundle(); args.putString(QUERY, initialQuery); f.setArguments(args); @@ -98,9 +89,10 @@ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater){ mSearchView = (SearchView) menu.findItem(R.id.menu_search) .getActionView(); // Assumes current activity is the searchable activity - mSearchView.setSearchableInfo(searchManager - .getSearchableInfo(getActivity().getComponentName())); - mSearchView.setIconifiedByDefault(false); // Do not iconify the widget; + SearchManager searchManager = (SearchManager) getContext().getSystemService(Context.SEARCH_SERVICE); + mSearchView.setSearchableInfo(searchManager + .getSearchableInfo(getActivity().getComponentName())); + mSearchView.setIconifiedByDefault(false); // Do not iconify the widget; // expand it by default mSearchView.setQueryRefinementEnabled(true); mSearchView.setSubmitButtonEnabled(false); @@ -125,15 +117,28 @@ public boolean onQueryTextChange(final String query) { mSearchView.setQuery(mQuery, false); } - @AfterViews + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + binding = DataBindingUtil.inflate(inflater, R.layout.fragment_search, container, true); + return binding.getRoot(); + } + + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + + setupAdapter(); + } + void setupAdapter() { mAdapter = getAdapter(); mAdapter.setViewBinder(getViewBinder()); // Set adapter - list.setAdapter(mAdapter); - list.setOnItemClickListener(getOnItemClickListener()); + binding.list.setAdapter(mAdapter); + binding.list.setOnItemClickListener(getOnItemClickListener()); // Start loading data mCallback = new LoaderCallbacks() { diff --git a/app/src/main/java/com/nononsenseapps/utils/views/GreyableToggleButton.java b/app/src/main/java/com/nononsenseapps/notepad/ui/common/GreyableToggleButton.java similarity index 99% rename from app/src/main/java/com/nononsenseapps/utils/views/GreyableToggleButton.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/common/GreyableToggleButton.java index 270a2c1d0..57ab9f4e3 100644 --- a/app/src/main/java/com/nononsenseapps/utils/views/GreyableToggleButton.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/common/GreyableToggleButton.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.utils.views; +package com.nononsenseapps.notepad.ui.common; import android.content.Context; import android.content.res.TypedArray; diff --git a/app/src/main/java/com/nononsenseapps/notepad/interfaces/MenuStateController.java b/app/src/main/java/com/nononsenseapps/notepad/ui/common/MenuStateController.java similarity index 91% rename from app/src/main/java/com/nononsenseapps/notepad/interfaces/MenuStateController.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/common/MenuStateController.java index 22cffd606..3349918b6 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/interfaces/MenuStateController.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/common/MenuStateController.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.interfaces; +package com.nononsenseapps.notepad.ui.common; /** * Used to control the menu items for the navigation drawer. @@ -27,5 +27,5 @@ public interface MenuStateController { * If true, menu items should be hidden/removed. Items relevant to the * navigation drawer should be visible */ - public boolean childItemsVisible(); + boolean childItemsVisible(); } diff --git a/app/src/main/java/com/nononsenseapps/notepad/fragments/NavigationDrawerFragment.java b/app/src/main/java/com/nononsenseapps/notepad/ui/common/NavigationDrawerFragment.java similarity index 98% rename from app/src/main/java/com/nononsenseapps/notepad/fragments/NavigationDrawerFragment.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/common/NavigationDrawerFragment.java index bddf170ae..f5b20a4c0 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/fragments/NavigationDrawerFragment.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/common/NavigationDrawerFragment.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.fragments; +package com.nononsenseapps.notepad.ui.common; import android.content.Context; import android.content.SharedPreferences; @@ -48,14 +48,15 @@ import com.amulyakhare.textdrawable.TextDrawable; import com.amulyakhare.textdrawable.util.ColorGenerator; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.database.TaskList; -import com.nononsenseapps.util.SharedPreferencesHelper; -import com.nononsenseapps.util.SyncGtaskHelper; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.data.model.sql.TaskList; +import com.nononsenseapps.notepad.ui.list.TaskListFragment; +import com.nononsenseapps.notepad.util.SharedPreferencesHelper; +import com.nononsenseapps.notepad.util.SyncGtaskHelper; import java.util.ArrayList; -import static com.nononsenseapps.util.ArrayHelper.toArray; +import static com.nononsenseapps.notepad.util.ArrayHelper.toArray; /** * This fragment is the view which is displayed in the left drawer. diff --git a/app/src/main/java/com/nononsenseapps/ui/NoteCheckBox.java b/app/src/main/java/com/nononsenseapps/notepad/ui/common/NoteCheckBox.java similarity index 96% rename from app/src/main/java/com/nononsenseapps/ui/NoteCheckBox.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/common/NoteCheckBox.java index 9f2f936ea..62c1c709b 100644 --- a/app/src/main/java/com/nononsenseapps/ui/NoteCheckBox.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/common/NoteCheckBox.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.ui; +package com.nononsenseapps.notepad.ui.common; import android.content.Context; import android.util.AttributeSet; diff --git a/app/src/main/java/com/nononsenseapps/ui/NotificationItemHelper.java b/app/src/main/java/com/nononsenseapps/notepad/ui/common/NotificationItemHelper.java similarity index 95% rename from app/src/main/java/com/nononsenseapps/ui/NotificationItemHelper.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/common/NotificationItemHelper.java index fec82e5f4..0fd8e35db 100644 --- a/app/src/main/java/com/nononsenseapps/ui/NotificationItemHelper.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/common/NotificationItemHelper.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.ui; +package com.nononsenseapps.notepad.ui.common; import android.content.Context; import android.view.View; @@ -28,12 +28,12 @@ import com.android.datetimepicker.time.RadialPickerLayout; import com.android.datetimepicker.time.TimePickerDialog; import com.android.datetimepicker.time.TimePickerDialog.OnTimeSetListener; -import com.nononsenseapps.helpers.TimeFormatter; +import com.nononsenseapps.notepad.util.TimeFormatter; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.Notification; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.fragments.TaskDetailFragment; -import com.nononsenseapps.ui.WeekDaysView.onCheckedDaysChangeListener; +import com.nononsenseapps.notepad.data.model.sql.Notification; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.ui.editor.TaskDetailFragment; +import com.nononsenseapps.notepad.ui.common.WeekDaysView.onCheckedDaysChangeListener; import java.util.Calendar; import java.util.Date; diff --git a/app/src/main/java/com/nononsenseapps/utils/views/StyledEditText.java b/app/src/main/java/com/nononsenseapps/notepad/ui/common/StyledEditText.java similarity index 99% rename from app/src/main/java/com/nononsenseapps/utils/views/StyledEditText.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/common/StyledEditText.java index 953da043a..3a925f59f 100644 --- a/app/src/main/java/com/nononsenseapps/utils/views/StyledEditText.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/common/StyledEditText.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.utils.views; +package com.nononsenseapps.notepad.ui.common; import android.content.Context; import android.content.res.TypedArray; diff --git a/app/src/main/java/com/nononsenseapps/utils/views/TitleNoteTextView.java b/app/src/main/java/com/nononsenseapps/notepad/ui/common/TitleNoteTextView.java similarity index 99% rename from app/src/main/java/com/nononsenseapps/utils/views/TitleNoteTextView.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/common/TitleNoteTextView.java index d71dfc134..4916e9503 100644 --- a/app/src/main/java/com/nononsenseapps/utils/views/TitleNoteTextView.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/common/TitleNoteTextView.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.utils.views; +package com.nononsenseapps.notepad.ui.common; import android.content.Context; import android.content.res.TypedArray; diff --git a/app/src/main/java/com/nononsenseapps/ui/WeekDaysView.java b/app/src/main/java/com/nononsenseapps/notepad/ui/common/WeekDaysView.java similarity index 96% rename from app/src/main/java/com/nononsenseapps/ui/WeekDaysView.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/common/WeekDaysView.java index 42c614c35..f70a39834 100644 --- a/app/src/main/java/com/nononsenseapps/ui/WeekDaysView.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/common/WeekDaysView.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.ui; +package com.nononsenseapps.notepad.ui.common; import android.content.Context; import android.util.AttributeSet; @@ -24,10 +24,9 @@ import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.LinearLayout; -import com.nononsenseapps.helpers.TimeFormatter; +import com.nononsenseapps.notepad.util.TimeFormatter; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.util.LocaleHelper; -import com.nononsenseapps.utils.views.GreyableToggleButton; +import com.nononsenseapps.notepad.util.LocaleHelper; import java.text.SimpleDateFormat; import java.util.GregorianCalendar; diff --git a/app/src/main/java/com/nononsenseapps/notepad/dashclock/TaskSettingsFragment.java b/app/src/main/java/com/nononsenseapps/notepad/ui/dashclock/TaskSettingsFragment.java similarity index 98% rename from app/src/main/java/com/nononsenseapps/notepad/dashclock/TaskSettingsFragment.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/dashclock/TaskSettingsFragment.java index 38a352f64..cdd97edf1 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/dashclock/TaskSettingsFragment.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/dashclock/TaskSettingsFragment.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.dashclock; +package com.nononsenseapps.notepad.ui.dashclock; import android.app.Activity; import android.database.Cursor; @@ -29,7 +29,7 @@ import android.view.ViewGroup; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.TaskList; +import com.nononsenseapps.notepad.data.model.sql.TaskList; import java.util.ArrayList; diff --git a/app/src/main/java/com/nononsenseapps/notepad/dashclock/TasksExtension.java b/app/src/main/java/com/nononsenseapps/notepad/ui/dashclock/TasksExtension.java similarity index 98% rename from app/src/main/java/com/nononsenseapps/notepad/dashclock/TasksExtension.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/dashclock/TasksExtension.java index 0185c7161..c47baf505 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/dashclock/TasksExtension.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/dashclock/TasksExtension.java @@ -15,11 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.dashclock; - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.GregorianCalendar; +package com.nononsenseapps.notepad.ui.dashclock; import android.content.Intent; import android.content.SharedPreferences; @@ -29,8 +25,12 @@ import com.google.android.apps.dashclock.api.DashClockExtension; import com.google.android.apps.dashclock.api.ExtensionData; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.database.TaskList; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.data.model.sql.TaskList; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.GregorianCalendar; public class TasksExtension extends DashClockExtension { diff --git a/app/src/main/java/com/nononsenseapps/notepad/dashclock/TasksSettings.java b/app/src/main/java/com/nononsenseapps/notepad/ui/dashclock/TasksSettings.java similarity index 98% rename from app/src/main/java/com/nononsenseapps/notepad/dashclock/TasksSettings.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/dashclock/TasksSettings.java index b8d43a446..9bd846b55 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/dashclock/TasksSettings.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/dashclock/TasksSettings.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.dashclock; +package com.nononsenseapps.notepad.ui.dashclock; import android.app.Activity; import android.os.Bundle; diff --git a/app/src/main/java/com/nononsenseapps/notepad/activities/ActivityEditor.java b/app/src/main/java/com/nononsenseapps/notepad/ui/editor/ActivityEditor.java similarity index 92% rename from app/src/main/java/com/nononsenseapps/notepad/activities/ActivityEditor.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/editor/ActivityEditor.java index 8d6754351..d0a4eb909 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/activities/ActivityEditor.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/editor/ActivityEditor.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.activities; +package com.nononsenseapps.notepad.ui.editor; import android.content.Intent; import android.os.Bundle; @@ -26,10 +26,9 @@ import android.view.MenuItem; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.LegacyDBHelper; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.database.TaskList; -import com.nononsenseapps.notepad.fragments.TaskDetailFragment; +import com.nononsenseapps.notepad.data.local.sql.LegacyDBHelper; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.data.model.sql.TaskList; /** * Container for editor fragment. Only used on phones. diff --git a/app/src/main/java/com/nononsenseapps/notepad/activities/ActivityEditorBase.java b/app/src/main/java/com/nononsenseapps/notepad/ui/editor/ActivityEditorBase.java similarity index 85% rename from app/src/main/java/com/nononsenseapps/notepad/activities/ActivityEditorBase.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/editor/ActivityEditorBase.java index 8877a4781..f752a3089 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/activities/ActivityEditorBase.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/editor/ActivityEditorBase.java @@ -15,9 +15,10 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.activities; +package com.nononsenseapps.notepad.ui.editor; -import com.nononsenseapps.util.ActivityHelper; +import com.nononsenseapps.notepad.ui.base.ActivityBase; +import com.nononsenseapps.notepad.util.ActivityHelper; /** * Same as ActivityBase except it loads Editor specific themes. diff --git a/app/src/main/java/com/nononsenseapps/notepad/fragments/TaskDetailFragment.java b/app/src/main/java/com/nononsenseapps/notepad/ui/editor/TaskDetailFragment.java similarity index 95% rename from app/src/main/java/com/nononsenseapps/notepad/fragments/TaskDetailFragment.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/editor/TaskDetailFragment.java index 054886539..28706ac0b 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/fragments/TaskDetailFragment.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/editor/TaskDetailFragment.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.fragments; +package com.nononsenseapps.notepad.ui.editor; import android.content.Context; import android.content.Intent; @@ -51,24 +51,25 @@ import com.android.datetimepicker.date.DatePickerDialog; import com.android.datetimepicker.date.DatePickerDialog.OnDateSetListener; import com.android.datetimepicker.time.TimePickerDialog; -import com.nononsenseapps.helpers.TimeFormatter; -import com.nononsenseapps.notepad.ActivityMain_; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.Notification; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.database.TaskList; -import com.nononsenseapps.notepad.fragments.DialogConfirmBase.DialogConfirmedListener; -import com.nononsenseapps.notepad.fragments.DialogPassword.PasswordConfirmedListener; -import com.nononsenseapps.notepad.interfaces.MenuStateController; -import com.nononsenseapps.notepad.prefs.MainPrefs; -import com.nononsenseapps.ui.NotificationItemHelper; -import com.nononsenseapps.util.FragmentHelper; -import com.nononsenseapps.util.SharedPreferencesHelper; -import com.nononsenseapps.utils.views.StyledEditText; +import com.nononsenseapps.notepad.data.model.sql.Notification; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.data.model.sql.TaskList; +import com.nononsenseapps.notepad.ui.base.DialogConfirmBase.DialogConfirmedListener; +import com.nononsenseapps.notepad.ui.common.DialogDeleteTask; +import com.nononsenseapps.notepad.ui.common.DialogPassword; +import com.nononsenseapps.notepad.ui.common.DialogPassword.PasswordConfirmedListener; +import com.nononsenseapps.notepad.ui.common.MenuStateController; +import com.nononsenseapps.notepad.ui.common.NotificationItemHelper; +import com.nononsenseapps.notepad.ui.common.StyledEditText; +import com.nononsenseapps.notepad.ui.settings.MainPrefs; +import com.nononsenseapps.notepad.util.FragmentHelper; +import com.nononsenseapps.notepad.util.SharedPreferencesHelper; +import com.nononsenseapps.notepad.util.TimeFormatter; import java.util.Calendar; -import static com.nononsenseapps.util.ListHelper.getARealList; +import static com.nononsenseapps.notepad.util.ListHelper.getARealList; /** * A fragment representing a single Note detail screen. @@ -349,7 +350,7 @@ void fillUIFromTask() { @Override public void run() { taskText.setText(mTask.title); - DialogPassword_ pflock = new DialogPassword_(); + DialogPassword pflock = new DialogPassword(); pflock.setListener(new PasswordConfirmedListener() { @Override public void onPasswordConfirmed() { @@ -636,7 +637,7 @@ public boolean onOptionsItemSelected(MenuItem item) { } else if (itemId == R.id.menu_delete) { if (mTask != null) { if (isLocked()) { - DialogPassword_ delpf = new DialogPassword_(); + DialogPassword delpf = new DialogPassword(); delpf.setListener(new PasswordConfirmedListener() { @Override public void onPasswordConfirmed() { @@ -714,7 +715,7 @@ void fixIntent() { return; final Intent intent = new Intent().setAction(Intent.ACTION_EDIT).setClass(getActivity(), - ActivityMain_.class).setData(mTask.getUri()).putExtra(TaskDetailFragment + ActivityEditor.class).setData(mTask.getUri()).putExtra(TaskDetailFragment .ARG_ITEM_LIST_ID, mTask.dblist); getActivity().setIntent(intent); diff --git a/app/src/main/java/com/nononsenseapps/notepad/activities/ActivityList.java b/app/src/main/java/com/nononsenseapps/notepad/ui/list/ActivityList.java similarity index 90% rename from app/src/main/java/com/nononsenseapps/notepad/activities/ActivityList.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/list/ActivityList.java index e12687abe..36cef107f 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/activities/ActivityList.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/list/ActivityList.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.activities; +package com.nononsenseapps.notepad.ui.list; import android.content.Intent; import android.net.Uri; @@ -28,20 +28,21 @@ import android.view.MenuItem; import android.view.View; -import com.nononsenseapps.helpers.NotificationHelper; -import com.nononsenseapps.helpers.SyncHelper; +import com.nononsenseapps.notepad.ui.settings.ActivitySettings; +import com.nononsenseapps.notepad.data.receiver.NotificationHelper; +import com.nononsenseapps.notepad.data.service.gtasks.SyncHelper; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.fragments.DialogAbout; -import com.nononsenseapps.notepad.fragments.DialogEditList; -import com.nononsenseapps.notepad.fragments.DialogEditList_; -import com.nononsenseapps.notepad.fragments.NavigationDrawerFragment; -import com.nononsenseapps.notepad.fragments.TaskDetailFragment; -import com.nononsenseapps.notepad.fragments.TaskListFragment; -import com.nononsenseapps.notepad.sync.orgsync.BackgroundSyncScheduler; -import com.nononsenseapps.notepad.sync.orgsync.OrgSyncService; -import com.nononsenseapps.util.ListHelper; -import com.nononsenseapps.util.SharedPreferencesHelper; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.ui.common.DialogAbout; +import com.nononsenseapps.notepad.ui.common.DialogEditList; +import com.nononsenseapps.notepad.ui.common.NavigationDrawerFragment; +import com.nononsenseapps.notepad.ui.editor.TaskDetailFragment; +import com.nononsenseapps.notepad.data.receiver.BackgroundSyncScheduler; +import com.nononsenseapps.notepad.data.service.OrgSyncService; +import com.nononsenseapps.notepad.ui.base.ActivityBase; +import com.nononsenseapps.notepad.ui.editor.ActivityEditor; +import com.nononsenseapps.notepad.util.ListHelper; +import com.nononsenseapps.notepad.util.SharedPreferencesHelper; /** * Main List activity. Its purpose is to setup the views and layout for the benefit of @@ -177,7 +178,7 @@ public void openList(long id) { @Override public void createList() { - DialogEditList_ dialog = DialogEditList_.getInstance(); + DialogEditList dialog = DialogEditList.getInstance(); dialog.setListener(new DialogEditList.EditListDialogListener() { @Override @@ -190,7 +191,7 @@ public void onFinishEditDialog(long id) { @Override public void editList(long id) { - DialogEditList_ dialog = DialogEditList_.getInstance(id); + DialogEditList dialog = DialogEditList.getInstance(id); dialog.setListener(new DialogEditList.EditListDialogListener() { @Override diff --git a/app/src/main/java/com/nononsenseapps/notepad/fragments/TaskListFragment.java b/app/src/main/java/com/nononsenseapps/notepad/ui/list/TaskListFragment.java similarity index 96% rename from app/src/main/java/com/nononsenseapps/notepad/fragments/TaskListFragment.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/list/TaskListFragment.java index 28c30b37e..d3ab16e90 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/fragments/TaskListFragment.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/list/TaskListFragment.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.fragments; +package com.nononsenseapps.notepad.ui.list; import android.app.Activity; import android.content.Context; @@ -49,29 +49,27 @@ import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; -import com.nononsenseapps.helpers.SyncHelper; -import com.nononsenseapps.helpers.SyncStatusMonitor; -import com.nononsenseapps.helpers.TimeFormatter; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.database.TaskList; -import com.nononsenseapps.notepad.fragments.DialogPassword.PasswordConfirmedListener; -import com.nononsenseapps.notepad.interfaces.MenuStateController; -import com.nononsenseapps.ui.DateView; -import com.nononsenseapps.ui.NoteCheckBox; -import com.nononsenseapps.util.AsyncTaskHelper; -import com.nononsenseapps.util.SharedPreferencesHelper; -import com.nononsenseapps.utils.views.TitleNoteTextView; - -import org.androidannotations.annotations.EFragment; -import org.androidannotations.annotations.SystemService; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.data.model.sql.TaskList; +import com.nononsenseapps.notepad.data.receiver.SyncStatusMonitor; +import com.nononsenseapps.notepad.data.service.gtasks.SyncHelper; +import com.nononsenseapps.notepad.ui.common.DateView; +import com.nononsenseapps.notepad.ui.common.DialogDeleteCompletedTasks; +import com.nononsenseapps.notepad.ui.common.DialogPassword; +import com.nononsenseapps.notepad.ui.common.DialogPassword.PasswordConfirmedListener; +import com.nononsenseapps.notepad.ui.common.MenuStateController; +import com.nononsenseapps.notepad.ui.common.NoteCheckBox; +import com.nononsenseapps.notepad.ui.common.TitleNoteTextView; +import com.nononsenseapps.notepad.util.AsyncTaskHelper; +import com.nononsenseapps.notepad.util.SharedPreferencesHelper; +import com.nononsenseapps.notepad.util.TimeFormatter; import java.security.InvalidParameterException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; -@EFragment public class TaskListFragment extends Fragment implements OnSharedPreferenceChangeListener, SyncStatusMonitor.OnSyncStartStopListener { @@ -89,9 +87,6 @@ public class TaskListFragment extends Fragment RecyclerView listView; - @SystemService - LayoutInflater layoutInflater; - SimpleSectionsAdapter mAdapter; SyncStatusMonitor syncStatusReceiver = null; @@ -114,8 +109,8 @@ public TaskListFragment() { super(); } - public static TaskListFragment_ getInstance(final long listId) { - TaskListFragment_ f = new TaskListFragment_(); + public static TaskListFragment getInstance(final long listId) { + TaskListFragment f = new TaskListFragment(); Bundle args = new Bundle(); args.putLong(LIST_ID, listId); f.setArguments(args); @@ -321,7 +316,7 @@ public void onPasswordConfirmed() { }; if (locked) { - DialogPassword_ delpf = new DialogPassword_(); + DialogPassword delpf = new DialogPassword(); delpf.setListener(pListener); delpf.show(getFragmentManager(), "multi_delete_verify"); } else { diff --git a/app/src/main/java/com/nononsenseapps/notepad/prefs/AboutPrefs.java b/app/src/main/java/com/nononsenseapps/notepad/ui/settings/AboutPrefs.java similarity index 95% rename from app/src/main/java/com/nononsenseapps/notepad/prefs/AboutPrefs.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/settings/AboutPrefs.java index 31fea5f1e..e14c4cfda 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/prefs/AboutPrefs.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/settings/AboutPrefs.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.prefs; +package com.nononsenseapps.notepad.ui.settings; import android.app.Fragment; import android.os.Bundle; @@ -34,4 +34,4 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, return layout; } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/nononsenseapps/notepad/prefs/AccountDialog4.java b/app/src/main/java/com/nononsenseapps/notepad/ui/settings/AccountDialog4.java similarity index 94% rename from app/src/main/java/com/nononsenseapps/notepad/prefs/AccountDialog4.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/settings/AccountDialog4.java index 4221a3b64..dea32b9cd 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/prefs/AccountDialog4.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/settings/AccountDialog4.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.prefs; +package com.nononsenseapps.notepad.ui.settings; import android.accounts.Account; import android.accounts.AccountManager; @@ -33,11 +33,11 @@ import android.support.v4.app.DialogFragment; import android.support.v7.app.AlertDialog; -import com.nononsenseapps.helpers.Log; +import com.nononsenseapps.notepad.util.Log; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.MyContentProvider; -import com.nononsenseapps.notepad.sync.googleapi.GoogleTasksClient; -import com.nononsenseapps.util.SyncGtaskHelper; +import com.nononsenseapps.notepad.data.local.sql.MyContentProvider; +import com.nononsenseapps.notepad.data.remote.gtasks.GoogleTasksClient; +import com.nononsenseapps.notepad.util.SyncGtaskHelper; import java.io.IOException; @@ -147,4 +147,4 @@ public void run(AccountManagerFuture future) { } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/nononsenseapps/notepad/activities/ActivitySettings.java b/app/src/main/java/com/nononsenseapps/notepad/ui/settings/ActivitySettings.java similarity index 96% rename from app/src/main/java/com/nononsenseapps/notepad/activities/ActivitySettings.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/settings/ActivitySettings.java index 87d9f88d9..4692400ef 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/activities/ActivitySettings.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/settings/ActivitySettings.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.activities; +package com.nononsenseapps.notepad.ui.settings; import android.accounts.AccountManager; import android.accounts.AccountManagerCallback; @@ -32,8 +32,8 @@ import android.view.MenuItem; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.fragments.FragmentSettings; -import com.nononsenseapps.util.SyncGtaskHelper; +import com.nononsenseapps.notepad.ui.base.ActivityBase; +import com.nononsenseapps.notepad.util.SyncGtaskHelper; import java.io.IOException; diff --git a/app/src/main/java/com/nononsenseapps/notepad/prefs/BackupPrefs.java b/app/src/main/java/com/nononsenseapps/notepad/ui/settings/BackupPrefs.java similarity index 91% rename from app/src/main/java/com/nononsenseapps/notepad/prefs/BackupPrefs.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/settings/BackupPrefs.java index 93810fab9..51cb742c4 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/prefs/BackupPrefs.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/settings/BackupPrefs.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.prefs; +package com.nononsenseapps.notepad.ui.settings; import android.content.Context; import android.os.AsyncTask; @@ -26,10 +26,10 @@ import android.widget.Toast; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.fragments.DialogConfirmBaseV11.DialogConfirmedListener; -import com.nononsenseapps.notepad.fragments.DialogExportBackup; -import com.nononsenseapps.notepad.fragments.DialogRestoreBackup; -import com.nononsenseapps.notepad.sync.files.JSONBackup; +import com.nononsenseapps.notepad.ui.base.DialogConfirmBaseV11.DialogConfirmedListener; +import com.nononsenseapps.notepad.ui.common.DialogExportBackup; +import com.nononsenseapps.notepad.ui.common.DialogRestoreBackup; +import com.nononsenseapps.notepad.data.local.json.JSONBackup; import java.io.FileNotFoundException; @@ -139,4 +139,4 @@ public void onConfirm() { }); } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/nononsenseapps/notepad/prefs/ChangelogPrefs.java b/app/src/main/java/com/nononsenseapps/notepad/ui/settings/ChangelogPrefs.java similarity index 95% rename from app/src/main/java/com/nononsenseapps/notepad/prefs/ChangelogPrefs.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/settings/ChangelogPrefs.java index 6d782f391..a08bc1f41 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/prefs/ChangelogPrefs.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/settings/ChangelogPrefs.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.prefs; +package com.nononsenseapps.notepad.ui.settings; import com.nononsenseapps.notepad.R; @@ -34,4 +34,4 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, return layout; } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/nononsenseapps/notepad/prefs/FixedSwitchPreference.java b/app/src/main/java/com/nononsenseapps/notepad/ui/settings/FixedSwitchPreference.java similarity index 96% rename from app/src/main/java/com/nononsenseapps/notepad/prefs/FixedSwitchPreference.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/settings/FixedSwitchPreference.java index ab7997c23..0433ff731 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/prefs/FixedSwitchPreference.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/settings/FixedSwitchPreference.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.prefs; +package com.nononsenseapps.notepad.ui.settings; import android.content.Context; import android.preference.SwitchPreference; diff --git a/app/src/main/java/com/nononsenseapps/notepad/fragments/FragmentSettings.java b/app/src/main/java/com/nononsenseapps/notepad/ui/settings/FragmentSettings.java similarity index 90% rename from app/src/main/java/com/nononsenseapps/notepad/fragments/FragmentSettings.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/settings/FragmentSettings.java index f3aaac297..59ccb3315 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/fragments/FragmentSettings.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/settings/FragmentSettings.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.fragments; +package com.nononsenseapps.notepad.ui.settings; import android.annotation.SuppressLint; import android.annotation.TargetApi; @@ -38,31 +38,32 @@ import android.widget.Toast; import com.nononsenseapps.build.Config; -import com.nononsenseapps.filepicker.DropboxFilePickerActivity; import com.nononsenseapps.filepicker.FilePickerActivity; import com.nononsenseapps.notepad.BuildConfig; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.legacy.Backup; -import com.nononsenseapps.notepad.sync.orgsync.DropboxSyncHelper; -import com.nononsenseapps.notepad.sync.orgsync.DropboxSynchronizer; -import com.nononsenseapps.notepad.sync.orgsync.OrgSyncService; -import com.nononsenseapps.notepad.sync.orgsync.SDSynchronizer; -import com.nononsenseapps.util.AsyncTaskHelper; -import com.nononsenseapps.util.PermissionsHelper; -import com.nononsenseapps.util.PreferenceHelper; -import com.nononsenseapps.util.SharedPreferencesHelper; -import com.nononsenseapps.util.SyncGtaskHelper; +import com.nononsenseapps.notepad.data.local.orgmode.SDSynchronizer; +import com.nononsenseapps.notepad.data.remote.orgmodedropbox.DropboxSyncHelper; +import com.nononsenseapps.notepad.data.remote.orgmodedropbox.DropboxSynchronizer; +import com.nononsenseapps.notepad.data.service.OrgSyncService; +import com.nononsenseapps.notepad.ui.common.DialogGoogleAccount; +import com.nononsenseapps.notepad.ui.common.DialogPasswordSettings; +import com.nononsenseapps.notepad.ui.orgmodedropbox.DropboxFilePickerActivity; +import com.nononsenseapps.notepad.util.AsyncTaskHelper; +import com.nononsenseapps.notepad.util.PermissionsHelper; +import com.nononsenseapps.notepad.util.PreferenceHelper; +import com.nononsenseapps.notepad.util.SharedPreferencesHelper; +import com.nononsenseapps.notepad.util.SyncGtaskHelper; import java.io.File; import java.util.ArrayList; import java.util.Locale; -import static com.nononsenseapps.util.PermissionsHelper.hasPermissions; -import static com.nononsenseapps.util.PermissionsHelper.permissionsGranted; -import static com.nononsenseapps.util.SharedPreferencesHelper.disableDropboxSync; -import static com.nononsenseapps.util.SharedPreferencesHelper.disableSdCardSync; -import static com.nononsenseapps.util.SharedPreferencesHelper.getDropboxDir; -import static com.nononsenseapps.util.SharedPreferencesHelper.getSdDir; +import static com.nononsenseapps.notepad.util.PermissionsHelper.hasPermissions; +import static com.nononsenseapps.notepad.util.PermissionsHelper.permissionsGranted; +import static com.nononsenseapps.notepad.util.SharedPreferencesHelper.disableDropboxSync; +import static com.nononsenseapps.notepad.util.SharedPreferencesHelper.disableSdCardSync; +import static com.nononsenseapps.notepad.util.SharedPreferencesHelper.getDropboxDir; +import static com.nononsenseapps.notepad.util.SharedPreferencesHelper.getSdDir; /** * Main top level settings fragment @@ -99,7 +100,6 @@ public void onCreate(Bundle savedInstanceState) { setupDirectory(sharedPreferences); setupDropbox(sharedPreferences); setupPassword(); - setupLegacyBackup(); // Bind listeners to update summaries bindPreferenceSummaryToValue(R.string.const_preference_locale_key); @@ -345,28 +345,6 @@ public boolean onPreferenceClick(Preference preference) { } } - private void setupLegacyBackup() { - Preference preference = findPreference(getString(R.string - .const_preference_legacybackup_key)); - if (preference != null) { - preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { - @Override - public boolean onPreferenceClick(Preference preference) { - DialogRestoreBackup.showDialog(getFragmentManager(), new DialogConfirmBaseV11 - .DialogConfirmedListener() { - - @Override - public void onConfirm() { - Backup.importLegacyBackup(getActivity()); - } - - }); - return true; - } - }); - } - } - private void bindPreferenceSummaryToValue(@StringRes int key) { Preference preference = findPreference(getString(key)); if (preference != null) { diff --git a/app/src/main/java/com/nononsenseapps/notepad/prefs/ListPrefs.java b/app/src/main/java/com/nononsenseapps/notepad/ui/settings/ListPrefs.java similarity index 97% rename from app/src/main/java/com/nononsenseapps/notepad/prefs/ListPrefs.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/settings/ListPrefs.java index 8e96cd070..f3af2e84f 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/prefs/ListPrefs.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/settings/ListPrefs.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.prefs; +package com.nononsenseapps.notepad.ui.settings; import android.database.Cursor; import android.os.Bundle; @@ -25,7 +25,7 @@ import android.preference.PreferenceManager; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.TaskList; +import com.nononsenseapps.notepad.data.model.sql.TaskList; import java.util.ArrayList; diff --git a/app/src/main/java/com/nononsenseapps/notepad/prefs/MainPrefs.java b/app/src/main/java/com/nononsenseapps/notepad/ui/settings/MainPrefs.java similarity index 98% rename from app/src/main/java/com/nononsenseapps/notepad/prefs/MainPrefs.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/settings/MainPrefs.java index e6b059750..51e794337 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/prefs/MainPrefs.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/settings/MainPrefs.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.prefs; +package com.nononsenseapps.notepad.ui.settings; import android.os.Bundle; import android.preference.ListPreference; @@ -27,7 +27,7 @@ import android.view.View; import android.view.ViewGroup; -import com.nononsenseapps.helpers.TimeFormatter; +import com.nononsenseapps.notepad.util.TimeFormatter; import com.nononsenseapps.notepad.R; import java.util.ArrayList; diff --git a/app/src/main/java/com/nononsenseapps/notepad/prefs/NotificationPrefs.java b/app/src/main/java/com/nononsenseapps/notepad/ui/settings/NotificationPrefs.java similarity index 96% rename from app/src/main/java/com/nononsenseapps/notepad/prefs/NotificationPrefs.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/settings/NotificationPrefs.java index 6434c79d7..d998085e2 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/prefs/NotificationPrefs.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/settings/NotificationPrefs.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.prefs; +package com.nononsenseapps.notepad.ui.settings; import android.os.Bundle; import android.preference.PreferenceFragment; diff --git a/app/src/main/java/com/nononsenseapps/notepad/prefs/PrefsActivity.java b/app/src/main/java/com/nononsenseapps/notepad/ui/settings/PrefsActivity.java similarity index 99% rename from app/src/main/java/com/nononsenseapps/notepad/prefs/PrefsActivity.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/settings/PrefsActivity.java index e53a4e353..c2aa741ae 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/prefs/PrefsActivity.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/settings/PrefsActivity.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.prefs; +package com.nononsenseapps.notepad.ui.settings; import android.app.backup.BackupManager; import android.content.res.Configuration; diff --git a/app/src/main/java/com/nononsenseapps/notepad/prefs/SyncPrefs.java b/app/src/main/java/com/nononsenseapps/notepad/ui/settings/SyncPrefs.java similarity index 97% rename from app/src/main/java/com/nononsenseapps/notepad/prefs/SyncPrefs.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/settings/SyncPrefs.java index 0011824d9..8b4cb956d 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/prefs/SyncPrefs.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/settings/SyncPrefs.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.prefs; +package com.nononsenseapps.notepad.ui.settings; import android.accounts.Account; import android.accounts.AccountManager; @@ -44,17 +44,17 @@ import android.widget.Toast; import com.nononsenseapps.build.Config; -import com.nononsenseapps.filepicker.DropboxFilePickerActivity; +import com.nononsenseapps.notepad.ui.orgmodedropbox.DropboxFilePickerActivity; import com.nononsenseapps.filepicker.FilePickerActivity; -import com.nononsenseapps.helpers.Log; +import com.nononsenseapps.notepad.util.Log; import com.nononsenseapps.notepad.BuildConfig; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.MyContentProvider; -import com.nononsenseapps.notepad.sync.googleapi.GoogleTasksClient; -import com.nononsenseapps.notepad.sync.orgsync.DropboxSyncHelper; -import com.nononsenseapps.notepad.sync.orgsync.DropboxSynchronizer; -import com.nononsenseapps.notepad.sync.orgsync.OrgSyncService; -import com.nononsenseapps.notepad.sync.orgsync.SDSynchronizer; +import com.nononsenseapps.notepad.data.local.sql.MyContentProvider; +import com.nononsenseapps.notepad.data.remote.gtasks.GoogleTasksClient; +import com.nononsenseapps.notepad.data.remote.orgmodedropbox.DropboxSyncHelper; +import com.nononsenseapps.notepad.data.remote.orgmodedropbox.DropboxSynchronizer; +import com.nononsenseapps.notepad.data.service.OrgSyncService; +import com.nononsenseapps.notepad.data.local.orgmode.SDSynchronizer; import java.io.File; import java.io.IOException; @@ -498,4 +498,4 @@ public void run(AccountManagerFuture future) { } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/nononsenseapps/ui/ExtrasCursorAdapter.java b/app/src/main/java/com/nononsenseapps/notepad/ui/widget/ExtrasCursorAdapter.java similarity index 99% rename from app/src/main/java/com/nononsenseapps/ui/ExtrasCursorAdapter.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/widget/ExtrasCursorAdapter.java index 596f89a7c..14e0aae1d 100644 --- a/app/src/main/java/com/nononsenseapps/ui/ExtrasCursorAdapter.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/widget/ExtrasCursorAdapter.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.ui; +package com.nononsenseapps.notepad.ui.widget; import android.content.Context; import android.database.Cursor; diff --git a/app/src/main/java/com/nononsenseapps/notepad/widget/ListWidgetConfig.java b/app/src/main/java/com/nononsenseapps/notepad/ui/widget/ListWidgetConfig.java similarity index 88% rename from app/src/main/java/com/nononsenseapps/notepad/widget/ListWidgetConfig.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/widget/ListWidgetConfig.java index 09de25809..218c5cc79 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/widget/ListWidgetConfig.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/widget/ListWidgetConfig.java @@ -15,31 +15,18 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.widget; +package com.nononsenseapps.notepad.ui.widget; -import java.text.SimpleDateFormat; -import java.util.Date; - -import org.androidannotations.annotations.AfterViews; -import org.androidannotations.annotations.EActivity; -import org.androidannotations.annotations.ViewById; -import com.nononsenseapps.helpers.Log; -import com.nononsenseapps.helpers.TimeFormatter; -import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.database.TaskList; -import com.nononsenseapps.ui.ExtrasCursorAdapter; -import com.nononsenseapps.utils.views.TitleNoteTextView; - -import android.net.Uri; -import android.os.Build; -import android.os.Bundle; import android.annotation.TargetApi; import android.app.ActionBar; import android.appwidget.AppWidgetManager; import android.content.Context; import android.content.Intent; import android.database.Cursor; +import android.databinding.DataBindingUtil; +import android.net.Uri; +import android.os.Build; +import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v4.app.LoaderManager.LoaderCallbacks; import android.support.v4.content.CursorLoader; @@ -52,17 +39,23 @@ import android.widget.Adapter; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; -import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; -import android.widget.ImageView; -import android.widget.ListView; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; -import android.widget.Spinner; import android.widget.TextView; -@EActivity(resName="activity_widget_config") +import com.nononsenseapps.notepad.R; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.data.model.sql.TaskList; +import com.nononsenseapps.notepad.databinding.ActivityWidgetConfigBinding; +import com.nononsenseapps.notepad.ui.common.TitleNoteTextView; +import com.nononsenseapps.notepad.util.Log; +import com.nononsenseapps.notepad.util.TimeFormatter; + +import java.text.SimpleDateFormat; +import java.util.Date; + public class ListWidgetConfig extends FragmentActivity { private static final String TAG = "ListWidgetConfig"; public static final String KEY_LIST = "widget1_key_list"; @@ -100,45 +93,6 @@ public class ListWidgetConfig extends FragmentActivity { // All lists id public final static int ALL_LISTS_ID = -2; - @ViewById(resName="widgetPreviewWrapper") - View widgetPreviewWrapper; - - @ViewById(resName="listSpinner") - Spinner listSpinner; - - @ViewById(resName="sortingSpinner") - Spinner sortingSpinner; - - @ViewById(resName="itemRowsSeekBar") - SeekBar itemRowsSeekBar; - - @ViewById(resName="transparencySeekBar") - SeekBar transparencySeekBar; - - @ViewById(resName="themeSpinner") - Spinner themeSpinner; - - @ViewById(resName="shade") - ImageView shade; - - @ViewById(resName="notesList") - ListView notesList; - - @ViewById(resName="titleButton") - TextView titleButton; - - @ViewById(resName="widgetHeader") - View widgetHeader; - - @ViewById(resName="transparentHeaderCheckBox") - CheckBox transparentHeaderCheckBox; - - @ViewById(resName="hideCheckBox") - CheckBox hideCheckBox; - - @ViewById(resName="hideDateCheckBox") - CheckBox hideDateCheckBox; - private int appWidgetId; private SimpleWidgetPreviewAdapter mNotesAdapter; @@ -146,10 +100,13 @@ public class ListWidgetConfig extends FragmentActivity { private LoaderCallbacks mCallback; private ExtrasCursorAdapter mListAdapter; + private ActivityWidgetConfigBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + binding = DataBindingUtil.setContentView(this, R.layout.activity_widget_config); + setResult(RESULT_CANCELED); Intent intent = getIntent(); @@ -167,10 +124,13 @@ protected void onCreate(Bundle savedInstanceState) { setResult(RESULT_CANCELED, resultValue); finish(); } + + setupPreview(); + setupActionBar(); + setupConfig(); } @TargetApi(Build.VERSION_CODES.JELLY_BEAN) - @AfterViews void setupPreview() { final WidgetPrefs widgetPrefs = new WidgetPrefs(this, appWidgetId); @@ -284,7 +244,7 @@ else if (view.getId() == R.id.completedCheckBoxDark) { } }); - notesList.setAdapter(mNotesAdapter); + binding.widgetPreviewWrapper.notesList.setAdapter(mNotesAdapter); mCallback = new LoaderCallbacks() { @@ -354,7 +314,7 @@ public void onLoadFinished(Loader l, Cursor c) { widgetPrefs.getLong(KEY_LIST, ALL_LISTS_ID)); //if (c.getCount() > 0) { // Set current item - listSpinner.setSelection(pos); + binding.widgetConfWrapper.listSpinner.setSelection(pos); //} } else { @@ -380,7 +340,6 @@ void reloadTasks() { getSupportLoaderManager().restartLoader(0, null, mCallback); } - @AfterViews void setupActionBar() { final WidgetPrefs widgetPrefs = new WidgetPrefs(this, appWidgetId); @@ -425,7 +384,6 @@ public void onClick(View v) { actionBar.setCustomView(customActionBarView); } - @AfterViews void setupConfig() { final WidgetPrefs widgetPrefs = new WidgetPrefs(this, appWidgetId); @@ -446,7 +404,7 @@ void setupConfig() { } } - sortingSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { + binding.widgetConfWrapper.sortingSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parent, View view, int pos, long id) { @@ -459,11 +417,11 @@ public void onItemSelected(AdapterView parent, View view, public void onNothingSelected(AdapterView parent) { } }); - sortingSpinner.setSelection(getArrayPositionOf(sortTypeValues, + binding.widgetConfWrapper.sortingSpinner.setSelection(getArrayPositionOf(sortTypeValues, widgetPrefs.getString(KEY_SORT_TYPE, getString(R.string.default_sorttype)))); - themeSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { + binding.widgetConfWrapper.themeSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parent, View view, int pos, long id) { @@ -503,10 +461,10 @@ public void onNothingSelected(AdapterView arg0) { else { currentThemeString = getString(R.string.settings_summary_theme_dark); } - themeSpinner.setSelection(getSpinnerPositionOf( - themeSpinner.getAdapter(), currentThemeString)); + binding.widgetConfWrapper.themeSpinner.setSelection(getSpinnerPositionOf( + binding.widgetConfWrapper.themeSpinner.getAdapter(), currentThemeString)); - itemRowsSeekBar + binding.widgetConfWrapper.itemRowsSeekBar .setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override @@ -528,10 +486,10 @@ public void onProgressChanged(SeekBar seekBar, } } }); - itemRowsSeekBar.setProgress(widgetPrefs.getInt(KEY_TITLEROWS, + binding.widgetConfWrapper.itemRowsSeekBar.setProgress(widgetPrefs.getInt(KEY_TITLEROWS, DEFAULT_ROWS) - 1); - transparencySeekBar + binding.widgetConfWrapper.transparencySeekBar .setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { @@ -561,9 +519,9 @@ public void onProgressChanged(SeekBar seekBar, opacity &= 0xff; // Get percentage opacity = (100 * opacity) / 0xff; - transparencySeekBar.setProgress(opacity); + binding.widgetConfWrapper.transparencySeekBar.setProgress(opacity); - listSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { + binding.widgetConfWrapper.listSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView adapter, View arg1, int pos, long id) { @@ -581,7 +539,7 @@ public void onItemSelected(AdapterView adapter, View arg1, // Need to reload tasks reloadTasks(); // And set title - titleButton.setText(widgetPrefs.getString(KEY_LIST_TITLE, "")); + binding.widgetPreviewWrapper.titleButton.setText(widgetPrefs.getString(KEY_LIST_TITLE, "")); } @Override @@ -599,22 +557,22 @@ public void onNothingSelected(AdapterView arg0) { // android.R.layout.simple_spinner_dropdown_item, null, // new String[] { TaskList.Columns.TITLE }, // new int[] { android.R.id.text1 }, 0); - listSpinner.setAdapter(mListAdapter); + binding.widgetConfWrapper.listSpinner.setAdapter(mListAdapter); - transparentHeaderCheckBox + binding.widgetConfWrapper.transparentHeaderCheckBox .setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - widgetHeader.setVisibility(isChecked ? View.GONE + binding.widgetPreviewWrapper.widgetHeader.setVisibility(isChecked ? View.GONE : View.VISIBLE); widgetPrefs.putBoolean(KEY_HIDDENHEADER, isChecked); } }); - transparentHeaderCheckBox.setChecked(widgetPrefs.getBoolean( + binding.widgetConfWrapper.transparentHeaderCheckBox.setChecked(widgetPrefs.getBoolean( KEY_HIDDENHEADER, false)); - hideCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() { + binding.widgetConfWrapper.hideCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { @@ -623,10 +581,10 @@ public void onCheckedChanged(CompoundButton buttonView, mNotesAdapter.notifyDataSetChanged(); } }); - hideCheckBox.setChecked(widgetPrefs.getBoolean(KEY_HIDDENCHECKBOX, + binding.widgetConfWrapper.hideCheckBox.setChecked(widgetPrefs.getBoolean(KEY_HIDDENCHECKBOX, false)); - hideDateCheckBox + binding.widgetConfWrapper.hideDateCheckBox .setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, @@ -636,7 +594,7 @@ public void onCheckedChanged(CompoundButton buttonView, mNotesAdapter.notifyDataSetChanged(); } }); - hideDateCheckBox.setChecked(widgetPrefs.getBoolean(KEY_HIDDENDATE, + binding.widgetConfWrapper.hideDateCheckBox.setChecked(widgetPrefs.getBoolean(KEY_HIDDENDATE, false)); } @@ -677,9 +635,9 @@ private int getArrayPositionOf(final String[] array, final String entry) { } void updateBG(final int color) { - if (shade != null) { - shade.setBackgroundColor(color); - shade.setVisibility((color & 0xff000000) == 0 ? View.GONE + if (binding.widgetPreviewWrapper.shade != null) { + binding.widgetPreviewWrapper.shade.setBackgroundColor(color); + binding.widgetPreviewWrapper.shade.setVisibility((color & 0xff000000) == 0 ? View.GONE : View.VISIBLE); } } diff --git a/app/src/main/java/com/nononsenseapps/notepad/widget/ListWidgetProvider.java b/app/src/main/java/com/nononsenseapps/notepad/ui/widget/ListWidgetProvider.java similarity index 93% rename from app/src/main/java/com/nononsenseapps/notepad/widget/ListWidgetProvider.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/widget/ListWidgetProvider.java index 065ec469f..4c0adfa6e 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/widget/ListWidgetProvider.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/widget/ListWidgetProvider.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.widget; +package com.nononsenseapps.notepad.ui.widget; import android.annotation.TargetApi; import android.app.PendingIntent; @@ -27,18 +27,17 @@ import android.net.Uri; import android.os.Build; import android.os.Bundle; - -import com.nononsenseapps.helpers.Log; - import android.view.View; import android.widget.RemoteViews; -import com.nononsenseapps.notepad.ActivityMain_; -import com.nononsenseapps.notepad.NotePadBroadcastReceiver; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.database.TaskList; -import com.nononsenseapps.notepad.fragments.TaskDetailFragment; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.data.model.sql.TaskList; +import com.nononsenseapps.notepad.data.receiver.NotePadBroadcastReceiver; +import com.nononsenseapps.notepad.ui.editor.ActivityEditor; +import com.nononsenseapps.notepad.ui.editor.TaskDetailFragment; +import com.nononsenseapps.notepad.ui.list.ActivityList; +import com.nononsenseapps.notepad.util.Log; /** * Thewidget's AppWidgetProvider. @@ -211,7 +210,7 @@ public static RemoteViews buildRemoteViews(final Context context, * the extras will be ignored otherwise. */ if (isKeyguard) { - final Intent itemIntent = new Intent(context, ActivityMain_.class); + final Intent itemIntent = new Intent(context, ActivityList.class); itemIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); @@ -237,7 +236,7 @@ public static RemoteViews buildRemoteViews(final Context context, .setFlags( Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK) - .setClass(context, ActivityMain_.class) + .setClass(context, ActivityList.class) .setAction(Intent.ACTION_VIEW).setData(TaskList.getUri(listId)); PendingIntent openAppPendingIntent = PendingIntent.getActivity(context, 0, appIntent, PendingIntent.FLAG_UPDATE_CURRENT); @@ -248,7 +247,7 @@ public static RemoteViews buildRemoteViews(final Context context, .setFlags( Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK) - .setClass(context, ListWidgetConfig_.class).setData(data) + .setClass(context, ListWidgetConfig.class).setData(data) .putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); PendingIntent openConfigPendingIntent = PendingIntent.getActivity( context, 0, configIntent, PendingIntent.FLAG_UPDATE_CURRENT); @@ -260,7 +259,7 @@ public static RemoteViews buildRemoteViews(final Context context, .setFlags( Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK) - .setClass(context, ActivityMain_.class) + .setClass(context, ActivityEditor.class) // Append a dummy path so we don't override this intent on 2nd, 3rd, etc, widgets. .setAction(Intent.ACTION_INSERT).setData(Uri.withAppendedPath(Task.URI, "/widget/" + appWidgetId + "/-1")) @@ -272,4 +271,4 @@ public static RemoteViews buildRemoteViews(final Context context, return rv; } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/nononsenseapps/notepad/widget/ListWidgetService.java b/app/src/main/java/com/nononsenseapps/notepad/ui/widget/ListWidgetService.java similarity index 94% rename from app/src/main/java/com/nononsenseapps/notepad/widget/ListWidgetService.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/widget/ListWidgetService.java index 4b60d761b..5459883c0 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/widget/ListWidgetService.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/widget/ListWidgetService.java @@ -15,35 +15,26 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.widget; +package com.nononsenseapps.notepad.ui.widget; import java.text.SimpleDateFormat; import java.util.Date; -import com.nononsenseapps.helpers.Log; -import com.nononsenseapps.helpers.TimeFormatter; -import com.nononsenseapps.notepad.NotePadBroadcastReceiver; -import com.nononsenseapps.notepad.widget.ListWidgetProvider; +import com.nononsenseapps.notepad.util.TimeFormatter; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.fragments.TaskDetailFragment; -import com.nononsenseapps.notepad.prefs.MainPrefs; -import com.nononsenseapps.ui.DateView; -import com.nononsenseapps.utils.views.TitleNoteTextView; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.ui.editor.TaskDetailFragment; +import com.nononsenseapps.notepad.ui.common.TitleNoteTextView; import android.appwidget.AppWidgetManager; import android.content.Context; import android.content.Intent; import android.database.Cursor; -import android.media.audiofx.BassBoost.Settings; import android.net.Uri; import android.os.Binder; -import android.os.Build; -import android.os.Bundle; import android.view.View; import android.widget.RemoteViews; import android.widget.RemoteViewsService; -import android.widget.TextView; /** * This is the service that provides the factory to be bound to the collection @@ -375,4 +366,4 @@ else if (sortType.equals(mContext Binder.restoreCallingIdentity(identityToken); } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/nononsenseapps/notepad/widget/WidgetPrefs.java b/app/src/main/java/com/nononsenseapps/notepad/ui/widget/WidgetPrefs.java similarity index 98% rename from app/src/main/java/com/nononsenseapps/notepad/widget/WidgetPrefs.java rename to app/src/main/java/com/nononsenseapps/notepad/ui/widget/WidgetPrefs.java index eb0c6d6d8..7351177e2 100644 --- a/app/src/main/java/com/nononsenseapps/notepad/widget/WidgetPrefs.java +++ b/app/src/main/java/com/nononsenseapps/notepad/ui/widget/WidgetPrefs.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.widget; +package com.nononsenseapps.notepad.ui.widget; import android.content.Context; import android.content.SharedPreferences; @@ -163,4 +163,4 @@ public long getLong(String key, long defValue) { } return defValue; } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/nononsenseapps/util/ActivityHelper.java b/app/src/main/java/com/nononsenseapps/notepad/util/ActivityHelper.java similarity index 98% rename from app/src/main/java/com/nononsenseapps/util/ActivityHelper.java rename to app/src/main/java/com/nononsenseapps/notepad/util/ActivityHelper.java index f19978a4c..1bb02723c 100644 --- a/app/src/main/java/com/nononsenseapps/util/ActivityHelper.java +++ b/app/src/main/java/com/nononsenseapps/notepad/util/ActivityHelper.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.util; +package com.nononsenseapps.notepad.util; import android.content.Context; diff --git a/app/src/main/java/com/nononsenseapps/util/ArrayHelper.java b/app/src/main/java/com/nononsenseapps/notepad/util/ArrayHelper.java similarity index 95% rename from app/src/main/java/com/nononsenseapps/util/ArrayHelper.java rename to app/src/main/java/com/nononsenseapps/notepad/util/ArrayHelper.java index a223d68fb..0148ffe73 100644 --- a/app/src/main/java/com/nononsenseapps/util/ArrayHelper.java +++ b/app/src/main/java/com/nononsenseapps/notepad/util/ArrayHelper.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.util; +package com.nononsenseapps.notepad.util; public class ArrayHelper { diff --git a/app/src/main/java/com/nononsenseapps/util/AsyncTaskHelper.java b/app/src/main/java/com/nononsenseapps/notepad/util/AsyncTaskHelper.java similarity index 97% rename from app/src/main/java/com/nononsenseapps/util/AsyncTaskHelper.java rename to app/src/main/java/com/nononsenseapps/notepad/util/AsyncTaskHelper.java index 143eda1a9..ba457d404 100644 --- a/app/src/main/java/com/nononsenseapps/util/AsyncTaskHelper.java +++ b/app/src/main/java/com/nononsenseapps/notepad/util/AsyncTaskHelper.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.util; +package com.nononsenseapps.notepad.util; import android.os.AsyncTask; import android.support.annotation.NonNull; diff --git a/app/src/main/java/com/nononsenseapps/util/FragmentHelper.java b/app/src/main/java/com/nononsenseapps/notepad/util/FragmentHelper.java similarity index 96% rename from app/src/main/java/com/nononsenseapps/util/FragmentHelper.java rename to app/src/main/java/com/nononsenseapps/notepad/util/FragmentHelper.java index da6b6aa24..c4fb358e4 100644 --- a/app/src/main/java/com/nononsenseapps/util/FragmentHelper.java +++ b/app/src/main/java/com/nononsenseapps/notepad/util/FragmentHelper.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.util; +package com.nononsenseapps.notepad.util; import android.os.Handler; import android.support.annotation.NonNull; diff --git a/app/src/main/java/com/nononsenseapps/util/ListHelper.java b/app/src/main/java/com/nononsenseapps/notepad/util/ListHelper.java similarity index 93% rename from app/src/main/java/com/nononsenseapps/util/ListHelper.java rename to app/src/main/java/com/nononsenseapps/notepad/util/ListHelper.java index cf437dfaf..9ee669748 100644 --- a/app/src/main/java/com/nononsenseapps/util/ListHelper.java +++ b/app/src/main/java/com/nononsenseapps/notepad/util/ListHelper.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.util; +package com.nononsenseapps.notepad.util; import android.content.Context; import android.content.Intent; @@ -24,11 +24,11 @@ import android.preference.PreferenceManager; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.LegacyDBHelper; -import com.nononsenseapps.notepad.database.Task; -import com.nononsenseapps.notepad.database.TaskList; -import com.nononsenseapps.notepad.fragments.TaskDetailFragment; -import com.nononsenseapps.notepad.fragments.TaskListFragment; +import com.nononsenseapps.notepad.data.local.sql.LegacyDBHelper; +import com.nononsenseapps.notepad.data.model.sql.Task; +import com.nononsenseapps.notepad.data.model.sql.TaskList; +import com.nononsenseapps.notepad.ui.editor.TaskDetailFragment; +import com.nononsenseapps.notepad.ui.list.TaskListFragment; /** * Simple utility class to hold some general functions. diff --git a/app/src/main/java/com/nononsenseapps/util/LocaleHelper.java b/app/src/main/java/com/nononsenseapps/notepad/util/LocaleHelper.java similarity index 97% rename from app/src/main/java/com/nononsenseapps/util/LocaleHelper.java rename to app/src/main/java/com/nononsenseapps/notepad/util/LocaleHelper.java index 514f7b444..2f16aa3da 100644 --- a/app/src/main/java/com/nononsenseapps/util/LocaleHelper.java +++ b/app/src/main/java/com/nononsenseapps/notepad/util/LocaleHelper.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.util; +package com.nononsenseapps.notepad.util; import android.content.Context; import android.content.SharedPreferences; diff --git a/app/src/main/java/com/nononsenseapps/helpers/Log.java b/app/src/main/java/com/nononsenseapps/notepad/util/Log.java similarity index 96% rename from app/src/main/java/com/nononsenseapps/helpers/Log.java rename to app/src/main/java/com/nononsenseapps/notepad/util/Log.java index 9e1493579..07d53356a 100644 --- a/app/src/main/java/com/nononsenseapps/helpers/Log.java +++ b/app/src/main/java/com/nononsenseapps/notepad/util/Log.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.helpers; +package com.nononsenseapps.notepad.util; import com.nononsenseapps.notepad.BuildConfig; diff --git a/app/src/main/java/com/nononsenseapps/util/PermissionsHelper.java b/app/src/main/java/com/nononsenseapps/notepad/util/PermissionsHelper.java similarity index 98% rename from app/src/main/java/com/nononsenseapps/util/PermissionsHelper.java rename to app/src/main/java/com/nononsenseapps/notepad/util/PermissionsHelper.java index b19e24b9b..8f7deb009 100644 --- a/app/src/main/java/com/nononsenseapps/util/PermissionsHelper.java +++ b/app/src/main/java/com/nononsenseapps/notepad/util/PermissionsHelper.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.util; +package com.nononsenseapps.notepad.util; import android.Manifest; import android.content.Context; diff --git a/app/src/main/java/com/nononsenseapps/util/PreferenceHelper.java b/app/src/main/java/com/nononsenseapps/notepad/util/PreferenceHelper.java similarity index 98% rename from app/src/main/java/com/nononsenseapps/util/PreferenceHelper.java rename to app/src/main/java/com/nononsenseapps/notepad/util/PreferenceHelper.java index 9707d879a..24787a4f4 100644 --- a/app/src/main/java/com/nononsenseapps/util/PreferenceHelper.java +++ b/app/src/main/java/com/nononsenseapps/notepad/util/PreferenceHelper.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.util; +package com.nononsenseapps.notepad.util; import android.media.Ringtone; import android.media.RingtoneManager; diff --git a/app/src/main/java/com/nononsenseapps/utils/time/RFC3339Date.java b/app/src/main/java/com/nononsenseapps/notepad/util/RFC3339Date.java similarity index 99% rename from app/src/main/java/com/nononsenseapps/utils/time/RFC3339Date.java rename to app/src/main/java/com/nononsenseapps/notepad/util/RFC3339Date.java index d27614998..ecf4958ae 100644 --- a/app/src/main/java/com/nononsenseapps/utils/time/RFC3339Date.java +++ b/app/src/main/java/com/nononsenseapps/notepad/util/RFC3339Date.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.utils.time; +package com.nononsenseapps.notepad.util; // package org.doubango.imsdroid.utils; @@ -166,4 +166,4 @@ private static String asRFC3339(final java.util.Date date) { "yyyy-MM-dd'T'HH:mm:ssZ");// spec for RFC3339 return s.format(date); } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/nononsenseapps/util/SharedPreferencesHelper.java b/app/src/main/java/com/nononsenseapps/notepad/util/SharedPreferencesHelper.java similarity index 94% rename from app/src/main/java/com/nononsenseapps/util/SharedPreferencesHelper.java rename to app/src/main/java/com/nononsenseapps/notepad/util/SharedPreferencesHelper.java index a4a7a5c23..455229f10 100644 --- a/app/src/main/java/com/nononsenseapps/util/SharedPreferencesHelper.java +++ b/app/src/main/java/com/nononsenseapps/notepad/util/SharedPreferencesHelper.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.util; +package com.nononsenseapps.notepad.util; import android.content.Context; import android.content.SharedPreferences; @@ -24,10 +24,10 @@ import android.support.annotation.StringRes; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.fragments.DialogPasswordSettings; -import com.nononsenseapps.notepad.sync.orgsync.DropboxSyncHelper; -import com.nononsenseapps.notepad.sync.orgsync.DropboxSynchronizer; -import com.nononsenseapps.notepad.sync.orgsync.SDSynchronizer; +import com.nononsenseapps.notepad.ui.common.DialogPasswordSettings; +import com.nononsenseapps.notepad.data.remote.orgmodedropbox.DropboxSyncHelper; +import com.nononsenseapps.notepad.data.remote.orgmodedropbox.DropboxSynchronizer; +import com.nononsenseapps.notepad.data.local.orgmode.SDSynchronizer; /** * Helper class to save common options to shared preferences. diff --git a/app/src/main/java/com/nononsenseapps/util/SyncGtaskHelper.java b/app/src/main/java/com/nononsenseapps/notepad/util/SyncGtaskHelper.java similarity index 97% rename from app/src/main/java/com/nononsenseapps/util/SyncGtaskHelper.java rename to app/src/main/java/com/nononsenseapps/notepad/util/SyncGtaskHelper.java index aa9542821..20593072f 100644 --- a/app/src/main/java/com/nononsenseapps/util/SyncGtaskHelper.java +++ b/app/src/main/java/com/nononsenseapps/notepad/util/SyncGtaskHelper.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.util; +package com.nononsenseapps.notepad.util; import android.accounts.Account; import android.accounts.AccountManager; @@ -28,9 +28,9 @@ import android.preference.PreferenceManager; import android.support.annotation.NonNull; -import com.nononsenseapps.helpers.GTasksSyncDelay; +import com.nononsenseapps.notepad.data.service.gtasks.GTasksSyncDelay; import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.database.MyContentProvider; +import com.nononsenseapps.notepad.data.local.sql.MyContentProvider; import java.util.Calendar; diff --git a/app/src/main/java/com/nononsenseapps/helpers/TimeFormatter.java b/app/src/main/java/com/nononsenseapps/notepad/util/TimeFormatter.java similarity index 99% rename from app/src/main/java/com/nononsenseapps/helpers/TimeFormatter.java rename to app/src/main/java/com/nononsenseapps/notepad/util/TimeFormatter.java index 5ed6bf8f1..21f5a0957 100644 --- a/app/src/main/java/com/nononsenseapps/helpers/TimeFormatter.java +++ b/app/src/main/java/com/nononsenseapps/notepad/util/TimeFormatter.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.helpers; +package com.nononsenseapps.notepad.util; import android.content.Context; import android.preference.PreferenceManager; diff --git a/app/src/main/java/com/nononsenseapps/scrolltricks/ObservableScrollView.java b/app/src/main/java/com/nononsenseapps/scrolltricks/ObservableScrollView.java deleted file mode 100755 index 7fc925d53..000000000 --- a/app/src/main/java/com/nononsenseapps/scrolltricks/ObservableScrollView.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2015 Jonas Kalderstam. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nononsenseapps.scrolltricks; - -import android.content.Context; -import android.util.AttributeSet; -import android.widget.ScrollView; - -/** - * A custom ScrollView that can accept a scroll listener. - */ -public class ObservableScrollView extends ScrollView { - private Callbacks mCallbacks; - - public ObservableScrollView(Context context, AttributeSet attrs) { - super(context, attrs); - } - - @Override - protected void onScrollChanged(int l, int t, int oldl, int oldt) { - super.onScrollChanged(l, t, oldl, oldt); - if (mCallbacks != null) { - mCallbacks.onScrollChanged(); - } - } - - @Override - public int computeVerticalScrollRange() { - return super.computeVerticalScrollRange(); - } - - public void setCallbacks(Callbacks listener) { - mCallbacks = listener; - } - - public static interface Callbacks { - public void onScrollChanged(); - } -} diff --git a/app/src/main/java/com/nononsenseapps/scrolltricks/QuickReturnFragment.java b/app/src/main/java/com/nononsenseapps/scrolltricks/QuickReturnFragment.java deleted file mode 100644 index fc0dbf865..000000000 --- a/app/src/main/java/com/nononsenseapps/scrolltricks/QuickReturnFragment.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (c) 2015 Jonas Kalderstam. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nononsenseapps.scrolltricks; - - -import android.support.v4.app.Fragment; -import android.view.View; -import android.view.ViewTreeObserver; - -/** - * A simple fragment that handles the quick return bindings. Just implement the - * methods. - * - * Make sure to have a layout much like the one seen in layout/quick_return_example.xml - * - */ -public abstract class QuickReturnFragment extends Fragment implements ObservableScrollView.Callbacks { - private static final int STATE_ONSCREEN = 0; - private static final int STATE_OFFSCREEN = 1; - private static final int STATE_RETURNING = 2; - - private View mQuickReturnView; - private View mPlaceholderView; - private ObservableScrollView mObservableScrollView; - private int mMinRawY = 0; - private int mState = STATE_ONSCREEN; - private int mQuickReturnHeight; - private int mCachedVerticalScrollRange; - - public void setupQuickReturnView() { - mObservableScrollView = getScrollView(); - mObservableScrollView.setCallbacks(this); - - mQuickReturnView = getQuickReturnView(); - mPlaceholderView = getPlaceHolderView(); - - mObservableScrollView.getViewTreeObserver().addOnGlobalLayoutListener( - new ViewTreeObserver.OnGlobalLayoutListener() { - @Override - public void onGlobalLayout() { - onScrollChanged(); - mCachedVerticalScrollRange = mObservableScrollView.computeVerticalScrollRange(); - mQuickReturnHeight = mQuickReturnView.getHeight(); - } - }); - } - - protected abstract ObservableScrollView getScrollView(); - protected abstract View getQuickReturnView(); - protected abstract View getPlaceHolderView(); - - @Override - public void onScrollChanged() { - int rawY = mPlaceholderView.getTop() - Math.min( - mCachedVerticalScrollRange - mObservableScrollView.getHeight(), - mObservableScrollView.getScrollY()); - int translationY = 0; - - switch (mState) { - case STATE_OFFSCREEN: - if (rawY <= mMinRawY) { - mMinRawY = rawY; - } else { - mState = STATE_RETURNING; - } - translationY = rawY; - break; - - case STATE_ONSCREEN: - if (rawY < -mQuickReturnHeight) { - mState = STATE_OFFSCREEN; - mMinRawY = rawY; - } - translationY = rawY; - break; - - case STATE_RETURNING: - translationY = (rawY - mMinRawY) - mQuickReturnHeight; - if (translationY > 0) { - translationY = 0; - mMinRawY = rawY - mQuickReturnHeight; - } - - if (rawY > 0) { - mState = STATE_ONSCREEN; - translationY = rawY; - } - - if (translationY < -mQuickReturnHeight) { - mState = STATE_OFFSCREEN; - mMinRawY = rawY; - } - break; - } - - mQuickReturnView.setTranslationY(translationY); - } -} diff --git a/app/src/main/java/com/nononsenseapps/support/app/FragmentPagerAdapter.java b/app/src/main/java/com/nononsenseapps/support/app/FragmentPagerAdapter.java deleted file mode 100644 index 6593ea959..000000000 --- a/app/src/main/java/com/nononsenseapps/support/app/FragmentPagerAdapter.java +++ /dev/null @@ -1,211 +0,0 @@ -/* - * Copyright (c) 2015 Jonas Kalderstam. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nononsenseapps.support.app; - -import com.nononsenseapps.helpers.Log; -import com.nononsenseapps.notepad.R; - -import android.annotation.TargetApi; -import android.app.Fragment; -import android.app.FragmentManager; -import android.app.FragmentTransaction; -import android.content.Context; -import android.os.Parcelable; -import android.support.v4.view.PagerAdapter; -import android.view.View; -import android.view.ViewGroup; - -/** - * Implementation of {@link android.support.v4.view.PagerAdapter} that - * represents each page as a {@link Fragment} that is persistently kept in the - * fragment manager as long as the user can return to the page. - * - *

- * This version of the pager is best for use when there are a handful of - * typically more static fragments to be paged through, such as a set of tabs. - * The fragment of each page the user visits will be kept in memory, though its - * view hierarchy may be destroyed when not visible. This can result in using a - * significant amount of memory since fragment instances can hold on to an - * arbitrary amount of state. For larger sets of pages, consider - * {@link FragmentStatePagerAdapter}. - * - *

- * When using FragmentPagerAdapter the host ViewPager must have a valid ID set. - *

- * - *

- * Subclasses only need to implement {@link #getItem(int)} and - * {@link #getCount()} to have a working adapter. - * - *

- * Here is an example implementation of a pager containing fragments of lists: - * - * {@sample - * development/samples/Support4Demos/src/com/example/android/supportv4/app/ - * FragmentPagerSupport.java complete} - * - *

- * The R.layout.fragment_pager resource of the top-level fragment - * is: - * - * {@sample development/samples/Support4Demos/res/layout/fragment_pager.xml - * complete} - * - *

- * The R.layout.fragment_pager_list resource containing each - * individual fragment's layout is: - * - * {@sample development/samples/Support4Demos/res/layout/fragment_pager_list.xml - * complete} - */ -public abstract class FragmentPagerAdapter extends PagerAdapter { - private static final String TAG = "FragmentPagerAdapter"; - - private final FragmentManager mFragmentManager; - private FragmentTransaction mCurTransaction = null; - private Fragment mCurrentPrimaryItem = null; - private final Context context; - - public Fragment getCurrentPrimaryItem() { - return mCurrentPrimaryItem; - } - - public FragmentPagerAdapter(Context context, FragmentManager fm) { - this.context = context; - mFragmentManager = fm; - } - - /** - * Return the Fragment associated with a specified position. - */ - public abstract Fragment getItem(int position); - -// @Override -// public void startUpdate(ViewGroup container) { -// -// } - - @Override - public Object instantiateItem(ViewGroup container, int position) { - if (mCurTransaction == null) { - mCurTransaction = mFragmentManager.beginTransaction(); - } - - final long itemId = getItemId(position); - - // Do we already have this fragment? - String name = makeFragmentName(container.getId(), itemId); - Fragment fragment = mFragmentManager.findFragmentByTag(name); - if (fragment != null) { - Log.d(TAG, "Attaching item #" + itemId + ": f=" + fragment); - mCurTransaction.attach(fragment); - } else { - fragment = getItem(position); - Log.d(TAG, "Adding item #" + itemId + ": f=" + fragment); - mCurTransaction.add(container.getId(), fragment, - makeFragmentName(container.getId(), itemId)); - } - // if (fragment != mCurrentPrimaryItem) { - setMenuVisibility(fragment, false); - setUserVisibleHint(fragment, false); - // } - - return fragment; - } - - @Override - public void destroyItem(ViewGroup container, int position, Object object) { - if (mCurTransaction == null) { - mCurTransaction = mFragmentManager.beginTransaction(); - } - Log.d(TAG, "Detaching item #" + getItemId(position) + ": f=" + object - + " v=" + ((Fragment) object).getView()); - mCurTransaction.detach((Fragment) object); - } - - @TargetApi(14) - private void setMenuVisibility(final Fragment fragment, final boolean value) { - if (fragment != null - && context.getResources().getBoolean(R.bool.atLeast14)) - fragment.setMenuVisibility(value); - } - - @TargetApi(15) - private void setUserVisibleHint(final Fragment fragment, final boolean value) { - if (fragment != null - && context.getResources().getBoolean(R.bool.atLeast15)) - fragment.setUserVisibleHint(value); - } - - @Override - public void setPrimaryItem(ViewGroup container, int position, Object object) { - Fragment fragment = (Fragment) object; - if (fragment != mCurrentPrimaryItem) { - if (mCurrentPrimaryItem != null) { - setMenuVisibility(mCurrentPrimaryItem, false); - setUserVisibleHint(mCurrentPrimaryItem, false); - } - if (fragment != null) { - setMenuVisibility(fragment, true); - setUserVisibleHint(fragment, true); - } - mCurrentPrimaryItem = fragment; - } - } - - @Override - public void finishUpdate(ViewGroup container) { - if (mCurTransaction != null) { - mCurTransaction.commitAllowingStateLoss(); - mCurTransaction = null; - mFragmentManager.executePendingTransactions(); - } - } - - @Override - public boolean isViewFromObject(View view, Object object) { - return ((Fragment) object).getView() == view; - } - - @Override - public Parcelable saveState() { - return null; - } - - @Override - public void restoreState(Parcelable state, ClassLoader loader) { - } - - /** - * Return a unique identifier for the item at the given position. - * - *

- * The default implementation returns the given position. Subclasses should - * override this method if the positions of items can change. - *

- * - * @param position - * Position within this adapter - * @return Unique identifier for the item at position - */ - public abstract long getItemId(int position); - - private static String makeFragmentName(int viewId, long id) { - return "android:switcher:" + viewId + ":" + id; - } -} diff --git a/app/src/main/java/com/nononsenseapps/support/app/FragmentStatePagerAdapter.java b/app/src/main/java/com/nononsenseapps/support/app/FragmentStatePagerAdapter.java deleted file mode 100644 index 53c7667b0..000000000 --- a/app/src/main/java/com/nononsenseapps/support/app/FragmentStatePagerAdapter.java +++ /dev/null @@ -1,252 +0,0 @@ -/* - * Copyright (c) 2015 Jonas Kalderstam. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nononsenseapps.support.app; - -import java.util.ArrayList; - -import com.nononsenseapps.notepad.R; - -import android.annotation.TargetApi; -import android.app.Fragment; -import android.app.FragmentManager; -import android.app.FragmentTransaction; -import android.content.Context; -import android.os.Bundle; -import android.os.Parcelable; -import android.support.v4.view.PagerAdapter; -import android.util.Log; -import android.view.View; -import android.view.ViewGroup; - -/** - * Implementation of {@link android.support.v4.view.PagerAdapter} that - * uses a {@link Fragment} to manage each page. This class also handles - * saving and restoring of fragment's state. - * - *

This version of the pager is more useful when there are a large number - * of pages, working more like a list view. When pages are not visible to - * the user, their entire fragment may be destroyed, only keeping the saved - * state of that fragment. This allows the pager to hold on to much less - * memory associated with each visited page as compared to - * {@link FragmentPagerAdapter} at the cost of potentially more overhead when - * switching between pages. - * - *

When using FragmentPagerAdapter the host ViewPager must have a - * valid ID set.

- * - *

Subclasses only need to implement {@link #getItem(int)} - * and {@link #getCount()} to have a working adapter. - * - *

Here is an example implementation of a pager containing fragments of - * lists: - * - * {@sample development/samples/Support13Demos/src/com/example/android/supportv13/app/FragmentStatePagerSupport.java - * complete} - * - *

The R.layout.fragment_pager resource of the top-level fragment is: - * - * {@sample development/samples/Support13Demos/res/layout/fragment_pager.xml - * complete} - * - *

The R.layout.fragment_pager_list resource containing each - * individual fragment's layout is: - * - * {@sample development/samples/Support13Demos/res/layout/fragment_pager_list.xml - * complete} - */ -public abstract class FragmentStatePagerAdapter extends PagerAdapter { - private static final String TAG = "FragmentStatePagerAdapter"; - private static final boolean DEBUG = false; - - private final FragmentManager mFragmentManager; - private FragmentTransaction mCurTransaction = null; - - private ArrayList mSavedState = new ArrayList(); - private ArrayList mFragments = new ArrayList(); - private Fragment mCurrentPrimaryItem = null; - - private final Context context; - - public Fragment getCurrentPrimaryItem() { - return mCurrentPrimaryItem; - } - - - public FragmentStatePagerAdapter(Context context, FragmentManager fm) { - this.context = context; - mFragmentManager = fm; - } - - /** - * Return the Fragment associated with a specified position. - */ - public abstract Fragment getItem(int position); - - public abstract long getItemId(int position); - - @Override - public void startUpdate(ViewGroup container) { - } - - @Override - public Object instantiateItem(ViewGroup container, int position) { - // If we already have this item instantiated, there is nothing - // to do. This can happen when we are restoring the entire pager - // from its saved state, where the fragment manager has already - // taken care of restoring the fragments we previously had instantiated. - if (mFragments.size() > position) { - Fragment f = mFragments.get(position); - if (f != null) { - return f; - } - } - - if (mCurTransaction == null) { - mCurTransaction = mFragmentManager.beginTransaction(); - } - - Fragment fragment = getItem(position); - if (DEBUG) Log.v(TAG, "Adding item #" + position + ": f=" + fragment); - if (mSavedState.size() > position) { - Fragment.SavedState fss = mSavedState.get(position); - if (fss != null) { - fragment.setInitialSavedState(fss); - } - } - while (mFragments.size() <= position) { - mFragments.add(null); - } - setMenuVisibility(fragment, false); - mFragments.set(position, fragment); - mCurTransaction.add(container.getId(), fragment); - - return fragment; - } - - @TargetApi(14) - private void setMenuVisibility(final Fragment fragment, final boolean value) { - if (fragment != null && context.getResources().getBoolean(R.bool.atLeast14)) - fragment.setMenuVisibility(value); - } - - @TargetApi(15) - private void setUserVisibleHint(final Fragment fragment, final boolean value) { - if (fragment != null && context.getResources().getBoolean(R.bool.atLeast15)) - fragment.setUserVisibleHint(value); - } - - @Override - public void destroyItem(ViewGroup container, int position, Object object) { - Fragment fragment = (Fragment)object; - - if (mCurTransaction == null) { - mCurTransaction = mFragmentManager.beginTransaction(); - } - if (DEBUG) Log.v(TAG, "Removing item #" + position + ": f=" + object - + " v=" + ((Fragment)object).getView()); - while (mSavedState.size() <= position) { - mSavedState.add(null); - } - mSavedState.set(position, mFragmentManager.saveFragmentInstanceState(fragment)); - mFragments.set(position, null); - - mCurTransaction.remove(fragment); - } - - @Override - public void setPrimaryItem(ViewGroup container, int position, Object object) { - Fragment fragment = (Fragment)object; - if (fragment != mCurrentPrimaryItem) { - if (mCurrentPrimaryItem != null) { - setMenuVisibility(mCurrentPrimaryItem, false); - } - if (fragment != null) { - setMenuVisibility(fragment, true); - } - mCurrentPrimaryItem = fragment; - } - } - - @Override - public void finishUpdate(ViewGroup container) { - if (mCurTransaction != null) { - mCurTransaction.commitAllowingStateLoss(); - mCurTransaction = null; - mFragmentManager.executePendingTransactions(); - } - } - - @Override - public boolean isViewFromObject(View view, Object object) { - return ((Fragment)object).getView() == view; - } - - @Override - public Parcelable saveState() { - Bundle state = null; - if (mSavedState.size() > 0) { - state = new Bundle(); - Fragment.SavedState[] fss = new Fragment.SavedState[mSavedState.size()]; - mSavedState.toArray(fss); - state.putParcelableArray("states", fss); - } - for (int i=0; i keys = bundle.keySet(); - for (String key: keys) { - if (key.startsWith("f")) { - int index = Integer.parseInt(key.substring(1)); - Fragment f = mFragmentManager.getFragment(bundle, key); - if (f != null) { - while (mFragments.size() <= index) { - mFragments.add(null); - } - setMenuVisibility(f, false); - mFragments.set(index, f); - } else { - Log.w(TAG, "Bad fragment at key " + key); - } - } - } - } - } -} diff --git a/app/src/main/java/com/nononsenseapps/ui/ExtraTypesCursorAdapter.java b/app/src/main/java/com/nononsenseapps/ui/ExtraTypesCursorAdapter.java deleted file mode 100644 index 24c394542..000000000 --- a/app/src/main/java/com/nononsenseapps/ui/ExtraTypesCursorAdapter.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (c) 2015 Jonas Kalderstam. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nononsenseapps.ui; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; - -import com.nononsenseapps.ui.ExtrasCursorAdapter.ViewHolder; - -import android.content.Context; -import android.database.Cursor; - -public class ExtraTypesCursorAdapter extends ExtrasCursorAdapter { - - protected int[] extraTypes; - protected int[] extraLayouts; - protected ArrayList> extraData = null; - - private int typeCount = 1; - - /** - * Extra types should be numbered from 1-length-1. Use 0 if you want the standard layout. - * - * Extra layouts should correspond to type, e.g. index 0 = type 1, index 1 = type 2. - */ - public ExtraTypesCursorAdapter(Context context, int layout, Cursor c, - String[] from, int[] to, int[] extraIds, int[] extraLabels, int[] extraTypes, int[] extraLayouts) { - super(context, layout, c, from, to, extraIds, extraLabels, layout); - this.extraTypes = extraTypes; - this.extraLayouts = extraLayouts; - - typeCount = countTypes(); - } - - private int countTypes() { - HashSet types = new HashSet(); - for (int type: extraTypes) { - types.add(type); - } - // Default layout - types.add(0); - return types.size(); - } - - @Override - public int getViewTypeCount() { - return typeCount; - } - - @Override - public int getItemViewType(final int position) { - if (position < extraIds.length) { - return extraTypes[position]; - } - else { - return 0; - } - } - - @Override - protected int getItemLayout(final int position) { - final int type = getItemViewType(position); - if (position < extraIds.length && type > 0) { - return extraLayouts[type - 1]; - } - else { - return layout; - } - } - - @Override - protected void setExtraText(final ViewHolder viewHolder, final int position) { - if (extraData == null || extraData.isEmpty()) { - super.setExtraText(viewHolder, position); - } - // set all fields - final List dataRow = extraData.get(position); - Object col; - int i; - for (i = 0; i < viewHolder.texts.length && i < dataRow.size(); i++) { - col = dataRow.get(i); - if (col instanceof Integer) { - viewHolder.texts[i].setText(context.getText((Integer) col)); - } - else { - viewHolder.texts[i].setText(col.toString()); - } - } - } - - public void setExtraData(ArrayList> extras) { - this.extraData = extras; - } -} diff --git a/app/src/main/java/com/nononsenseapps/ui/SectionAdapter.java b/app/src/main/java/com/nononsenseapps/ui/SectionAdapter.java deleted file mode 100644 index eba96cde6..000000000 --- a/app/src/main/java/com/nononsenseapps/ui/SectionAdapter.java +++ /dev/null @@ -1,388 +0,0 @@ -/* - * Copyright (c) 2015 Jonas Kalderstam. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nononsenseapps.ui; - -import java.security.InvalidParameterException; -import java.util.Comparator; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Map; - -import com.nononsenseapps.notepad.R; - -import android.content.Context; -import android.database.Cursor; -import android.database.DataSetObserver; -import com.nononsenseapps.helpers.Log; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Adapter; -import android.widget.ArrayAdapter; -import android.widget.BaseAdapter; -import android.widget.SimpleCursorAdapter; - -public class SectionAdapter extends BaseAdapter { - private final static String ERRORMSG = "This adapter is in the wrong state for that method to be used!"; - - public final Map sections = new LinkedHashMap(); - public final ArrayAdapter headers; - public final Map sectionIds = new HashMap(); - private final SimpleCursorAdapter wrappedAdapter; - public final static int TYPE_SECTION_HEADER = -39567; - public final static int TYPE_ITEM = -892746; - public final static int TYPE_COUNT = 2; - - private final DataSetObserver subObserver; - - private String state = ""; - - /** - * A section adapter works in two ways. First, like a normal adapter. In - * that case you give the constructor a regular adapter and the - * sectionadapter works merely as a wrapper. Second, like a section adapter. - * In that case you must give it a null parameter during construction. If - * you at any time try to access methods that are special to either case - * while being in the other case, and exception will be thrown! This should - * only be an issue with fetching CursorLoaders. - * - * One exception is the "GetSubItemId" method which will return the - * appropriate Id in both cases. - * - * @param context - */ - public SectionAdapter(Context context, SimpleCursorAdapter wrappedAdapter) { - /* - * Same call in both cases since an invalid subadapter doesnt mean that - * the entire sectionadapter is invalid. - */ - subObserver = new DataSetObserver() { - @Override - public void onChanged() { - notifyDataSetChanged(); - } - - @Override - public void onInvalidated() { - notifyDataSetChanged(); - } - }; - - if (wrappedAdapter == null) { - headers = new ArrayAdapter(context, R.layout.list_header, - R.id.list_header_title); - headers.registerDataSetObserver(subObserver); - this.wrappedAdapter = null; - } else { - headers = null; - this.wrappedAdapter = wrappedAdapter; - this.wrappedAdapter.registerDataSetObserver(subObserver); - } - } - - /** - * @return True if this adapter is in a sectioned state, False otherwise - */ - public boolean isSectioned() { - return headers != null; - } - - /** - * Get the Id of the section - */ - public Long getSectionId(String section) { - if (headers == null) { - throw new InvalidParameterException(ERRORMSG); - } - return sectionIds.get(section); - } - - /** - * Get the Id of the section a position is contained in - */ - public Long getSectionIdOfPos(final int position) { - return getSectionId(getSection(position)); - } - - /** - * Get the section a position is contained in. - */ - public String getSection(int position) { - if (headers == null) { - throw new InvalidParameterException(ERRORMSG); - } - // Top is always a section - // Sorting matters! - for (int headerPos = 0; headerPos < headers.getCount(); headerPos++) { - Adapter adapter = sections.get(headers.getItem(headerPos)); - // Ignore headers that are empty - if (adapter.getCount() > 0) { - if (position == 0) - return headers.getItem(headerPos); - - position -= 1; - - if (position < adapter.getCount()) - return headers.getItem(headerPos); - - position -= adapter.getCount(); - } - } - return null; - } - - /** - * Add a section to the list with a corresponding ID which can be retrieved - * using getSectionId() - */ - public void addSection(long sectionId, String section, - SimpleCursorAdapter adapter, Comparator comp) { - if (headers == null) { - throw new InvalidParameterException(ERRORMSG); - } - if (section != null) - sectionIds.put(section, sectionId); - addSection(section, adapter, comp); - } - - /** - * Add a section to the list with corresponding adapter and defined sorting - */ - public void addSection(String section, SimpleCursorAdapter adapter, - Comparator comp) { - if (headers == null) { - throw new InvalidParameterException(ERRORMSG); - } - if (adapter == null) { - throw new NullPointerException(); - } - this.headers.add(section); - SimpleCursorAdapter prev = this.sections.put(section, adapter); - if (prev != null) { - Log.d("listproto", "killing previous adapter"); - prev.unregisterDataSetObserver(subObserver); - prev.swapCursor(null); - } - if (adapter != null) { - adapter.registerDataSetObserver(subObserver); - } - // Need to sort the headers each time it changes - if (comp != null) { - headers.sort(comp); - } - } - - public void removeSection(String section, Comparator comp) { - if (headers == null) { - throw new InvalidParameterException(ERRORMSG); - } - this.headers.remove(section); - SimpleCursorAdapter prev = this.sections.remove(section); - if (prev != null) { - Log.d("listproto", "killing previous adapter"); - prev.unregisterDataSetObserver(subObserver); - prev.swapCursor(null); - } - // Need to sort the headers each time it changes - if (comp != null) { - headers.sort(comp); - } - - sectionIds.remove(section); - } - - public void swapCursor(Cursor data) { - if (wrappedAdapter == null) { - throw new InvalidParameterException(ERRORMSG); - } - this.wrappedAdapter.swapCursor(data); - // notifyDataSetChanged(); - } - - @Override - public Object getItem(int position) { - if (wrappedAdapter != null) { - return wrappedAdapter.getItem(position); - } else { - // Top is always a section - // Sorting matters! - for (int headerPos = 0; headerPos < headers.getCount(); headerPos++) { - Adapter adapter = sections.get(headers.getItem(headerPos)); - // Ignore headers that are empty - if (adapter.getCount() > 0) { - if (position == 0) - return headers.getItem(headerPos); - - position -= 1; - - if (position < adapter.getCount()) - return adapter.getItem(position); - - position -= adapter.getCount(); - } - } - return null; - } - } - - @Override - public int getCount() { - if (wrappedAdapter != null) { - return wrappedAdapter.getCount(); - } else { - // total together all sections, plus one for each section header - int total = 0; - for (Adapter adapter : this.sections.values()) { - // Ignore headers that are empty - if (adapter.getCount() > 0) { - total += adapter.getCount() + 1; - } - } - return total; - } - } - - @Override - public int getViewTypeCount() { - if (wrappedAdapter != null) { - return wrappedAdapter.getViewTypeCount(); - } else { - return TYPE_COUNT; - } - } - - @Override - public int getItemViewType(int position) { - if (wrappedAdapter != null) { - return wrappedAdapter.getItemViewType(position); - } else { - // Top is always a section - // Sorting matters! - for (int i = 0; i < headers.getCount(); i++) { - Adapter adapter = sections.get(headers.getItem(i)); - // Ignore headers that are empty - if (adapter.getCount() > 0) { - if (position == 0) - return TYPE_SECTION_HEADER; - - position -= 1; - - if (position < adapter.getCount()) - return TYPE_ITEM; - - position -= adapter.getCount(); - } - } - // Could not be found - return -1; - } - } - - @Override - public boolean isEnabled(int position) { - if (wrappedAdapter != null) { - return wrappedAdapter.isEnabled(position); - } else { - return (getItemViewType(position) != TYPE_SECTION_HEADER); - } - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - if (wrappedAdapter != null) { - return wrappedAdapter.getView(position, convertView, parent); - } else { - // Top is always a section - // Sorting matters! - for (int headerPos = 0; headerPos < headers.getCount(); headerPos++) { - Adapter adapter = sections.get(headers.getItem(headerPos)); - // Ignore headers that are empty - if (adapter.getCount() > 0) { - if (position == 0) { - return headers.getView(headerPos, convertView, parent); - } - - position -= 1; - - if (position < adapter.getCount()) - return adapter.getView(position, convertView, parent); - - position -= adapter.getCount(); - } - } - - // None could be found - return null; - } - } - - @Override - public long getItemId(int position) { - if (wrappedAdapter != null) { - return wrappedAdapter.getItemId(position); - } else { - // Top is always a section - // Sorting matters! - for (int headerPos = 0; headerPos < headers.getCount(); headerPos++) { - Adapter adapter = sections.get(headers.getItem(headerPos)); - // Ignore headers that are empty - if (adapter.getCount() > 0) { - if (position == 0) - return headers.getItemId(headerPos); - - position -= 1; - - if (position < adapter.getCount()) - return adapter.getItemId(position); - - position -= adapter.getCount(); - } - } - return -1; - } - } - - /** - * Guaranteed to be non null - * - * @return - */ - public String getState() { - if (state == null) - state = ""; - return state; - } - - /** - * Will also clear existing adapters etc - * - * @param state - */ - public void changeState(String state) { - if (headers == null) { - throw new InvalidParameterException(ERRORMSG); - } - if (!getState().equals(state)) { - for (String header : sections.keySet().toArray( - new String[sections.size()])) { - removeSection(header, null); - } - this.state = state; - } - } - -} diff --git a/app/src/main/java/com/nononsenseapps/ui/TabbingEditText.java b/app/src/main/java/com/nononsenseapps/ui/TabbingEditText.java deleted file mode 100644 index c22d2f5bc..000000000 --- a/app/src/main/java/com/nononsenseapps/ui/TabbingEditText.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2015 Jonas Kalderstam. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nononsenseapps.ui; - -import android.content.Context; -import android.util.AttributeSet; -import android.view.KeyEvent; -import android.widget.EditText; - -/** - * And editText which catches TABs and inserts \t in the text - * - */ -public class TabbingEditText extends EditText { - // Unfortunately, this doesn't work so well - //private static final String TAB = "\t"; - // Which is why I use spaces instead - private static final String TAB = " "; - - public TabbingEditText(Context context) { - super(context); - } - - public TabbingEditText(Context context, AttributeSet attrs) { - super(context, attrs); - } - - public TabbingEditText(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - } - - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - switch (keyCode) { - case KeyEvent.KEYCODE_TAB: - int start = getSelectionStart(); - int end = getSelectionEnd(); - getText().replace(Math.min(start, end), Math.max(start, end), - TAB, 0, TAB.length()); - return true; - default: - return super.onKeyDown(keyCode, event); - } - } - - @Override - public boolean onKeyUp(int keyCode, KeyEvent event) { - switch (keyCode) { - case KeyEvent.KEYCODE_TAB: - // This was handled in key down - return true; - default: - return super.onKeyUp(keyCode, event); - } - } - -} diff --git a/app/src/main/java/com/nononsenseapps/ui/TextPreviewPreference.java b/app/src/main/java/com/nononsenseapps/ui/TextPreviewPreference.java deleted file mode 100644 index e9bc35c1f..000000000 --- a/app/src/main/java/com/nononsenseapps/ui/TextPreviewPreference.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright (c) 2015 Jonas Kalderstam. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nononsenseapps.ui; - -import com.nononsenseapps.notepad.R; -import com.nononsenseapps.notepad.prefs.MainPrefs; - -import android.content.Context; -import android.graphics.Typeface; -import android.preference.Preference; -import android.util.AttributeSet; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -public class TextPreviewPreference extends Preference { - - //private final String TAG = getClass().getName(); - - protected TextView mText = null; - - public TextPreviewPreference(Context context, AttributeSet attrs) { - super(context, attrs); - } - - public TextPreviewPreference(Context context, AttributeSet attrs, - int defStyle) { - super(context, attrs, defStyle); - } - - @Override - protected View onCreateView(ViewGroup parent) { - - View layout = null; - - try { - LayoutInflater mInflater = (LayoutInflater) parent.getContext() - .getSystemService(Context.LAYOUT_INFLATER_SERVICE); - - layout = mInflater.inflate(R.layout.preference_text_preview, - parent, false); - } catch (Exception e) { - //Log.e(TAG, "Error creating seek bar preference", e); - } - - mText = (TextView) layout.findViewById(R.id.prefTextPreview); - - // Retrieve settings here and set them on the text - int size = getContext().getResources().getInteger(R.integer.default_editor_font_size); - mText.setTextSize(getSharedPreferences().getInt("removed", size)); - setTextType(getSharedPreferences().getString("removed", MainPrefs.SANS)); - - return layout; - - } - - @Override - public void onBindView(View view) { - super.onBindView(view); - - //mText = (TextView) view.findViewById(R.id.prefTextPreview); - } - - public static Typeface getTypeface(String type) { - Typeface font; - if (MainPrefs.MONOSPACE.equals(type)) { - font = Typeface.MONOSPACE; - } else if (MainPrefs.SERIF.equals(type)) { - font = Typeface.SERIF; - } else { - font = Typeface.SANS_SERIF; - } - return font; - } - - public void setTextType(String type) { - if (mText != null) { - - mText.setTypeface(getTypeface(type)); -// mText.post(new Runnable() { -// -// @Override -// public void run() { -// if (FragmentLayout.UI_DEBUG_PRINTS) Log.d(TAG, "Runnabletype: getText: " + mText.getText().toString()); -// mText.setTypeface(font); -// mText.setText("Font changed in runnable"); -// } -// -// }); - } - } - - public void setTextSize(float size) { - if (mText != null) { - final float mySize = size; - mText.post(new Runnable() { - - @Override - public void run() { - mText.setTextSize(mySize); - mText.setText("Size changed in runnable"); - } - - }); - } - } - -} diff --git a/app/src/main/java/com/nononsenseapps/util/BiMap.java b/app/src/main/java/com/nononsenseapps/util/BiMap.java deleted file mode 100644 index 613e1af27..000000000 --- a/app/src/main/java/com/nononsenseapps/util/BiMap.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (c) 2015 Jonas Kalderstam. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nononsenseapps.util; - -import java.util.HashMap; -import java.util.Map; - -/** - * This class is a Bi-directional Map. It works just like a HashMap with the added restriction that both keys and values must be unique. - * This means you can query the Map for a value and get the key. - * - * Implemented with two HashMaps and validity checks on the arguments. - * - */ -public class BiMap extends HashMap { - private static final long serialVersionUID = 1207460403477674827L; - private final HashMap valueToKey; - - public BiMap() { - super(); - - valueToKey = new HashMap(); - } - - /** - * Reverse GET - * - * @param value to retrieve the key for - * @return the key associated with the value or NULL if none exists - */ - public K getKey(Object value) { - return valueToKey.get(value); - } - - /** - * Just for grammatical consistency. Maps directly to GET. - * @param key to retrieve the value for - * @return the value the key is associated with or NULL if none exists - */ - public V getValue(K key) { - return get(key); - } - - @Override - public void clear() { - super.clear(); - valueToKey.clear(); - } - - @Override - public V put(K key, V value) { - if (containsValue(value)) { - remove(getKey(value)); - } - valueToKey.put(value, key); - return super.put(key, value); - } - - @Override - public void putAll(Map arg0) { - for (K key : arg0.keySet()) { - put(key, arg0.get(key)); - } - } - - @Override - public V remove(Object key) { - if (containsKey(key)) - valueToKey.remove(get(key)); - return super.remove(key); - } -} diff --git a/app/src/main/java/com/nononsenseapps/util/TimeHelper.java b/app/src/main/java/com/nononsenseapps/util/TimeHelper.java deleted file mode 100644 index 4e1aa6ca9..000000000 --- a/app/src/main/java/com/nononsenseapps/util/TimeHelper.java +++ /dev/null @@ -1,229 +0,0 @@ -/* - * Copyright (c) 2015 Jonas Kalderstam. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nononsenseapps.util; - -import android.text.format.Time; -import com.nononsenseapps.helpers.Log; - -/** - * Has a few helper functions for dealing with dates. Google Tasks API is crap - * because it throws away the time part and sets to UTC. - * - * @author Jonas - * - */ -public class TimeHelper { - - // 2012-12-31 - public final static String dateFormat = "%Y-%m-%d"; - - /** - * Today = 2012-12-30 Returns 2012-12-31 - */ - public static String dateTomorrow() { - Time time = new Time(Time.getCurrentTimezone()); - time.setToNow(); - int julianToday = Time.getJulianDay(time.toMillis(false), time.gmtoff); - time.setJulianDay(julianToday + 1); - - return time.format(dateFormat); - } - - /** - * Today = 2012-01-01 Returns 2012-01-08 - */ - public static String dateEightDay() { - Time time = new Time(Time.getCurrentTimezone()); - time.setToNow(); - int julianToday = Time.getJulianDay(time.toMillis(false), time.gmtoff); - time.setJulianDay(julianToday + 8); - - return time.format(dateFormat); - } - - /** - * Today = 2012-12-30 Returns 2012-12-30 - */ - public static String dateToday() { - Time time = new Time(Time.getCurrentTimezone()); - time.setToNow(); - - return time.format(dateFormat); - } - - /** - * Today = 2012-12-30 Returns 2012-12-30 00:00:00 - */ - public static String milliTodayStart() { - Time time = new Time(Time.getCurrentTimezone()); - time.setToNow(); - time.hour = 0; - time.minute = 0; - time.second = 0; - - return Long.toString(time.toMillis(false)); - } - - /** - * Today = 2012-12-30 Returns 2012-12-30 00:00:00 - */ - public static long milliTodayStartLong() { - Time time = new Time(Time.getCurrentTimezone()); - time.setToNow(); - time.hour = 0; - time.minute = 0; - time.second = 0; - - return time.toMillis(false); - } - - /** - * Today = 2012-12-30 Returns 2012-12-29 00:00:00 - */ - public static String milliYesterdayStart() { - Time time = new Time(Time.getCurrentTimezone()); - time.setToNow(); - int julianToday = Time.getJulianDay(time.toMillis(false), time.gmtoff); - time.setJulianDay(julianToday - 1); - time.hour = 0; - time.minute = 0; - time.second = 0; - - return Long.toString(time.toMillis(false)); - } - - /** - * Today = 2012-12-30 Returns 2012-12-29 00:00:00 - */ - public static long milliYesterdayStartLong() { - Time time = new Time(Time.getCurrentTimezone()); - time.setToNow(); - int julianToday = Time.getJulianDay(time.toMillis(false), time.gmtoff); - time.setJulianDay(julianToday - 1); - time.hour = 0; - time.minute = 0; - time.second = 0; - - return time.toMillis(false); - } - - /** - * Today = 2012-12-30 Returns 2012-12-23 - */ - public static String milli7DaysAgo() { - Time time = new Time(Time.getCurrentTimezone()); - time.setToNow(); - int julianToday = Time.getJulianDay(time.toMillis(false), time.gmtoff); - time.setJulianDay(julianToday - 7); - time.hour = 0; - time.minute = 0; - time.second = 0; - - return Long.toString(time.toMillis(false)); - } - - /** - * Today = 2012-12-30 Returns 2012-12-23 - */ - public static long milli7DaysAgoLong() { - Time time = new Time(Time.getCurrentTimezone()); - time.setToNow(); - int julianToday = Time.getJulianDay(time.toMillis(false), time.gmtoff); - time.setJulianDay(julianToday - 7); - time.hour = 0; - time.minute = 0; - time.second = 0; - - return time.toMillis(false); - } - - /** - * Given the argument i, will return todays date + i days, formatted as - * RFC3339 in UTC time zone - */ - public static String get3339DaysFromToday(int i) { - Time localtime = new Time(Time.getCurrentTimezone()); - localtime.setToNow(); - int julianToday = Time.getJulianDay(localtime.toMillis(false), - localtime.gmtoff); - - Time time = new Time(Time.TIMEZONE_UTC); - time.setJulianDay(julianToday + i); - time.hour = 0; - time.minute = 0; - time.second = 0; - Log.d("dragdate", "" + i + " days ago: " + time.format3339(false)); - - return time.format3339(false); - } - - public static boolean dateBefore(final String itemDate, - final String referenceDate) { - // Fix for timezone issue. We don't care about them - // A date like 2013-03-05T00:00 will be abbreviated - // to 2013-03-05 - String dbstring = itemDate; - if (dbstring.contains("T")) { - dbstring = dbstring.substring(0, dbstring.indexOf("T")); - } - String compareString = referenceDate; - if (compareString.contains("T")) { - compareString = compareString.substring(0, - compareString.indexOf("T")); - } - - Time time = new Time(); - time.parse3339(dbstring); - time.hour = 0; - time.minute = 0; - time.second = 0; - - Time ctime = new Time(); - ctime.parse3339(compareString); - - return time.before(ctime); - } - - public static boolean dateIs(final String itemDate, - final String referenceDate) { - // Fix for timezone issue. We don't care about them - // A date like 2013-03-05T00:00 will be abbreviated - // to 2013-03-05 - String dbstring = itemDate; - if (dbstring.contains("T")) { - dbstring = dbstring.substring(0, dbstring.indexOf("T")); - } - String compareString = referenceDate; - if (compareString.contains("T")) { - compareString = compareString.substring(0, - compareString.indexOf("T")); - } - - Time time = new Time(); - time.parse3339(dbstring); - time.hour = 0; - time.minute = 0; - time.second = 0; - - Time ctime = new Time(); - ctime.parse3339(compareString); - - return (time.year == ctime.year) && (time.month == ctime.month) - && (time.monthDay == ctime.monthDay); - } -} diff --git a/app/src/main/java/com/nononsenseapps/utils/ViewsHelper.java b/app/src/main/java/com/nononsenseapps/utils/ViewsHelper.java deleted file mode 100644 index e029ef4e1..000000000 --- a/app/src/main/java/com/nononsenseapps/utils/ViewsHelper.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2015 Jonas Kalderstam. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nononsenseapps.utils; - -import android.content.Context; -import android.util.TypedValue; - -public class ViewsHelper { - - /** - * Convert DPs to Pixels for the current resolution - * @param context - * @param dip - * @return - */ - public static int convertDip2Pixels(Context context, int dip) { - return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, - dip, context.getResources().getDisplayMetrics()); - } -} diff --git a/app/src/main/res/layout/activity_dashclock_settings.xml b/app/src/main/res/layout/activity_dashclock_settings.xml index a08f4198f..882420e5a 100644 --- a/app/src/main/res/layout/activity_dashclock_settings.xml +++ b/app/src/main/res/layout/activity_dashclock_settings.xml @@ -22,6 +22,6 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:name="com.nononsenseapps.notepad.dashclock.TaskSettingsFragment" + android:name="com.nononsenseapps.notepad.ui.dashclock.TaskSettingsFragment" android:id="@+id/fragment" tools:layout="@layout/fragment_dialog_prefs"/> diff --git a/app/src/main/res/layout/activity_editor.xml b/app/src/main/res/layout/activity_editor.xml index ecda486a7..0c07bf3e0 100644 --- a/app/src/main/res/layout/activity_editor.xml +++ b/app/src/main/res/layout/activity_editor.xml @@ -17,6 +17,6 @@ diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index b87f36730..9575374ec 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -30,9 +30,9 @@ - \ No newline at end of file + diff --git a/app/src/main/res/layout/activity_widget_config.xml b/app/src/main/res/layout/activity_widget_config.xml index d006a41ec..2a856a2b6 100644 --- a/app/src/main/res/layout/activity_widget_config.xml +++ b/app/src/main/res/layout/activity_widget_config.xml @@ -1,5 +1,4 @@ - - - - - - - + + + android:orientation="@integer/layout_best_orientation"> + + + + - \ No newline at end of file + + diff --git a/app/src/main/res/layout/activity_widget_config_part_preview.xml b/app/src/main/res/layout/activity_widget_config_part_preview.xml index a839605fd..be7acfb19 100644 --- a/app/src/main/res/layout/activity_widget_config_part_preview.xml +++ b/app/src/main/res/layout/activity_widget_config_part_preview.xml @@ -1,5 +1,4 @@ - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_widget_config_part_settings.xml b/app/src/main/res/layout/activity_widget_config_part_settings.xml index 2dec99c56..b256266cb 100644 --- a/app/src/main/res/layout/activity_widget_config_part_settings.xml +++ b/app/src/main/res/layout/activity_widget_config_part_settings.xml @@ -1,5 +1,4 @@ - - - - - - - - - - - - - + - + + - - - - - - - - - - - - - - - - - \ No newline at end of file + android:paddingRight="16dp" + tools:context="com.nononsenseapps.notepad.ui.widget.ListWidgetConfig"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/dialog_ok_cancel.xml b/app/src/main/res/layout/dialog_ok_cancel.xml index 53b2e6b8b..fb2475f4e 100644 --- a/app/src/main/res/layout/dialog_ok_cancel.xml +++ b/app/src/main/res/layout/dialog_ok_cancel.xml @@ -15,55 +15,57 @@ along with this program. If not, see . --> - + - + android:layout_height="wrap_content"> - + - + - \ No newline at end of file + + + + diff --git a/app/src/main/res/layout/fragment_dialog_editlist.xml b/app/src/main/res/layout/fragment_dialog_editlist.xml index 2e367c360..298e53863 100644 --- a/app/src/main/res/layout/fragment_dialog_editlist.xml +++ b/app/src/main/res/layout/fragment_dialog_editlist.xml @@ -15,59 +15,62 @@ along with this program. If not, see . --> - + - + android:layout_height="match_parent" + android:minWidth="280dp" + android:orientation="vertical" + android:paddingTop="@dimen/dialog_keyline1"> - + - + - + + + - \ No newline at end of file + + diff --git a/app/src/main/res/layout/fragment_dialog_movetolist.xml b/app/src/main/res/layout/fragment_dialog_movetolist.xml index df9fa623c..54c506c9e 100644 --- a/app/src/main/res/layout/fragment_dialog_movetolist.xml +++ b/app/src/main/res/layout/fragment_dialog_movetolist.xml @@ -1,5 +1,4 @@ - - - + - - - + android:layout_height="match_parent" + android:orientation="vertical"> + + + + - \ No newline at end of file + + diff --git a/app/src/main/res/layout/fragment_dialog_password.xml b/app/src/main/res/layout/fragment_dialog_password.xml index 7551366a2..af5974059 100644 --- a/app/src/main/res/layout/fragment_dialog_password.xml +++ b/app/src/main/res/layout/fragment_dialog_password.xml @@ -1,5 +1,4 @@ - - - + - - - - - - - - - - \ No newline at end of file + android:layout_height="match_parent" + android:orientation="vertical"> + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_search.xml b/app/src/main/res/layout/fragment_search.xml index 80d2602ae..f6d219884 100644 --- a/app/src/main/res/layout/fragment_search.xml +++ b/app/src/main/res/layout/fragment_search.xml @@ -1,5 +1,4 @@ - - - - - - - + + - + android:orientation="vertical"> + + + + - \ No newline at end of file + + diff --git a/app/src/main/res/layout/fragment_task_detail.xml b/app/src/main/res/layout/fragment_task_detail.xml index 9a7e06431..fd8fdc3b2 100644 --- a/app/src/main/res/layout/fragment_task_detail.xml +++ b/app/src/main/res/layout/fragment_task_detail.xml @@ -87,7 +87,7 @@ android:hint="@string/editor_note_hint" style="@style/TextAppearance.AppCompat.Subhead"/>--> - - - + - \ No newline at end of file + diff --git a/app/src/main/res/layout/fullscreen_fragment.xml b/app/src/main/res/layout/fullscreen_fragment.xml index df0798d7b..929750b8f 100644 --- a/app/src/main/res/layout/fullscreen_fragment.xml +++ b/app/src/main/res/layout/fullscreen_fragment.xml @@ -1,24 +1,5 @@ - - - \ No newline at end of file + android:layout_height="match_parent" /> diff --git a/app/src/main/res/layout/noteslist_item.xml b/app/src/main/res/layout/noteslist_item.xml index 384ad61e6..e3502b4c7 100644 --- a/app/src/main/res/layout/noteslist_item.xml +++ b/app/src/main/res/layout/noteslist_item.xml @@ -34,7 +34,7 @@ android:singleLine="true" android:textAppearance="?android:attr/textAppearanceMedium" /> - - - + - - \ No newline at end of file + diff --git a/app/src/main/res/layout/notification_view.xml b/app/src/main/res/layout/notification_view.xml index ec4406e7b..0f01b7532 100644 --- a/app/src/main/res/layout/notification_view.xml +++ b/app/src/main/res/layout/notification_view.xml @@ -87,7 +87,7 @@ android:textAppearance="?android:attr/textAppearanceMedium" android:textIsSelectable="false" /> - - \ No newline at end of file + diff --git a/app/src/main/res/layout/tasklist_header.xml b/app/src/main/res/layout/tasklist_header.xml index 67797e830..4e156fe8f 100644 --- a/app/src/main/res/layout/tasklist_header.xml +++ b/app/src/main/res/layout/tasklist_header.xml @@ -25,7 +25,7 @@ - - - - \ No newline at end of file + diff --git a/app/src/main/res/layout/tasklist_item_card_section.xml b/app/src/main/res/layout/tasklist_item_card_section.xml index 295b577b7..ebe765df0 100644 --- a/app/src/main/res/layout/tasklist_item_card_section.xml +++ b/app/src/main/res/layout/tasklist_item_card_section.xml @@ -28,7 +28,7 @@ android:paddingRight="@dimen/listMarginsPadded" android:paddingTop="4dp" > - - - + - - - \ No newline at end of file + diff --git a/app/src/main/res/layout/weekdays_layout.xml b/app/src/main/res/layout/weekdays_layout.xml index 58480c79b..a1f7bb432 100644 --- a/app/src/main/res/layout/weekdays_layout.xml +++ b/app/src/main/res/layout/weekdays_layout.xml @@ -21,7 +21,7 @@ android:layout_height="36dp" android:orientation="horizontal" > - - - - - - - - \ No newline at end of file + diff --git a/app/src/main/res/xml/app_pref_headers.xml b/app/src/main/res/xml/app_pref_headers.xml index cb85dc72e..462770c70 100644 --- a/app/src/main/res/xml/app_pref_headers.xml +++ b/app/src/main/res/xml/app_pref_headers.xml @@ -18,42 +18,42 @@
@@ -68,4 +68,4 @@
--> - \ No newline at end of file + diff --git a/app/src/main/res/xml/app_pref_list.xml b/app/src/main/res/xml/app_pref_list.xml index 2db3de55d..200a197a0 100644 --- a/app/src/main/res/xml/app_pref_list.xml +++ b/app/src/main/res/xml/app_pref_list.xml @@ -54,7 +54,7 @@ android:title="@string/hide_checkbox" /> - --> - \ No newline at end of file + diff --git a/app/src/main/res/xml/app_pref_main.xml b/app/src/main/res/xml/app_pref_main.xml index 3c50ba59a..bb12c3d8e 100644 --- a/app/src/main/res/xml/app_pref_main.xml +++ b/app/src/main/res/xml/app_pref_main.xml @@ -52,7 +52,7 @@ android:title="@string/short_date_format" />--> - - \ No newline at end of file + diff --git a/app/src/main/res/xml/app_pref_sync.xml b/app/src/main/res/xml/app_pref_sync.xml index 1369f9cf9..eafa6e372 100644 --- a/app/src/main/res/xml/app_pref_sync.xml +++ b/app/src/main/res/xml/app_pref_sync.xml @@ -22,7 +22,7 @@ android:key="pref_gtask_section_key" android:persistent="false" android:title="@string/gtasks" > - - - - - - + @@ -94,4 +94,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/xml/settings.xml b/app/src/main/res/xml/settings.xml index d3f1eefdc..ad43ffd25 100644 --- a/app/src/main/res/xml/settings.xml +++ b/app/src/main/res/xml/settings.xml @@ -82,9 +82,6 @@ - - \ No newline at end of file + diff --git a/app/src/play/AndroidManifest.xml b/app/src/play/AndroidManifest.xml index c61f4589d..ddd0948ce 100644 --- a/app/src/play/AndroidManifest.xml +++ b/app/src/play/AndroidManifest.xml @@ -23,7 +23,7 @@ diff --git a/app/src/play/java/com/nononsenseapps/notepad/sync/orgsync/DropboxSyncHelper.java b/app/src/play/java/com/nononsenseapps/notepad/data/remote/orgmodedropbox/DropboxSyncHelper.java similarity index 98% rename from app/src/play/java/com/nononsenseapps/notepad/sync/orgsync/DropboxSyncHelper.java rename to app/src/play/java/com/nononsenseapps/notepad/data/remote/orgmodedropbox/DropboxSyncHelper.java index a6aff112c..a8972c709 100644 --- a/app/src/play/java/com/nononsenseapps/notepad/sync/orgsync/DropboxSyncHelper.java +++ b/app/src/play/java/com/nononsenseapps/notepad/data/remote/orgmodedropbox/DropboxSyncHelper.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.nononsenseapps.notepad.sync.orgsync; +package com.nononsenseapps.notepad.data.remote.orgmodedropbox; import android.content.Context; import android.preference.PreferenceManager; diff --git a/app/src/play/java/com/nononsenseapps/notepad/sync/orgsync/DropboxSynchronizer.java b/app/src/play/java/com/nononsenseapps/notepad/data/remote/orgmodedropbox/DropboxSynchronizer.java similarity index 97% rename from app/src/play/java/com/nononsenseapps/notepad/sync/orgsync/DropboxSynchronizer.java rename to app/src/play/java/com/nononsenseapps/notepad/data/remote/orgmodedropbox/DropboxSynchronizer.java index a70edad89..5f8771ca9 100644 --- a/app/src/play/java/com/nononsenseapps/notepad/sync/orgsync/DropboxSynchronizer.java +++ b/app/src/play/java/com/nononsenseapps/notepad/data/remote/orgmodedropbox/DropboxSynchronizer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.nononsenseapps.notepad.sync.orgsync; +package com.nononsenseapps.notepad.data.remote.orgmodedropbox; import android.content.Context; import android.content.SharedPreferences; @@ -25,7 +25,10 @@ import com.dropbox.client2.android.AndroidAuthSession; import com.dropbox.client2.exception.DropboxException; import com.dropbox.client2.exception.DropboxServerException; -import com.nononsenseapps.notepad.prefs.SyncPrefs; +import com.nononsenseapps.notepad.data.local.orgmode.Monitor; +import com.nononsenseapps.notepad.data.local.orgmode.Synchronizer; +import com.nononsenseapps.notepad.data.local.orgmode.SynchronizerInterface; +import com.nononsenseapps.notepad.ui.settings.SyncPrefs; import org.cowboyprogrammer.org.OrgFile; import org.cowboyprogrammer.org.parser.OrgParser; diff --git a/app/src/play/java/com/nononsenseapps/filepicker/DropboxFilePickerActivity.java b/app/src/play/java/com/nononsenseapps/notepad/ui/orgmodedropbox/DropboxFilePickerActivity.java similarity index 86% rename from app/src/play/java/com/nononsenseapps/filepicker/DropboxFilePickerActivity.java rename to app/src/play/java/com/nononsenseapps/notepad/ui/orgmodedropbox/DropboxFilePickerActivity.java index 2ae42c440..e652dfed8 100644 --- a/app/src/play/java/com/nononsenseapps/filepicker/DropboxFilePickerActivity.java +++ b/app/src/play/java/com/nononsenseapps/notepad/ui/orgmodedropbox/DropboxFilePickerActivity.java @@ -14,13 +14,15 @@ * limitations under the License. */ -package com.nononsenseapps.filepicker; +package com.nononsenseapps.notepad.ui.orgmodedropbox; import android.os.Bundle; import com.dropbox.client2.DropboxAPI; import com.dropbox.client2.android.AndroidAuthSession; -import com.nononsenseapps.notepad.sync.orgsync.DropboxSyncHelper; +import com.nononsenseapps.filepicker.AbstractFilePickerActivity; +import com.nononsenseapps.filepicker.AbstractFilePickerFragment; +import com.nononsenseapps.notepad.data.remote.orgmodedropbox.DropboxSyncHelper; public class DropboxFilePickerActivity extends AbstractFilePickerActivity { diff --git a/app/src/play/java/com/nononsenseapps/filepicker/DropboxFilePickerFragment.java b/app/src/play/java/com/nononsenseapps/notepad/ui/orgmodedropbox/DropboxFilePickerFragment.java similarity index 98% rename from app/src/play/java/com/nononsenseapps/filepicker/DropboxFilePickerFragment.java rename to app/src/play/java/com/nononsenseapps/notepad/ui/orgmodedropbox/DropboxFilePickerFragment.java index cf2e74121..dbe78b128 100644 --- a/app/src/play/java/com/nononsenseapps/filepicker/DropboxFilePickerFragment.java +++ b/app/src/play/java/com/nononsenseapps/notepad/ui/orgmodedropbox/DropboxFilePickerFragment.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.nononsenseapps.filepicker; +package com.nononsenseapps.notepad.ui.orgmodedropbox; import android.annotation.SuppressLint; import android.net.Uri; @@ -27,6 +27,7 @@ import com.dropbox.client2.DropboxAPI; import com.dropbox.client2.android.AndroidAuthSession; import com.dropbox.client2.exception.DropboxException; +import com.nononsenseapps.filepicker.AbstractFilePickerFragment; import com.nononsenseapps.notepad.R; import java.io.File; @@ -206,4 +207,4 @@ protected Void doInBackground(final String... paths) { return null; } } -} \ No newline at end of file +} diff --git a/build.gradle b/build.gradle index 3bf15a022..1e67ff5b6 100644 --- a/build.gradle +++ b/build.gradle @@ -22,7 +22,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.1.0' + classpath 'com.android.tools.build:gradle:2.2.1' } } diff --git a/external/datetimepicker/build.gradle b/external/datetimepicker/build.gradle index 6e6c99f03..53f829b29 100644 --- a/external/datetimepicker/build.gradle +++ b/external/datetimepicker/build.gradle @@ -18,9 +18,10 @@ buildscript { repositories { mavenCentral() + jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.1.0' + classpath 'com.android.tools.build:gradle:2.2.1' } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c5b968382..e6a316b47 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Fri May 20 00:50:09 CEST 2016 +#Fri Oct 14 17:51:06 CEST 2016 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip