├── settings.gradle ├── fastlane └── metadata │ └── android │ └── en-US │ ├── title.txt │ ├── short_description.txt │ ├── images │ ├── icon.png │ ├── featureGraphic.png │ └── phoneScreenshots │ │ ├── 1.jpg │ │ ├── 2.jpg │ │ ├── 3.jpg │ │ ├── 4.jpg │ │ ├── 5.jpg │ │ ├── 6.jpg │ │ ├── 7.jpg │ │ ├── 8.jpg │ │ └── 9.jpg │ └── full_description.txt ├── gradle.properties ├── doc ├── action.png ├── lists.png ├── pick.png ├── today.png ├── pick-how.png ├── list-blog.png ├── pick-when.png ├── pick-other-filter.png └── database.txt ├── app ├── src │ └── main │ │ ├── res │ │ ├── xml │ │ │ └── backuppaths.xml │ │ ├── drawable-hdpi │ │ │ ├── ic_launcher.png │ │ │ ├── btn_check_buttonless_off.png │ │ │ └── btn_check_buttonless_on.png │ │ ├── drawable-ldpi │ │ │ ├── ic_launcher.png │ │ │ ├── btn_check_buttonless_off.png │ │ │ └── btn_check_buttonless_on.png │ │ ├── drawable-mdpi │ │ │ ├── ic_launcher.png │ │ │ ├── btn_check_buttonless_off.png │ │ │ └── btn_check_buttonless_on.png │ │ ├── drawable-xhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── btn_check_buttonless_on.png │ │ │ └── btn_check_buttonless_off.png │ │ ├── menu │ │ │ ├── activity_lists.xml │ │ │ ├── locations.xml │ │ │ ├── pick.xml │ │ │ ├── lists_context_menu.xml │ │ │ ├── locations_context.xml │ │ │ ├── repeat.xml │ │ │ ├── when.xml │ │ │ ├── edit_list.xml │ │ │ ├── edit_action.xml │ │ │ ├── lists.xml │ │ │ ├── main.xml │ │ │ ├── actions_context_menu.xml │ │ │ └── actions.xml │ │ ├── layout │ │ │ ├── activity_list_fragment.xml │ │ │ ├── main.xml │ │ │ ├── lists_layout.xml │ │ │ ├── when_layout.xml │ │ │ ├── action_layout.xml │ │ │ ├── edit_list.xml │ │ │ ├── actions_layout.xml │ │ │ ├── activity_lists.xml │ │ │ ├── repeat_layout.xml │ │ │ ├── lists_fragment.xml │ │ │ ├── actions_list_fragment.xml │ │ │ ├── default_list_fragment.xml │ │ │ ├── today_list_fragment.xml │ │ │ ├── actions_fragment.xml │ │ │ ├── edit_list_fragment.xml │ │ │ ├── when_fragment.xml │ │ │ ├── action_item.xml │ │ │ ├── pick_actions.xml │ │ │ ├── repeat_fragment.xml │ │ │ └── edit_action_fragment.xml │ │ ├── values-v11 │ │ │ └── styles.xml │ │ ├── values-v14 │ │ │ └── styles.xml │ │ └── values │ │ │ ├── styles.xml │ │ │ └── strings.xml │ │ ├── java │ │ └── eu │ │ │ └── lastviking │ │ │ └── app │ │ │ └── vgtd │ │ │ ├── Import.java │ │ │ ├── Action.java │ │ │ ├── Actions.java │ │ │ ├── EditList.java │ │ │ ├── VikingBackHandlerActivity.java │ │ │ ├── WhenActivity.java │ │ │ ├── RepeatActivity.java │ │ │ ├── LastVikingGTD.java │ │ │ ├── TodayFragment.java │ │ │ ├── CategoryFilter.java │ │ │ ├── VikingDropdownCtl.java │ │ │ ├── MultiSpinner.java │ │ │ ├── EditListFragment.java │ │ │ ├── ImportFromTaskList.java │ │ │ ├── DbAdapter.java │ │ │ ├── LocationsActivity.java │ │ │ ├── RepeatData.java │ │ │ ├── When.java │ │ │ ├── ListsFragment.java │ │ │ ├── RepeatFragment.java │ │ │ ├── WhenFragment.java │ │ │ ├── MainView.java │ │ │ ├── EditActionFragment.java │ │ │ └── PickFragment.java │ │ ├── assets │ │ ├── vGTD_upgrade_1.sql │ │ └── vGTD.sql │ │ └── AndroidManifest.xml ├── build.gradle └── AndroidManifest.xml ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── scripts └── validate-fastlane.sh ├── AUTHORS.txt ├── .gitignore ├── README.md ├── gradlew.bat └── gradlew /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/title.txt: -------------------------------------------------------------------------------- 1 | VikingGTD 2 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | android.enableJetifier=true 2 | android.useAndroidX=true -------------------------------------------------------------------------------- /doc/action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/doc/action.png -------------------------------------------------------------------------------- /doc/lists.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/doc/lists.png -------------------------------------------------------------------------------- /doc/pick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/doc/pick.png -------------------------------------------------------------------------------- /doc/today.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/doc/today.png -------------------------------------------------------------------------------- /doc/pick-how.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/doc/pick-how.png -------------------------------------------------------------------------------- /doc/list-blog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/doc/list-blog.png -------------------------------------------------------------------------------- /doc/pick-when.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/doc/pick-when.png -------------------------------------------------------------------------------- /doc/pick-other-filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/doc/pick-other-filter.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/short_description.txt: -------------------------------------------------------------------------------- 1 | "Getting Things Done" tasklist/activity manager 2 | -------------------------------------------------------------------------------- /app/src/main/res/xml/backuppaths.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/app/src/main/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/app/src/main/res/drawable-ldpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/app/src/main/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/app/src/main/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/fastlane/metadata/android/en-US/images/icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/btn_check_buttonless_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/app/src/main/res/drawable-hdpi/btn_check_buttonless_off.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/btn_check_buttonless_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/app/src/main/res/drawable-hdpi/btn_check_buttonless_on.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/btn_check_buttonless_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/app/src/main/res/drawable-ldpi/btn_check_buttonless_off.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/btn_check_buttonless_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/app/src/main/res/drawable-ldpi/btn_check_buttonless_on.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/btn_check_buttonless_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/app/src/main/res/drawable-mdpi/btn_check_buttonless_off.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/btn_check_buttonless_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/app/src/main/res/drawable-mdpi/btn_check_buttonless_on.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/btn_check_buttonless_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/app/src/main/res/drawable-xhdpi/btn_check_buttonless_on.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/featureGraphic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/fastlane/metadata/android/en-US/images/featureGraphic.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/btn_check_buttonless_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/app/src/main/res/drawable-xhdpi/btn_check_buttonless_off.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/fastlane/metadata/android/en-US/images/phoneScreenshots/1.jpg -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/fastlane/metadata/android/en-US/images/phoneScreenshots/2.jpg -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/fastlane/metadata/android/en-US/images/phoneScreenshots/3.jpg -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/fastlane/metadata/android/en-US/images/phoneScreenshots/4.jpg -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/fastlane/metadata/android/en-US/images/phoneScreenshots/5.jpg -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/fastlane/metadata/android/en-US/images/phoneScreenshots/6.jpg -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/fastlane/metadata/android/en-US/images/phoneScreenshots/7.jpg -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/fastlane/metadata/android/en-US/images/phoneScreenshots/8.jpg -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgaa/VikingGTD/HEAD/fastlane/metadata/android/en-US/images/phoneScreenshots/9.jpg -------------------------------------------------------------------------------- /scripts/validate-fastlane.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | docker run --rm --workdir /app --mount type=bind,source="$(pwd)",target=/app ashutoshgngwr/validate-fastlane-supply-metadata:v1 3 | -------------------------------------------------------------------------------- /AUTHORS.txt: -------------------------------------------------------------------------------- 1 | This project is hosted at: https://github.com/jgaa/VikingGTD 2 | Copyright 2013 - 2017 by Jarle Aase. All rights reserved. 3 | 4 | VikingGTD is written and maintained by "Jarle (jgaa) Aase" 5 | -------------------------------------------------------------------------------- /app/src/main/java/eu/lastviking/app/vgtd/Import.java: -------------------------------------------------------------------------------- 1 | package eu.lastviking.app.vgtd; 2 | 3 | import android.content.Context; 4 | 5 | public interface Import { 6 | 7 | public String GetName(); 8 | public void Import(); 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/assets/vGTD_upgrade_1.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE actions ADD COLUMN "repeat_type" INTEGER NOT NULL DEFAULT(0); 2 | ALTER TABLE actions ADD COLUMN "repeat_unit" INTEGER NOT NULL DEFAULT(0); 3 | ALTER TABLE actions ADD COLUMN "repeat_after" INTEGER NOT NULL DEFAULT(0); 4 | -------------------------------------------------------------------------------- /app/src/main/res/menu/activity_lists.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_list_fragment.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/layout/main.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/menu/locations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Oct 26 17:53:47 EET 2020 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-bin.zip 7 | distributionSha256Sum=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 8 | -------------------------------------------------------------------------------- /app/src/main/res/menu/pick.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/values-v11/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/values-v14/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/java/eu/lastviking/app/vgtd/Action.java: -------------------------------------------------------------------------------- 1 | package eu.lastviking.app.vgtd; 2 | 3 | import eu.lastviking.app.vgtd.R; 4 | import android.os.Bundle; 5 | 6 | public class Action extends VikingBackHandlerActivity { 7 | 8 | 9 | @Override 10 | protected void onCreate(Bundle savedInstanceState) { 11 | super.onCreate(savedInstanceState); 12 | 13 | setContentView(R.layout.action_layout); 14 | this.setTitle(R.string.action); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/res/menu/lists_context_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/menu/locations_context.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/layout/lists_layout.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/layout/when_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/layout/action_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/layout/edit_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/layout/actions_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_lists.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/menu/repeat.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/menu/when.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/layout/repeat_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/menu/edit_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/menu/edit_action.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/menu/lists.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/java/eu/lastviking/app/vgtd/Actions.java: -------------------------------------------------------------------------------- 1 | package eu.lastviking.app.vgtd; 2 | 3 | import eu.lastviking.app.vgtd.R; 4 | import android.app.Activity; 5 | import android.os.Bundle; 6 | import android.util.Log; 7 | 8 | public class Actions extends Activity { 9 | 10 | private final String TAG = "Actions"; 11 | 12 | @Override 13 | protected void onCreate(Bundle savedInstanceState) { 14 | super.onCreate(savedInstanceState); 15 | setContentView(R.layout.actions_layout); 16 | 17 | this.setTitle(R.string.actions); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/eu/lastviking/app/vgtd/EditList.java: -------------------------------------------------------------------------------- 1 | package eu.lastviking.app.vgtd; 2 | 3 | import eu.lastviking.app.vgtd.R; 4 | import android.os.Bundle; 5 | import android.util.Log; 6 | 7 | public class EditList extends VikingBackHandlerActivity 8 | { 9 | static public final String TAG = "EditList"; 10 | 11 | @Override 12 | protected void onCreate(Bundle savedInstanceState) { 13 | super.onCreate(savedInstanceState); 14 | try { 15 | setContentView(R.layout.edit_list); 16 | } catch(Exception ex) { 17 | Log.e(TAG, "Caught exception when inflating: " + ex.toString()); 18 | } 19 | } 20 | } 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/layout/lists_fragment.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 12 | 13 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/menu/main.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | #built application files 2 | *.apk 3 | *.ap_ 4 | *.aab 5 | app/release/ 6 | 7 | # files for the dex VM 8 | *.dex 9 | 10 | # Java class files 11 | *.class 12 | 13 | # generated files 14 | bin/ 15 | gen/ 16 | 17 | # Local configuration file (sdk path, etc) 18 | local.properties 19 | 20 | # Windows thumbnail db 21 | Thumbs.db 22 | 23 | # OSX files 24 | .DS_Store 25 | 26 | # Android Studio 27 | *.iml 28 | .idea 29 | #.idea/workspace.xml - remove # and delete .idea if it better suit your needs. 30 | .gradle 31 | build/ 32 | .navigation 33 | captures/ 34 | output.json #Since Android Studio 3.0 35 | 36 | #NDK 37 | obj/ 38 | .externalNativeBuild 39 | 40 | # Others 41 | import-summary.txt 42 | -------------------------------------------------------------------------------- /app/src/main/res/layout/actions_list_fragment.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 12 | 13 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/layout/default_list_fragment.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 12 | 13 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/layout/today_list_fragment.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 12 | 13 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/menu/actions_context_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 11 | 12 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 14 | 15 | 16 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/java/eu/lastviking/app/vgtd/VikingBackHandlerActivity.java: -------------------------------------------------------------------------------- 1 | package eu.lastviking.app.vgtd; 2 | import android.app.Activity; 3 | import android.util.Log; 4 | 5 | 6 | public class VikingBackHandlerActivity extends Activity { 7 | 8 | private static final String TAG = "VikingBackHandlerActivity"; 9 | private Handler handler_; 10 | 11 | public interface Handler { 12 | boolean OnBackButtonPressed(); 13 | } 14 | 15 | public void SetBackHandler(Handler handler) { 16 | handler_ = handler; 17 | } 18 | 19 | @Override 20 | public void onBackPressed() { 21 | if ((null != handler_) && !handler_.OnBackButtonPressed()) { 22 | Log.d(TAG, "Back button ignored"); 23 | 24 | } else { 25 | Log.d(TAG, "Back button OK"); 26 | super.onBackPressed(); 27 | } 28 | } 29 | } 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/layout/actions_fragment.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 15 | 16 | 21 | 22 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 30 5 | buildToolsVersion "29.0.2" 6 | 7 | defaultConfig { 8 | applicationId "eu.lastviking.app.vgtd" 9 | minSdkVersion 14 10 | targetSdkVersion 30 11 | } 12 | 13 | buildTypes { 14 | release { 15 | minifyEnabled false 16 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 17 | } 18 | } 19 | } 20 | 21 | dependencies { 22 | implementation 'androidx.legacy:legacy-support-v4:1.0.0' 23 | implementation 'androidx.appcompat:appcompat:1.1.0' 24 | implementation 'androidx.constraintlayout:constraintlayout:1.1.3' 25 | def core_version = "1.3.2" 26 | 27 | // Java language implementation 28 | implementation "androidx.core:core:$core_version" 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/eu/lastviking/app/vgtd/WhenActivity.java: -------------------------------------------------------------------------------- 1 | package eu.lastviking.app.vgtd; 2 | 3 | import eu.lastviking.app.vgtd.R; 4 | import android.app.Activity; 5 | import android.app.Fragment; 6 | import android.os.Bundle; 7 | 8 | public class WhenActivity extends Activity { 9 | 10 | @Override 11 | protected void onCreate(Bundle savedInstanceState) { 12 | super.onCreate(savedInstanceState); 13 | 14 | setContentView(R.layout.when_layout); 15 | this.setTitle(R.string.when); 16 | } 17 | 18 | @Override 19 | public void onBackPressed() { 20 | SaveResult(); 21 | super.onBackPressed(); 22 | } 23 | 24 | @Override 25 | protected void onPause() { 26 | //SaveResult(); 27 | super.onPause(); 28 | } 29 | 30 | void SaveResult() { 31 | Fragment f = getFragmentManager().findFragmentById(R.id.when_fragment_node); 32 | if (null != f) { 33 | WhenFragment w = (WhenFragment)f; 34 | w.SaveResult(); 35 | } 36 | } 37 | 38 | 39 | } 40 | -------------------------------------------------------------------------------- /doc/database.txt: -------------------------------------------------------------------------------- 1 | 2 | actions.repeat_type 3 | To save space, we use the first 8 bits for mode, and 4 | then the remaning bits for modifiers 5 | Mode: 6 | 0x000 = no repeat 7 | 0x001 = repeat after # units after completed 8 | 0x002 = repeat after # units after the scheduled date 9 | When: 10 | [default] repeat at next # unit after complete 11 | 0x100 = repeat at next # unit after scheduled 12 | 13 | actions.repeat_unit 14 | 0 = days 15 | 1 = weeks 16 | 2 = months 17 | 3 = years 18 | 19 | actions.repeat_after 20 | If actions.repeat_type 'when' is 0: unit's after scheduled/completed date 21 | If actions.repeat_type 'when' is 0x100: 22 | (unit_type is disabled/ignored) 23 | Day of week (bits - allow multiple selections) 24 | 0 - 6 day of week (monday - sunday). 25 | 10 = first day of week 26 | 11 = last day of week 27 | 12 = first day of month 28 | 13 = last day of month 29 | 14 = first day of year 30 | 15 = last day of year 31 | -------------------------------------------------------------------------------- /app/src/main/java/eu/lastviking/app/vgtd/RepeatActivity.java: -------------------------------------------------------------------------------- 1 | package eu.lastviking.app.vgtd; 2 | 3 | import android.app.Activity; 4 | import android.app.Fragment; 5 | import android.os.Bundle; 6 | 7 | /** 8 | * Created by jgaa on 4/14/14. 9 | */ 10 | public class RepeatActivity extends Activity { 11 | 12 | 13 | @Override 14 | protected void onCreate(Bundle savedInstanceState) { 15 | super.onCreate(savedInstanceState); 16 | 17 | setContentView(R.layout.repeat_layout); 18 | this.setTitle(R.string.repeat); 19 | } 20 | 21 | @Override 22 | public void onBackPressed() { 23 | SaveResult(); 24 | super.onBackPressed(); 25 | } 26 | 27 | @Override 28 | protected void onPause() { 29 | //SaveResult(); 30 | super.onPause(); 31 | } 32 | 33 | void SaveResult() { 34 | Fragment f = getFragmentManager().findFragmentById(R.id.repeat_fragment_node); 35 | if (null != f) { 36 | RepeatFragment r = (RepeatFragment)f; 37 | r.SaveResult(); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/src/main/java/eu/lastviking/app/vgtd/LastVikingGTD.java: -------------------------------------------------------------------------------- 1 | package eu.lastviking.app.vgtd; 2 | 3 | import java.io.IOException; 4 | import java.io.InputStream; 5 | 6 | import android.app.Application; 7 | import android.util.Log; 8 | import android.widget.Toast; 9 | 10 | public class LastVikingGTD extends Application { 11 | 12 | private static LastVikingGTD self_; 13 | public static final String LOG_TAG = "vGTD"; 14 | 15 | public static LastVikingGTD GetInstance() { 16 | return self_; 17 | } 18 | 19 | @Override 20 | public void onCreate() { 21 | super.onCreate(); 22 | self_ = this; 23 | 24 | 25 | } 26 | 27 | @Override 28 | public void onTerminate() { 29 | super.onTerminate(); 30 | } 31 | 32 | public void TerminateWithError(final String message) { 33 | Toast.makeText(this, message, Toast.LENGTH_LONG).show(); 34 | Log.e("Application ABORT", message); 35 | //System.exit(-1); 36 | } 37 | 38 | public String ReadAssetFile(final String path) throws IOException 39 | { 40 | Log.d(LOG_TAG, "Reading asset file '" + path + "'"); 41 | InputStream stream = getAssets().open(path); 42 | int size = stream.available(); 43 | byte[] buffer = new byte[size]; 44 | stream.read(buffer); 45 | stream.close(); 46 | return new String(buffer); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /app/src/main/res/menu/actions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 15 | 16 | 21 | 22 | 26 | 27 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/layout/edit_list_fragment.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 13 | 14 | 19 | 20 | 21 | 22 | 23 | 29 | 30 | 37 | 38 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Getting Things Done tasklist/activity manager for Android 2 | 3 | This application implements what I believe is the most essential part of David Allens [Getting Things done](http://gettingthingsdone.com/) system: To be able to put all the *stuff* in your life into a system (lists) you can trust 100%. 4 | 5 | It's not a full blown GTD application - a lot of people (me included) are not ready to jump into that in one step. This application is for people who has grown out of the simple "to do apps" and "task managers" and need something a little better. 6 | 7 | Unlike most contemporary *"apps"*, it's free and safe. There are no ads. No tracking. No "phone home". I respect your privacy and integrity, and I trust that you will write me a mail if you have some things you want to share with me. 8 | 9 | # Background. 10 | 11 | I wrote this app back in 2013 to get an idea on how to write apps for Android. -- And to get a light-weight GTD app for my own use. I have used it ever since. It's sqlite database on my device is getting larger every day - but the application still runs quickly and responsive on all devices I have tested it. 12 | 13 | # Status 14 | The app is now updated to Android Studio 4, so it should be easy to look closer at for any Android Developers. 15 | 16 | I am planning a full-blown GTD app (for desktop and mobile) with some friends. So this app is in maintainance mode. 17 | 18 | There are some screenshots in the [doc](doc/) folder to give you an idea about what this app does. 19 | 20 | The app can be downloaded from the release menu above, or from [Google Play](https://play.google.com/store/apps/details?id=eu.lastviking.app.vgtd). 21 | 22 | Have fun! 23 | -------------------------------------------------------------------------------- /app/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 10 | 11 | 12 | 13 | 14 | 21 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 14 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 33 | 38 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /app/src/main/res/layout/when_fragment.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 20 | 21 | 25 | 26 | 30 | 31 | 35 | 36 |