├── app ├── .gitignore ├── src │ ├── main │ │ ├── res │ │ │ ├── drawable │ │ │ │ ├── sun.png │ │ │ │ ├── web.png │ │ │ │ ├── bold.png │ │ │ │ ├── moon.png │ │ │ │ ├── more.png │ │ │ │ ├── calendar.png │ │ │ │ ├── dummypic.jpg │ │ │ │ ├── kletter.png │ │ │ │ ├── pencil.png │ │ │ │ ├── product.png │ │ │ │ ├── redmicro.png │ │ │ │ ├── slideone.png │ │ │ │ ├── slidetwo.png │ │ │ │ ├── add_image.png │ │ │ │ ├── imgsearch.png │ │ │ │ ├── microphone.png │ │ │ │ ├── slidethree.png │ │ │ │ ├── background_delete.xml │ │ │ │ ├── color_layout1.xml │ │ │ │ ├── color_layout2.xml │ │ │ │ ├── color_layout3.xml │ │ │ │ ├── color_layout4.xml │ │ │ │ ├── color_layout.xml │ │ │ │ ├── button_done_background.xml │ │ │ │ ├── linear_grey_background.xml │ │ │ │ ├── button_slide_background.xml │ │ │ │ ├── noteditors_background.xml │ │ │ │ ├── ic_layout_add.xml │ │ │ │ ├── ic_done.xml │ │ │ │ ├── ic_warning.xml │ │ │ │ ├── tintdone.xml │ │ │ │ ├── ic_arrow_back.xml │ │ │ │ ├── ic_delete.xml │ │ │ │ ├── ic_cancel.xml │ │ │ │ ├── ic_link.xml │ │ │ │ ├── ic_search.xml │ │ │ │ ├── ic_knote_background.xml │ │ │ │ └── ic_launcher_background.xml │ │ │ ├── mipmap-hdpi │ │ │ │ ├── ic_knote_icon.png │ │ │ │ ├── ic_knote_icon_round.png │ │ │ │ ├── ic_knote_icon_background.png │ │ │ │ └── ic_knote_icon_foreground.png │ │ │ ├── mipmap-mdpi │ │ │ │ ├── ic_knote_icon.png │ │ │ │ ├── ic_knote_icon_round.png │ │ │ │ ├── ic_knote_icon_background.png │ │ │ │ └── ic_knote_icon_foreground.png │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── ic_knote_icon.png │ │ │ │ ├── ic_knote_icon_round.png │ │ │ │ ├── ic_knote_icon_background.png │ │ │ │ └── ic_knote_icon_foreground.png │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── ic_knote_icon.png │ │ │ │ ├── ic_knote_icon_round.png │ │ │ │ ├── ic_knote_icon_background.png │ │ │ │ └── ic_knote_icon_foreground.png │ │ │ ├── mipmap-xxxhdpi │ │ │ │ ├── ic_knote_icon.png │ │ │ │ ├── ic_knote_icon_round.png │ │ │ │ ├── ic_knote_icon_background.png │ │ │ │ └── ic_knote_icon_foreground.png │ │ │ ├── values │ │ │ │ ├── preloaded_fonts.xml │ │ │ │ ├── styles.xml │ │ │ │ ├── strings.xml │ │ │ │ ├── colors.xml │ │ │ │ └── font_certs.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ │ ├── ic_knote_icon.xml │ │ │ │ └── ic_knote_icon_round.xml │ │ │ ├── font │ │ │ │ └── poppins.xml │ │ │ ├── menu │ │ │ │ └── note_item_menu.xml │ │ │ ├── values-night │ │ │ │ ├── strings.xml │ │ │ │ └── colors.xml │ │ │ ├── layout │ │ │ │ ├── activity_slide.xml │ │ │ │ ├── item_slide.xml │ │ │ │ ├── note_item.xml │ │ │ │ ├── color_layout.xml │ │ │ │ ├── layout_web.xml │ │ │ │ ├── activity_main.xml │ │ │ │ ├── layout_note_editor.xml │ │ │ │ └── activity_create_note.xml │ │ │ └── drawable-v24 │ │ │ │ └── ic_launcher_foreground.xml │ │ ├── ic_knote-playstore.png │ │ ├── ic_knote_icon-playstore.png │ │ ├── java │ │ │ └── com │ │ │ │ └── kluivert │ │ │ │ └── knote │ │ │ │ ├── data │ │ │ │ ├── entities │ │ │ │ │ ├── SlideModel.kt │ │ │ │ │ └── Note.kt │ │ │ │ ├── dao │ │ │ │ │ └── NoteDao.kt │ │ │ │ ├── repo │ │ │ │ │ └── NoteRepository.kt │ │ │ │ ├── dtbase │ │ │ │ │ └── KnoteDatabase.kt │ │ │ │ └── viewModel │ │ │ │ │ └── NoteViewModel.kt │ │ │ │ ├── utils │ │ │ │ ├── KnoteListener.kt │ │ │ │ ├── ToastIt.kt │ │ │ │ ├── KnoteDiffUtil.kt │ │ │ │ ├── SnackExtension.kt │ │ │ │ └── DividerItemDecoration.java │ │ │ │ ├── di │ │ │ │ └── NoteModule.kt │ │ │ │ ├── Knote.kt │ │ │ │ ├── adapter │ │ │ │ ├── SlideAdapter.kt │ │ │ │ └── NoteAdapter.kt │ │ │ │ └── ui │ │ │ │ └── activities │ │ │ │ ├── SlideActivity.kt │ │ │ │ ├── MainActivity.kt │ │ │ │ └── CreateNoteActivity.kt │ │ └── AndroidManifest.xml │ ├── test │ │ └── java │ │ │ └── com │ │ │ └── kluivert │ │ │ └── knote │ │ │ └── ExampleUnitTest.kt │ └── androidTest │ │ └── java │ │ └── com │ │ └── kluivert │ │ └── knote │ │ └── ExampleInstrumentedTest.kt ├── proguard-rules.pro └── build.gradle ├── settings.gradle ├── screenshots ├── slideone.png ├── slidetwo.png ├── editnoteday.png ├── notelistday.png ├── slidethree.png ├── editnotenight.png ├── notelistnight.png └── mainemptyscreen.png ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── .idea ├── codeStyles │ ├── codeStyleConfig.xml │ └── Project.xml ├── vcs.xml ├── misc.xml ├── runConfigurations.xml ├── gradle.xml └── jarRepositories.xml ├── .gitignore ├── LICENSE ├── gradle.properties ├── README.md ├── gradlew.bat └── gradlew /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | rootProject.name = "Knote" -------------------------------------------------------------------------------- /screenshots/slideone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/screenshots/slideone.png -------------------------------------------------------------------------------- /screenshots/slidetwo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/screenshots/slidetwo.png -------------------------------------------------------------------------------- /screenshots/editnoteday.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/screenshots/editnoteday.png -------------------------------------------------------------------------------- /screenshots/notelistday.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/screenshots/notelistday.png -------------------------------------------------------------------------------- /screenshots/slidethree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/screenshots/slidethree.png -------------------------------------------------------------------------------- /screenshots/editnotenight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/screenshots/editnotenight.png -------------------------------------------------------------------------------- /screenshots/notelistnight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/screenshots/notelistnight.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/sun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/drawable/sun.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/drawable/web.png -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /screenshots/mainemptyscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/screenshots/mainemptyscreen.png -------------------------------------------------------------------------------- /app/src/main/ic_knote-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/ic_knote-playstore.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/bold.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/drawable/bold.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/moon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/drawable/moon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/drawable/more.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/calendar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/drawable/calendar.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/dummypic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/drawable/dummypic.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/kletter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/drawable/kletter.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/pencil.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/drawable/pencil.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/product.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/drawable/product.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/redmicro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/drawable/redmicro.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/slideone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/drawable/slideone.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/slidetwo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/drawable/slidetwo.png -------------------------------------------------------------------------------- /app/src/main/ic_knote_icon-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/ic_knote_icon-playstore.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/add_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/drawable/add_image.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/imgsearch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/drawable/imgsearch.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/microphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/drawable/microphone.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/slidethree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/drawable/slidethree.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_knote_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/mipmap-hdpi/ic_knote_icon.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_knote_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/mipmap-mdpi/ic_knote_icon.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_knote_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/mipmap-xhdpi/ic_knote_icon.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_knote_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/mipmap-xxhdpi/ic_knote_icon.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_knote_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_knote_icon.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_knote_icon_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/mipmap-hdpi/ic_knote_icon_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_knote_icon_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/mipmap-mdpi/ic_knote_icon_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_knote_icon_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/mipmap-xhdpi/ic_knote_icon_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_knote_icon_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/mipmap-xxhdpi/ic_knote_icon_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_knote_icon_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_knote_icon_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_knote_icon_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/mipmap-hdpi/ic_knote_icon_background.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_knote_icon_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/mipmap-hdpi/ic_knote_icon_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_knote_icon_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/mipmap-mdpi/ic_knote_icon_background.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_knote_icon_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/mipmap-mdpi/ic_knote_icon_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_knote_icon_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/mipmap-xhdpi/ic_knote_icon_background.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_knote_icon_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/mipmap-xhdpi/ic_knote_icon_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_knote_icon_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/mipmap-xxhdpi/ic_knote_icon_background.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_knote_icon_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/mipmap-xxhdpi/ic_knote_icon_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_knote_icon_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_knote_icon_background.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_knote_icon_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edkluivert/Knote/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_knote_icon_foreground.png -------------------------------------------------------------------------------- /.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/java/com/kluivert/knote/data/entities/SlideModel.kt: -------------------------------------------------------------------------------- 1 | package com.kluivert.knote.data.entities 2 | 3 | data class SlideModel( 4 | val slideimage : Int, 5 | var slidetitle : String, 6 | var slidedesc : String 7 | ) -------------------------------------------------------------------------------- /app/src/main/res/drawable/background_delete.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/values/preloaded_fonts.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | @font/poppins 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/color_layout1.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/color_layout2.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/color_layout3.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/color_layout4.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/color_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | /.idea/navEditor.xml 9 | /.idea/assetWizardSettings.xml 10 | .DS_Store 11 | /build 12 | /captures 13 | .externalNativeBuild 14 | .cxx 15 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Aug 12 09:59:11 WAT 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-all.zip 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/button_done_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/linear_grey_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/button_slide_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_knote_icon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_knote_icon_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/noteditors_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_layout_add.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/java/com/kluivert/knote/utils/KnoteListener.kt: -------------------------------------------------------------------------------- 1 | package com.kluivert.knote.utils 2 | 3 | import com.kluivert.knote.data.entities.Note 4 | 5 | interface KnoteListener { 6 | 7 | fun listener(note : Note, position : Int) 8 | 9 | fun editlistener(note : Note, position : Int) 10 | 11 | suspend fun deleteListener(note : Note, position: Int) 12 | 13 | } -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_done.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_warning.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/tintdone.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_arrow_back.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/font/poppins.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_delete.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/menu/note_item_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 12 | 13 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/test/java/com/kluivert/knote/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.kluivert.knote 2 | 3 | import org.junit.Test 4 | 5 | import org.junit.Assert.* 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * See [testing documentation](http://d.android.com/tools/testing). 11 | */ 12 | class ExampleUnitTest { 13 | @Test 14 | fun addition_isCorrect() { 15 | assertEquals(4, 2 + 2) 16 | } 17 | } -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_cancel.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/kluivert/knote/di/NoteModule.kt: -------------------------------------------------------------------------------- 1 | package com.kluivert.knote.di 2 | 3 | import com.kluivert.knote.data.repo.NoteRepository 4 | import com.kluivert.knote.data.viewModel.NoteViewModel 5 | import kotlinx.coroutines.InternalCoroutinesApi 6 | import org.koin.androidx.viewmodel.dsl.viewModel 7 | import org.koin.dsl.module 8 | 9 | val appModule = module { 10 | 11 | single { NoteRepository(get()) } 12 | 13 | } 14 | 15 | @InternalCoroutinesApi 16 | val viewModelModule = module { 17 | 18 | viewModel { NoteViewModel(get()) } 19 | 20 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kluivert/knote/utils/ToastIt.kt: -------------------------------------------------------------------------------- 1 | package com.kluivert.knote.utils 2 | 3 | import android.app.Activity 4 | import android.content.Context 5 | import android.content.Intent 6 | import android.widget.Toast 7 | 8 | private var toast: Toast? = null 9 | 10 | inline fun Context.startActivity() { 11 | startActivity(Intent(this, T::class.java)) 12 | } 13 | 14 | fun Context.toastIt(message: String) { 15 | toast?.cancel() 16 | toast = Toast.makeText(this, message, Toast.LENGTH_LONG) 17 | .apply { show() } 18 | } -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_link.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_search.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/java/com/kluivert/knote/data/dao/NoteDao.kt: -------------------------------------------------------------------------------- 1 | package com.kluivert.knote.data.dao 2 | 3 | import androidx.lifecycle.LiveData 4 | import androidx.room.* 5 | import com.kluivert.knote.data.entities.Note 6 | 7 | @Dao 8 | interface NoteDao { 9 | 10 | @Insert(onConflict = OnConflictStrategy.REPLACE) 11 | suspend fun addNote(note : Note) 12 | 13 | @Query("SELECT * FROM knote_table ORDER BY id DESC") 14 | fun readNote() : LiveData> 15 | 16 | @Delete 17 | suspend fun deleteNote(note: Note) 18 | 19 | @Update 20 | suspend fun updateNote(note: Note) 21 | 22 | } -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/kluivert/knote/data/repo/NoteRepository.kt: -------------------------------------------------------------------------------- 1 | package com.kluivert.knote.data.repo 2 | 3 | import androidx.lifecycle.LiveData 4 | import com.kluivert.knote.data.dao.NoteDao 5 | import com.kluivert.knote.data.entities.Note 6 | 7 | class NoteRepository(var noteDao: NoteDao) { 8 | 9 | val readNote : LiveData> = noteDao.readNote() 10 | 11 | suspend fun addNote(note: Note){ 12 | noteDao.addNote(note) 13 | } 14 | 15 | suspend fun deleteNote(note: Note){ 16 | noteDao.deleteNote(note) 17 | } 18 | 19 | suspend fun updateNote(note: Note){ 20 | noteDao.updateNote(note) 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kluivert/knote/Knote.kt: -------------------------------------------------------------------------------- 1 | package com.kluivert.knote 2 | 3 | import android.app.Application 4 | import com.kluivert.knote.di.appModule 5 | import com.kluivert.knote.di.viewModelModule 6 | import kotlinx.coroutines.InternalCoroutinesApi 7 | import org.koin.android.ext.koin.androidContext 8 | import org.koin.core.context.startKoin 9 | 10 | 11 | class Knote : Application() { 12 | 13 | @InternalCoroutinesApi 14 | override fun onCreate() { 15 | super.onCreate() 16 | 17 | startKoin { 18 | androidContext(this@Knote) 19 | modules(listOf(appModule, viewModelModule)) 20 | } 21 | 22 | 23 | } 24 | 25 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/com/kluivert/knote/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package com.kluivert.knote 2 | 3 | import androidx.test.platform.app.InstrumentationRegistry 4 | import androidx.test.ext.junit.runners.AndroidJUnit4 5 | 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | import org.junit.Assert.* 10 | 11 | /** 12 | * Instrumented test, which will execute on an Android device. 13 | * 14 | * See [testing documentation](http://d.android.com/tools/testing). 15 | */ 16 | @RunWith(AndroidJUnit4::class) 17 | class ExampleInstrumentedTest { 18 | @Test 19 | fun useAppContext() { 20 | // Context of the app under test. 21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext 22 | assertEquals("com.kluivert.knote", appContext.packageName) 23 | } 24 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kluivert/knote/utils/KnoteDiffUtil.kt: -------------------------------------------------------------------------------- 1 | package com.kluivert.knote.utils 2 | 3 | import androidx.recyclerview.widget.DiffUtil 4 | import com.kluivert.knote.data.entities.Note 5 | 6 | class KnoteDiffUtil( 7 | private val oldList: MutableList, 8 | private val newList: MutableList 9 | ) : DiffUtil.Callback() { 10 | 11 | 12 | override fun getOldListSize() = oldList.size 13 | 14 | 15 | override fun getNewListSize() = newList.size 16 | 17 | 18 | override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int) 19 | = oldList[oldItemPosition].id == newList[newItemPosition].id 20 | 21 | 22 | override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean { 23 | return oldList[oldItemPosition] == newList[newItemPosition] 24 | } 25 | } -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /app/src/main/java/com/kluivert/knote/data/entities/Note.kt: -------------------------------------------------------------------------------- 1 | package com.kluivert.knote.data.entities 2 | 3 | import androidx.room.ColumnInfo 4 | import androidx.room.Entity 5 | import androidx.room.PrimaryKey 6 | import java.io.Serializable 7 | 8 | @Entity(tableName = "knote_table") 9 | data class Note( 10 | @PrimaryKey(autoGenerate = true) 11 | var id : Int, 12 | 13 | @ColumnInfo(name = "title") 14 | val noteTitle : String, 15 | 16 | @ColumnInfo(name = "note_content") 17 | val noteContent : String, 18 | 19 | @ColumnInfo(name = "note_image") 20 | val noteImage : String, 21 | 22 | @ColumnInfo(name = "web_link") 23 | val webLink : String, 24 | 25 | @ColumnInfo(name = "color") 26 | val color : String, 27 | 28 | @ColumnInfo(name = "date_time") 29 | val dateTime : String 30 | 31 | ):Serializable -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/kluivert/knote/utils/SnackExtension.kt: -------------------------------------------------------------------------------- 1 | package com.kluivert.knote.utils 2 | 3 | import android.view.View 4 | import androidx.annotation.StringRes 5 | import com.google.android.material.snackbar.Snackbar 6 | 7 | 8 | inline fun View.snack(@StringRes messageRes: Int, length: Int = Snackbar.LENGTH_LONG, f: Snackbar.() -> Unit) { 9 | snack(resources.getString(messageRes), length, f) 10 | } 11 | 12 | inline fun View.snack(message: String, length: Int = Snackbar.LENGTH_LONG, f: Snackbar.() -> Unit) { 13 | val snack = Snackbar.make(this, message, length) 14 | snack.f() 15 | snack.show() 16 | } 17 | 18 | fun Snackbar.action(@StringRes actionRes: Int, color: Int? = null, listener: (View) -> Unit) { 19 | action(view.resources.getString(actionRes), color, listener) 20 | } 21 | 22 | fun Snackbar.action(action: String, color: Int? = null, listener: (View) -> Unit) { 23 | setAction(action, listener) 24 | color?.let { setActionTextColor(color) } 25 | } -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Knote 3 | Finish 4 | Enter Title 5 | Enter contents 6 | Aug 5, 2020 7 | h2 8 | p2 9 | Edit Tools 10 | Title is really unknown 11 | 12 | Edit 13 | Delete 14 | Share 15 | July 16 | h 17 | p 18 | Add 19 | Cancel 20 | Enter url 21 | Add url 22 | No lists yet 23 | -------------------------------------------------------------------------------- /app/src/main/res/values-night/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Finish 4 | Enter Title 5 | Enter contents 6 | Aug 5, 2020 7 | h2 8 | p2 9 | Edit Tools 10 | Title is really unknown 11 | 12 | Edit 13 | Delete 14 | Share 15 | July 16 | h 17 | p 18 | Add 19 | Cancel 20 | Enter url 21 | Add url 22 | No lists yet 23 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Kluivert 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/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #ffffff 4 | #ffffff 5 | #EF5059 6 | 7 | #4F4F4F 8 | #E9E9E9 9 | #AAAAAA 10 | #000000 11 | #C4C4C4 12 | 13 | #ef5059 14 | #F47980 15 | #00AAAAAA 16 | 17 | #000000 18 | #ffffff 19 | #ffffff 20 | 21 | 22 | #FFC107 23 | #2196F3 24 | #4CAF50 25 | #E91E63 26 | 27 | #ffffff 28 | 29 | #ffffff 30 | -------------------------------------------------------------------------------- /app/src/main/res/values-night/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | #FC302F2F 5 | #FC302F2F 6 | #EF5059 7 | 8 | #C4C4C4 9 | #E9E9E9 10 | #AAAAAA 11 | #EF5059 12 | #C4C4C4 13 | #ef5059 14 | #F47980 15 | #00AAAAAA 16 | 17 | #E9E9E9 18 | #000000 19 | #000000 20 | 21 | 22 | #FFC107 23 | #2196F3 24 | #4CAF50 25 | #E91E63 26 | 27 | #FC302F2F 28 | #ffffff 29 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | # IDE (e.g. Android Studio) users: 3 | # Gradle settings configured through the IDE *will override* 4 | # any settings specified in this file. 5 | # For more details on how to configure your build environment visit 6 | # http://www.gradle.org/docs/current/userguide/build_environment.html 7 | # Specifies the JVM arguments used for the daemon process. 8 | # The setting is particularly useful for tweaking memory settings. 9 | org.gradle.jvmargs=-Xmx2048m 10 | # When configured, Gradle will run in incubating parallel mode. 11 | # This option should only be used with decoupled projects. More details, visit 12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 13 | # org.gradle.parallel=true 14 | # AndroidX package structure to make it clearer which packages are bundled with the 15 | # Android operating system, and which are packaged with your app"s APK 16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn 17 | android.useAndroidX=true 18 | # Automatically convert third-party libraries to use AndroidX 19 | android.enableJetifier=true 20 | # Kotlin code style for this project: "official" or "obsolete": 21 | kotlin.code.style=official -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Knote 2 | 3 | 4 | 5 | Knote is a standard note taking app with Mvvm architecture 6 | 7 | 8 | 9 | ### Features 10 | 11 | - Adding an image to note 12 | - Using google text to speech for quick note reading 13 | - Recording voice notes 14 | - Adding web links 15 | - Using OCR for quick note taking 16 | 17 | ### Libraries and thirdparties 18 | 19 | - Room db 20 | - Coil 21 | - LiveData 22 | - Google mobile vision 23 | - Google text to speech 24 | - Koin 25 | - Coroutines 26 | 27 | 28 | 29 | Intro slide one | Intro slide two | Intro slide three | empty list 30 | --- | --- | --- | --- 31 | | | | 32 | 33 |

⚪⚫ Light and Dark themes


34 | 35 |

36 | 37 | 38 |

39 | 40 | 41 | 42 | 43 | 44 | 45 | ### Todos 46 | 47 | - Write More Tests 48 | - Improve Performance 49 | 50 | License 51 | ---- 52 | 53 | MIT 54 | 55 | 56 | **Free Software, Hell Yeah!** 57 | -------------------------------------------------------------------------------- /.idea/jarRepositories.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 14 | 15 | 19 | 20 | 24 | 25 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/kluivert/knote/data/dtbase/KnoteDatabase.kt: -------------------------------------------------------------------------------- 1 | package com.kluivert.knote.data.dtbase 2 | 3 | import android.content.Context 4 | import androidx.room.Database 5 | import androidx.room.Room 6 | import androidx.room.RoomDatabase 7 | import com.kluivert.knote.data.dao.NoteDao 8 | import com.kluivert.knote.data.entities.Note 9 | import kotlinx.coroutines.InternalCoroutinesApi 10 | import kotlinx.coroutines.internal.synchronized 11 | 12 | @InternalCoroutinesApi 13 | @Database(entities = [Note::class], version = 1, exportSchema = false) 14 | abstract class KnoteDatabase : RoomDatabase() { 15 | 16 | abstract fun noteDao() : NoteDao 17 | 18 | companion object{ 19 | 20 | @Volatile 21 | private var INSTANCE : KnoteDatabase? = null 22 | 23 | 24 | fun getDatabase(context: Context) : KnoteDatabase { 25 | val tempInst = 26 | INSTANCE 27 | 28 | if(tempInst != null){ 29 | return tempInst 30 | } 31 | 32 | synchronized(this){ 33 | var instance = Room.databaseBuilder(context.applicationContext, 34 | KnoteDatabase::class.java, 35 | "knote_database" 36 | ).build() 37 | INSTANCE = instance 38 | return instance 39 | 40 | } 41 | 42 | 43 | } 44 | 45 | 46 | } 47 | 48 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kluivert/knote/data/viewModel/NoteViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.kluivert.knote.data.viewModel 2 | 3 | import android.content.Context 4 | import androidx.lifecycle.LiveData 5 | import androidx.lifecycle.ViewModel 6 | import androidx.lifecycle.viewModelScope 7 | import com.kluivert.knote.data.dtbase.KnoteDatabase 8 | import com.kluivert.knote.data.entities.Note 9 | import com.kluivert.knote.data.repo.NoteRepository 10 | import kotlinx.coroutines.Dispatchers 11 | import kotlinx.coroutines.InternalCoroutinesApi 12 | import kotlinx.coroutines.launch 13 | 14 | @InternalCoroutinesApi 15 | class NoteViewModel(context: Context) : ViewModel(){ 16 | 17 | val readNote : LiveData> 18 | var noteRepo : NoteRepository 19 | 20 | init { 21 | 22 | val noteDao = KnoteDatabase.getDatabase(context.applicationContext).noteDao() 23 | noteRepo = NoteRepository(noteDao) 24 | readNote = noteDao.readNote() 25 | 26 | } 27 | 28 | fun addNote(note: Note) { 29 | viewModelScope.launch (Dispatchers.IO){ 30 | noteRepo.addNote(note) 31 | } 32 | } 33 | 34 | 35 | fun updateNote(note: Note){ 36 | viewModelScope.launch (Dispatchers.IO){ 37 | noteRepo.updateNote(note) 38 | 39 | } 40 | } 41 | 42 | fun deleteNote(note: Note){ 43 | viewModelScope.launch(Dispatchers.IO) { 44 | noteRepo.deleteNote(note) 45 | } 46 | } 47 | 48 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kluivert/knote/adapter/SlideAdapter.kt: -------------------------------------------------------------------------------- 1 | package com.kluivert.knote.adapter 2 | 3 | import android.transition.Slide 4 | import android.view.LayoutInflater 5 | import android.view.View 6 | import android.view.ViewGroup 7 | import androidx.recyclerview.widget.DiffUtil 8 | import androidx.recyclerview.widget.RecyclerView 9 | import com.kluivert.knote.R 10 | import com.kluivert.knote.data.entities.SlideModel 11 | import kotlinx.android.synthetic.main.item_slide.view.* 12 | import java.util.zip.Inflater 13 | 14 | class SlideAdapter( 15 | private var slides : List 16 | 17 | ) : RecyclerView.Adapter(){ 18 | 19 | 20 | 21 | inner class SlideAdapterViewHolder(itemView : View) : RecyclerView.ViewHolder(itemView) 22 | 23 | override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SlideAdapterViewHolder { 24 | val view = LayoutInflater.from(parent.context).inflate(R.layout.item_slide,parent,false) 25 | return SlideAdapterViewHolder(view) 26 | } 27 | 28 | override fun getItemCount(): Int { 29 | return slides.size 30 | } 31 | 32 | override fun onBindViewHolder(holder: SlideAdapterViewHolder, position: Int) { 33 | 34 | holder.itemView.apply { 35 | val current = slides[position] 36 | tvSlideTitle.text = current.slidetitle 37 | tvSlideDesc.text = current.slidedesc 38 | imgSlide.setImageResource(current.slideimage) 39 | 40 | } 41 | 42 | } 43 | 44 | } -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 28 | 31 | 32 | 33 | 34 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_slide.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 15 | 16 | 24 |