├── app ├── .gitignore ├── Screenshots │ ├── todolist.png │ └── todotables.png ├── src │ ├── main │ │ ├── res │ │ │ ├── drawable │ │ │ │ ├── arrow.png │ │ │ │ ├── add_button.png │ │ │ │ ├── round_button.xml │ │ │ │ ├── list_item_background_blue.xml │ │ │ │ ├── list_item_background_green.xml │ │ │ │ └── list_item_background_violet.xml │ │ │ ├── mipmap-hdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── menu │ │ │ │ └── menu.xml │ │ │ ├── values │ │ │ │ ├── colors.xml │ │ │ │ ├── styles.xml │ │ │ │ └── strings.xml │ │ │ └── layout │ │ │ │ ├── task_menu_item.xml │ │ │ │ ├── task_todo_item.xml │ │ │ │ ├── activity_list_menu.xml │ │ │ │ └── activity_todo_list.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── miamme │ │ │ │ └── jetlightstudio │ │ │ │ └── foodapp │ │ │ │ ├── Model │ │ │ │ ├── TodoList.java │ │ │ │ └── TodoItem.java │ │ │ │ ├── Toolbox │ │ │ │ ├── SQLiteManager.java │ │ │ │ ├── DataBaseManager.java │ │ │ │ └── APIManager.java │ │ │ │ └── Controllers │ │ │ │ ├── ListMenuActivity.java │ │ │ │ └── ToDoListActivity.java │ │ └── AndroidManifest.xml │ ├── test │ │ └── java │ │ │ └── com │ │ │ └── miamme │ │ │ └── jetlightstudio │ │ │ └── foodapp │ │ │ └── ExampleUnitTest.java │ └── androidTest │ │ └── java │ │ └── com │ │ └── miamme │ │ └── jetlightstudio │ │ └── foodapp │ │ └── ExampleInstrumentedTest.java ├── proguard-rules.pro └── build.gradle ├── settings.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── .gitignore ├── .idea ├── vcs.xml ├── modules.xml ├── runConfigurations.xml ├── gradle.xml └── misc.xml ├── gradle.properties ├── LICENSE ├── README.md ├── gradlew.bat └── gradlew /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /app/Screenshots/todolist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/TODOAppAndroid/HEAD/app/Screenshots/todolist.png -------------------------------------------------------------------------------- /app/Screenshots/todotables.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/TODOAppAndroid/HEAD/app/Screenshots/todotables.png -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/TODOAppAndroid/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /app/src/main/res/drawable/arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/TODOAppAndroid/HEAD/app/src/main/res/drawable/arrow.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/add_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/TODOAppAndroid/HEAD/app/src/main/res/drawable/add_button.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/TODOAppAndroid/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/TODOAppAndroid/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/TODOAppAndroid/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/TODOAppAndroid/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/TODOAppAndroid/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/TODOAppAndroid/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/TODOAppAndroid/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/TODOAppAndroid/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/TODOAppAndroid/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/TODOAppAndroid/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | .externalNativeBuild 10 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sat Apr 27 11:35:58 WAT 2019 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-4.4-all.zip 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/round_button.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFFFFF 4 | #FFFFFF 5 | #478FDC 6 | #478FDC 7 | #7FCF28 8 | #8D0FED 9 | #A0a5A9 10 | #555555 11 | 12 | -------------------------------------------------------------------------------- /app/src/test/java/com/miamme/jetlightstudio/foodapp/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.miamme.jetlightstudio.foodapp; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() throws Exception { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/miamme/jetlightstudio/foodapp/Model/TodoList.java: -------------------------------------------------------------------------------- 1 | package com.miamme.jetlightstudio.foodapp.Model; 2 | 3 | public class TodoList { 4 | String name; 5 | String color; 6 | 7 | public TodoList(String name, String color) { 8 | this.name = name; 9 | this.color = color; 10 | } 11 | 12 | public String getName() { 13 | return name; 14 | } 15 | 16 | public void setName(String name) { 17 | this.name = name; 18 | } 19 | 20 | public String getColor() { 21 | return color; 22 | } 23 | 24 | public void setColor(String color) { 25 | this.color = color; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | JetList 3 | 4 | Food 5 | Dring 6 | Other 7 | 8 | MenuActivity 9 | TestActivity 10 | NavActivity 11 | 12 | Open navigation drawer 13 | Close navigation drawer 14 | 15 | Settings 16 | 17 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 17 | 18 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | org.gradle.jvmargs=-Xmx1536m 13 | 14 | # When configured, Gradle will run in incubating parallel mode. 15 | # This option should only be used with decoupled projects. More details, visit 16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 17 | # org.gradle.parallel=true 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/list_item_background_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 16 | 17 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/list_item_background_green.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 16 | 17 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/list_item_background_violet.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 16 | 17 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/androidTest/java/com/miamme/jetlightstudio/foodapp/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.miamme.jetlightstudio.foodapp; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.assertEquals; 11 | 12 | /** 13 | * Instrumentation test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() throws Exception { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.miamme.jetlightstudio.foodapp", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in C:\Users\oussama\AppData\Local\Android\Sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | 19 | # Uncomment this to preserve the line number information for 20 | # debugging stack traces. 21 | #-keepattributes SourceFile,LineNumberTable 22 | 23 | # If you keep the line number information, uncomment this to 24 | # hide the original source file name. 25 | #-renamesourcefileattribute SourceFile 26 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Oussama Bonnor 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /app/src/main/res/layout/task_menu_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 19 | 20 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # JetTodoList 2 | 3 | ![GitHub license](https://img.shields.io/github/license/oussamabonnor1/TODOAppAndroid.svg) 4 | ![Jetlight studio](https://img.shields.io/badge/Made%20by-Jetlight%20studio-blue.svg?color=082544) 5 | 6 | A simple todo app, representing my journey in learning android as well as my first implementation of my own API : [JetTodoApi](https://github.com/oussamabonnor1/ASP.Net-Core-Web-API). 7 | 8 | 9 | ## Screenshots: 10 | 11 | 12 | 13 | ## Tools used: 14 | * Android studio (IDE) 15 | * Java (logic) 16 | * XML (design) 17 | * Paint.Net (Image editting) 18 | 19 | ## TODO: 20 | 21 | - [ ] Make the API call on different thread than the UI main thread. 22 | - [ ] Adding better way to add todo items (UI/UX speaking). 23 | - [ ] adding possibility to create custom tables. 24 | 25 | ## Contributing 26 | 27 | Feel free to `fork` this project and add whatever you like (Helping with the TODOs would be amazing tho). If you have any suggestions or any comments please feel free to contact me or to open an issue. 28 | 29 | ## Team: 30 | [Jetlighters](https://github.com/JetLightStudio) having fun. 31 | -------------------------------------------------------------------------------- /app/src/main/java/com/miamme/jetlightstudio/foodapp/Model/TodoItem.java: -------------------------------------------------------------------------------- 1 | package com.miamme.jetlightstudio.foodapp.Model; 2 | 3 | public class TodoItem { 4 | 5 | int id; 6 | String taskName; 7 | boolean status; 8 | String color; 9 | 10 | public TodoItem(int id, String taskName, boolean status, String color) { 11 | this.id = id; 12 | this.taskName = taskName; 13 | this.status = status; 14 | this.color = color; 15 | } 16 | 17 | //region getters and setters 18 | public int getId() { 19 | return id; 20 | } 21 | 22 | public void setId(int id) { 23 | this.id = id; 24 | } 25 | 26 | public String getTaskName() { 27 | return taskName; 28 | } 29 | 30 | public void setTaskName(String taskName) { 31 | this.taskName = taskName; 32 | } 33 | 34 | public boolean isStatus() { 35 | return status; 36 | } 37 | 38 | public void setStatus(boolean status) { 39 | this.status = status; 40 | } 41 | 42 | public String getColor() { 43 | return color; 44 | } 45 | 46 | public void setColor(String color) { 47 | this.color = color; 48 | } 49 | //endregion 50 | } 51 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 26 5 | buildToolsVersion '26.0.2' 6 | defaultConfig { 7 | applicationId "com.jetlightstudio.JetTodo" 8 | minSdkVersion 23 9 | targetSdkVersion 26 10 | versionCode 1 11 | versionName "1.0" 12 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 13 | } 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | } 21 | 22 | dependencies { 23 | compile fileTree(include: ['*.jar'], dir: 'libs') 24 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 25 | exclude group: 'com.android.support', module: 'support-annotations' 26 | }) 27 | compile 'com.android.support:appcompat-v7:26.+' 28 | compile 'com.android.support.constraint:constraint-layout:1.0.2' 29 | compile 'com.android.support:support-v4:26.+' 30 | compile 'com.android.support:design:26.+' 31 | implementation 'com.sdsmdg.harjot:materialshadows:1.2.5' 32 | testCompile 'junit:junit:4.12' 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/res/layout/task_todo_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 20 | 21 | 31 | 32 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 14 | 18 | 19 | 20 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /app/src/main/java/com/miamme/jetlightstudio/foodapp/Toolbox/SQLiteManager.java: -------------------------------------------------------------------------------- 1 | package com.miamme.jetlightstudio.foodapp.Toolbox; 2 | 3 | import android.content.Context; 4 | import android.database.sqlite.SQLiteDatabase; 5 | import android.database.sqlite.SQLiteOpenHelper; 6 | 7 | /** 8 | * Created by oussama on 22/02/2018. 9 | */ 10 | 11 | public class SQLiteManager extends SQLiteOpenHelper { 12 | 13 | private static final int dbVersion = 1; 14 | private static final String dbName = "task.db"; 15 | public static String dbTableName = "task"; 16 | public static final String dbColumnId = "id"; 17 | public static final String dbColumnStatus = "status"; 18 | public static final String dbColumnName = "taskName"; 19 | public static final String dbColumnColor = "color"; 20 | 21 | public SQLiteManager(Context context) { 22 | super(context, dbName, null, dbVersion); 23 | } 24 | 25 | @Override 26 | public void onCreate(SQLiteDatabase sqLiteDatabase) { 27 | String query = "Create Table IF NOT EXISTS " + dbTableName + 28 | " (" 29 | + dbColumnId + " Integer, " 30 | + dbColumnStatus + " Boolean, " 31 | + dbColumnName + " Text, " 32 | + dbColumnColor + " Text " 33 | + ");"; 34 | 35 | 36 | sqLiteDatabase.execSQL(query); 37 | } 38 | 39 | @Override 40 | public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { 41 | sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + dbTableName); 42 | onCreate(sqLiteDatabase); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 17 | 27 | 28 | 29 | 30 | 31 | 32 | 34 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_list_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 15 | 16 | 24 | 25 | 26 | 31 | 32 | 42 | 43 | 44 | 49 | 50 |