├── .editorconfig ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.yml │ ├── config.yml │ └── feature_request.yml ├── dependabot.yml └── workflows │ ├── foss-release.yml │ ├── gplay-release.yml │ ├── image-minimizer.yml │ ├── no-response.yml │ ├── pr-labeler.yml │ ├── pr.yml │ ├── release-commenter.yml │ └── testing-build.yml ├── .gitignore ├── CHANGELOG.md ├── CONTRIBUTING.md ├── Gemfile ├── Gemfile.lock ├── LICENSE ├── README.md ├── app ├── .gitignore ├── build.gradle.kts ├── detekt-baseline.xml ├── lint-baseline.xml ├── proguard-rules.pro ├── schemas │ └── org.fossify.notes.databases.NotesDatabase │ │ └── 4.json └── src │ ├── debug │ └── res │ │ └── values │ │ └── strings.xml │ ├── foss │ └── res │ │ └── values │ │ └── bools.xml │ ├── gplay │ └── res │ │ └── values │ │ └── bools.xml │ └── main │ ├── AndroidManifest.xml │ ├── ic_launcher-playstore.png │ ├── kotlin │ └── org │ │ └── fossify │ │ └── notes │ │ ├── App.kt │ │ ├── activities │ │ ├── MainActivity.kt │ │ ├── SettingsActivity.kt │ │ ├── SimpleActivity.kt │ │ ├── SplashActivity.kt │ │ └── WidgetConfigureActivity.kt │ │ ├── adapters │ │ ├── NotesPagerAdapter.kt │ │ ├── OpenNoteAdapter.kt │ │ ├── TasksAdapter.kt │ │ └── WidgetAdapter.kt │ │ ├── databases │ │ └── NotesDatabase.kt │ │ ├── dialogs │ │ ├── DateTimePatternInfoDialog.kt │ │ ├── DeleteNoteDialog.kt │ │ ├── EditTaskDialog.kt │ │ ├── ExportFileDialog.kt │ │ ├── ExportFilesDialog.kt │ │ ├── ExportNotesDialog.kt │ │ ├── ImportFolderDialog.kt │ │ ├── ManageAutoBackupsDialog.kt │ │ ├── NewChecklistItemDialog.kt │ │ ├── NewNoteDialog.kt │ │ ├── OpenFileDialog.kt │ │ ├── OpenNoteDialog.kt │ │ ├── RenameNoteDialog.kt │ │ ├── SortChecklistDialog.kt │ │ └── UnlockNotesDialog.kt │ │ ├── extensions │ │ ├── Context.kt │ │ ├── Fragment.kt │ │ └── String.kt │ │ ├── fragments │ │ ├── NoteFragment.kt │ │ ├── TasksFragment.kt │ │ └── TextFragment.kt │ │ ├── helpers │ │ ├── CollatorBasedComparator.kt │ │ ├── Config.kt │ │ ├── Constants.kt │ │ ├── MyMovementMethod.kt │ │ ├── MyWidgetProvider.kt │ │ └── NotesHelper.kt │ │ ├── interfaces │ │ ├── NotesDao.kt │ │ ├── TasksActionListener.kt │ │ └── WidgetsDao.kt │ │ ├── models │ │ ├── Note.kt │ │ ├── NoteType.kt │ │ ├── NoteTypeConverter.kt │ │ ├── Task.kt │ │ ├── TextHistory.kt │ │ ├── TextHistoryItem.kt │ │ └── Widget.kt │ │ ├── receivers │ │ ├── AutomaticBackupReceiver.kt │ │ └── BootCompletedReceiver.kt │ │ ├── services │ │ └── WidgetService.kt │ │ └── views │ │ └── MyHorizontalScrollView.kt │ └── res │ ├── drawable-nodpi │ └── img_widget_preview.webp │ ├── drawable │ ├── ic_launcher_foreground.xml │ ├── ic_launcher_monochrome.xml │ ├── ic_lock_open_vector.xml │ ├── ic_shortcut_icon.xml │ ├── shortcut_check.xml │ └── shortcut_note.xml │ ├── layout │ ├── activity_main.xml │ ├── activity_settings.xml │ ├── datetime_pattern_info_layout.xml │ ├── dialog_delete_note.xml │ ├── dialog_export_file.xml │ ├── dialog_export_files.xml │ ├── dialog_export_notes.xml │ ├── dialog_import_folder.xml │ ├── dialog_manage_automatic_backups.xml │ ├── dialog_new_checklist_item.xml │ ├── dialog_new_note.xml │ ├── dialog_open_file.xml │ ├── dialog_open_note.xml │ ├── dialog_rename_checklist_item.xml │ ├── dialog_rename_note.xml │ ├── dialog_sort_checklist.xml │ ├── dialog_unlock_notes.xml │ ├── fragment_checklist.xml │ ├── fragment_text.xml │ ├── item_add_checklist.xml │ ├── item_checked_tasks.xml │ ├── item_checklist.xml │ ├── item_checklist_widget.xml │ ├── item_locked_note.xml │ ├── note_view_horiz_scrollable.xml │ ├── note_view_static.xml │ ├── open_note_item.xml │ ├── widget.xml │ ├── widget_config.xml │ └── widget_text_layout.xml │ ├── menu │ ├── cab_checklist.xml │ └── menu.xml │ ├── mipmap-anydpi-v26 │ ├── ic_launcher.xml │ ├── ic_launcher_amber.xml │ ├── ic_launcher_blue.xml │ ├── ic_launcher_blue_grey.xml │ ├── ic_launcher_brown.xml │ ├── ic_launcher_cyan.xml │ ├── ic_launcher_deep_orange.xml │ ├── ic_launcher_deep_purple.xml │ ├── ic_launcher_grey_black.xml │ ├── ic_launcher_indigo.xml │ ├── ic_launcher_light_blue.xml │ ├── ic_launcher_light_green.xml │ ├── ic_launcher_lime.xml │ ├── ic_launcher_orange.xml │ ├── ic_launcher_pink.xml │ ├── ic_launcher_purple.xml │ ├── ic_launcher_red.xml │ ├── ic_launcher_teal.xml │ └── ic_launcher_yellow.xml │ ├── mipmap-hdpi │ ├── ic_launcher.webp │ ├── ic_launcher_amber.webp │ ├── ic_launcher_blue.webp │ ├── ic_launcher_blue_grey.webp │ ├── ic_launcher_brown.webp │ ├── ic_launcher_cyan.webp │ ├── ic_launcher_deep_orange.webp │ ├── ic_launcher_deep_purple.webp │ ├── ic_launcher_grey_black.webp │ ├── ic_launcher_indigo.webp │ ├── ic_launcher_light_blue.webp │ ├── ic_launcher_light_green.webp │ ├── ic_launcher_lime.webp │ ├── ic_launcher_orange.webp │ ├── ic_launcher_pink.webp │ ├── ic_launcher_purple.webp │ ├── ic_launcher_red.webp │ ├── ic_launcher_teal.webp │ └── ic_launcher_yellow.webp │ ├── mipmap-mdpi │ ├── ic_launcher.webp │ ├── ic_launcher_amber.webp │ ├── ic_launcher_blue.webp │ ├── ic_launcher_blue_grey.webp │ ├── ic_launcher_brown.webp │ ├── ic_launcher_cyan.webp │ ├── ic_launcher_deep_orange.webp │ ├── ic_launcher_deep_purple.webp │ ├── ic_launcher_grey_black.webp │ ├── ic_launcher_indigo.webp │ ├── ic_launcher_light_blue.webp │ ├── ic_launcher_light_green.webp │ ├── ic_launcher_lime.webp │ ├── ic_launcher_orange.webp │ ├── ic_launcher_pink.webp │ ├── ic_launcher_purple.webp │ ├── ic_launcher_red.webp │ ├── ic_launcher_teal.webp │ └── ic_launcher_yellow.webp │ ├── mipmap-xhdpi │ ├── ic_launcher.webp │ ├── ic_launcher_amber.webp │ ├── ic_launcher_blue.webp │ ├── ic_launcher_blue_grey.webp │ ├── ic_launcher_brown.webp │ ├── ic_launcher_cyan.webp │ ├── ic_launcher_deep_orange.webp │ ├── ic_launcher_deep_purple.webp │ ├── ic_launcher_grey_black.webp │ ├── ic_launcher_indigo.webp │ ├── ic_launcher_light_blue.webp │ ├── ic_launcher_light_green.webp │ ├── ic_launcher_lime.webp │ ├── ic_launcher_orange.webp │ ├── ic_launcher_pink.webp │ ├── ic_launcher_purple.webp │ ├── ic_launcher_red.webp │ ├── ic_launcher_teal.webp │ └── ic_launcher_yellow.webp │ ├── mipmap-xxhdpi │ ├── ic_launcher.webp │ ├── ic_launcher_amber.webp │ ├── ic_launcher_blue.webp │ ├── ic_launcher_blue_grey.webp │ ├── ic_launcher_brown.webp │ ├── ic_launcher_cyan.webp │ ├── ic_launcher_deep_orange.webp │ ├── ic_launcher_deep_purple.webp │ ├── ic_launcher_grey_black.webp │ ├── ic_launcher_indigo.webp │ ├── ic_launcher_light_blue.webp │ ├── ic_launcher_light_green.webp │ ├── ic_launcher_lime.webp │ ├── ic_launcher_orange.webp │ ├── ic_launcher_pink.webp │ ├── ic_launcher_purple.webp │ ├── ic_launcher_red.webp │ ├── ic_launcher_teal.webp │ └── ic_launcher_yellow.webp │ ├── mipmap-xxxhdpi │ ├── ic_launcher.webp │ ├── ic_launcher_amber.webp │ ├── ic_launcher_blue.webp │ ├── ic_launcher_blue_grey.webp │ ├── ic_launcher_brown.webp │ ├── ic_launcher_cyan.webp │ ├── ic_launcher_deep_orange.webp │ ├── ic_launcher_deep_purple.webp │ ├── ic_launcher_grey_black.webp │ ├── ic_launcher_indigo.webp │ ├── ic_launcher_light_blue.webp │ ├── ic_launcher_light_green.webp │ ├── ic_launcher_lime.webp │ ├── ic_launcher_orange.webp │ ├── ic_launcher_pink.webp │ ├── ic_launcher_purple.webp │ ├── ic_launcher_red.webp │ ├── ic_launcher_teal.webp │ └── ic_launcher_yellow.webp │ ├── values-ar │ └── strings.xml │ ├── values-az │ └── strings.xml │ ├── values-b+es+419 │ └── strings.xml │ ├── values-be │ └── strings.xml │ ├── values-bg │ └── strings.xml │ ├── values-bn-rBD │ └── strings.xml │ ├── values-bn │ └── strings.xml │ ├── values-br │ └── strings.xml │ ├── values-bs │ └── strings.xml │ ├── values-ca │ └── strings.xml │ ├── values-ckb │ └── strings.xml │ ├── values-cr │ └── strings.xml │ ├── values-cs │ └── strings.xml │ ├── values-cy │ └── strings.xml │ ├── values-da │ └── strings.xml │ ├── values-de │ └── strings.xml │ ├── values-el │ └── strings.xml │ ├── values-en-rGB │ └── strings.xml │ ├── values-en-rIN │ └── strings.xml │ ├── values-eo │ └── strings.xml │ ├── values-es-rUS │ └── strings.xml │ ├── values-es │ └── strings.xml │ ├── values-et │ └── strings.xml │ ├── values-eu │ └── strings.xml │ ├── values-fa │ └── strings.xml │ ├── values-fi │ └── strings.xml │ ├── values-fil │ └── strings.xml │ ├── values-fr │ └── strings.xml │ ├── values-ga │ └── strings.xml │ ├── values-gl │ └── strings.xml │ ├── values-hi │ └── strings.xml │ ├── values-hr │ └── strings.xml │ ├── values-hu │ └── strings.xml │ ├── values-ia │ └── strings.xml │ ├── values-in │ └── strings.xml │ ├── values-is │ └── strings.xml │ ├── values-it │ └── strings.xml │ ├── values-iw │ └── strings.xml │ ├── values-ja │ └── strings.xml │ ├── values-kn │ └── strings.xml │ ├── values-ko │ └── strings.xml │ ├── values-kr │ └── strings.xml │ ├── values-lt │ └── strings.xml │ ├── values-ltg │ └── strings.xml │ ├── values-lv │ └── strings.xml │ ├── values-mk │ └── strings.xml │ ├── values-ml │ └── strings.xml │ ├── values-ms │ └── strings.xml │ ├── values-my │ └── strings.xml │ ├── values-nb-rNO │ └── strings.xml │ ├── values-ne │ └── strings.xml │ ├── values-nl │ └── strings.xml │ ├── values-nn │ └── strings.xml │ ├── values-or │ └── strings.xml │ ├── values-pa-rPK │ └── strings.xml │ ├── values-pa │ └── strings.xml │ ├── values-pl │ └── strings.xml │ ├── values-pt-rBR │ └── strings.xml │ ├── values-pt-rPT │ └── strings.xml │ ├── values-pt │ └── strings.xml │ ├── values-ro │ └── strings.xml │ ├── values-ru │ └── strings.xml │ ├── values-sat │ └── strings.xml │ ├── values-si │ └── strings.xml │ ├── values-sk │ └── strings.xml │ ├── values-sl │ └── strings.xml │ ├── values-sr │ └── strings.xml │ ├── values-sv │ └── strings.xml │ ├── values-ta │ └── strings.xml │ ├── values-te │ └── strings.xml │ ├── values-th │ └── strings.xml │ ├── values-tr │ └── strings.xml │ ├── values-uk │ └── strings.xml │ ├── values-vi │ └── strings.xml │ ├── values-zgh │ └── strings.xml │ ├── values-zh-rCN │ └── strings.xml │ ├── values-zh-rHK │ └── strings.xml │ ├── values-zh-rTW │ └── strings.xml │ ├── values │ ├── colors.xml │ ├── dimens.xml │ ├── donottranslate.xml │ ├── integers.xml │ ├── strings.xml │ └── styles.xml │ └── xml │ └── widget_info.xml ├── build.gradle.kts ├── fastlane ├── Appfile ├── Fastfile ├── README.md └── metadata │ └── android │ ├── cs-CZ │ ├── full_description.txt │ └── short_description.txt │ ├── de-DE │ ├── full_description.txt │ └── short_description.txt │ ├── en-US │ ├── changelogs │ │ ├── 2.txt │ │ ├── 3.txt │ │ ├── 4.txt │ │ └── 5.txt │ ├── full_description.txt │ ├── images │ │ ├── featureGraphic.png │ │ ├── icon.png │ │ ├── phoneScreenshots │ │ │ ├── 1_en-US.png │ │ │ ├── 2_en-US.png │ │ │ ├── 3_en-US.png │ │ │ ├── 4_en-US.png │ │ │ ├── 5_en-US.png │ │ │ └── 6_en-US.png │ │ └── tenInchScreenshots │ │ │ ├── 1_en-US.png │ │ │ ├── 2_en-US.png │ │ │ ├── 3_en-US.png │ │ │ ├── 4_en-US.png │ │ │ ├── 5_en-US.png │ │ │ └── 6_en-US.png │ ├── short_description.txt │ └── title.txt │ ├── eo │ └── short_description.txt │ ├── es-ES │ ├── full_description.txt │ └── short_description.txt │ ├── et │ └── short_description.txt │ ├── eu-ES │ └── full_description.txt │ ├── ga │ ├── full_description.txt │ └── short_description.txt │ ├── id │ ├── full_description.txt │ └── short_description.txt │ ├── it-IT │ ├── full_description.txt │ └── short_description.txt │ ├── iw-IL │ ├── full_description.txt │ └── short_description.txt │ ├── nl-NL │ └── short_description.txt │ ├── pl-PL │ ├── full_description.txt │ └── short_description.txt │ ├── sv-SE │ └── short_description.txt │ ├── tr-TR │ └── full_description.txt │ ├── uk │ ├── full_description.txt │ └── short_description.txt │ ├── zh-CN │ ├── full_description.txt │ └── short_description.txt │ └── zh-TW │ ├── full_description.txt │ └── short_description.txt ├── gradle.properties ├── gradle ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── graphics ├── featureGraphic.png ├── foreground.svg ├── icon.svg └── icon.webp ├── keystore.properties_sample └── settings.gradle.kts /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig 2 | # http://EditorConfig.org 3 | 4 | # top-most EditorConfig file 5 | root = true 6 | 7 | # LF end-of-line, insert an empty new line and UTF-8 8 | [*] 9 | end_of_line = lf 10 | insert_final_newline = true 11 | charset = utf-8 12 | indent_style = space 13 | indent_size = 4 14 | continuation_indent_size = 4 15 | max_line_length = 160 16 | 17 | [*.xml] 18 | continuation_indent_size = 4 19 | 20 | [*.kt] 21 | ij_kotlin_name_count_to_use_star_import = 5 22 | ij_kotlin_name_count_to_use_star_import_for_members = 5 23 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Questions 4 | url: https://github.com/FossifyOrg/Notes/discussions 5 | about: Please ask and answer questions here. -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.yml: -------------------------------------------------------------------------------- 1 | name: Feature request 2 | description: Suggest an idea for this project 3 | labels: [ "feature request", "needs triage" ] 4 | body: 5 | - type: markdown 6 | attributes: 7 | value: | 8 | ## Hi there 👋 9 | Thanks for helping us improve Fossify Notes by suggesting a feature! 10 | Please fill in as much information as possible about your feature request to avoid unnecessary and time-consuming back-and-forth communication. 11 | 12 | - type: checkboxes 13 | id: checklist 14 | attributes: 15 | label: "Checklist" 16 | options: 17 | - label: "I made sure that there are **no existing issues** - [open](https://github.com/FossifyOrg/Notes/issues) or [closed](https://github.com/FossifyOrg/Notes/issues?q=is%3Aissue+is%3Aclosed) - to which I could contribute my information." 18 | required: true 19 | - label: "I made sure that there are **no existing discussions** - [open](https://github.com/FossifyOrg/Notes/discussions) or [closed](https://github.com/FossifyOrg/Notes/discussions?discussions_q=is%3Aclosed) - to which I could contribute my information." 20 | required: true 21 | - label: "I have read the FAQs inside the app (Menu -> About -> FAQs) and my problem isn't listed." 22 | required: true 23 | - label: "**I have taken the time to fill in all the required details. I understand that the request will be dismissed otherwise.**" 24 | required: true 25 | - label: "This issue contains only one feature request." 26 | required: true 27 | - label: "I have read and understood the [contribution guidelines](https://github.com/FossifyOrg/Notes/blob/master/CONTRIBUTING.md)." 28 | required: true 29 | 30 | - type: textarea 31 | id: feature-description 32 | attributes: 33 | label: Feature description 34 | description: | 35 | Explain how you want the app's look or behavior to change to suit your needs. 36 | 37 | ⚠️ Please **DO NOT** add links to SimpleMobileTools issues as they can be deleted at any time. Instead, copy-paste any useful information manually. 38 | validations: 39 | required: true 40 | 41 | - type: textarea 42 | id: why-is-the-feature-requested 43 | attributes: 44 | label: Why do you want this feature? 45 | description: | 46 | Describe any problem or limitation you come across while using the app which would be solved by this feature. 47 | validations: 48 | required: true 49 | 50 | - type: textarea 51 | id: additional-information 52 | attributes: 53 | label: Additional information 54 | description: Any other information you'd like to include, for instance sketches, mockups, pictures of rabbits, etc. 55 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | 3 | registries: 4 | maven-google: 5 | type: maven-repository 6 | url: "https://dl.google.com/dl/android/maven2/" 7 | 8 | maven-central: 9 | type: maven-repository 10 | url: "https://repo.maven.apache.org/maven2" 11 | 12 | jitpack: 13 | type: maven-repository 14 | url: "https://jitpack.io" 15 | 16 | updates: 17 | - package-ecosystem: "bundler" 18 | directory: "/" 19 | schedule: 20 | interval: "weekly" 21 | commit-message: 22 | prefix: "chore" 23 | prefix-development: "chore" 24 | include: "scope" 25 | assignees: 26 | - "naveensingh" 27 | 28 | - package-ecosystem: "gradle" 29 | directory: "/" 30 | registries: 31 | - maven-central 32 | - maven-google 33 | - jitpack 34 | schedule: 35 | interval: "weekly" 36 | commit-message: 37 | prefix: "chore" 38 | prefix-development: "chore" 39 | include: "scope" 40 | assignees: 41 | - "naveensingh" 42 | 43 | - package-ecosystem: "github-actions" 44 | directory: "/" 45 | schedule: 46 | interval: "weekly" 47 | commit-message: 48 | prefix: "chore" 49 | prefix-development: "chore" 50 | include: "scope" 51 | assignees: 52 | - "naveensingh" 53 | -------------------------------------------------------------------------------- /.github/workflows/foss-release.yml: -------------------------------------------------------------------------------- 1 | name: Github Release 2 | 3 | on: 4 | push: 5 | tags: 6 | - "*.*.*" 7 | 8 | jobs: 9 | call-release-workflow: 10 | uses: FossifyOrg/.github/.github/workflows/release.yml@main 11 | with: 12 | tag: ${{ github.ref_name }} 13 | flavor: "foss" 14 | package_name: "org.fossify.notes" 15 | secrets: inherit -------------------------------------------------------------------------------- /.github/workflows/gplay-release.yml: -------------------------------------------------------------------------------- 1 | name: Google Play Release 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | track: 7 | description: "Google Play Store release track" 8 | required: false 9 | type: choice 10 | default: "beta" 11 | options: 12 | - internal 13 | - alpha 14 | - beta 15 | - production 16 | rollout: 17 | description: "Rollout fraction (0.0-1.0)" 18 | required: false 19 | type: string 20 | default: "0.05" 21 | validate_only: 22 | description: "Fastlane dry-run?" 23 | required: false 24 | type: boolean 25 | default: false 26 | 27 | jobs: 28 | call-release-workflow: 29 | uses: FossifyOrg/.github/.github/workflows/release.yml@main 30 | with: 31 | flavor: "gplay" 32 | package_name: "org.fossify.notes" 33 | track: ${{ github.event.inputs.track }} 34 | rollout: ${{ github.event.inputs.rollout }} 35 | validate_only: ${{ github.event.inputs.validate_only == 'true' }} 36 | secrets: inherit 37 | -------------------------------------------------------------------------------- /.github/workflows/image-minimizer.yml: -------------------------------------------------------------------------------- 1 | name: Image Minimizer 2 | 3 | on: 4 | issue_comment: 5 | types: [created, edited] 6 | issues: 7 | types: [opened, edited] 8 | pull_request_target: 9 | types: [opened, edited] 10 | 11 | jobs: 12 | call-image-minimizer-workflow: 13 | uses: FossifyOrg/.github/.github/workflows/image-minimizer.yml@main 14 | secrets: inherit 15 | -------------------------------------------------------------------------------- /.github/workflows/no-response.yml: -------------------------------------------------------------------------------- 1 | name: No Response 2 | 3 | on: 4 | schedule: 5 | - cron: "0 12 * * *" # Runs daily at noon 6 | workflow_dispatch: 7 | 8 | jobs: 9 | call-no-response-workflow: 10 | uses: FossifyOrg/.github/.github/workflows/no-response.yml@main 11 | secrets: inherit 12 | -------------------------------------------------------------------------------- /.github/workflows/pr-labeler.yml: -------------------------------------------------------------------------------- 1 | name: PR Labeler 2 | 3 | on: 4 | pull_request_target: 5 | types: [opened] 6 | 7 | jobs: 8 | call-pr-labeler-workflow: 9 | uses: FossifyOrg/.github/.github/workflows/pr-labeler.yml@main 10 | secrets: inherit 11 | -------------------------------------------------------------------------------- /.github/workflows/pr.yml: -------------------------------------------------------------------------------- 1 | name: PR 2 | 3 | on: 4 | pull_request: 5 | branches: [ master ] 6 | 7 | jobs: 8 | call-pr-workflow: 9 | uses: FossifyOrg/.github/.github/workflows/pr.yml@main 10 | -------------------------------------------------------------------------------- /.github/workflows/release-commenter.yml: -------------------------------------------------------------------------------- 1 | name: Release Commenter 2 | 3 | on: 4 | release: 5 | types: [published] 6 | 7 | jobs: 8 | call-release-commenter: 9 | uses: FossifyOrg/.github/.github/workflows/release-commenter.yml@main 10 | secrets: inherit 11 | -------------------------------------------------------------------------------- /.github/workflows/testing-build.yml: -------------------------------------------------------------------------------- 1 | name: Testing build (on PR) 2 | 3 | on: 4 | pull_request: 5 | branches: [ master ] 6 | types: [ labeled, opened, synchronize, reopened ] 7 | 8 | jobs: 9 | call-testing-build-workflow: 10 | uses: FossifyOrg/.github/.github/workflows/testing-build.yml@main 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | *.aab 3 | .gradle 4 | /local.properties 5 | /.idea/ 6 | .DS_Store 7 | /build 8 | /captures 9 | keystore.jks 10 | keystore.properties 11 | fastlane/fastlane.json 12 | fastlane/report.xml 13 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 7 | 8 | ## [1.2.0] - 2025-05-07 9 | 10 | ### Added 11 | 12 | - Support for per-note sorting ([#81]) 13 | 14 | ### Changed 15 | 16 | - Replaced checkboxes in settings with switches 17 | - Moved "Move checked items to the bottom" sort option to app settings 18 | - Updated translations 19 | 20 | ### Fixed 21 | 22 | - Multiline pastes are now correctly reflected in the UI ([#99]) 23 | - Fixed sorting in widgets and Open Notes dialog ([#83], [#110]) 24 | - Corrected security label color in settings 25 | 26 | ### Removed 27 | 28 | - Dropped support for Android 7 and older versions 29 | 30 | ## [1.1.1] - 2025-03-18 31 | 32 | ### Changed 33 | 34 | - Minor bug fixes and improvements 35 | - Added more translations 36 | 37 | ### Fixed 38 | 39 | - Fixed security vulnerability in app lock 40 | 41 | ## [1.1.0] - 2024-07-22 42 | 43 | ### Added 44 | 45 | - Added collapsible checked items section at the bottom 46 | 47 | ### Changed 48 | 49 | - Minor bug fixes and improvements 50 | - Added new translations 51 | 52 | ## [1.0.0] - 2024-04-14 53 | 54 | ### Added 55 | 56 | - Initial release 57 | 58 | [Unreleased]: https://github.com/FossifyOrg/Notes/compare/1.2.0...HEAD 59 | [1.2.0]: https://github.com/FossifyOrg/Notes/compare/1.1.1...1.2.0 60 | [1.1.1]: https://github.com/FossifyOrg/Notes/compare/1.1.0...1.1.1 61 | [1.1.0]: https://github.com/FossifyOrg/Notes/compare/1.0.0...1.1.0 62 | [1.0.0]: https://github.com/FossifyOrg/Notes/releases/tag/1.0.0 63 | 64 | [#81]: https://github.com/FossifyOrg/Notes/issues/81 65 | [#83]: https://github.com/FossifyOrg/Notes/issues/83 66 | [#99]: https://github.com/FossifyOrg/Notes/issues/99 67 | [#110]: https://github.com/FossifyOrg/Notes/issues/110 68 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ### Reporting 2 | 3 | Before you report something, read the reporting 4 | rules [here](https://github.com/FossifyOrg/General-Discussion#how-do-i-suggest-an-improvement-ask-a-question-or-report-an-issue) please. 5 | 6 | ### Contributing as a developer 7 | 8 | Some instructions about code style and everything that has to be done to increase the chance of your code getting accepted can be found at 9 | the [General Discussion](https://github.com/FossifyOrg/General-Discussion#contribution-rules-for-developers) section. 10 | 11 | ### Contributing as a non developer 12 | 13 | In case you just want to for example improve a translation, you can find the way of doing 14 | it [here](https://github.com/FossifyOrg/General-Discussion#how-can-i-suggest-an-edit-to-a-file). 15 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | gem "fastlane" 4 | gem "fastlane-plugin-fossify", "~> 1.0" 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Fossify Notes 2 | Logo 3 | 4 | Get it on Google Play Get it on F-Droid Get it on IzzyOnDroid 5 | 6 | Introducing Fossify Notes – your ultimate tool for effortless note-taking, organization, and planning. Simplify your life with this intuitive organizer designed to streamline your tasks and ideas effortlessly. 7 | 8 | **🗒️ SIMPLE NOTE-TAKING:** 9 | Fossify Notes lets you quickly jot down shopping lists, address reminders, or brilliant startup ideas with just a tap. Say goodbye to clutter and hello to efficient note creation. No more fussing over complex setups. 10 | 11 | **📋 REMARKABLE ORGANIZATION:** 12 | Stay on top of your duties with ease using Fossify Notes' simple-to-use organizer and colorful note-taking widget. Never forget crucial information or shopping lists again – it's all at your fingertips. 13 | 14 | **💾 AUTOMATIC SAVING:** 15 | Forget about losing your work. Fossify Notes automatically saves your edits, ensuring that your changes are always preserved. Create multiple independent notes and lists effortlessly. 16 | 17 | **🖼️ CUSTOMIZABLE WIDGET:** 18 | Access your lists and manage your to-do tasks in a flash with Fossify Notes' customizable widget. Enjoy seamless organization on the go with just a tap. 19 | 20 | **🚫 AD-FREE AND PRIVACY-FOCUSED:** 21 | Enjoy a clutter-free experience with Fossify Notes – no ads or unnecessary permissions. Fossify Notes operates offline without internet permission ensuring a stable and secure environment for your notes. 22 | 23 | **🔓 OPEN-SOURCE FREEDOM:** 24 | Fossify Notes is fully open-source, offering customizable colors and providing transparency and flexibility for users. Experience the freedom of customization and peace of mind with a community-driven note-taking solution. 25 | 26 | Experience the simplicity and efficiency of note-taking with Fossify Notes. Download now and unlock the power of organized thinking. 27 | 28 | ➡️ Explore more Fossify apps: https://www.fossify.org
29 | ➡️ Open-Source Code: https://www.github.com/FossifyOrg
30 | ➡️ Join the community on Reddit: https://www.reddit.com/r/Fossify
31 | ➡️ Connect on Telegram: https://t.me/Fossify 32 | 33 |
34 | App image 35 | App image 36 | App image 37 |
38 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | /foss/ 3 | /gplay/ 4 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | -keep class org.fossify.notes.models.* { 2 | ; 3 | } 4 | 5 | # Keep `Companion` object fields of serializable classes. 6 | # This avoids serializer lookup through `getDeclaredClasses` as done for named companion objects. 7 | -if @kotlinx.serialization.Serializable class ** 8 | -keepclassmembers class <1> { 9 | static <1>$Companion Companion; 10 | } 11 | 12 | # Keep `serializer()` on companion objects (both default and named) of serializable classes. 13 | -if @kotlinx.serialization.Serializable class ** { 14 | static **$* *; 15 | } 16 | -keepclassmembers class <2>$<3> { 17 | kotlinx.serialization.KSerializer serializer(...); 18 | } 19 | 20 | # Keep `INSTANCE.serializer()` of serializable objects. 21 | -if @kotlinx.serialization.Serializable class ** { 22 | public static ** INSTANCE; 23 | } 24 | -keepclassmembers class <1> { 25 | public static <1> INSTANCE; 26 | kotlinx.serialization.KSerializer serializer(...); 27 | } 28 | 29 | # Needed for using TypeToken with Gson 30 | # Taken from: https://r8.googlesource.com/r8/+/refs/heads/main/compatibility-faq.md#troubleshooting-gson-gson 31 | -keepattributes Signature 32 | -keep class com.google.gson.reflect.TypeToken { *; } 33 | -keep class * extends com.google.gson.reflect.TypeToken 34 | -------------------------------------------------------------------------------- /app/src/debug/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Notes_debug 4 | 5 | -------------------------------------------------------------------------------- /app/src/foss/res/values/bools.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | true 5 | true 6 | 7 | -------------------------------------------------------------------------------- /app/src/gplay/res/values/bools.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | false 5 | false 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/ic_launcher-playstore.png -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/App.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes 2 | 3 | import org.fossify.commons.FossifyApp 4 | 5 | class App : FossifyApp() { 6 | override val isAppLockFeatureAvailable = true 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/activities/SimpleActivity.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.activities 2 | 3 | import org.fossify.commons.activities.BaseSimpleActivity 4 | import org.fossify.notes.R 5 | 6 | open class SimpleActivity : BaseSimpleActivity() { 7 | override fun getAppIconIDs() = arrayListOf( 8 | R.mipmap.ic_launcher_red, 9 | R.mipmap.ic_launcher_pink, 10 | R.mipmap.ic_launcher_purple, 11 | R.mipmap.ic_launcher_deep_purple, 12 | R.mipmap.ic_launcher_indigo, 13 | R.mipmap.ic_launcher_blue, 14 | R.mipmap.ic_launcher_light_blue, 15 | R.mipmap.ic_launcher_cyan, 16 | R.mipmap.ic_launcher_teal, 17 | R.mipmap.ic_launcher, 18 | R.mipmap.ic_launcher_light_green, 19 | R.mipmap.ic_launcher_lime, 20 | R.mipmap.ic_launcher_yellow, 21 | R.mipmap.ic_launcher_amber, 22 | R.mipmap.ic_launcher_orange, 23 | R.mipmap.ic_launcher_deep_orange, 24 | R.mipmap.ic_launcher_brown, 25 | R.mipmap.ic_launcher_blue_grey, 26 | R.mipmap.ic_launcher_grey_black 27 | ) 28 | 29 | override fun getAppLauncherName() = getString(R.string.app_launcher_name) 30 | 31 | override fun getRepositoryName() = "Notes" 32 | } 33 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/activities/SplashActivity.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.activities 2 | 3 | import android.content.Intent 4 | import org.fossify.commons.activities.BaseSplashActivity 5 | import org.fossify.notes.helpers.OPEN_NOTE_ID 6 | 7 | class SplashActivity : BaseSplashActivity() { 8 | override fun initActivity() { 9 | if (intent.extras?.containsKey(OPEN_NOTE_ID) == true) { 10 | Intent(this, MainActivity::class.java).apply { 11 | putExtra(OPEN_NOTE_ID, intent.getLongExtra(OPEN_NOTE_ID, -1L)) 12 | startActivity(this) 13 | } 14 | } else { 15 | startActivity(Intent(this, MainActivity::class.java)) 16 | } 17 | finish() 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/dialogs/DateTimePatternInfoDialog.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.dialogs 2 | 3 | import org.fossify.commons.activities.BaseSimpleActivity 4 | import org.fossify.commons.extensions.getAlertDialogBuilder 5 | import org.fossify.commons.extensions.setupDialogStuff 6 | import org.fossify.notes.R 7 | 8 | class DateTimePatternInfoDialog(activity: BaseSimpleActivity) { 9 | 10 | init { 11 | val view = activity.layoutInflater.inflate(R.layout.datetime_pattern_info_layout, null) 12 | activity.getAlertDialogBuilder() 13 | .setPositiveButton(org.fossify.commons.R.string.ok) { _, _ -> { } } 14 | .apply { 15 | activity.setupDialogStuff(view, this) 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/dialogs/DeleteNoteDialog.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.dialogs 2 | 3 | import androidx.appcompat.app.AlertDialog 4 | import org.fossify.commons.extensions.beVisible 5 | import org.fossify.commons.extensions.getAlertDialogBuilder 6 | import org.fossify.commons.extensions.setupDialogStuff 7 | import org.fossify.notes.R 8 | import org.fossify.notes.activities.SimpleActivity 9 | import org.fossify.notes.databinding.DialogDeleteNoteBinding 10 | import org.fossify.notes.models.Note 11 | 12 | class DeleteNoteDialog(val activity: SimpleActivity, val note: Note, val callback: (deleteFile: Boolean) -> Unit) { 13 | var dialog: AlertDialog? = null 14 | 15 | init { 16 | val message = String.format(activity.getString(R.string.delete_note_prompt_message), note.title) 17 | val binding = DialogDeleteNoteBinding.inflate(activity.layoutInflater).apply { 18 | if (note.path.isNotEmpty()) { 19 | deleteNoteCheckbox.text = String.format(activity.getString(R.string.delete_file_itself), note.path) 20 | deleteNoteCheckboxHolder.beVisible() 21 | deleteNoteCheckboxHolder.setOnClickListener { 22 | deleteNoteCheckbox.toggle() 23 | } 24 | } 25 | deleteNoteDescription.text = message 26 | } 27 | 28 | activity.getAlertDialogBuilder() 29 | .setPositiveButton(org.fossify.commons.R.string.delete) { dialog, which -> dialogConfirmed(binding.deleteNoteCheckbox.isChecked) } 30 | .setNegativeButton(org.fossify.commons.R.string.cancel, null) 31 | .apply { 32 | activity.setupDialogStuff(binding.root, this) 33 | } 34 | } 35 | 36 | private fun dialogConfirmed(deleteFile: Boolean) { 37 | callback(deleteFile && note.path.isNotEmpty()) 38 | dialog?.dismiss() 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/dialogs/EditTaskDialog.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.dialogs 2 | 3 | import android.app.Activity 4 | import android.content.DialogInterface.BUTTON_POSITIVE 5 | import org.fossify.commons.extensions.* 6 | import org.fossify.notes.databinding.DialogRenameChecklistItemBinding 7 | 8 | class EditTaskDialog(val activity: Activity, val oldTitle: String, callback: (newTitle: String) -> Unit) { 9 | init { 10 | val binding = DialogRenameChecklistItemBinding.inflate(activity.layoutInflater).apply { 11 | checklistItemTitle.setText(oldTitle) 12 | } 13 | 14 | activity.getAlertDialogBuilder() 15 | .setPositiveButton(org.fossify.commons.R.string.ok, null) 16 | .setNegativeButton(org.fossify.commons.R.string.cancel, null) 17 | .apply { 18 | activity.setupDialogStuff(binding.root, this) { alertDialog -> 19 | alertDialog.showKeyboard(binding.checklistItemTitle) 20 | alertDialog.getButton(BUTTON_POSITIVE).setOnClickListener { 21 | val newTitle = binding.checklistItemTitle.value 22 | when { 23 | newTitle.isEmpty() -> activity.toast(org.fossify.commons.R.string.empty_name) 24 | else -> { 25 | callback(newTitle) 26 | alertDialog.dismiss() 27 | } 28 | } 29 | } 30 | } 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/dialogs/ExportFileDialog.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.dialogs 2 | 3 | import androidx.appcompat.app.AlertDialog 4 | import org.fossify.commons.dialogs.FilePickerDialog 5 | import org.fossify.commons.extensions.* 6 | import org.fossify.notes.R 7 | import org.fossify.notes.activities.SimpleActivity 8 | import org.fossify.notes.databinding.DialogExportFileBinding 9 | import org.fossify.notes.extensions.config 10 | import org.fossify.notes.models.Note 11 | import java.io.File 12 | 13 | class ExportFileDialog(val activity: SimpleActivity, val note: Note, val callback: (exportPath: String) -> Unit) { 14 | 15 | init { 16 | var realPath = File(note.path).parent ?: activity.config.lastUsedSavePath 17 | val binding = DialogExportFileBinding.inflate(activity.layoutInflater).apply { 18 | filePath.setText(activity.humanizePath(realPath)) 19 | 20 | fileName.setText(note.title) 21 | extension.setText(activity.config.lastUsedExtension) 22 | filePath.setOnClickListener { 23 | FilePickerDialog(activity, realPath, false, false, true, true) { 24 | filePath.setText(activity.humanizePath(it)) 25 | realPath = it 26 | } 27 | } 28 | } 29 | 30 | activity.getAlertDialogBuilder() 31 | .setPositiveButton(org.fossify.commons.R.string.ok, null) 32 | .setNegativeButton(org.fossify.commons.R.string.cancel, null) 33 | .apply { 34 | activity.setupDialogStuff(binding.root, this, R.string.export_as_file) { alertDialog -> 35 | alertDialog.showKeyboard(binding.fileName) 36 | alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener { 37 | val filename = binding.fileName.value 38 | val extension = binding.extension.value 39 | 40 | if (filename.isEmpty()) { 41 | activity.toast(org.fossify.commons.R.string.filename_cannot_be_empty) 42 | return@setOnClickListener 43 | } 44 | 45 | val fullFilename = if (extension.isEmpty()) filename else "$filename.$extension" 46 | if (!fullFilename.isAValidFilename()) { 47 | activity.toast( 48 | String.format( 49 | activity.getString( 50 | org.fossify.commons.R.string.filename_invalid_characters_placeholder, 51 | fullFilename 52 | ) 53 | ) 54 | ) 55 | return@setOnClickListener 56 | } 57 | 58 | activity.config.lastUsedExtension = extension 59 | activity.config.lastUsedSavePath = realPath 60 | callback("$realPath/$fullFilename") 61 | alertDialog.dismiss() 62 | } 63 | } 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/dialogs/ExportFilesDialog.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.dialogs 2 | 3 | import androidx.appcompat.app.AlertDialog 4 | import org.fossify.commons.dialogs.FilePickerDialog 5 | import org.fossify.commons.extensions.* 6 | import org.fossify.notes.R 7 | import org.fossify.notes.activities.SimpleActivity 8 | import org.fossify.notes.databinding.DialogExportFilesBinding 9 | import org.fossify.notes.extensions.config 10 | import org.fossify.notes.models.Note 11 | 12 | class ExportFilesDialog(val activity: SimpleActivity, val notes: ArrayList, val callback: (parent: String, extension: String) -> Unit) { 13 | init { 14 | var realPath = activity.config.lastUsedSavePath 15 | val binding = DialogExportFilesBinding.inflate(activity.layoutInflater).apply { 16 | folderPath.setText(activity.humanizePath(realPath)) 17 | 18 | extension.setText(activity.config.lastUsedExtension) 19 | folderPath.setOnClickListener { 20 | FilePickerDialog(activity, realPath, false, false, true, true) { 21 | folderPath.setText(activity.humanizePath(it)) 22 | realPath = it 23 | } 24 | } 25 | } 26 | 27 | activity.getAlertDialogBuilder() 28 | .setPositiveButton(org.fossify.commons.R.string.ok, null) 29 | .setNegativeButton(org.fossify.commons.R.string.cancel, null) 30 | .apply { 31 | activity.setupDialogStuff(binding.root, this, R.string.export_as_file) { alertDialog -> 32 | alertDialog.showKeyboard(binding.extension) 33 | alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener { 34 | activity.handleSAFDialog(realPath) { 35 | val extension = binding.extension.value 36 | activity.config.lastUsedExtension = extension 37 | activity.config.lastUsedSavePath = realPath 38 | callback(realPath, extension) 39 | alertDialog.dismiss() 40 | } 41 | } 42 | } 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/dialogs/ExportNotesDialog.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.dialogs 2 | 3 | import androidx.appcompat.app.AlertDialog 4 | import org.fossify.commons.extensions.* 5 | import org.fossify.notes.R 6 | import org.fossify.notes.activities.SimpleActivity 7 | import org.fossify.notes.databinding.DialogExportNotesBinding 8 | 9 | class ExportNotesDialog(val activity: SimpleActivity, callback: (filename: String) -> Unit) { 10 | 11 | init { 12 | val binding = DialogExportNotesBinding.inflate(activity.layoutInflater).apply { 13 | exportNotesFilename.setText( 14 | buildString { 15 | append(root.context.getString(org.fossify.commons.R.string.notes)) 16 | append("_") 17 | append(root.context.getCurrentFormattedDateTime()) 18 | } 19 | ) 20 | } 21 | 22 | activity.getAlertDialogBuilder().setPositiveButton(org.fossify.commons.R.string.ok, null).setNegativeButton(org.fossify.commons.R.string.cancel, null) 23 | .apply { 24 | activity.setupDialogStuff(binding.root, this, R.string.export_notes) { alertDialog -> 25 | alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener { 26 | 27 | val filename = binding.exportNotesFilename.value 28 | when { 29 | filename.isEmpty() -> activity.toast(org.fossify.commons.R.string.empty_name) 30 | filename.isAValidFilename() -> { 31 | callback(filename) 32 | alertDialog.dismiss() 33 | } 34 | 35 | else -> activity.toast(org.fossify.commons.R.string.invalid_name) 36 | } 37 | } 38 | } 39 | } 40 | } 41 | } 42 | 43 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/dialogs/NewNoteDialog.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.dialogs 2 | 3 | import android.app.Activity 4 | import android.content.DialogInterface.BUTTON_POSITIVE 5 | import org.fossify.commons.extensions.* 6 | import org.fossify.commons.helpers.PROTECTION_NONE 7 | import org.fossify.commons.helpers.ensureBackgroundThread 8 | import org.fossify.notes.R 9 | import org.fossify.notes.databinding.DialogNewNoteBinding 10 | import org.fossify.notes.extensions.config 11 | import org.fossify.notes.extensions.notesDB 12 | import org.fossify.notes.models.Note 13 | import org.fossify.notes.models.NoteType 14 | 15 | class NewNoteDialog(val activity: Activity, title: String? = null, val setChecklistAsDefault: Boolean, callback: (note: Note) -> Unit) { 16 | init { 17 | val binding = DialogNewNoteBinding.inflate(activity.layoutInflater).apply { 18 | val defaultType = when { 19 | setChecklistAsDefault -> typeChecklist.id 20 | activity.config.lastCreatedNoteType == NoteType.TYPE_TEXT.value -> typeTextNote.id 21 | else -> typeChecklist.id 22 | } 23 | 24 | newNoteType.check(defaultType) 25 | } 26 | 27 | binding.lockedNoteTitle.setText(title) 28 | 29 | activity.getAlertDialogBuilder() 30 | .setPositiveButton(org.fossify.commons.R.string.ok, null) 31 | .setNegativeButton(org.fossify.commons.R.string.cancel, null) 32 | .apply { 33 | activity.setupDialogStuff(binding.root, this, R.string.new_note) { alertDialog -> 34 | alertDialog.showKeyboard(binding.lockedNoteTitle) 35 | alertDialog.getButton(BUTTON_POSITIVE).setOnClickListener { 36 | val newTitle = binding.lockedNoteTitle.value 37 | ensureBackgroundThread { 38 | when { 39 | newTitle.isEmpty() -> activity.toast(R.string.no_title) 40 | activity.notesDB.getNoteIdWithTitle(newTitle) != null -> activity.toast(R.string.title_taken) 41 | else -> { 42 | val type = if (binding.newNoteType.checkedRadioButtonId == binding.typeChecklist.id) { 43 | NoteType.TYPE_CHECKLIST 44 | } else { 45 | NoteType.TYPE_TEXT 46 | } 47 | 48 | activity.config.lastCreatedNoteType = type.value 49 | val newNote = Note(null, newTitle, "", type, "", PROTECTION_NONE, "") 50 | callback(newNote) 51 | alertDialog.dismiss() 52 | } 53 | } 54 | } 55 | } 56 | } 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/dialogs/OpenFileDialog.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.dialogs 2 | 3 | import androidx.appcompat.app.AlertDialog 4 | import org.fossify.commons.extensions.getAlertDialogBuilder 5 | import org.fossify.commons.extensions.getFilenameFromPath 6 | import org.fossify.commons.extensions.humanizePath 7 | import org.fossify.commons.extensions.setupDialogStuff 8 | import org.fossify.commons.helpers.PROTECTION_NONE 9 | import org.fossify.notes.R 10 | import org.fossify.notes.activities.SimpleActivity 11 | import org.fossify.notes.databinding.DialogOpenFileBinding 12 | import org.fossify.notes.models.Note 13 | import org.fossify.notes.models.NoteType 14 | import java.io.File 15 | 16 | class OpenFileDialog(val activity: SimpleActivity, val path: String, val callback: (note: Note) -> Unit) : AlertDialog.Builder(activity) { 17 | private var dialog: AlertDialog? = null 18 | 19 | init { 20 | val binding = DialogOpenFileBinding.inflate(activity.layoutInflater).apply { 21 | openFileFilename.setText(activity.humanizePath(path)) 22 | } 23 | 24 | activity.getAlertDialogBuilder() 25 | .setPositiveButton(org.fossify.commons.R.string.ok, null) 26 | .setNegativeButton(org.fossify.commons.R.string.cancel, null) 27 | .apply { 28 | activity.setupDialogStuff(binding.root, this, R.string.open_file) { alertDialog -> 29 | dialog = alertDialog 30 | alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener { 31 | val updateFileOnEdit = binding.openFileType.checkedRadioButtonId == binding.openFileUpdateFile.id 32 | val storePath = if (updateFileOnEdit) path else "" 33 | val storeContent = if (updateFileOnEdit) "" else File(path).readText() 34 | 35 | if (updateFileOnEdit) { 36 | activity.handleSAFDialog(path) { 37 | saveNote(storeContent, storePath) 38 | } 39 | } else { 40 | saveNote(storeContent, storePath) 41 | } 42 | } 43 | } 44 | } 45 | } 46 | 47 | private fun saveNote(storeContent: String, storePath: String) { 48 | val filename = path.getFilenameFromPath() 49 | val note = Note(null, filename, storeContent, NoteType.TYPE_TEXT, storePath, PROTECTION_NONE, "") 50 | callback(note) 51 | dialog?.dismiss() 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/dialogs/OpenNoteDialog.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.dialogs 2 | 3 | import androidx.appcompat.app.AlertDialog 4 | import androidx.recyclerview.widget.StaggeredGridLayoutManager 5 | import org.fossify.commons.activities.BaseSimpleActivity 6 | import org.fossify.commons.extensions.getAlertDialogBuilder 7 | import org.fossify.commons.extensions.setupDialogStuff 8 | import org.fossify.commons.views.AutoStaggeredGridLayoutManager 9 | import org.fossify.notes.R 10 | import org.fossify.notes.adapters.OpenNoteAdapter 11 | import org.fossify.notes.databinding.DialogOpenNoteBinding 12 | import org.fossify.notes.helpers.NotesHelper 13 | import org.fossify.notes.models.Note 14 | 15 | class OpenNoteDialog(val activity: BaseSimpleActivity, val callback: (checkedId: Long, newNote: Note?) -> Unit) { 16 | private var dialog: AlertDialog? = null 17 | 18 | init { 19 | val binding = DialogOpenNoteBinding.inflate(activity.layoutInflater) 20 | 21 | val noteItemWidth = activity.resources.getDimensionPixelSize(R.dimen.grid_note_item_width) 22 | binding.dialogOpenNoteList.layoutManager = AutoStaggeredGridLayoutManager(noteItemWidth, StaggeredGridLayoutManager.VERTICAL) 23 | 24 | NotesHelper(activity).getNotes { 25 | initDialog(it, binding) 26 | } 27 | } 28 | 29 | private fun initDialog(notes: List, binding: DialogOpenNoteBinding) { 30 | binding.dialogOpenNoteList.adapter = OpenNoteAdapter(activity, notes, binding.dialogOpenNoteList) { 31 | it as Note 32 | callback(it.id!!, null) 33 | dialog?.dismiss() 34 | } 35 | 36 | binding.newNoteFab.setOnClickListener { 37 | NewNoteDialog(activity, setChecklistAsDefault = false) { 38 | callback(0, it) 39 | dialog?.dismiss() 40 | } 41 | } 42 | 43 | activity.getAlertDialogBuilder() 44 | .setNegativeButton(org.fossify.commons.R.string.cancel, null) 45 | .apply { 46 | activity.setupDialogStuff(binding.root, this, R.string.open_note) { alertDialog -> 47 | dialog = alertDialog 48 | } 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/extensions/Fragment.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.extensions 2 | 3 | import androidx.fragment.app.Fragment 4 | import org.fossify.notes.helpers.Config 5 | 6 | val Fragment.config: Config? get() = if (context != null) Config.newInstance(context!!) else null 7 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/extensions/String.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.extensions 2 | 3 | import com.google.gson.Gson 4 | import com.google.gson.reflect.TypeToken 5 | import org.fossify.notes.models.Task 6 | 7 | fun String.parseChecklistItems(): ArrayList? { 8 | if (startsWith("[{") && endsWith("}]")) { 9 | try { 10 | val taskType = object : TypeToken>() {}.type 11 | return Gson().fromJson>(this, taskType) ?: null 12 | } catch (e: Exception) { 13 | } 14 | } 15 | return null 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/helpers/CollatorBasedComparator.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.helpers 2 | 3 | import java.text.Collator 4 | 5 | /** 6 | * Collator-based string comparator 7 | * 8 | * Adapted from AlphanumericComparator to support numerical collation. It sorts accents properly too. 9 | */ 10 | class CollatorBasedComparator : Comparator { 11 | override fun compare(string1: String, string2: String): Int { 12 | val collator = getCollator() 13 | 14 | var thisMarker = 0 15 | var thatMarker = 0 16 | 17 | while (thisMarker < string1.length && thatMarker < string2.length) { 18 | val thisChunk = getChunk(string1, string1.length, thisMarker) 19 | thisMarker += thisChunk.length 20 | 21 | val thatChunk = getChunk(string2, string2.length, thatMarker) 22 | thatMarker += thatChunk.length 23 | 24 | val result = if (isDigit(thisChunk[0]) && isDigit(thatChunk[0])) { 25 | collateNumerically(thisChunk, thatChunk) 26 | } else { 27 | collator.compare(thisChunk, thatChunk) 28 | } 29 | 30 | if (result != 0) { 31 | return coerceResult(result) 32 | } 33 | } 34 | 35 | return coerceResult(string1.length - string2.length) 36 | } 37 | 38 | private fun collateNumerically(string1: String, string2: String): Int { 39 | var result: Int 40 | result = string1.length - string2.length 41 | if (result == 0) { 42 | // equal length, the first different number counts 43 | for (i in string1.indices) { 44 | result = string1[i] - string2[i] 45 | if (result != 0) { 46 | break 47 | } 48 | } 49 | } 50 | return result 51 | } 52 | 53 | private fun getChunk(string: String, length: Int, marker: Int): String { 54 | var current = marker 55 | var c = string[current] 56 | val chunk = StringBuilder(c.toString()) 57 | current++ 58 | val chunkOfDigits = isDigit(c) 59 | while (current < length) { 60 | c = string[current] 61 | if (isDigit(c) != chunkOfDigits) { 62 | break 63 | } 64 | chunk.append(c) 65 | current++ 66 | } 67 | 68 | return chunk.toString() 69 | } 70 | 71 | private fun isDigit(ch: Char) = ch in '0'..'9' 72 | 73 | private fun coerceResult(compareToResult: Int) = compareToResult.coerceIn(-1, 1) 74 | 75 | private fun getCollator(): Collator { 76 | val collator = Collator.getInstance() 77 | collator.strength = Collator.PRIMARY 78 | collator.decomposition = Collator.CANONICAL_DECOMPOSITION 79 | return collator 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/helpers/MyMovementMethod.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.helpers 2 | 3 | import android.text.Selection 4 | import android.text.Spannable 5 | import android.text.method.ArrowKeyMovementMethod 6 | import android.text.style.ClickableSpan 7 | import android.view.MotionEvent 8 | import android.widget.TextView 9 | 10 | class MyMovementMethod : ArrowKeyMovementMethod() { 11 | companion object { 12 | private var sInstance: MyMovementMethod? = null 13 | 14 | fun getInstance(): MyMovementMethod { 15 | if (sInstance == null) { 16 | sInstance = MyMovementMethod() 17 | } 18 | return sInstance!! 19 | } 20 | } 21 | 22 | override fun onTouchEvent(widget: TextView, buffer: Spannable, event: MotionEvent): Boolean { 23 | val action = event.action 24 | 25 | if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_DOWN) { 26 | var x = event.x.toInt() 27 | var y = event.y.toInt() 28 | 29 | x -= widget.totalPaddingLeft 30 | y -= widget.totalPaddingTop 31 | 32 | x += widget.scrollX 33 | y += widget.scrollY 34 | 35 | val layout = widget.layout 36 | val line = layout.getLineForVertical(y) 37 | val off = layout.getOffsetForHorizontal(line, x.toFloat()) 38 | 39 | val links = buffer.getSpans(off, off, ClickableSpan::class.java) 40 | if (links.isNotEmpty()) { 41 | if (action == MotionEvent.ACTION_UP) { 42 | links[0].onClick(widget) 43 | } else if (action == MotionEvent.ACTION_DOWN) { 44 | Selection.setSelection( 45 | buffer, 46 | buffer.getSpanStart(links[0]), 47 | buffer.getSpanEnd(links[0]) 48 | ) 49 | } 50 | return true 51 | } 52 | } 53 | 54 | return super.onTouchEvent(widget, buffer, event) 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/interfaces/NotesDao.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.interfaces 2 | 3 | import androidx.room.* 4 | import org.fossify.notes.models.Note 5 | 6 | @Dao 7 | interface NotesDao { 8 | @Query("SELECT * FROM notes ORDER BY title COLLATE UNICODE ASC ") 9 | fun getNotes(): List 10 | 11 | @Query("SELECT * FROM notes WHERE id = :id") 12 | fun getNoteWithId(id: Long): Note? 13 | 14 | @Query("SELECT id FROM notes WHERE path = :path") 15 | fun getNoteIdWithPath(path: String): Long? 16 | 17 | @Query("SELECT id FROM notes WHERE title = :title COLLATE NOCASE") 18 | fun getNoteIdWithTitle(title: String): Long? 19 | 20 | @Query("SELECT id FROM notes WHERE title = :title") 21 | fun getNoteIdWithTitleCaseSensitive(title: String): Long? 22 | 23 | @Insert(onConflict = OnConflictStrategy.REPLACE) 24 | fun insertOrUpdate(note: Note): Long 25 | 26 | @Insert(onConflict = OnConflictStrategy.REPLACE) 27 | fun insertOrUpdate(notes: List): List 28 | 29 | @Delete 30 | fun deleteNote(note: Note) 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/interfaces/TasksActionListener.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.interfaces 2 | 3 | import org.fossify.notes.models.Task 4 | 5 | interface TasksActionListener { 6 | fun editTask(task: Task, callback: () -> Unit) 7 | 8 | fun deleteTasks(tasksToDelete: List) 9 | 10 | fun moveTask(fromPosition: Int, toPosition: Int) 11 | 12 | fun moveTasksToTop(taskIds: List) 13 | 14 | fun moveTasksToBottom(taskIds: List) 15 | 16 | fun saveAndReload() 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/interfaces/WidgetsDao.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.interfaces 2 | 3 | import androidx.room.Dao 4 | import androidx.room.Insert 5 | import androidx.room.OnConflictStrategy 6 | import androidx.room.Query 7 | import org.fossify.notes.models.Widget 8 | 9 | @Dao 10 | interface WidgetsDao { 11 | @Query("SELECT * FROM widgets") 12 | fun getWidgets(): List 13 | 14 | @Query("SELECT * FROM widgets WHERE widget_id = :widgetId") 15 | fun getWidgetWithWidgetId(widgetId: Int): Widget? 16 | 17 | @Insert(onConflict = OnConflictStrategy.REPLACE) 18 | fun insertOrUpdate(widget: Widget): Long 19 | 20 | @Query("DELETE FROM widgets WHERE note_id = :noteId") 21 | fun deleteNoteWidgets(noteId: Long) 22 | 23 | @Query("DELETE FROM widgets WHERE widget_id = :widgetId") 24 | fun deleteWidgetId(widgetId: Int) 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/models/Note.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.models 2 | 3 | import android.content.Context 4 | import android.net.Uri 5 | import androidx.room.* 6 | import kotlinx.serialization.Serializable 7 | import org.fossify.commons.extensions.isBiometricIdAvailable 8 | import org.fossify.commons.helpers.PROTECTION_FINGERPRINT 9 | import org.fossify.commons.helpers.PROTECTION_NONE 10 | import java.io.File 11 | 12 | /** 13 | * Represents a note. 14 | * 15 | * @property value The content of the note. Could be plain text or [Task] 16 | * @property type The type of the note. Should be one of the [NoteType] enum entries. 17 | */ 18 | @Serializable 19 | @Entity(tableName = "notes", indices = [(Index(value = ["id"], unique = true))]) 20 | @TypeConverters(NoteTypeConverter::class) 21 | data class Note( 22 | @PrimaryKey(autoGenerate = true) var id: Long?, 23 | @ColumnInfo(name = "title") var title: String, 24 | @ColumnInfo(name = "value") var value: String, 25 | @ColumnInfo(name = "type") var type: NoteType, 26 | @ColumnInfo(name = "path") var path: String, 27 | @ColumnInfo(name = "protection_type") var protectionType: Int, 28 | @ColumnInfo(name = "protection_hash") var protectionHash: String 29 | ) { 30 | 31 | fun getNoteStoredValue(context: Context): String? { 32 | return if (path.isNotEmpty()) { 33 | try { 34 | if (path.startsWith("content://")) { 35 | val inputStream = context.contentResolver.openInputStream(Uri.parse(path)) 36 | inputStream?.bufferedReader().use { it!!.readText() } 37 | } else { 38 | File(path).readText() 39 | } 40 | } catch (e: Exception) { 41 | null 42 | } 43 | } else { 44 | value 45 | } 46 | } 47 | 48 | fun isLocked() = protectionType != PROTECTION_NONE 49 | 50 | fun shouldBeUnlocked(context: Context): Boolean { 51 | return protectionType == PROTECTION_FINGERPRINT && !context.isBiometricIdAvailable() 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/models/NoteType.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.models 2 | 3 | import kotlinx.serialization.Serializable 4 | 5 | @Serializable 6 | enum class NoteType(val value: Int) { 7 | TYPE_TEXT(0), 8 | TYPE_CHECKLIST(1); 9 | 10 | companion object { 11 | fun fromValue(value: Int): NoteType { 12 | return values().find { it.value == value } ?: TYPE_TEXT 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/models/NoteTypeConverter.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.models 2 | 3 | import androidx.room.TypeConverter 4 | 5 | class NoteTypeConverter { 6 | @TypeConverter 7 | fun fromNoteType(noteType: NoteType): Int { 8 | return noteType.value 9 | } 10 | 11 | @TypeConverter 12 | fun toNoteType(value: Int): NoteType { 13 | return NoteType.fromValue(value) 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/models/Task.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.models 2 | 3 | import kotlinx.serialization.Serializable 4 | import org.fossify.commons.helpers.SORT_BY_TITLE 5 | import org.fossify.commons.helpers.SORT_DESCENDING 6 | import org.fossify.notes.helpers.CollatorBasedComparator 7 | 8 | sealed class NoteItem 9 | 10 | @Serializable 11 | data class Task( 12 | val id: Int, 13 | val dateCreated: Long = 0L, 14 | val title: String, 15 | val isDone: Boolean 16 | ) : NoteItem(), Comparable { 17 | 18 | companion object { 19 | var sorting = 0 20 | } 21 | 22 | override fun compareTo(other: Task): Int { 23 | var result = when { 24 | sorting and SORT_BY_TITLE != 0 -> CollatorBasedComparator().compare(title, other.title) 25 | else -> dateCreated.compareTo(other.dateCreated) 26 | } 27 | 28 | if (sorting and SORT_DESCENDING != 0) { 29 | result *= -1 30 | } 31 | 32 | return result 33 | } 34 | } 35 | 36 | data class CompletedTasks( 37 | val tasks: List, 38 | val expanded: Boolean 39 | ) : NoteItem() { 40 | val id = -42 41 | } 42 | 43 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/models/TextHistory.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.models 2 | 3 | import java.util.LinkedList 4 | 5 | class TextHistory { 6 | var position = 0 7 | val history = LinkedList() 8 | 9 | fun getPrevious(): TextHistoryItem? { 10 | if (position == 0) { 11 | return null 12 | } 13 | position-- 14 | return history[position] 15 | } 16 | 17 | fun getNext(): TextHistoryItem? { 18 | if (position >= history.size) { 19 | return null 20 | } 21 | 22 | val item = history[position] 23 | position++ 24 | return item 25 | } 26 | 27 | fun add(item: TextHistoryItem) { 28 | while (history.size > position) { 29 | history.removeLast() 30 | } 31 | 32 | history.add(item) 33 | position++ 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/models/TextHistoryItem.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.models 2 | 3 | data class TextHistoryItem(val start: Int, val before: CharSequence?, val after: CharSequence?) 4 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/models/Widget.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.models 2 | 3 | import androidx.room.ColumnInfo 4 | import androidx.room.Entity 5 | import androidx.room.Index 6 | import androidx.room.PrimaryKey 7 | 8 | @Entity(tableName = "widgets", indices = [(Index(value = ["widget_id"], unique = true))]) 9 | data class Widget( 10 | @PrimaryKey(autoGenerate = true) var id: Long?, 11 | @ColumnInfo(name = "widget_id") var widgetId: Int, 12 | @ColumnInfo(name = "note_id") var noteId: Long, 13 | @ColumnInfo(name = "widget_bg_color") var widgetBgColor: Int, 14 | @ColumnInfo(name = "widget_text_color") var widgetTextColor: Int, 15 | @ColumnInfo(name = "widget_show_title") var widgetShowTitle: Boolean 16 | ) 17 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/receivers/AutomaticBackupReceiver.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.receivers 2 | 3 | import android.content.BroadcastReceiver 4 | import android.content.Context 5 | import android.content.Intent 6 | import android.os.PowerManager 7 | import org.fossify.notes.extensions.backupNotes 8 | 9 | class AutomaticBackupReceiver : BroadcastReceiver() { 10 | 11 | override fun onReceive(context: Context, intent: Intent) { 12 | val powerManager = context.getSystemService(Context.POWER_SERVICE) as PowerManager 13 | val wakelock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "simplenotes:automaticbackupreceiver") 14 | wakelock.acquire(3000) 15 | context.backupNotes() 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/receivers/BootCompletedReceiver.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.receivers 2 | 3 | import android.content.BroadcastReceiver 4 | import android.content.Context 5 | import android.content.Intent 6 | import org.fossify.commons.helpers.ensureBackgroundThread 7 | import org.fossify.notes.extensions.checkAndBackupNotesOnBoot 8 | 9 | class BootCompletedReceiver : BroadcastReceiver() { 10 | 11 | override fun onReceive(context: Context, intent: Intent) { 12 | ensureBackgroundThread { 13 | context.apply { 14 | checkAndBackupNotesOnBoot() 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/services/WidgetService.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.services 2 | 3 | import android.content.Intent 4 | import android.widget.RemoteViewsService 5 | import org.fossify.notes.adapters.WidgetAdapter 6 | 7 | class WidgetService : RemoteViewsService() { 8 | override fun onGetViewFactory(intent: Intent) = WidgetAdapter(applicationContext, intent) 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/notes/views/MyHorizontalScrollView.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.notes.views 2 | 3 | import android.content.Context 4 | import android.util.AttributeSet 5 | import android.view.MotionEvent 6 | import android.widget.HorizontalScrollView 7 | 8 | class MyHorizontalScrollView : HorizontalScrollView { 9 | constructor(context: Context) : super(context) 10 | 11 | constructor(context: Context, attrs: AttributeSet) : super(context, attrs) 12 | 13 | override fun onTouchEvent(ev: MotionEvent): Boolean { 14 | parent.requestDisallowInterceptTouchEvent(false) 15 | return super.onTouchEvent(ev) 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-nodpi/img_widget_preview.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/drawable-nodpi/img_widget_preview.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_launcher_monochrome.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_lock_open_vector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_shortcut_icon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shortcut_check.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shortcut_note.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | 16 | 22 | 23 | 26 | 27 | 31 | 32 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /app/src/main/res/layout/datetime_pattern_info_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_delete_note.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 18 | 19 | 26 | 27 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_export_file.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 15 | 16 | 21 | 22 | 23 | 24 | 30 | 31 | 39 | 40 | 41 | 42 | 47 | 48 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_export_files.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 15 | 16 | 21 | 22 | 23 | 24 | 29 | 30 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_export_notes.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 13 | 14 | 22 | 23 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_import_folder.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 17 | 18 | 23 | 24 | 25 | 26 | 30 | 31 | 39 | 40 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_manage_automatic_backups.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 15 | 23 | 24 | 29 | 30 | 31 | 32 | 41 | 42 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_new_checklist_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 15 | 16 | 21 | 22 | 34 | 35 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_new_note.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 18 | 19 | 27 | 28 | 29 | 30 | 36 | 37 | 41 | 42 | 50 | 51 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_open_file.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 17 | 18 | 23 | 24 | 25 | 26 | 30 | 31 | 39 | 40 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_open_note.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 17 | 18 | 25 | 26 | 27 | 28 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_rename_checklist_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 17 | 18 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_rename_note.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 15 | 16 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_unlock_notes.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | 22 | 23 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_text.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 15 | 22 | 23 | 34 | 35 | 45 | 46 | 47 | 48 | 53 | 54 | 58 | 59 | 60 | 61 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_add_checklist.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_checked_tasks.xml: -------------------------------------------------------------------------------- 1 | 2 | 13 | 14 | 17 | 18 | 33 | 34 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_checklist.xml: -------------------------------------------------------------------------------- 1 | 2 | 15 | 16 | 26 | 27 | 38 | 39 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_locked_note.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 24 | 25 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /app/src/main/res/layout/note_view_horiz_scrollable.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/layout/note_view_static.xml: -------------------------------------------------------------------------------- 1 | 2 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/layout/open_note_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 24 | 25 | 38 | 39 | 49 | 50 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /app/src/main/res/layout/widget.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 16 | 17 | 27 | 28 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /app/src/main/res/layout/widget_text_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | 17 | 25 | 26 | 34 | 35 | 44 | 45 | 54 | 55 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /app/src/main/res/menu/cab_checklist.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 12 | 18 | 24 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_amber.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_blue_grey.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_brown.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_cyan.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_deep_orange.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_deep_purple.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_grey_black.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_indigo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_light_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_light_green.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_lime.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_orange.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_pink.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_purple.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_red.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_teal.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_yellow.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-hdpi/ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_amber.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-hdpi/ic_launcher_amber.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_blue.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-hdpi/ic_launcher_blue.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_blue_grey.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-hdpi/ic_launcher_blue_grey.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_brown.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-hdpi/ic_launcher_brown.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_cyan.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-hdpi/ic_launcher_cyan.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_deep_orange.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-hdpi/ic_launcher_deep_orange.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_deep_purple.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-hdpi/ic_launcher_deep_purple.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_grey_black.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-hdpi/ic_launcher_grey_black.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_indigo.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-hdpi/ic_launcher_indigo.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_light_blue.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-hdpi/ic_launcher_light_blue.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_light_green.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-hdpi/ic_launcher_light_green.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_lime.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-hdpi/ic_launcher_lime.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_orange.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-hdpi/ic_launcher_orange.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_pink.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-hdpi/ic_launcher_pink.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_purple.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-hdpi/ic_launcher_purple.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_red.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-hdpi/ic_launcher_red.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_teal.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-hdpi/ic_launcher_teal.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_yellow.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-hdpi/ic_launcher_yellow.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-mdpi/ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_amber.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-mdpi/ic_launcher_amber.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_blue.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-mdpi/ic_launcher_blue.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_blue_grey.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-mdpi/ic_launcher_blue_grey.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_brown.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-mdpi/ic_launcher_brown.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_cyan.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-mdpi/ic_launcher_cyan.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_deep_orange.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-mdpi/ic_launcher_deep_orange.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_deep_purple.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-mdpi/ic_launcher_deep_purple.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_grey_black.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-mdpi/ic_launcher_grey_black.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_indigo.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-mdpi/ic_launcher_indigo.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_light_blue.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-mdpi/ic_launcher_light_blue.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_light_green.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-mdpi/ic_launcher_light_green.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_lime.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-mdpi/ic_launcher_lime.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_orange.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-mdpi/ic_launcher_orange.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_pink.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-mdpi/ic_launcher_pink.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_purple.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-mdpi/ic_launcher_purple.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_red.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-mdpi/ic_launcher_red.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_teal.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-mdpi/ic_launcher_teal.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_yellow.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-mdpi/ic_launcher_yellow.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_amber.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xhdpi/ic_launcher_amber.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_blue.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xhdpi/ic_launcher_blue.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_blue_grey.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xhdpi/ic_launcher_blue_grey.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_brown.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xhdpi/ic_launcher_brown.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_cyan.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xhdpi/ic_launcher_cyan.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_deep_orange.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xhdpi/ic_launcher_deep_orange.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_deep_purple.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xhdpi/ic_launcher_deep_purple.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_grey_black.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xhdpi/ic_launcher_grey_black.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_indigo.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xhdpi/ic_launcher_indigo.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_light_blue.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xhdpi/ic_launcher_light_blue.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_light_green.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xhdpi/ic_launcher_light_green.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_lime.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xhdpi/ic_launcher_lime.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_orange.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xhdpi/ic_launcher_orange.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_pink.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xhdpi/ic_launcher_pink.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_purple.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xhdpi/ic_launcher_purple.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_red.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xhdpi/ic_launcher_red.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_teal.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xhdpi/ic_launcher_teal.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_yellow.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xhdpi/ic_launcher_yellow.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_amber.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxhdpi/ic_launcher_amber.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_blue.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxhdpi/ic_launcher_blue.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_blue_grey.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxhdpi/ic_launcher_blue_grey.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_brown.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxhdpi/ic_launcher_brown.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_cyan.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxhdpi/ic_launcher_cyan.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_deep_orange.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxhdpi/ic_launcher_deep_orange.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_deep_purple.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxhdpi/ic_launcher_deep_purple.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_grey_black.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxhdpi/ic_launcher_grey_black.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_indigo.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxhdpi/ic_launcher_indigo.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_light_blue.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxhdpi/ic_launcher_light_blue.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_light_green.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxhdpi/ic_launcher_light_green.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_lime.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxhdpi/ic_launcher_lime.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_orange.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxhdpi/ic_launcher_orange.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_pink.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxhdpi/ic_launcher_pink.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_purple.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxhdpi/ic_launcher_purple.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_red.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxhdpi/ic_launcher_red.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_teal.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxhdpi/ic_launcher_teal.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_yellow.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxhdpi/ic_launcher_yellow.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_amber.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxxhdpi/ic_launcher_amber.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_blue.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxxhdpi/ic_launcher_blue.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_blue_grey.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxxhdpi/ic_launcher_blue_grey.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_brown.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxxhdpi/ic_launcher_brown.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_cyan.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxxhdpi/ic_launcher_cyan.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_deep_orange.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxxhdpi/ic_launcher_deep_orange.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_deep_purple.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxxhdpi/ic_launcher_deep_purple.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_grey_black.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxxhdpi/ic_launcher_grey_black.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_indigo.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxxhdpi/ic_launcher_indigo.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_light_blue.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxxhdpi/ic_launcher_light_blue.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_light_green.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxxhdpi/ic_launcher_light_green.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_lime.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxxhdpi/ic_launcher_lime.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_orange.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxxhdpi/ic_launcher_orange.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_pink.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxxhdpi/ic_launcher_pink.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_purple.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxxhdpi/ic_launcher_purple.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_red.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxxhdpi/ic_launcher_red.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_teal.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxxhdpi/ic_launcher_teal.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_yellow.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Notes/1f524a8766ca526b1d34bb3acf390c8f7a33d827/app/src/main/res/mipmap-xxxhdpi/ic_launcher_yellow.webp -------------------------------------------------------------------------------- /app/src/main/res/values-az/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Qeydlər 4 | Boş mətni paylaşmaq olmur 5 | Yeni qeyd əlavə et 6 | Qeydi adlandırın 7 | Bu başlıqda qeyd artıq mövcuddur 8 | Qeydi aç 9 | Qeydi sil 10 | \"%s\" qeydini silmək istədiyinizə əminsiniz\? 11 | Qeyd götür 12 | Qeydi yenidən adlandır 13 | Ümumi qeyd 14 | Yeni qeyd yarat 15 | Qeydə əlavə et 16 | Faylı Aç 17 | Fayl kimi çıxar 18 | Fayl çox böyükdür, limit 1mb\"dır 19 | Yalnız fayl məzmununu daxil et 20 | \n(faylı dəyişmək qeydı təsir etməyəcək) 21 | Qeydi təzələdikdə faylı da təzələ 22 | \n(fayl silinirsə qeyd də silinər və ya yeri dəyişər) 23 | Həmçinin \"%s\" faylını da sil 24 | \"%s\" qeydi uğurla saxlandı 25 | \"%s\" qeydi uğurla çıxarıldı 26 | Only export the current file content 27 | \n(changing the note will not affect the file) 28 | Uğurlu saxlama mesajını göstər 29 | Keçidləri və e-poçtları toxuna bilən et 30 | Kursoru qeydin sonunda yerləşdir 31 | Tək aralıqlı şrift işlət 32 | Başlanğıcda klaviaturanı göstər 33 | Söz sayını göstər 34 | Sıra 35 | Sol 36 | Mərkəz 37 | Sağ 38 | Widgetdə işlədilmiş qeyd 39 | Başlanğıcda qeyd götürəni göstər 40 | Qeydləri avtomatik saxla 41 | Cız sarğısını göstər 42 | Qovluq daxil et 43 | 44 | -------------------------------------------------------------------------------- /app/src/main/res/values-b+es+419/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-bn-rBD/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-bn/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-br/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-bs/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-ckb/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-cr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-en-rGB/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-en-rIN/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-es-rUS/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-fil/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-ia/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Aperir un file 4 | -------------------------------------------------------------------------------- /app/src/main/res/values-is/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-kn/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-ko/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-kr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-ltg/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-lv/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-mk/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-ml/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | കുറിപ്പുകൾ ഇറക്കുമതി ചെയ്യുക 4 | പരിശോധിച്ച ഇനങ്ങൾ ഇല്ലാതാക്കുക 5 | 6 | %d പരിശോധിച്ച ഇനം 7 | %d പരിശോധിച്ച ഇനങ്ങൾ 8 | 9 | ദയവായി നിങ്ങളുടെ കുറിപ്പിന് പേര് നൽകുക 10 | കുറിപ്പുകൾ 11 | ആ തലക്കെട്ടുള്ള ഒരു കുറിപ്പ് ഇതിനകം നിലവിലുണ്ട് 12 | കുറിപ്പ് തുറക്കുക 13 | കുറിപ്പ് ഇല്ലാതാക്കുക 14 | \"%s\" എന്ന കുറിപ്പ് ഇല്ലാതാക്കണമെന്ന് തീർച്ചയാണോ? 15 | ഒരു കുറിപ്പ് തിരഞ്ഞെടുക്കുക 16 | കുറിപ്പ് പുനർനാമകരണം ചെയ്യുക 17 | പൊതു കുറിപ്പ് 18 | ഒരു പുതിയ കുറിപ്പ് സൃഷ്ടിക്കുക 19 | ശൂന്യമായ വാചകം പങ്കിടാൻ കഴിയില്ല 20 | ഒരു പുതിയ കുറിപ്പ് ചേർക്കുക 21 | വാചക കുറിപ്പ് 22 | പുതിയ കുറിപ്പ് തരം: 23 | ഫോസിഫൈ നോട്ടുകൾ ഉപയോഗിച്ചതിന് നന്ദി.\nഫോസിഫൈയിൽ നിന്നുള്ള കൂടുതൽ ആപ്പുകൾക്കായി, ദയവായി fossify.org സന്ദർശിക്കുക. 24 | ഉള്ളടക്കം കാണിക്കുക 25 | പുതിയ വാചക കുറിപ്പ് 26 | വിജയിച്ച സന്ദേശങ്ങൾ പ്രദർശിപ്പിക്കുക 27 | കുറിപ്പ് \"%s\" വിജയകരമായി സംരക്ഷിച്ചു 28 | കുറിപ്പ് \"%s\" വിജയകരമായി കയറ്റുമതി ചെയ്തു 29 | കുറിപ്പിലേക്ക് ചേർക്കുക 30 | കുറിപ്പിൻ്റെ ശീർഷകം കാണിക്കുക 31 | നിങ്ങൾക്ക് സംരക്ഷിക്കാത്ത ചില മാറ്റങ്ങളുണ്ട്. അവരുമായി നിങ്ങൾ എന്താണ് ചെയ്യാൻ ആഗ്രഹിക്കുന്നത്? 32 | പരിശോധിച്ച ഇനങ്ങൾ താഴേക്ക് നീക്കുക 33 | മുന്നറിയിപ്പ്: നിങ്ങൾ കുറിപ്പുകളുടെ പാസ്‌വേഡ് മറന്നാൽ, നിങ്ങൾക്ക് അത് വീണ്ടെടുക്കാനോ കുറിപ്പുകളുടെ ഉള്ളടക്കം പ്രവേശനം ചെയ്യാനോ കഴിയില്ല. 34 | മുകളിൽ ചേർക്കുക 35 | കുറിപ്പുകൾ കയറ്റുമതി ചെയ്യുക 36 | കുറിപ്പുകൾ ഇറക്കുമതി ചെയ്യുക (പ്രൊ) 37 | വാക്കുകളുടെ എണ്ണം കാണിക്കുക 38 | ഇടത് 39 | കേന്ദ്രം 40 | വലത് 41 | -------------------------------------------------------------------------------- /app/src/main/res/values-ms/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Only import the file content 4 | \n(changing the file will not affect the note) 5 | Update the file itself at updating the note 6 | \n(note gets deleted if file gets deleted, or path changes) 7 | Only export the current file content 8 | \n(changing the note will not affect the file) 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/values-ne/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-nn/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-or/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-pa/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-sat/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/values-si/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-ta/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-te/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-zgh/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-zh-rHK/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 56dp 3 | 48dp 4 | 150dp 5 | 150dp 6 | 500dp 7 | 200dp 8 | 76dp 9 | 56dp 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/values/donottranslate.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.fossify.notes 4 | Fossify Notes 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/values/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 2048 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 |