├── .gitignore
├── .gitlab-ci.yml
├── CHANGELOG.md
├── LICENSE
├── QuickNote.iml
├── README.md
├── app
├── .gitignore
├── Copy of app (conflict from 02-02-2016 at 09h31).iml
├── Copy of app (conflict from 02-13-2016 at 18h32).iml
├── Copy of app (conflict from 02-18-2016 at 22h16).iml
├── Copy of app (conflict from 02-22-2016 at 21h30).iml
├── apk
│ ├── app-debugv19.apk
│ ├── app-releasev19.apk
│ ├── app-releasev20.apk
│ ├── app-releasev21.apk
│ └── app-releasev23.apk
├── app-release.apk
├── build.gradle
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── Copy of AndroidManifest (conflict from 02-18-2016 at 22h17).xml
│ ├── assets
│ ├── CHANGELOG.md
│ ├── editor
│ │ ├── browsers
│ │ │ ├── browser.js
│ │ │ └── browser.js.js
│ │ ├── builder-effective-config.yaml
│ │ ├── css
│ │ │ ├── black
│ │ │ │ ├── design-browser.css
│ │ │ │ ├── design-common.css
│ │ │ │ ├── design-editor.css
│ │ │ │ ├── metadata.json
│ │ │ │ └── preview.png
│ │ │ ├── carnet
│ │ │ │ ├── metadata.json
│ │ │ │ └── preview.png
│ │ │ ├── dark
│ │ │ │ ├── design-dark-browser.css
│ │ │ │ ├── design-dark-common.css
│ │ │ │ ├── design-dark-editor.css
│ │ │ │ ├── metadata.json
│ │ │ │ └── preview.png
│ │ │ ├── design-browser.css
│ │ │ ├── design-common.css
│ │ │ ├── design-editor.css
│ │ │ └── yaru
│ │ │ │ ├── design-browser.css
│ │ │ │ ├── design-common.css
│ │ │ │ ├── design-editor.css
│ │ │ │ ├── metadata.json
│ │ │ │ └── preview.png
│ │ ├── firstlaunch
│ │ │ ├── slide.css
│ │ │ ├── slide.html
│ │ │ └── slide.js
│ │ ├── fonts
│ │ │ ├── material-icons.woff2
│ │ │ └── ubuntu.woff2
│ │ ├── i18n
│ │ │ ├── ar.json
│ │ │ ├── cs.json
│ │ │ ├── de.json
│ │ │ ├── en.json
│ │ │ ├── eo.json
│ │ │ ├── es.json
│ │ │ ├── eu.json
│ │ │ ├── fa.json
│ │ │ ├── fr.json
│ │ │ ├── gl.json
│ │ │ ├── he.json
│ │ │ ├── it.json
│ │ │ ├── ko.json
│ │ │ ├── nl.json
│ │ │ ├── pl.json
│ │ │ ├── ru.json
│ │ │ ├── sk.json
│ │ │ ├── sv.json
│ │ │ ├── tot.json
│ │ │ ├── tr.json
│ │ │ └── zh_Hans.json
│ │ ├── img
│ │ │ ├── 512x512.png
│ │ │ ├── bike.png
│ │ │ ├── directory.png
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_white.png
│ │ │ ├── sync.svg
│ │ │ └── ui.png
│ │ ├── index.html
│ │ ├── libs
│ │ │ ├── Countable.js
│ │ │ ├── date.js
│ │ │ ├── dialog-polyfill.css
│ │ │ ├── dialog-polyfill.js
│ │ │ ├── fullscreen.js
│ │ │ ├── hammer.min.js
│ │ │ ├── imgViewer.js
│ │ │ ├── jquery-ui.css
│ │ │ ├── jquery-ui.min.js
│ │ │ ├── jquery.hammer.js
│ │ │ ├── jquery.min.js
│ │ │ ├── jquery.mobile-min.js
│ │ │ ├── jquery.mousewheel.min.js
│ │ │ ├── jquery.ui.touch-punch.min.js
│ │ │ ├── jquery.webkitresize.js
│ │ │ ├── jquery_i18n
│ │ │ │ ├── CLDRPluralRuleParser.js
│ │ │ │ ├── cli.js
│ │ │ │ ├── jquery.i18n.emitter.bidi.js
│ │ │ │ ├── jquery.i18n.emitter.js
│ │ │ │ ├── jquery.i18n.fallbacks.js
│ │ │ │ ├── jquery.i18n.js
│ │ │ │ ├── jquery.i18n.language.js
│ │ │ │ ├── jquery.i18n.messagestore.js
│ │ │ │ └── jquery.i18n.parser.js
│ │ │ ├── jscolor.js
│ │ │ ├── jszip-utils.min.js
│ │ │ ├── jszip.min.js
│ │ │ ├── masonry-hybrid.js
│ │ │ ├── masonry.js
│ │ │ ├── material-datetime-picker.css
│ │ │ ├── material-datetime-picker.js
│ │ │ ├── material-icons.css
│ │ │ ├── material.indigo-pink.min.css
│ │ │ ├── material.js
│ │ │ ├── mdl_drawer_drag.js
│ │ │ ├── moment.js
│ │ │ ├── polyfill.css
│ │ │ ├── polyfill.js
│ │ │ ├── recorder
│ │ │ │ ├── decoderWorker.min.js
│ │ │ │ ├── decoderWorker.min.wasm
│ │ │ │ ├── encoderWorker.min.js
│ │ │ │ ├── encoderWorker.min.wasm
│ │ │ │ ├── recorder.min.js
│ │ │ │ └── waveWorker.min.js
│ │ │ ├── rome.standalone.js
│ │ │ ├── simplecolorpicker
│ │ │ │ ├── css
│ │ │ │ │ └── simple-color-picker.styl
│ │ │ │ ├── index.d.ts
│ │ │ │ ├── index.js
│ │ │ │ └── simple-color-picker.css
│ │ │ ├── underscore.js
│ │ │ └── wavesurfer.min.js
│ │ ├── main.js
│ │ ├── reader
│ │ │ ├── css
│ │ │ │ ├── recorder.css
│ │ │ │ ├── reminders.css
│ │ │ │ └── todolist.css
│ │ │ ├── reader.html
│ │ │ ├── reader.js
│ │ │ └── reader.js.js
│ │ ├── settings.html
│ │ └── settings
│ │ │ └── settings.js
│ ├── index.html
│ ├── jquery.min.js
│ └── reader
│ │ ├── browsers
│ │ ├── browser.js
│ │ ├── design.css
│ │ ├── file-browser.js
│ │ ├── note.js
│ │ ├── note_card_view.js
│ │ └── search.js
│ │ ├── compatibility
│ │ ├── android
│ │ │ ├── android_recorder.js
│ │ │ ├── archiver.js
│ │ │ ├── file-opener.js
│ │ │ ├── fs.js
│ │ │ ├── keywords_db_manager.js
│ │ │ ├── mkdirp.js
│ │ │ ├── note-opener.js
│ │ │ └── path.js
│ │ ├── compatibility-browser.js
│ │ ├── compatibility-editor.js
│ │ ├── compatibility-exporter.js
│ │ ├── compatibility-importer.js
│ │ ├── compatibility.js
│ │ ├── compatibitlity-settings.js
│ │ ├── electron
│ │ │ ├── request_builder.js
│ │ │ └── store.js
│ │ ├── file-opener.js
│ │ └── nextcloud
│ │ │ ├── fullscreen.js
│ │ │ ├── nc14-header.css
│ │ │ ├── nc14.css
│ │ │ ├── nc16.css
│ │ │ ├── owncloud.css
│ │ │ ├── reader_fullscreen.js
│ │ │ └── store.js
│ │ ├── css
│ │ ├── black
│ │ │ ├── design-browser.css
│ │ │ ├── design-common.css
│ │ │ ├── design-editor.css
│ │ │ ├── metadata.json
│ │ │ └── preview.png
│ │ ├── carnet
│ │ │ ├── metadata.json
│ │ │ └── preview.png
│ │ ├── dark
│ │ │ ├── design-dark-browser.css
│ │ │ ├── design-dark-common.css
│ │ │ ├── design-dark-editor.css
│ │ │ ├── metadata.json
│ │ │ └── preview.png
│ │ ├── design-browser.css
│ │ ├── design-common.css
│ │ ├── design-editor.css
│ │ └── yaru
│ │ │ ├── design-browser.css
│ │ │ ├── design-common.css
│ │ │ ├── design-editor.css
│ │ │ ├── metadata.json
│ │ │ └── preview.png
│ │ ├── exporter
│ │ ├── exporter.css
│ │ ├── exporter.html
│ │ └── exporter.js
│ │ ├── fonts
│ │ ├── material-icons.woff2
│ │ └── ubuntu.woff2
│ │ ├── i18n
│ │ ├── ar.json
│ │ ├── cs.json
│ │ ├── de.json
│ │ ├── en.json
│ │ ├── eo.json
│ │ ├── es.json
│ │ ├── eu.json
│ │ ├── fa.json
│ │ ├── fr.json
│ │ ├── gl.json
│ │ ├── he.json
│ │ ├── it.json
│ │ ├── ko.json
│ │ ├── nl.json
│ │ ├── pl.json
│ │ ├── ru.json
│ │ ├── sk.json
│ │ ├── sv.json
│ │ ├── tot.json
│ │ ├── tr.json
│ │ └── zh_Hans.json
│ │ ├── img
│ │ ├── 512x512.png
│ │ ├── bike.png
│ │ ├── directory.png
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_white.png
│ │ ├── sync.svg
│ │ └── ui.png
│ │ ├── importer
│ │ ├── carnet-converter.js
│ │ ├── google-converter.js
│ │ ├── importer.html
│ │ └── importer.js
│ │ ├── keywords
│ │ └── keywords_db_manager.js
│ │ ├── libs
│ │ ├── date.js
│ │ ├── dialog-polyfill.css
│ │ ├── dialog-polyfill.js
│ │ ├── jquery.min.js
│ │ ├── jquery.ui.touch-punch.min.js
│ │ ├── jquery_i18n
│ │ │ ├── CLDRPluralRuleParser.js
│ │ │ ├── cli.js
│ │ │ ├── jquery.i18n.emitter.bidi.js
│ │ │ ├── jquery.i18n.emitter.js
│ │ │ ├── jquery.i18n.fallbacks.js
│ │ │ ├── jquery.i18n.js
│ │ │ ├── jquery.i18n.language.js
│ │ │ ├── jquery.i18n.messagestore.js
│ │ │ └── jquery.i18n.parser.js
│ │ ├── jszip-utils.min.js
│ │ ├── jszip.min.js
│ │ ├── masonry-hybrid.js
│ │ ├── masonry.js
│ │ ├── material-icons.css
│ │ ├── material.indigo-pink.min.css
│ │ ├── material.js
│ │ ├── moment.js
│ │ ├── polyfill.css
│ │ ├── polyfill.js
│ │ └── underscore.js
│ │ ├── reader
│ │ ├── assets
│ │ │ └── scripts
│ │ │ │ └── jquery-ui.min.js
│ │ ├── carnet-recorder.js
│ │ ├── css
│ │ │ ├── recorder.css
│ │ │ ├── reminders.css
│ │ │ └── todolist.css
│ │ ├── libs
│ │ │ ├── Countable.js
│ │ │ ├── hammer.min.js
│ │ │ ├── imgViewer.js
│ │ │ ├── jquery-ui.css
│ │ │ ├── jquery-ui.min.js
│ │ │ ├── jquery.hammer.js
│ │ │ ├── jquery.min.js
│ │ │ ├── jquery.mobile-min.js
│ │ │ ├── jquery.mousewheel.min.js
│ │ │ ├── jquery.ui.touch-punch.min.js
│ │ │ ├── jquery.webkitresize.js
│ │ │ ├── jscolor.js
│ │ │ ├── material-datetime-picker.css
│ │ │ ├── material-datetime-picker.js
│ │ │ ├── recorder
│ │ │ │ ├── decoderWorker.min.js
│ │ │ │ ├── decoderWorker.min.wasm
│ │ │ │ ├── encoderWorker.min.js
│ │ │ │ ├── encoderWorker.min.wasm
│ │ │ │ ├── recorder.min.js
│ │ │ │ └── waveWorker.min.js
│ │ │ ├── rome.standalone.js
│ │ │ ├── simplecolorpicker
│ │ │ │ ├── css
│ │ │ │ │ └── simple-color-picker.styl
│ │ │ │ ├── index.d.ts
│ │ │ │ ├── index.js
│ │ │ │ └── simple-color-picker.css
│ │ │ └── wavesurfer.min.js
│ │ ├── reader.html
│ │ ├── reader.js
│ │ ├── reminders.js
│ │ └── todolist.js
│ │ ├── requests
│ │ └── request_builder.js
│ │ └── utils
│ │ ├── file_utils.js
│ │ ├── folder-picker-preload.js
│ │ ├── folder-picker.html
│ │ ├── folder-picker.js
│ │ ├── mdl_drawer_drag.js
│ │ └── utils.js
│ ├── ic_launcher-web.png
│ ├── java
│ └── com
│ │ └── spisoft
│ │ └── quicknote
│ │ ├── AudioService.java
│ │ ├── BootReceiver.kt
│ │ ├── ChangelogActivity.kt
│ │ ├── FileManagerService.java
│ │ ├── FileReaderActivity.kt
│ │ ├── FloatingFragment.java
│ │ ├── FloatingService.java
│ │ ├── HelpAuthorizeFloatingWindowActivity.java
│ │ ├── HomeReceiver.java
│ │ ├── KeywordsDialog.java
│ │ ├── KeywordsListAdapter.java
│ │ ├── KeywordsLoader.java
│ │ ├── ListingEngine.java
│ │ ├── MainActivity.java
│ │ ├── MainFragment.java
│ │ ├── MyApplication.java
│ │ ├── Note.java
│ │ ├── PasswordDialog.java
│ │ ├── PreferenceHelper.java
│ │ ├── RecordingActivity.java
│ │ ├── SettingsActivity.java
│ │ ├── SettingsActivityFragment.java
│ │ ├── StorageDialog.java
│ │ ├── WebBasedActivity.kt
│ │ ├── browser
│ │ ├── BrowserAdapter.java
│ │ ├── BrowserFragment.java
│ │ ├── KeywordNotesFragment.java
│ │ ├── NoteAdapter.java
│ │ ├── NoteInfoRetriever.java
│ │ ├── NoteInfoSearchHelper.java
│ │ ├── NoteListFragment.java
│ │ ├── NoteThumbnailEngine.java
│ │ ├── PasteBin.java
│ │ ├── PasteDialog.java
│ │ ├── PermissionChecker.java
│ │ ├── RecentNoteListFragment.java
│ │ ├── RenameDialog.java
│ │ ├── SearchAsyncTask.java
│ │ ├── SearchFragment.java
│ │ └── WebBasedView.kt
│ │ ├── databases
│ │ ├── CacheBuilderIntentService.java
│ │ ├── CacheManager.java
│ │ ├── DBMergerService.java
│ │ ├── Database.kt
│ │ ├── KeywordsHelper.java
│ │ ├── NoteExporter.kt
│ │ ├── NoteManager.java
│ │ ├── OldRecentHelper.java
│ │ ├── RecentHelper.java
│ │ └── page
│ │ │ ├── Page.java
│ │ │ └── PageManager.java
│ │ ├── editor
│ │ ├── BlankFragment.java
│ │ ├── BubbleLayout.java
│ │ ├── BubbleManager.java
│ │ ├── EditorActivity.java
│ │ ├── EditorView.java
│ │ ├── FakeFragmentManager.java
│ │ ├── FalseDialogBuilder.java
│ │ ├── FloatingWindow.java
│ │ ├── ImageActivity.kt
│ │ ├── MyWebView.java
│ │ ├── ShareEditorActivity.java
│ │ └── recorder
│ │ │ └── AudioRecorderJS.kt
│ │ ├── indexer
│ │ ├── IndexDatabase.java
│ │ ├── IndexerDBHelper.java
│ │ ├── IndexerProvider.java
│ │ └── IndexerService.java
│ │ ├── intro
│ │ ├── ChooseInstanceFragment.java
│ │ ├── DisableOptimizationFragment.java
│ │ ├── HelpActivity.java
│ │ ├── SayHiFragment.java
│ │ ├── SelectNextcloudProviderFragment.java
│ │ ├── SynchroIntroductionFragment.java
│ │ └── WelcomeIntroductionFragment.java
│ │ ├── notes_lister
│ │ ├── LatestNotesLister.kt
│ │ ├── NotesLister.kt
│ │ └── PathNotesLister.kt
│ │ ├── reminders
│ │ ├── NotificationPublisher.kt
│ │ └── RemindersManager.kt
│ │ ├── server
│ │ └── HttpServer.java
│ │ ├── serviceactivities
│ │ └── CropWrapperActivity.java
│ │ ├── synchro
│ │ ├── AccountConfigActivity.java
│ │ └── AccountConfigActivityFragment.java
│ │ ├── updater
│ │ ├── ChangelogFragment.java
│ │ ├── EditorUpdater.java
│ │ ├── Updater.java
│ │ └── UpdaterActivity.java
│ │ ├── utils
│ │ ├── CustomOrientationEventListener.java
│ │ ├── FileUtils.java
│ │ ├── PictureUtils.java
│ │ ├── PinView.java
│ │ ├── SerialExecutor.java
│ │ ├── SpiDebugUtils.java
│ │ ├── Utils.java
│ │ ├── WebActivity.kt
│ │ ├── WebFragment.kt
│ │ ├── ZipUtils.java
│ │ └── search
│ │ │ └── NIOGrep.java
│ │ └── widget
│ │ ├── ListRemoteViewsFactory.kt
│ │ ├── ListWidgetProvider.kt
│ │ ├── ListWidgetService.kt
│ │ ├── SimpleWidgetProvider.kt
│ │ └── WidgetProvider.kt
│ └── res
│ ├── anim
│ ├── fade_in.xml
│ └── fade_out.xml
│ ├── drawable-mdpi
│ ├── camera_shot.png
│ ├── directory.png
│ ├── flash_off.png
│ ├── flash_on.png
│ ├── icon_status.png
│ ├── threedots.png
│ └── threedots_white.png
│ ├── drawable-nodpi
│ ├── appwidget_preview_list.png
│ └── appwidget_preview_simple.png
│ ├── drawable-v21
│ ├── action_button_border.xml
│ ├── card_background.xml
│ ├── card_border.xml
│ ├── grey_ripple.xml
│ └── transparent_ripple.xml
│ ├── drawable-xhdpi
│ ├── camera_black.png
│ ├── camera_white.png
│ ├── drive.png
│ ├── ic_create_new_folder_black.png
│ ├── ic_create_new_folder_white.png
│ ├── ic_launcher.png
│ ├── ic_note_add_black.png
│ ├── ic_note_add_white.png
│ ├── mic_black.png
│ ├── mic_white.png
│ ├── pause_black.png
│ ├── pause_white.png
│ ├── play_black.png
│ ├── play_white.png
│ ├── sort_black.png
│ ├── sort_white.png
│ ├── sync_black.png
│ ├── sync_black_disabled.png
│ ├── sync_white.png
│ └── sync_white_disabled.png
│ ├── drawable
│ ├── action_button_border.xml
│ ├── bg_card.xml
│ ├── blue_ripple_selector.xml
│ ├── bubble_background.xml
│ ├── card_background.xml
│ ├── card_border.xml
│ ├── display_grid.xml
│ ├── display_line.xml
│ ├── grey_ripple.xml
│ ├── keyword_item_bg.xml
│ ├── line_card_background.xml
│ ├── line_card_border.xml
│ ├── rotating_sync_black.xml
│ ├── rotating_sync_white.xml
│ └── transparent_ripple.xml
│ ├── layout
│ ├── activity_account_config.xml
│ ├── activity_changelog.xml
│ ├── activity_editor.xml
│ ├── activity_help.xml
│ ├── activity_help_authorize_floating_window.xml
│ ├── activity_image.xml
│ ├── activity_main.xml
│ ├── activity_settings.xml
│ ├── activity_updater.xml
│ ├── activity_web.xml
│ ├── activity_web_based.xml
│ ├── audio_layout.xml
│ ├── bubble_layout.xml
│ ├── content_account_config.xml
│ ├── false_dialog_layout.xml
│ ├── floating_note.xml
│ ├── fragment_account_config.xml
│ ├── fragment_changelog.xml
│ ├── fragment_choose_instance.xml
│ ├── fragment_disable_battery_optimization_introduction.xml
│ ├── fragment_keywords_dialog.xml
│ ├── fragment_main.xml
│ ├── fragment_sayhi_introduction.xml
│ ├── fragment_settings.xml
│ ├── fragment_synchro_introduction.xml
│ ├── fragment_synchro_nextcloud_provider.xml
│ ├── fragment_web.xml
│ ├── fragment_welcome_introduction.xml
│ ├── grid_folder_layout.xml
│ ├── grid_note_layout.xml
│ ├── instance_item.xml
│ ├── keyword.xml
│ ├── keyword_item.xml
│ ├── line_note_layout.xml
│ ├── my_bubble.xml
│ ├── my_navigation_drawer.xml
│ ├── note_layout_widget.xml
│ ├── note_recycler_layout.xml
│ ├── pin_layout.xml
│ ├── progress_layout.xml
│ ├── storage_dialog_layout.xml
│ ├── todolist_item.xml
│ ├── url_layout.xml
│ ├── widget_layout.xml
│ ├── widget_layout_list.xml
│ └── widget_layout_toolbar.xml
│ ├── loud_white_noise.mp3
│ ├── menu
│ ├── menu_help_authorize_floating_window.xml
│ ├── menu_main.xml
│ └── menu_settings.xml
│ ├── mipmap-anydpi-v26
│ ├── ic_launcher.xml
│ └── ic_launcher_round.xml
│ ├── mipmap-hdpi
│ ├── ic_launcher.png
│ ├── ic_launcher_foreground.png
│ └── ic_launcher_round.png
│ ├── mipmap-mdpi
│ ├── ic_launcher.png
│ ├── ic_launcher_foreground.png
│ └── ic_launcher_round.png
│ ├── mipmap-xhdpi
│ ├── ic_launcher.png
│ ├── ic_launcher_foreground.png
│ └── ic_launcher_round.png
│ ├── mipmap-xxhdpi
│ ├── ic_launcher.png
│ ├── ic_launcher_foreground.png
│ └── ic_launcher_round.png
│ ├── mipmap-xxxhdpi
│ ├── ic_launcher.png
│ ├── ic_launcher_foreground.png
│ └── ic_launcher_round.png
│ ├── values-ar
│ └── strings.xml
│ ├── values-cs
│ └── strings.xml
│ ├── values-de
│ └── strings.xml
│ ├── values-eo
│ └── strings.xml
│ ├── values-es
│ ├── arrays.xml
│ └── strings.xml
│ ├── values-fr
│ └── strings.xml
│ ├── values-gl
│ └── strings.xml
│ ├── values-he
│ └── strings.xml
│ ├── values-it
│ └── strings.xml
│ ├── values-ko
│ └── strings.xml
│ ├── values-land
│ └── dimen.xml
│ ├── values-nl
│ └── strings.xml
│ ├── values-pl
│ └── strings.xml
│ ├── values-ru
│ └── strings.xml
│ ├── values-sk
│ └── strings.xml
│ ├── values-sv
│ └── strings.xml
│ ├── values-sw600dp-land
│ └── dimen.xml
│ ├── values-tr
│ └── strings.xml
│ ├── values-v21
│ └── styles.xml
│ ├── values-w820dp
│ └── dimens.xml
│ ├── values-xlarge-land
│ └── dimen.xml
│ ├── values-zh-rCN
│ └── strings.xml
│ ├── values
│ ├── arrays.xml
│ ├── attrs.xml
│ ├── attrs_editor_view.xml
│ ├── colors.xml
│ ├── dimen.xml
│ ├── dimens.xml
│ ├── ic_launcher_background.xml
│ ├── strings.xml
│ ├── styles.xml
│ └── themes.xml
│ └── xml
│ ├── appwidget_list.xml
│ ├── appwidget_simple.xml
│ ├── empty_pref.xml
│ ├── network_security_config.xml
│ └── pref_general.xml
├── build.gradle
├── documentation
└── disable_optimization
│ └── disable_optimization.md
├── github.xml
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── makeAndDeploy.sh
├── metadata
└── en-US
│ ├── changelogs
│ └── 23.txt
│ ├── full_description.txt
│ ├── images
│ ├── icon.png
│ └── phoneScreenshots
│ │ ├── 1.png
│ │ ├── 2.png
│ │ ├── 3.png
│ │ └── 4.png
│ ├── short_description.txt
│ ├── title.txt
│ └── video.txt
├── quickdoc-release.apk
├── settings.gradle
└── to_stable_branch.sh
/.gitignore:
--------------------------------------------------------------------------------
1 | # Built application files
2 | *.ap_
3 |
4 | app/app.iml
5 | # Files for the ART/Dalvik VM
6 | *.dex
7 |
8 | # Java class files
9 | *.class
10 |
11 | # Generated files
12 | bin/
13 | gen/
14 | out/
15 |
16 | # Gradle files
17 | .gradle/
18 | build/
19 |
20 | # Local configuration file (sdk path, etc)
21 | local.properties
22 |
23 | # Proguard folder generated by Eclipse
24 | proguard/
25 |
26 | # Log Files
27 | *.log
28 |
29 | # Android Studio Navigation editor temp files
30 | .navigation/
31 |
32 | # Android Studio captures folder
33 | captures/
34 |
35 | # IntelliJ
36 | *.iml
37 | .idea/workspace.xml
38 | .idea/tasks.xml
39 | .idea/gradle.xml
40 | .idea/dictionaries
41 | .idea/libraries
42 | .idea
43 |
44 | # Keystore files
45 | # Uncomment the following line if you do not want to check your keystore files in.
46 | #*.jks
47 |
48 | # External native build folder generated in Android Studio 2.2 and later
49 | .externalNativeBuild
50 |
51 | # Google Services (e.g. APIs or Firebase)
52 | google-services.json
53 |
54 | # Freeline
55 | freeline.py
56 | freeline/
57 | freeline_project_description.json
58 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | app/src/main/assets/CHANGELOG.md
--------------------------------------------------------------------------------
/QuickNote.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # CarnetAndroid
2 |
3 | [
](https://weblate.lostpod.me/engage/carnethtml/?utm_source=widget)
4 |
5 | Android version of Carnet
6 |
7 | For feature request, see [Carnet Documentation](../../../CarnetDocumentation) for github or
8 | Framagit
9 |
10 | What is Carnet ?
11 |
12 | Documentation about Carnet is available here
13 |
14 |
15 | [
](https://play.google.com/store/apps/details?id=com.spisoft.quicknote)
16 | [
](https://f-droid.org/app/com.spisoft.quicknote)
17 |
18 |
19 |
20 | # Building Carnet
21 |
22 | ```
23 | mkdir Carnet
24 | cd Carnet
25 | git clone git@github.com:CarnetApp/CarnetAndroid.git
26 | git clone git@github.com:CarnetApp/Sync.git
27 | git clone git@github.com:CarnetApp/GoogleSync.git
28 | cd CarnetAndroid
29 | ./gradlew build
30 | ```
31 |
32 |
33 | Even for Android, Carnet editor is written in html / Css / JS, from the CarnetElectron repository
34 | So update with the latest editor
35 | ```
36 | cd Carnet
37 | git clone git@github.com:PhieF/CarnetElectron.git
38 | cd CarnetElectron
39 | npm install --only=dev
40 | bash compile.sh android ../CarnetAndroid/
41 | ```
42 |
43 | This will build and copy every JS html css files needed by the android app
44 |
45 |
46 | ## Help
47 |
48 | You can help with translations on the dedicated platform
49 |
50 | [Weblate](https://weblate.lostpod.me)
51 |
52 | [
](https://weblate.lostpod.me/engage/carnethtml/?utm_source=widget)
53 |
54 | ## Thanks
55 |
56 | https://github.com/PhieF/CarnetDocumentation/blob/master/THANKS.md
57 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | # Built application files
2 | *.apk
3 | *.ap_
4 |
5 | # Files for the ART/Dalvik VM
6 | *.dex
7 |
8 | # Java class files
9 | *.class
10 |
11 | # Generated files
12 | bin/
13 | gen/
14 | out/
15 |
16 | # Gradle files
17 | .gradle/
18 | build/
19 |
20 | # Local configuration file (sdk path, etc)
21 | local.properties
22 |
23 | # Proguard folder generated by Eclipse
24 | proguard/
25 |
26 | # Log Files
27 | *.log
28 |
29 | # Android Studio Navigation editor temp files
30 | .navigation/
31 |
32 | # Android Studio captures folder
33 | captures/
34 |
35 | # IntelliJ
36 | *.iml
37 | .idea/workspace.xml
38 | .idea/tasks.xml
39 | .idea/gradle.xml
40 | .idea/assetWizardSettings.xml
41 | .idea/dictionaries
42 | .idea/libraries
43 | .idea/caches
44 |
45 | # Keystore files
46 | # Uncomment the following line if you do not want to check your keystore files in.
47 | #*.jks
48 |
49 | # External native build folder generated in Android Studio 2.2 and later
50 | .externalNativeBuild
51 |
52 | # Google Services (e.g. APIs or Firebase)
53 | google-services.json
54 |
55 | # Freeline
56 | freeline.py
57 | freeline/
58 | freeline_project_description.json
59 |
60 | # fastlane
61 | fastlane/report.xml
62 | fastlane/Preview.html
63 | fastlane/screenshots
64 | fastlane/test_output
65 | fastlane/readme.md
66 |
--------------------------------------------------------------------------------
/app/apk/app-debugv19.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/apk/app-debugv19.apk
--------------------------------------------------------------------------------
/app/apk/app-releasev19.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/apk/app-releasev19.apk
--------------------------------------------------------------------------------
/app/apk/app-releasev20.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/apk/app-releasev20.apk
--------------------------------------------------------------------------------
/app/apk/app-releasev21.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/apk/app-releasev21.apk
--------------------------------------------------------------------------------
/app/apk/app-releasev23.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/apk/app-releasev23.apk
--------------------------------------------------------------------------------
/app/app-release.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/app-release.apk
--------------------------------------------------------------------------------
/app/src/main/assets/editor/builder-effective-config.yaml:
--------------------------------------------------------------------------------
1 | directories:
2 | output: dist
3 | buildResources: build
4 | appId: org.spisoft.carnet
5 | dmg:
6 | contents:
7 | - x: 110
8 | 'y': 150
9 | - x: 240
10 | 'y': 150
11 | type: link
12 | path: /Applications
13 | mac:
14 | category: public.app-category.productivity
15 | target:
16 | - dmg
17 | - zip
18 | linux:
19 | category: Office
20 | icon: build/icon.png
21 | target:
22 | - target: AppImage
23 | arch:
24 | - ia32
25 | - x64
26 | - target: snap
27 | snap:
28 | confinement: strict
29 | grade: stable
30 | description: |-
31 | Carnet is a powerful note taking app which purpose is not only to write your shopping list but can also be used to write longer texts, stories, etc. Carnet is available on Android and Linux, also on your web browser with full compatibility with Windows, Mac and Linux, with sync capabilities (not mandatory)
32 |
33 | '''Features'''
34 |
35 | * Complete editor : bold/italic/underline/color/highlight
36 | * Import from Google Keep (only on desktop, then sync on mobile)
37 | * Insert images / review
38 | * Open HTML format
39 | * Organize with folders and choose root storage folder depending on your needs
40 | * Keywords
41 | * Quickly see your recent notes
42 | * Search amount your notes
43 | * Protect the app with a pin code (won't encrypt notes) on android
44 | * Statistics : words/sentences/characters
45 | * Sync with NextCloud
46 | * Record audio
47 | * Online editor as a NextCloud App
48 | summary: Powerful note taking app with sync, online editor and android app
49 | win:
50 | target: squirrel
51 | icon: build/icon.ico
52 | files: []
53 | electronVersion: 22.0.3
54 |
--------------------------------------------------------------------------------
/app/src/main/assets/editor/css/black/design-browser.css:
--------------------------------------------------------------------------------
1 |
2 | :root{
3 | --grid-bg: #000000;
4 | --note-text-color: white;
5 | --note-bg: #000000;
6 | --note-bg-hover: #1e212b;
7 | --loading-view-bg:#000000;
8 | --fab-button-bg: #000000;
9 | --fab-color:white;
10 | --drag-bar-bg: rgb(36, 46, 100);
11 | --note-shadow: 0 0px 0px 2px #27326e;
12 | --note-shadow-hover: 0 0px 0px 2px rgb(86, 99, 173);
13 | --editor-container-bg: rgba(0, 0, 0, 0.5);
14 | --editor-container-border: #27326e;
15 | --editor-container-border-color: #27326e;
16 |
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/app/src/main/assets/editor/css/black/design-common.css:
--------------------------------------------------------------------------------
1 | :root{
2 | --header-bg:#000000;
3 | --header-text-color:white;
4 | --drawer-bg: #000000;
5 | --drawer-text-color:white;
6 | --dialog-bg: #000000;
7 | --dialog-text-color: white;
8 | --body-bg: #000000;
9 | --drawer-text-button-hover:#2f3341;
10 | --scroll-bar-fg:#242424;
11 | }
12 |
13 | .mdl-layout__drawer {
14 | border-right: 0px;
15 | }
16 |
17 |
18 | .mdl-layout__drawer .mdl-navigation .mdl-navigation__link {
19 | color:white;
20 | }
21 |
22 | .mdl-button[disabled][disabled], .mdl-button.mdl-button--disabled.mdl-button--disabled{
23 | color:rgb(175, 175, 175);
24 | }
25 |
26 | .keyword {
27 | color:white;
28 | }
29 |
30 | .mdl-button{
31 | color:white;
32 | }
33 | .mdl-textfield__label{
34 | color: white !important;
35 | }
36 |
37 | .mdl-textfield__label:after {
38 | background-color: white;
39 | }
40 | .mdl-dialog__content {
41 | color:rgba(255, 255, 255, .54);
42 | }
43 |
44 | .mdl-button--fab {
45 |
46 | background: rgba(158, 158, 158, .8);
47 | }
48 | .mdl-button--fab:hover {
49 |
50 | background: rgba(158, 158, 158, .9);
51 | }
52 |
53 | .mdl-radio__outer-circle {
54 | border: 2px solid white;
55 | }
56 |
57 | :root{
58 | --note-none: #000000;
59 | --note-red: rgb(78, 40, 40);
60 | --note-orange: rgb(68, 44, 28);
61 | --note-yellow: rgb(70, 59, 26);
62 | --note-green: rgb(37, 59, 42);
63 | --note-teal: rgb(5, 66, 63);
64 | --note-blue: rgb(37, 52, 63);
65 | --note-violet: rgb(65, 57, 83);
66 | --note-purple: rgb(62, 43, 68);
67 | --note-pink: rgb(63, 26, 47);
68 | }
--------------------------------------------------------------------------------
/app/src/main/assets/editor/css/black/metadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Black",
3 | "browser": [
4 | "design-common.css",
5 | "design-browser.css"
6 | ],
7 | "editor": [
8 | "design-common.css",
9 | "design-editor.css"
10 | ],
11 | "settings": [
12 | "design-common.css"
13 | ]
14 | }
--------------------------------------------------------------------------------
/app/src/main/assets/editor/css/black/preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/editor/css/black/preview.png
--------------------------------------------------------------------------------
/app/src/main/assets/editor/css/carnet/metadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Carnet",
3 | "browser": [],
4 | "editor": [],
5 | "settings": []
6 | }
--------------------------------------------------------------------------------
/app/src/main/assets/editor/css/carnet/preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/editor/css/carnet/preview.png
--------------------------------------------------------------------------------
/app/src/main/assets/editor/css/dark/design-dark-browser.css:
--------------------------------------------------------------------------------
1 |
2 | :root{
3 | --grid-bg: #22252f;
4 | --note-text-color: white;
5 | --note-bg: #2f3341;
6 | --note-bg-hover: #2f3341;
7 | --loading-view-bg:#22252f;
8 | --fab-button-bg: #2f3341;
9 | --fab-color:white;
10 | --drag-bar-bg: rgb(36, 46, 100);
11 | --note-shadow: 0 0px 0px 2px rgba(168, 168, 168, 0.14);
12 | --note-shadow-hover: 0 0px 0px 2px rgb(86, 99, 173);
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/main/assets/editor/css/dark/design-dark-common.css:
--------------------------------------------------------------------------------
1 | :root{
2 | --header-bg:#22252f;
3 | --header-text-color:white;
4 | --drawer-bg: #22252f;
5 | --drawer-text-color:white;
6 | --dialog-bg: #22252f;
7 | --dialog-text-color: white;
8 | --body-bg: #393c44;
9 | --drawer-text-button-hover:#2f3341;
10 | --scroll-bar-fg:#353535;
11 | }
12 |
13 | .mdl-layout__drawer {
14 | border-right: 0px;
15 | }
16 |
17 |
18 | .mdl-layout__drawer .mdl-navigation .mdl-navigation__link {
19 | color:white;
20 | }
21 |
22 | .mdl-button[disabled][disabled], .mdl-button.mdl-button--disabled.mdl-button--disabled{
23 | color:rgb(175, 175, 175);
24 | }
25 |
26 | .keyword {
27 | color:white;
28 | background: #4d4d4d;
29 | }
30 |
31 | .mdl-button{
32 | color:white;
33 | }
34 | .mdl-textfield__label{
35 | color: white !important;
36 | }
37 |
38 | .mdl-textfield__label:after {
39 | background-color: white;
40 | }
41 | .mdl-dialog__content {
42 | color:rgba(255, 255, 255, .54);
43 | }
44 |
45 | .mdl-button--fab {
46 |
47 | background: rgba(158, 158, 158, .8);
48 | }
49 | .mdl-button--fab:hover {
50 |
51 | background: rgba(158, 158, 158, .9);
52 | }
53 |
54 | .mdl-radio__outer-circle {
55 | border: 2px solid white;
56 | }
57 |
58 |
59 |
60 | :root{
61 | --note-none: #2f3341;
62 | --note-red: rgb(78, 40, 40);
63 | --note-orange: rgb(68, 44, 28);
64 | --note-yellow: rgb(70, 59, 26);
65 | --note-green: rgb(37, 59, 42);
66 | --note-teal: rgb(5, 66, 63);
67 | --note-blue: rgb(37, 52, 63);
68 | --note-violet: rgb(65, 57, 83);
69 | --note-purple: rgb(62, 43, 68);
70 | --note-pink: rgb(63, 26, 47);
71 | }
--------------------------------------------------------------------------------
/app/src/main/assets/editor/css/dark/design-dark-editor.css:
--------------------------------------------------------------------------------
1 | :root{
2 | --main-text-color:white;
3 | --header-bg: #171a20;
4 | --background-todolist-item: rgba(255, 255, 255, 0.05);
5 | }
6 | .mdl-data-table {
7 | color: var(--main-text-color);
8 | background: var(--header-bg);
9 | }
10 | .mdl-layout__drawer,
11 | .toolbar {
12 | background-color: #171a20 !important;
13 | }
14 |
15 | #center,
16 | .mdl-layout__content {
17 | background-color: #1e222b !important;
18 | }
19 |
20 | .headerbar-button {
21 | color: white;
22 | }
23 |
24 | #header-carnet i{
25 | color:white;
26 | }
27 |
28 | .mdl-layout-spacer {
29 | /*display: none;*/
30 | order: -1;
31 | }
32 |
33 | .todo-list .mdl-checkbox.is-checked .mdl-checkbox__tick-outline {
34 | background: rgba(255, 255, 255, 0.2)url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICB2aWV3Qm94PSIwIDAgMSAxIgogICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0Ij4KICA8cGF0aAogICAgIGQ9Ik0gMC4wNDAzODA1OSwwLjYyNjc3NjcgMC4xNDY0NDY2MSwwLjUyMDcxMDY4IDAuNDI5Mjg5MzIsMC44MDM1NTMzOSAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IE0gMC4yMTcxNTcyOSwwLjgwMzU1MzM5IDAuODUzNTUzMzksMC4xNjcxNTcyOSAwLjk1OTYxOTQxLDAuMjczMjIzMyAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IgogICAgIGlkPSJyZWN0Mzc4MCIKICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPgo8L3N2Zz4K");
35 | }
36 |
37 | .mdl-data-table tbody tr.is-selected {
38 | background-color: #171a20 !important;
39 | }
40 | .mdl-checkbox.is-checked .mdl-checkbox__tick-outline {
41 | mask:unset;
42 | }
43 |
44 | .mdl-data-table tbody tr:hover, .mdl-data-table tbody tr:active, .mdl-data-table tbody tr:focus {
45 | background-color: #171a20;
46 | }
47 |
48 | .mdl-menu__outline {
49 | background: #171a20;
50 | }
51 | .mdl-menu__item {
52 | color:white;
53 | }
54 |
55 | .mdl-menu__item:hover, .mdl-menu__item:active, .mdl-menu__item:focus {
56 | background-color: black;
57 | }
58 |
59 | #note-color input[type="radio"]:checked + label span{
60 | border: 1px solid white;
61 | }
--------------------------------------------------------------------------------
/app/src/main/assets/editor/css/dark/metadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Dark",
3 | "browser": [
4 | "design-dark-common.css",
5 | "design-dark-browser.css"
6 | ],
7 | "editor": [
8 | "design-dark-common.css",
9 | "design-dark-editor.css"
10 | ],
11 | "settings": [
12 | "design-dark-common.css"
13 | ]
14 | }
--------------------------------------------------------------------------------
/app/src/main/assets/editor/css/dark/preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/editor/css/dark/preview.png
--------------------------------------------------------------------------------
/app/src/main/assets/editor/css/yaru/design-common.css:
--------------------------------------------------------------------------------
1 | :root{
2 | --header-bg:#2c2c2c;
3 | --header-text-color:white;
4 | --drawer-bg:#3e3e3e;
5 | --drawer-text-color:white;
6 | --dialog-bg: #000000;
7 | --dialog-text-color: white;
8 | --body-bg: #000000;
9 | --drawer-text-button-hover:#2f3341;
10 | --scroll-bar-fg:#242424;
11 | }
12 |
13 | .mdl-layout__drawer {
14 | border-right: 0px;
15 | }
16 |
17 |
18 | .mdl-layout__drawer .mdl-navigation .mdl-navigation__link {
19 | color:white;
20 | }
21 |
22 | .mdl-button[disabled][disabled], .mdl-button.mdl-button--disabled.mdl-button--disabled{
23 | color:rgb(175, 175, 175);
24 | }
25 |
26 | .keyword {
27 | color:white;
28 | }
29 |
30 | .mdl-button{
31 | color:white;
32 | }
33 | .mdl-textfield__label{
34 | color: white !important;
35 | }
36 |
37 | .mdl-textfield__label:after {
38 | background-color: white;
39 | }
40 | .mdl-dialog__content {
41 | color:rgba(255, 255, 255, .54);
42 | }
43 |
44 | .mdl-button--fab {
45 |
46 | background: rgba(158, 158, 158, .8);
47 | }
48 | .mdl-button--fab:hover {
49 |
50 | background: rgba(158, 158, 158, .9);
51 | }
52 |
53 | .mdl-radio__outer-circle {
54 | border: 2px solid white;
55 | }
56 |
57 |
58 | :root{
59 | --note-none: #000000;
60 | --note-red: rgb(78, 40, 40);
61 | --note-orange: rgb(68, 44, 28);
62 | --note-yellow: rgb(70, 59, 26);
63 | --note-green: rgb(37, 59, 42);
64 | --note-teal: rgb(5, 66, 63);
65 | --note-blue: rgb(37, 52, 63);
66 | --note-violet: rgb(65, 57, 83);
67 | --note-purple: rgb(62, 43, 68);
68 | --note-pink: rgb(63, 26, 47);
69 | }
--------------------------------------------------------------------------------
/app/src/main/assets/editor/css/yaru/metadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Yaru",
3 | "browser": [
4 | "design-common.css",
5 | "design-browser.css"
6 | ],
7 | "editor": [
8 | "design-common.css",
9 | "design-editor.css"
10 | ],
11 | "settings": [
12 | "design-common.css"
13 | ]
14 | }
--------------------------------------------------------------------------------
/app/src/main/assets/editor/css/yaru/preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/editor/css/yaru/preview.png
--------------------------------------------------------------------------------
/app/src/main/assets/editor/firstlaunch/slide.css:
--------------------------------------------------------------------------------
1 | /* Slideshow container */
2 |
3 | body {
4 | padding: 0%;
5 | background: #2f4686;
6 | }
7 |
8 | .slideshow-container {
9 | max-width: 1000px;
10 | height: 100%;
11 | color: white;
12 | margin: 0px;
13 | }
14 |
15 | /* Hide the images by default */
16 |
17 | .mySlides {
18 | height: 300px;
19 | display: none;
20 | }
21 |
22 | /* Next & previous buttons */
23 |
24 | .prev,
25 | .next {
26 | cursor: pointer;
27 | position: absolute;
28 | bottom: 0;
29 | width: auto;
30 | padding: 16px;
31 | color: white;
32 | font-weight: bold;
33 | font-size: 18px;
34 | transition: 0.6s ease;
35 | border-radius: 0 3px 3px 0;
36 | }
37 |
38 | /* Position the "next button" to the right */
39 |
40 | .next {
41 | right: 0;
42 | border-radius: 3px 0 0 3px;
43 | }
44 |
45 | /* On hover, add a black background color with a little bit see-through */
46 |
47 | .prev:hover,
48 | .next:hover {
49 | background-color: rgba(0, 0, 0, 0.8);
50 | }
51 |
52 | /* The dots/bullets/indicators */
53 |
54 | .dot {
55 | cursor: pointer;
56 | height: 15px;
57 | width: 15px;
58 | margin: 0 2px;
59 | background-color: #bbb;
60 | border-radius: 50%;
61 | display: inline-block;
62 | transition: background-color 0.6s ease;
63 | }
64 |
65 | .active,
66 | .dot:hover {
67 | background-color: #717171;
68 | }
69 |
70 | /* Fading animation */
71 |
72 | .fade {
73 | -webkit-animation-name: fade;
74 | -webkit-animation-duration: 1.5s;
75 | animation-name: fade;
76 | animation-duration: 1.5s;
77 | }
78 |
79 | @-webkit-keyframes fade {
80 | from {
81 | opacity: .4
82 | }
83 | to {
84 | opacity: 1
85 | }
86 | }
--------------------------------------------------------------------------------
/app/src/main/assets/editor/firstlaunch/slide.js:
--------------------------------------------------------------------------------
1 | var Slides = function (elem, onEnd) {
2 | this.elem = elem;
3 | this.slideIndex = 1;
4 | this.onEnd = onEnd;
5 | const slides = this;
6 | this.elem.getElementsByClassName("next")[0].onclick = function () {
7 | slides.plusSlides(1);
8 | }
9 | this.currentSlide(1);
10 | }
11 |
12 |
13 |
14 | // Next/previous controls
15 | Slides.prototype.plusSlides = function (n) {
16 | this.showSlides(slideIndex += n);
17 | }
18 |
19 | // Thumbnail image controls
20 | Slides.prototype.currentSlide = function (n) {
21 | this.showSlides(slideIndex = n);
22 | }
23 |
24 | Slides.prototype.showSlides = function (n) {
25 | var i;
26 | var slides = this.elem.getElementsByClassName("mySlides");
27 | var dots = this.elem.getElementsByClassName("dot");
28 | if (n > slides.length) {
29 | this.onEnd();
30 | return;
31 | }
32 | if (n < 1) {
33 | slideIndex = slides.length
34 | }
35 | for (i = 0; i < slides.length; i++) {
36 | slides[i].style.display = "none";
37 | }
38 | for (i = 0; i < dots.length; i++) {
39 | dots[i].className = dots[i].className.replace(" active", "");
40 | }
41 | slides[slideIndex - 1].style.display = "block";
42 | dots[slideIndex - 1].className += " active";
43 | }
--------------------------------------------------------------------------------
/app/src/main/assets/editor/fonts/material-icons.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/editor/fonts/material-icons.woff2
--------------------------------------------------------------------------------
/app/src/main/assets/editor/fonts/ubuntu.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/editor/fonts/ubuntu.woff2
--------------------------------------------------------------------------------
/app/src/main/assets/editor/i18n/ko.json:
--------------------------------------------------------------------------------
1 | {
2 | "search": "",
3 | "recent": "",
4 | "browser": "",
5 | "settings": "",
6 | "keywords": "",
7 | "welcome": "",
8 | "discover_carnet": "",
9 | "modern": "",
10 | "modern_subtext": "",
11 | "synchronize": "",
12 | "synchronize_subtext": "",
13 | "next": "",
14 | "cancel": "",
15 | "note_list_empty": "",
16 | "pin": "",
17 | "archive": "",
18 | "unarchive": "",
19 | "delete": "",
20 | "ok": "",
21 | "rename": "",
22 | "rename_or_move": "",
23 | "donation_message": "",
24 | "fake_note_1": "",
25 | "fake_note_2": "",
26 | "fake_note_3": "",
27 | "fake_note_4": "",
28 | "fake_note_5": "",
29 | "fake_note_6": "",
30 | "fake_note_todo_item_1": "",
31 | "fake_note_todo_item_2": "",
32 | "fake_notes_warning": "",
33 | "statistics": "",
34 | "sentences": "",
35 | "words": "",
36 | "characters": "",
37 | "keyword": "",
38 | "format": "",
39 | "edit": "",
40 | "media": "",
41 | "tools": "",
42 | "file": "",
43 | "note_name": "",
44 | "export": "",
45 | "exit": "",
46 | "add_a_keyword": "",
47 | "back_to_text": "",
48 | "file_photo": "",
49 | "recording": "",
50 | "copy": "",
51 | "paste": "",
52 | "select_all": "",
53 | "todo_list": "",
54 | "print": "",
55 | "print_title": "",
56 | "print_modification_date": "",
57 | "print_creation_date": "",
58 | "error_save": "",
59 | "not_yet_implemented": "",
60 | "open": "",
61 | "date_time": "",
62 | "media_empty_text": ""
63 | }
64 |
--------------------------------------------------------------------------------
/app/src/main/assets/editor/img/512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/editor/img/512x512.png
--------------------------------------------------------------------------------
/app/src/main/assets/editor/img/bike.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/editor/img/bike.png
--------------------------------------------------------------------------------
/app/src/main/assets/editor/img/directory.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/editor/img/directory.png
--------------------------------------------------------------------------------
/app/src/main/assets/editor/img/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/editor/img/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/assets/editor/img/ic_launcher_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/editor/img/ic_launcher_white.png
--------------------------------------------------------------------------------
/app/src/main/assets/editor/img/sync.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/src/main/assets/editor/img/ui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/editor/img/ui.png
--------------------------------------------------------------------------------
/app/src/main/assets/editor/libs/dialog-polyfill.css:
--------------------------------------------------------------------------------
1 | dialog {
2 | position: absolute;
3 | left: 0; right: 0;
4 | width: -moz-fit-content;
5 | width: -webkit-fit-content;
6 | width: fit-content;
7 | height: -moz-fit-content;
8 | height: -webkit-fit-content;
9 | height: fit-content;
10 | margin: auto;
11 | border: solid;
12 | padding: 1em;
13 | background: white;
14 | color: black;
15 | display: block;
16 | }
17 |
18 | dialog:not([open]) {
19 | display: none;
20 | }
21 |
22 | dialog + .backdrop {
23 | position: fixed;
24 | top: 0; right: 0; bottom: 0; left: 0;
25 | background: rgba(0,0,0,0.1);
26 | }
27 |
28 | ._dialog_overlay {
29 | position: fixed;
30 | top: 0; right: 0; bottom: 0; left: 0;
31 | }
32 |
33 | dialog.fixed {
34 | position: fixed;
35 | top: 50%;
36 | transform: translate(0, -50%);
37 | }
--------------------------------------------------------------------------------
/app/src/main/assets/editor/libs/fullscreen.js:
--------------------------------------------------------------------------------
1 | {
2 |
3 | }
--------------------------------------------------------------------------------
/app/src/main/assets/editor/libs/jquery.hammer.js:
--------------------------------------------------------------------------------
1 | (function(factory) {
2 | if (typeof define === 'function' && define.amd) {
3 | define(['jquery', 'hammerjs'], factory);
4 | } else if (typeof exports === 'object') {
5 | factory(require('jquery'), require('hammerjs'));
6 | } else {
7 | factory(jQuery, Hammer);
8 | }
9 | }(function($, Hammer) {
10 | function hammerify(el, options) {
11 | var $el = $(el);
12 | if(!$el.data("hammer")) {
13 | $el.data("hammer", new Hammer($el[0], options));
14 | }
15 | }
16 |
17 | $.fn.hammer = function(options) {
18 | return this.each(function() {
19 | hammerify(this, options);
20 | });
21 | };
22 |
23 | // extend the emit method to also trigger jQuery events
24 | Hammer.Manager.prototype.emit = (function(originalEmit) {
25 | return function(type, data) {
26 | originalEmit.call(this, type, data);
27 | $(this.element).trigger({
28 | type: type,
29 | gesture: data
30 | });
31 | };
32 | })(Hammer.Manager.prototype.emit);
33 | }));
--------------------------------------------------------------------------------
/app/src/main/assets/editor/libs/jquery.ui.touch-punch.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * jQuery UI Touch Punch 0.2.3
3 | *
4 | * Copyright 2011–2014, Dave Furfero
5 | * Dual licensed under the MIT or GPL Version 2 licenses.
6 | *
7 | * Depends:
8 | * jquery.ui.widget.js
9 | * jquery.ui.mouse.js
10 | */
11 | !function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);
--------------------------------------------------------------------------------
/app/src/main/assets/editor/libs/jquery_i18n/cli.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | var parser = require(__dirname + '/CLDRPluralRuleParser.js');
4 | if (process.argv.length < 3) {
5 | console.log("Please provide the rule and a number to test");
6 | console.log("Example:");
7 | console.log("cldrpluraltuleparser 'v = 0 and n != 0..10 and n % 10 = 0' 20");
8 | } else {
9 | var result = parser(process.argv[2], process.argv[3]);
10 | console.log(result);
11 | }
--------------------------------------------------------------------------------
/app/src/main/assets/editor/libs/jszip-utils.min.js:
--------------------------------------------------------------------------------
1 | !function (e) { "object" == typeof exports ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : "undefined" != typeof window ? window.JSZipUtils = e() : "undefined" != typeof global ? global.JSZipUtils = e() : "undefined" != typeof self && (self.JSZipUtils = e()) }(function () { return function o(i, f, u) { function s(n, e) { if (!f[n]) { if (!i[n]) { var t = "function" == typeof require && require; if (!e && t) return t(n, !0); if (a) return a(n, !0); throw new Error("Cannot find module '" + n + "'") } var r = f[n] = { exports: {} }; i[n][0].call(r.exports, function (e) { var t = i[n][1][e]; return s(t || e) }, r, r.exports, o, i, f, u) } return f[n].exports } for (var a = "function" == typeof require && require, e = 0; e < u.length; e++)s(u[e]); return s }({ 1: [function (e, t, n) { "use strict"; var u = {}; function r() { try { return new window.XMLHttpRequest } catch (e) { } } u._getBinaryFromXHR = function (e) { return e.response || e.responseText }; var s = "undefined" != typeof window && window.ActiveXObject ? function () { return r() || function () { try { return new window.ActiveXObject("Microsoft.XMLHTTP") } catch (e) { } }() } : r; u.getBinaryContent = function (t, n) { var e, r, o, i; "function" == typeof (n = n || {}) ? (i = n, n = {}) : "function" == typeof n.callback && (i = n.callback), i || "undefined" == typeof Promise ? (r = function (e) { i(null, e) }, o = function (e) { i(e, null) }) : e = new Promise(function (e, t) { r = e, o = t }); try { var f = s(); f.open("GET", t, !0), "responseType" in f && (f.responseType = "arraybuffer"), f.overrideMimeType && f.overrideMimeType("text/plain; charset=x-user-defined"), f.onreadystatechange = function (e) { if (4 === f.readyState) if (200 === f.status || 0 === f.status) try { r(u._getBinaryFromXHR(f)) } catch (e) { o(new Error(e)) } else o(new Error("Ajax error for " + t + " : " + this.status + " " + this.statusText)) }, n.progress && (f.onprogress = function (e) { n.progress({ path: t, originalEvent: e, percent: e.loaded / e.total * 100, loaded: e.loaded, total: e.total }) }), f.send() } catch (e) { o(new Error(e), null) } return e }, t.exports = u }, {}] }, {}, [1])(1) });
--------------------------------------------------------------------------------
/app/src/main/assets/editor/libs/material-icons.css:
--------------------------------------------------------------------------------
1 | /* fallback */
2 |
3 | @font-face {
4 | font-family: 'Material Icons';
5 | font-style: normal;
6 | font-weight: 400;
7 | src: url(../fonts/material-icons.woff2) format('woff2');
8 | }
9 |
10 | .material-icons {
11 | font-family: 'Material Icons';
12 | font-weight: normal;
13 | font-style: normal;
14 | font-size: 24px;
15 | line-height: 1;
16 | letter-spacing: normal;
17 | text-transform: none;
18 | display: inline-block;
19 | white-space: nowrap;
20 | word-wrap: normal;
21 | direction: ltr;
22 | -moz-font-feature-settings: 'liga';
23 | -moz-osx-font-smoothing: grayscale;
24 | }
--------------------------------------------------------------------------------
/app/src/main/assets/editor/libs/polyfill.css:
--------------------------------------------------------------------------------
1 | dialog {
2 | position: absolute;
3 | left: 0; right: 0;
4 | width: -moz-fit-content;
5 | width: -webkit-fit-content;
6 | width: fit-content;
7 | height: -moz-fit-content;
8 | height: -webkit-fit-content;
9 | height: fit-content;
10 | margin: auto;
11 | border: solid;
12 | padding: 1em;
13 | background: white;
14 | color: black;
15 | display: block;
16 | }
17 |
18 | dialog:not([open]) {
19 | display: none;
20 | }
21 |
22 | dialog + .backdrop {
23 | position: fixed;
24 | top: 0; right: 0; bottom: 0; left: 0;
25 | background: rgba(0,0,0,0.1);
26 | }
27 |
28 | ._dialog_overlay {
29 | position: fixed;
30 | top: 0; right: 0; bottom: 0; left: 0;
31 | }
32 |
33 | dialog.fixed {
34 | position: fixed;
35 | top: 50%;
36 | transform: translate(0, -50%);
37 | }
--------------------------------------------------------------------------------
/app/src/main/assets/editor/libs/recorder/decoderWorker.min.wasm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/editor/libs/recorder/decoderWorker.min.wasm
--------------------------------------------------------------------------------
/app/src/main/assets/editor/libs/recorder/encoderWorker.min.wasm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/editor/libs/recorder/encoderWorker.min.wasm
--------------------------------------------------------------------------------
/app/src/main/assets/editor/libs/simplecolorpicker/css/simple-color-picker.styl:
--------------------------------------------------------------------------------
1 | pickerHueWidth = 20px
2 |
3 | .Scp
4 | user-select none
5 | position relative
6 |
7 | .Scp-saturation
8 | position relative
9 | height 100%
10 | background linear-gradient(to right, #FFFFFF, #FF0000);
11 | float left
12 | margin-right 5px
13 |
14 | .Scp-brightness
15 | width 100%
16 | height 100%
17 | background linear-gradient(rgba(255, 255, 255, 0), rgba(0, 0, 0, 1));
18 |
19 | .Scp-sbSelector
20 | border 2px solid white
21 | position absolute
22 | width 14px
23 | height 14px
24 | background white
25 | border-radius 10px
26 | top -7px
27 | left -7px
28 | box-sizing border-box
29 | z-index 10
30 |
31 | .Scp-hue
32 | width pickerHueWidth
33 | height 100%
34 | position relative
35 | float left
36 | background linear-gradient(rgb(255, 0, 0) 0%, rgb(255, 0, 255) 17%, rgb(0, 0, 255) 34%, rgb(0, 255, 255) 50%, rgb(0, 255, 0) 67%, rgb(255, 255, 0) 84%, rgb(255, 0, 0) 100%)
37 |
38 | .Scp-hSelector
39 | position absolute
40 | background white
41 | border-bottom 1px solid black
42 | right -3px
43 | width 10px
44 | height 2px
45 |
--------------------------------------------------------------------------------
/app/src/main/assets/editor/libs/simplecolorpicker/index.d.ts:
--------------------------------------------------------------------------------
1 | export interface ColorPickerOptions {
2 | color?: string | number;
3 | background?: string | number;
4 | el?: HTMLElement;
5 | width?: number;
6 | height?: number;
7 | }
8 |
9 | export interface ColorPicker {
10 | new (options?: ColorPickerOptions): ColorPicker;
11 |
12 | appendTo(domElement: HTMLElement): void;
13 |
14 | remove(): void;
15 |
16 | setColor(color: string | number): void;
17 |
18 | setSize(width: number, height: number): void;
19 |
20 | setBackgroundColor(color: string | number): void;
21 |
22 | setNoBackground(): void;
23 |
24 | onChange(callback: Function): void;
25 |
26 | getColor(): string | number;
27 |
28 | getHexString(): string;
29 |
30 | getHexNumber(): number;
31 |
32 | getRGB(): { r: number, g: number, b: number };
33 |
34 | getHSV(): { h: number, s: number, v: number };
35 |
36 | isDark(): boolean;
37 |
38 | isLight(): boolean;
39 | }
40 |
41 | export var ColorPicker: ColorPicker;
42 |
43 | export default ColorPicker;
44 |
--------------------------------------------------------------------------------
/app/src/main/assets/editor/libs/simplecolorpicker/simple-color-picker.css:
--------------------------------------------------------------------------------
1 | .Scp {
2 | -webkit-user-select: none;
3 | -moz-user-select: none;
4 | -ms-user-select: none;
5 | user-select: none;
6 | position: relative;
7 | }
8 | .Scp-saturation {
9 | height: 100%;
10 | background: -webkit-linear-gradient(left, #fff, #f00);
11 | background: linear-gradient(to right, #fff, #f00);
12 | margin-right: 5px;
13 | display: inline-block;
14 | }
15 | .Scp-brightness {
16 | width: 100%;
17 | height: 100%;
18 | background: -webkit-linear-gradient(rgba(255,255,255,0), #000);
19 | background: linear-gradient(rgba(255,255,255,0), #000);
20 | }
21 | .Scp-sbSelector {
22 | border: 2px solid #fff;
23 | position: absolute;
24 | width: 14px;
25 | height: 14px;
26 | background: #fff;
27 | border-radius: 10px;
28 | top: -7px;
29 | left: -7px;
30 | box-sizing: border-box;
31 | z-index: 10;
32 | }
33 | .Scp-hue {
34 | width: 20px;
35 | height: 100%;
36 | display: inline-block;
37 | background: -webkit-linear-gradient(#f00 0%, #f0f 17%, #00f 34%, #0ff 50%, #0f0 67%, #ff0 84%, #f00 100%);
38 | background: linear-gradient(#f00 0%, #f0f 17%, #00f 34%, #0ff 50%, #0f0 67%, #ff0 84%, #f00 100%);
39 | }
40 | .Scp-hSelector {
41 | position: absolute;
42 | background: #fff;
43 | border-bottom: 1px solid #000;
44 | right: -3px;
45 | width: 10px;
46 | height: 2px;
47 | }
48 |
--------------------------------------------------------------------------------
/app/src/main/assets/editor/reader/css/recorder.css:
--------------------------------------------------------------------------------
1 | #analyser {
2 | height: 128px;
3 | display: block;
4 | }
5 |
6 | #waveform {
7 | display: none;
8 | }
9 |
10 | #recorder-container {
11 | padding: 10px;
12 | width: 350px;
13 | max-width: calc(100% - 30px);
14 | }
15 | #recorder-file-buttons{
16 | float:right;
17 | }
18 | #total-time{
19 | float: right;
20 | margin-top:8px;
21 | }
--------------------------------------------------------------------------------
/app/src/main/assets/editor/reader/css/reminders.css:
--------------------------------------------------------------------------------
1 | .reminder-item .hour{
2 | display: block;
3 | font-size:18px;
4 | }
5 | .reminder-item{
6 | padding-bottom:10px;
7 | padding-top:10px;
8 |
9 | }
10 | .reminder-calendar-picker .c-datepicker__header-day,.reminder-date-picker .c-datepicker__toggle{
11 | display:none;
12 | }
13 | .reminder-date-picker{
14 | min-height: 354px !important;
15 | }
16 | .reminder-date-picker .c-datepicker__header{
17 | display:none;
18 | }
19 |
--------------------------------------------------------------------------------
/app/src/main/assets/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
--------------------------------------------------------------------------------
/app/src/main/assets/reader/browsers/note.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | var Note = function Note(title, text, path, metadata, previews) {
4 | var needsRefresh = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
5 | var media = arguments.length > 6 ? arguments[6] : undefined;
6 | var fromCache = arguments.length > 7 ? arguments[7] : undefined;
7 | this.title = title;
8 | this.text = text;
9 | this.path = path;
10 | this.previews = previews;
11 | this.media = media;
12 | this.fromCache = fromCache;
13 | this.needsRefresh = needsRefresh;
14 | if (metadata == undefined) {
15 | this.metadata = new NoteMetadata();
16 | this.metadata.creation_date = Date.now();
17 | this.metadata.last_modification_date = this.metadata.creation_date;
18 | } else this.metadata = metadata;
19 | };
20 | var NoteMetadata = function NoteMetadata() {
21 | this.creation_date = "";
22 | this.last_modification_date = "";
23 | this.keywords = [];
24 | this.rating = -1;
25 | this.color = "none";
26 | };
27 | if (typeof exports !== 'undefined') exports.Note = Note;
--------------------------------------------------------------------------------
/app/src/main/assets/reader/compatibility/android/archiver.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | var ArchiverCompatibility = function ArchiverCompatibility() {};
4 | ArchiverCompatibility.create = function (type, ktkl) {
5 | return new Archive();
6 | };
7 | var Archive = function Archive() {};
8 | function generateUID() {
9 | // I generate the UID from two parts here
10 | // to ensure the random number provide enough bits.
11 | var firstPart = Math.random() * 46656 | 0;
12 | var secondPart = Math.random() * 46656 | 0;
13 | firstPart = ("000" + firstPart.toString(36)).slice(-3);
14 | secondPart = ("000" + secondPart.toString(36)).slice(-3);
15 | return firstPart + secondPart;
16 | }
17 | ArchiverCompatibility.callbacks = [];
18 | Archive.prototype.pipe = function (output) {
19 | this.output = output;
20 | };
21 | Archive.prototype.directory = function (dir) {
22 | this.dir = dir;
23 | return this;
24 | };
25 | Archive.prototype.finalize = function () {
26 | var uid = generateUID();
27 | console.log("close is" + this.output.close);
28 | ArchiverCompatibility.callbacks[uid] = this.output.close;
29 | app.zipDir(this.dir, this.output.path, uid);
30 | };
31 | ArchiverCompatibility.finalizeResult = function (callback) {
32 | console.log(ArchiverCompatibility.callbacks[callback]);
33 | ArchiverCompatibility.callbacks[callback]();
34 | };
--------------------------------------------------------------------------------
/app/src/main/assets/reader/compatibility/android/file-opener.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | function generateUID() {
4 | // I generate the UID from two parts here
5 | // to ensure the random number provide enough bits.
6 | var firstPart = Math.random() * 46656 | 0;
7 | var secondPart = Math.random() * 46656 | 0;
8 | firstPart = ("000" + firstPart.toString(36)).slice(-3);
9 | secondPart = ("000" + secondPart.toString(36)).slice(-3);
10 | return firstPart + secondPart;
11 | }
12 | var FileOpener = function FileOpener() {};
13 | FileOpener.callbacks = [];
14 | FileOpener.selectFile = function (callback) {
15 | var uid = generateUID();
16 | FileOpener.callbacks[uid] = callback;
17 | app.selectFile(uid);
18 | };
19 | FileOpener.selectFileResult = function (callback, path) {
20 | var paths = [];
21 | paths.push(path);
22 | FileOpener.callbacks[callback](paths);
23 | };
--------------------------------------------------------------------------------
/app/src/main/assets/reader/compatibility/android/keywords_db_manager.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | var KeywordDBManagerCompatibility = function KeywordDBManagerCompatibility() {};
4 | function generateUID() {
5 | // I generate the UID from two parts here
6 | // to ensure the random number provide enough bits.
7 | var firstPart = Math.random() * 46656 | 0;
8 | var secondPart = Math.random() * 46656 | 0;
9 | firstPart = ("000" + firstPart.toString(36)).slice(-3);
10 | secondPart = ("000" + secondPart.toString(36)).slice(-3);
11 | return firstPart + secondPart;
12 | }
13 | KeywordDBManagerCompatibility.callbacks = [];
14 | KeywordDBManagerCompatibility.KeywordsDBManager = function (path) {};
15 | KeywordDBManagerCompatibility.KeywordsDBManager.prototype.addToDB = function (word, path) {
16 | app.addKeyword(word, path);
17 | };
18 | KeywordDBManagerCompatibility.KeywordsDBManager.prototype.removeFromDB = function (word, path) {
19 | app.removeKeyword(word, path);
20 | };
21 | KeywordDBManagerCompatibility.KeywordsDBManager.prototype.getFlatenDB = function (callback) {
22 | var uid = generateUID();
23 | KeywordDBManagerCompatibility.callbacks[uid] = callback;
24 | app.getFlatenKeywordsDB(uid);
25 | };
26 | KeywordDBManagerCompatibility.getFlatenDBResult = function (callback, dataStr) {
27 | var data = JSON.parse(dataStr);
28 | KeywordDBManagerCompatibility.callbacks[callback](false, data);
29 | };
--------------------------------------------------------------------------------
/app/src/main/assets/reader/compatibility/android/mkdirp.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | var MKDirPCompatibility = function MKDirPCompatibility() {};
4 | MKDirPCompatibility.sync = function (path) {
5 | app.mkdirs(path);
6 | };
--------------------------------------------------------------------------------
/app/src/main/assets/reader/compatibility/android/note-opener.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | var NoteOpenerResultReceiver = function NoteOpenerResultReceiver() {};
4 | NoteOpenerResultReceiver.callbacks = [];
5 | NoteOpenerResultReceiver.generateUID = function () {
6 | // I generate the UID from two parts here
7 | // to ensure the random number provide enough bits.
8 | var firstPart = Math.random() * 46656 | 0;
9 | var secondPart = Math.random() * 46656 | 0;
10 | firstPart = ("000" + firstPart.toString(36)).slice(-3);
11 | secondPart = ("000" + secondPart.toString(36)).slice(-3);
12 | return firstPart + secondPart;
13 | };
14 | NoteOpener.prototype.extractTo = function (path, callback) {
15 | //extract + read
16 | var uid = NoteOpenerResultReceiver.generateUID();
17 | NoteOpenerResultReceiver.callbacks[uid] = callback;
18 | app.extractTo(this.note.path, path, uid);
19 | };
20 | NoteOpenerResultReceiver.extractResult = function (callback, error) {
21 | NoteOpenerResultReceiver.callbacks[callback](error);
22 | };
--------------------------------------------------------------------------------
/app/src/main/assets/reader/compatibility/android/path.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | // Copyright Joyent, Inc. and other Node contributors.
4 | //
5 | // Permission is hereby granted, free of charge, to any person obtaining a
6 | // copy of this software and associated documentation files (the
7 | // "Software"), to deal in the Software without restriction, including
8 | // without limitation the rights to use, copy, modify, merge, publish,
9 | // distribute, sublicense, and/or sell copies of the Software, and to permit
10 | // persons to whom the Software is furnished to do so, subject to the
11 | // following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included
14 | // in all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17 | // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 | // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
19 | // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
20 | // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
21 | // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
22 | // USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | var PathCompatibility = function PathCompatibility() {};
24 | var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
25 | PathCompatibility.dirname = function (path) {
26 | var result = posixSplitPath(path),
27 | root = result[0],
28 | dir = result[1];
29 | if (!root && !dir) {
30 | // No dirname whatsoever
31 | return '.';
32 | }
33 | if (dir) {
34 | // It has a dirname, strip trailing slash
35 | dir = dir.substr(0, dir.length - 1);
36 | }
37 | return root + dir;
38 | };
39 | function posixSplitPath(filename) {
40 | return splitPathRe.exec(filename).slice(1);
41 | }
--------------------------------------------------------------------------------
/app/src/main/assets/reader/compatibility/electron/store.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | var ElectronStore = function ElectronStore() {
4 | var Store = require('electron-store');
5 | this.store = new Store();
6 | };
7 | ElectronStore.prototype.get = function (key) {
8 | return this.store.get(key);
9 | };
10 | ElectronStore.prototype.set = function (key, value) {
11 | this.store.set(key, value);
12 | };
--------------------------------------------------------------------------------
/app/src/main/assets/reader/compatibility/file-opener.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | var FileOpener = function FileOpener() {};
4 | FileOpener.selectFile = function (callback) {
5 | var electrong = require('electron');
6 | var dialog = electrong.remote.dialog;
7 | dialog.showOpenDialog(electrong.remote.getCurrentWindow(), {
8 | properties: ['openFile']
9 | }, callback);
10 | };
--------------------------------------------------------------------------------
/app/src/main/assets/reader/compatibility/nextcloud/fullscreen.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | {
4 | var token = document.getElementById("token").innerHTML;
5 | $(document).on('ajaxSend', function (elm, xhr, settings) {
6 | if (settings.crossDomain === false) {
7 | xhr.setRequestHeader('requesttoken', token);
8 | xhr.setRequestHeader('OCS-APIREQUEST', 'true');
9 | }
10 | });
11 | }
--------------------------------------------------------------------------------
/app/src/main/assets/reader/compatibility/nextcloud/nc14-header.css:
--------------------------------------------------------------------------------
1 | .mdl-layout__container {
2 | height: calc(100% - 50px) !important;
3 | }
4 |
5 | #writer-iframe {
6 | top: 50px;
7 | height: calc(100% - 50px) !important;
8 | }
9 |
10 | #editor-container {
11 | top: 50px;
12 | height: 100% !important;
13 | }
14 | #loading-view {
15 | top: 50px !important;
16 | height: calc(100% - 50px) !important;
17 | }
18 |
19 | @media screen and (min-width: 1400px) {
20 | #loading-view {
21 | top: 70px !important;
22 | height: calc(100% - 90px) !important;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/assets/reader/compatibility/nextcloud/nc14.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/reader/compatibility/nextcloud/nc14.css
--------------------------------------------------------------------------------
/app/src/main/assets/reader/compatibility/nextcloud/nc16.css:
--------------------------------------------------------------------------------
1 | #right-bar #settings ul li a {
2 | display: inline-flex;
3 | align-items: center;
4 | height: 44px;
5 | color: var(--color-main-text);
6 | padding: 10px 12px;
7 | box-sizing: border-box;
8 | opacity: 0.7;
9 | white-space: nowrap;
10 | position: relative;
11 | width: 100%;
12 | }
13 |
14 | #right-bar > div > .menu {
15 | background-color: var(--color-main-background);
16 | filter: drop-shadow(0 1px 5px var(--color-box-shadow));
17 | border-radius: 0 0 var(--border-radius) var(--border-radius);
18 | box-sizing: border-box;
19 | z-index: 2000;
20 | position: absolute;
21 | max-width: 350px;
22 | max-height: 330px;
23 | right: 5px;
24 | top: 50px;
25 | margin: 0;
26 | -webkit-overflow-scrolling: touch;
27 | }
28 |
29 | #right-bar> div > .menu.settings-menu > ul li a:hover {
30 | opacity: 1;
31 | box-shadow: inset 4px 0 var(--color-primary);
32 | }
33 |
34 | #right-bar > div > .menu.settings-menu > ul li a img{
35 | opacity: 0.7;
36 | margin-right: 10px;
37 | height: 16px;
38 | width: 16px;
39 | }
--------------------------------------------------------------------------------
/app/src/main/assets/reader/compatibility/nextcloud/owncloud.css:
--------------------------------------------------------------------------------
1 | @media screen and (min-width: 1400px) {
2 | #editor-container {
3 |
4 | height: calc( 100% - 80px) !important;
5 | }
6 |
7 | }
8 | #editor-container {
9 |
10 | top:unset !important;
11 | }
--------------------------------------------------------------------------------
/app/src/main/assets/reader/compatibility/nextcloud/reader_fullscreen.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | var header = document.getElementById("header");
4 | header.parentNode.removeChild(header);
5 | document.getElementById("content-wrapper").style.paddingTop = "0px";
6 | var ex = document.getElementById("expanddiv");
7 | ex.style.top = "55px";
8 | ex.style.position = "absolute";
--------------------------------------------------------------------------------
/app/src/main/assets/reader/compatibility/nextcloud/store.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | var NextcloudStore = function NextcloudStore() {};
4 | NextcloudStore.prototype.get = function (key) {
5 | var item = localStorage.getItem(key);
6 | if (item == null) return undefined;
7 | return item;
8 | };
9 | NextcloudStore.prototype.set = function (key, value) {
10 | localStorage.setItem(key, value);
11 | };
--------------------------------------------------------------------------------
/app/src/main/assets/reader/css/black/design-browser.css:
--------------------------------------------------------------------------------
1 |
2 | :root{
3 | --grid-bg: #000000;
4 | --note-text-color: white;
5 | --note-bg: #000000;
6 | --note-bg-hover: #1e212b;
7 | --loading-view-bg:#000000;
8 | --fab-button-bg: #000000;
9 | --fab-color:white;
10 | --drag-bar-bg: rgb(36, 46, 100);
11 | --note-shadow: 0 0px 0px 2px #27326e;
12 | --note-shadow-hover: 0 0px 0px 2px rgb(86, 99, 173);
13 | --editor-container-bg: rgba(0, 0, 0, 0.5);
14 | --editor-container-border: #27326e;
15 | --editor-container-border-color: #27326e;
16 |
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/app/src/main/assets/reader/css/black/design-common.css:
--------------------------------------------------------------------------------
1 | :root{
2 | --header-bg:#000000;
3 | --header-text-color:white;
4 | --drawer-bg: #000000;
5 | --drawer-text-color:white;
6 | --dialog-bg: #000000;
7 | --dialog-text-color: white;
8 | --body-bg: #000000;
9 | --drawer-text-button-hover:#2f3341;
10 | --scroll-bar-fg:#242424;
11 | }
12 |
13 | .mdl-layout__drawer {
14 | border-right: 0px;
15 | }
16 |
17 |
18 | .mdl-layout__drawer .mdl-navigation .mdl-navigation__link {
19 | color:white;
20 | }
21 |
22 | .mdl-button[disabled][disabled], .mdl-button.mdl-button--disabled.mdl-button--disabled{
23 | color:rgb(175, 175, 175);
24 | }
25 |
26 | .keyword {
27 | color:white;
28 | }
29 |
30 | .mdl-button{
31 | color:white;
32 | }
33 | .mdl-textfield__label{
34 | color: white !important;
35 | }
36 |
37 | .mdl-textfield__label:after {
38 | background-color: white;
39 | }
40 | .mdl-dialog__content {
41 | color:rgba(255, 255, 255, .54);
42 | }
43 |
44 | .mdl-button--fab {
45 |
46 | background: rgba(158, 158, 158, .8);
47 | }
48 | .mdl-button--fab:hover {
49 |
50 | background: rgba(158, 158, 158, .9);
51 | }
52 |
53 | .mdl-radio__outer-circle {
54 | border: 2px solid white;
55 | }
56 |
57 | :root{
58 | --note-none: #000000;
59 | --note-red: rgb(78, 40, 40);
60 | --note-orange: rgb(68, 44, 28);
61 | --note-yellow: rgb(70, 59, 26);
62 | --note-green: rgb(37, 59, 42);
63 | --note-teal: rgb(5, 66, 63);
64 | --note-blue: rgb(37, 52, 63);
65 | --note-violet: rgb(65, 57, 83);
66 | --note-purple: rgb(62, 43, 68);
67 | --note-pink: rgb(63, 26, 47);
68 | }
--------------------------------------------------------------------------------
/app/src/main/assets/reader/css/black/metadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Black",
3 | "browser": [
4 | "design-common.css",
5 | "design-browser.css"
6 | ],
7 | "editor": [
8 | "design-common.css",
9 | "design-editor.css"
10 | ],
11 | "settings": [
12 | "design-common.css"
13 | ]
14 | }
--------------------------------------------------------------------------------
/app/src/main/assets/reader/css/black/preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/reader/css/black/preview.png
--------------------------------------------------------------------------------
/app/src/main/assets/reader/css/carnet/metadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Carnet",
3 | "browser": [],
4 | "editor": [],
5 | "settings": []
6 | }
--------------------------------------------------------------------------------
/app/src/main/assets/reader/css/carnet/preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/reader/css/carnet/preview.png
--------------------------------------------------------------------------------
/app/src/main/assets/reader/css/dark/design-dark-browser.css:
--------------------------------------------------------------------------------
1 |
2 | :root{
3 | --grid-bg: #22252f;
4 | --note-text-color: white;
5 | --note-bg: #2f3341;
6 | --note-bg-hover: #2f3341;
7 | --loading-view-bg:#22252f;
8 | --fab-button-bg: #2f3341;
9 | --fab-color:white;
10 | --drag-bar-bg: rgb(36, 46, 100);
11 | --note-shadow: 0 0px 0px 2px rgba(168, 168, 168, 0.14);
12 | --note-shadow-hover: 0 0px 0px 2px rgb(86, 99, 173);
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/main/assets/reader/css/dark/design-dark-common.css:
--------------------------------------------------------------------------------
1 | :root{
2 | --header-bg:#22252f;
3 | --header-text-color:white;
4 | --drawer-bg: #22252f;
5 | --drawer-text-color:white;
6 | --dialog-bg: #22252f;
7 | --dialog-text-color: white;
8 | --body-bg: #393c44;
9 | --drawer-text-button-hover:#2f3341;
10 | --scroll-bar-fg:#353535;
11 | }
12 |
13 | .mdl-layout__drawer {
14 | border-right: 0px;
15 | }
16 |
17 |
18 | .mdl-layout__drawer .mdl-navigation .mdl-navigation__link {
19 | color:white;
20 | }
21 |
22 | .mdl-button[disabled][disabled], .mdl-button.mdl-button--disabled.mdl-button--disabled{
23 | color:rgb(175, 175, 175);
24 | }
25 |
26 | .keyword {
27 | color:white;
28 | background: #4d4d4d;
29 | }
30 |
31 | .mdl-button{
32 | color:white;
33 | }
34 | .mdl-textfield__label{
35 | color: white !important;
36 | }
37 |
38 | .mdl-textfield__label:after {
39 | background-color: white;
40 | }
41 | .mdl-dialog__content {
42 | color:rgba(255, 255, 255, .54);
43 | }
44 |
45 | .mdl-button--fab {
46 |
47 | background: rgba(158, 158, 158, .8);
48 | }
49 | .mdl-button--fab:hover {
50 |
51 | background: rgba(158, 158, 158, .9);
52 | }
53 |
54 | .mdl-radio__outer-circle {
55 | border: 2px solid white;
56 | }
57 |
58 |
59 |
60 | :root{
61 | --note-none: #2f3341;
62 | --note-red: rgb(78, 40, 40);
63 | --note-orange: rgb(68, 44, 28);
64 | --note-yellow: rgb(70, 59, 26);
65 | --note-green: rgb(37, 59, 42);
66 | --note-teal: rgb(5, 66, 63);
67 | --note-blue: rgb(37, 52, 63);
68 | --note-violet: rgb(65, 57, 83);
69 | --note-purple: rgb(62, 43, 68);
70 | --note-pink: rgb(63, 26, 47);
71 | }
--------------------------------------------------------------------------------
/app/src/main/assets/reader/css/dark/design-dark-editor.css:
--------------------------------------------------------------------------------
1 | :root{
2 | --main-text-color:white;
3 | --header-bg: #171a20;
4 | --background-todolist-item: rgba(255, 255, 255, 0.05);
5 | }
6 | .mdl-data-table {
7 | color: var(--main-text-color);
8 | background: var(--header-bg);
9 | }
10 | .mdl-layout__drawer,
11 | .toolbar {
12 | background-color: #171a20 !important;
13 | }
14 |
15 | #center,
16 | .mdl-layout__content {
17 | background-color: #1e222b !important;
18 | }
19 |
20 | .headerbar-button {
21 | color: white;
22 | }
23 |
24 | #header-carnet i{
25 | color:white;
26 | }
27 |
28 | .mdl-layout-spacer {
29 | /*display: none;*/
30 | order: -1;
31 | }
32 |
33 | .todo-list .mdl-checkbox.is-checked .mdl-checkbox__tick-outline {
34 | background: rgba(255, 255, 255, 0.2)url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICB2aWV3Qm94PSIwIDAgMSAxIgogICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0Ij4KICA8cGF0aAogICAgIGQ9Ik0gMC4wNDAzODA1OSwwLjYyNjc3NjcgMC4xNDY0NDY2MSwwLjUyMDcxMDY4IDAuNDI5Mjg5MzIsMC44MDM1NTMzOSAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IE0gMC4yMTcxNTcyOSwwLjgwMzU1MzM5IDAuODUzNTUzMzksMC4xNjcxNTcyOSAwLjk1OTYxOTQxLDAuMjczMjIzMyAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IgogICAgIGlkPSJyZWN0Mzc4MCIKICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPgo8L3N2Zz4K");
35 | }
36 |
37 | .mdl-data-table tbody tr.is-selected {
38 | background-color: #171a20 !important;
39 | }
40 | .mdl-checkbox.is-checked .mdl-checkbox__tick-outline {
41 | mask:unset;
42 | }
43 |
44 | .mdl-data-table tbody tr:hover, .mdl-data-table tbody tr:active, .mdl-data-table tbody tr:focus {
45 | background-color: #171a20;
46 | }
47 |
48 | .mdl-menu__outline {
49 | background: #171a20;
50 | }
51 | .mdl-menu__item {
52 | color:white;
53 | }
54 |
55 | .mdl-menu__item:hover, .mdl-menu__item:active, .mdl-menu__item:focus {
56 | background-color: black;
57 | }
58 |
59 | #note-color input[type="radio"]:checked + label span{
60 | border: 1px solid white;
61 | }
--------------------------------------------------------------------------------
/app/src/main/assets/reader/css/dark/metadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Dark",
3 | "browser": [
4 | "design-dark-common.css",
5 | "design-dark-browser.css"
6 | ],
7 | "editor": [
8 | "design-dark-common.css",
9 | "design-dark-editor.css"
10 | ],
11 | "settings": [
12 | "design-dark-common.css"
13 | ]
14 | }
--------------------------------------------------------------------------------
/app/src/main/assets/reader/css/dark/preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/reader/css/dark/preview.png
--------------------------------------------------------------------------------
/app/src/main/assets/reader/css/yaru/design-common.css:
--------------------------------------------------------------------------------
1 | :root{
2 | --header-bg:#2c2c2c;
3 | --header-text-color:white;
4 | --drawer-bg:#3e3e3e;
5 | --drawer-text-color:white;
6 | --dialog-bg: #000000;
7 | --dialog-text-color: white;
8 | --body-bg: #000000;
9 | --drawer-text-button-hover:#2f3341;
10 | --scroll-bar-fg:#242424;
11 | }
12 |
13 | .mdl-layout__drawer {
14 | border-right: 0px;
15 | }
16 |
17 |
18 | .mdl-layout__drawer .mdl-navigation .mdl-navigation__link {
19 | color:white;
20 | }
21 |
22 | .mdl-button[disabled][disabled], .mdl-button.mdl-button--disabled.mdl-button--disabled{
23 | color:rgb(175, 175, 175);
24 | }
25 |
26 | .keyword {
27 | color:white;
28 | }
29 |
30 | .mdl-button{
31 | color:white;
32 | }
33 | .mdl-textfield__label{
34 | color: white !important;
35 | }
36 |
37 | .mdl-textfield__label:after {
38 | background-color: white;
39 | }
40 | .mdl-dialog__content {
41 | color:rgba(255, 255, 255, .54);
42 | }
43 |
44 | .mdl-button--fab {
45 |
46 | background: rgba(158, 158, 158, .8);
47 | }
48 | .mdl-button--fab:hover {
49 |
50 | background: rgba(158, 158, 158, .9);
51 | }
52 |
53 | .mdl-radio__outer-circle {
54 | border: 2px solid white;
55 | }
56 |
57 |
58 | :root{
59 | --note-none: #000000;
60 | --note-red: rgb(78, 40, 40);
61 | --note-orange: rgb(68, 44, 28);
62 | --note-yellow: rgb(70, 59, 26);
63 | --note-green: rgb(37, 59, 42);
64 | --note-teal: rgb(5, 66, 63);
65 | --note-blue: rgb(37, 52, 63);
66 | --note-violet: rgb(65, 57, 83);
67 | --note-purple: rgb(62, 43, 68);
68 | --note-pink: rgb(63, 26, 47);
69 | }
--------------------------------------------------------------------------------
/app/src/main/assets/reader/css/yaru/metadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Yaru",
3 | "browser": [
4 | "design-common.css",
5 | "design-browser.css"
6 | ],
7 | "editor": [
8 | "design-common.css",
9 | "design-editor.css"
10 | ],
11 | "settings": [
12 | "design-common.css"
13 | ]
14 | }
--------------------------------------------------------------------------------
/app/src/main/assets/reader/css/yaru/preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/reader/css/yaru/preview.png
--------------------------------------------------------------------------------
/app/src/main/assets/reader/exporter/exporter.css:
--------------------------------------------------------------------------------
1 | body {}
2 |
3 | #inside {
4 | background: white;
5 | padding: 20px;
6 |
7 | }
8 |
9 | #button-container {
10 | position: fixed;
11 | bottom: 10px;
12 | right: 10px;
13 | }
14 |
15 | #loading{
16 | position: fixed;
17 | left: 0;
18 | top: 0;
19 | height: 100%;
20 | width: 100%;
21 | z-index: 10;
22 | display: none;
23 | }
--------------------------------------------------------------------------------
/app/src/main/assets/reader/fonts/material-icons.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/reader/fonts/material-icons.woff2
--------------------------------------------------------------------------------
/app/src/main/assets/reader/fonts/ubuntu.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/reader/fonts/ubuntu.woff2
--------------------------------------------------------------------------------
/app/src/main/assets/reader/i18n/ko.json:
--------------------------------------------------------------------------------
1 | {
2 | "search": "",
3 | "recent": "",
4 | "browser": "",
5 | "settings": "",
6 | "keywords": "",
7 | "welcome": "",
8 | "discover_carnet": "",
9 | "modern": "",
10 | "modern_subtext": "",
11 | "synchronize": "",
12 | "synchronize_subtext": "",
13 | "next": "",
14 | "cancel": "",
15 | "note_list_empty": "",
16 | "pin": "",
17 | "archive": "",
18 | "unarchive": "",
19 | "delete": "",
20 | "ok": "",
21 | "rename": "",
22 | "rename_or_move": "",
23 | "donation_message": "",
24 | "fake_note_1": "",
25 | "fake_note_2": "",
26 | "fake_note_3": "",
27 | "fake_note_4": "",
28 | "fake_note_5": "",
29 | "fake_note_6": "",
30 | "fake_note_todo_item_1": "",
31 | "fake_note_todo_item_2": "",
32 | "fake_notes_warning": "",
33 | "statistics": "",
34 | "sentences": "",
35 | "words": "",
36 | "characters": "",
37 | "keyword": "",
38 | "format": "",
39 | "edit": "",
40 | "media": "",
41 | "tools": "",
42 | "file": "",
43 | "note_name": "",
44 | "export": "",
45 | "exit": "",
46 | "add_a_keyword": "",
47 | "back_to_text": "",
48 | "file_photo": "",
49 | "recording": "",
50 | "copy": "",
51 | "paste": "",
52 | "select_all": "",
53 | "todo_list": "",
54 | "print": "",
55 | "print_title": "",
56 | "print_modification_date": "",
57 | "print_creation_date": "",
58 | "error_save": "",
59 | "not_yet_implemented": "",
60 | "open": "",
61 | "date_time": "",
62 | "media_empty_text": ""
63 | }
64 |
--------------------------------------------------------------------------------
/app/src/main/assets/reader/img/512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/reader/img/512x512.png
--------------------------------------------------------------------------------
/app/src/main/assets/reader/img/bike.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/reader/img/bike.png
--------------------------------------------------------------------------------
/app/src/main/assets/reader/img/directory.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/reader/img/directory.png
--------------------------------------------------------------------------------
/app/src/main/assets/reader/img/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/reader/img/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/assets/reader/img/ic_launcher_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/reader/img/ic_launcher_white.png
--------------------------------------------------------------------------------
/app/src/main/assets/reader/img/sync.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/src/main/assets/reader/img/ui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/reader/img/ui.png
--------------------------------------------------------------------------------
/app/src/main/assets/reader/libs/dialog-polyfill.css:
--------------------------------------------------------------------------------
1 | dialog {
2 | position: absolute;
3 | left: 0; right: 0;
4 | width: -moz-fit-content;
5 | width: -webkit-fit-content;
6 | width: fit-content;
7 | height: -moz-fit-content;
8 | height: -webkit-fit-content;
9 | height: fit-content;
10 | margin: auto;
11 | border: solid;
12 | padding: 1em;
13 | background: white;
14 | color: black;
15 | display: block;
16 | }
17 |
18 | dialog:not([open]) {
19 | display: none;
20 | }
21 |
22 | dialog + .backdrop {
23 | position: fixed;
24 | top: 0; right: 0; bottom: 0; left: 0;
25 | background: rgba(0,0,0,0.1);
26 | }
27 |
28 | ._dialog_overlay {
29 | position: fixed;
30 | top: 0; right: 0; bottom: 0; left: 0;
31 | }
32 |
33 | dialog.fixed {
34 | position: fixed;
35 | top: 50%;
36 | transform: translate(0, -50%);
37 | }
--------------------------------------------------------------------------------
/app/src/main/assets/reader/libs/jquery.ui.touch-punch.min.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | /*!
4 | * jQuery UI Touch Punch 0.2.3
5 | *
6 | * Copyright 2011–2014, Dave Furfero
7 | * Dual licensed under the MIT or GPL Version 2 licenses.
8 | *
9 | * Depends:
10 | * jquery.ui.widget.js
11 | * jquery.ui.mouse.js
12 | */
13 | !function (a) {
14 | function f(a, b) {
15 | if (!(a.originalEvent.touches.length > 1)) {
16 | a.preventDefault();
17 | var c = a.originalEvent.changedTouches[0],
18 | d = document.createEvent("MouseEvents");
19 | d.initMouseEvent(b, !0, !0, window, 1, c.screenX, c.screenY, c.clientX, c.clientY, !1, !1, !1, !1, 0, null), a.target.dispatchEvent(d);
20 | }
21 | }
22 | if (a.support.touch = "ontouchend" in document, a.support.touch) {
23 | var e,
24 | b = a.ui.mouse.prototype,
25 | c = b._mouseInit,
26 | d = b._mouseDestroy;
27 | b._touchStart = function (a) {
28 | var b = this;
29 | !e && b._mouseCapture(a.originalEvent.changedTouches[0]) && (e = !0, b._touchMoved = !1, f(a, "mouseover"), f(a, "mousemove"), f(a, "mousedown"));
30 | }, b._touchMove = function (a) {
31 | e && (this._touchMoved = !0, f(a, "mousemove"));
32 | }, b._touchEnd = function (a) {
33 | e && (f(a, "mouseup"), f(a, "mouseout"), this._touchMoved || f(a, "click"), e = !1);
34 | }, b._mouseInit = function () {
35 | var b = this;
36 | b.element.bind({
37 | touchstart: a.proxy(b, "_touchStart"),
38 | touchmove: a.proxy(b, "_touchMove"),
39 | touchend: a.proxy(b, "_touchEnd")
40 | }), c.call(b);
41 | }, b._mouseDestroy = function () {
42 | var b = this;
43 | b.element.unbind({
44 | touchstart: a.proxy(b, "_touchStart"),
45 | touchmove: a.proxy(b, "_touchMove"),
46 | touchend: a.proxy(b, "_touchEnd")
47 | }), d.call(b);
48 | };
49 | }
50 | }(jQuery);
--------------------------------------------------------------------------------
/app/src/main/assets/reader/libs/jquery_i18n/cli.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 | "use strict";
3 |
4 | var parser = require(__dirname + '/CLDRPluralRuleParser.js');
5 | if (process.argv.length < 3) {
6 | console.log("Please provide the rule and a number to test");
7 | console.log("Example:");
8 | console.log("cldrpluraltuleparser 'v = 0 and n != 0..10 and n % 10 = 0' 20");
9 | } else {
10 | var result = parser(process.argv[2], process.argv[3]);
11 | console.log(result);
12 | }
--------------------------------------------------------------------------------
/app/src/main/assets/reader/libs/material-icons.css:
--------------------------------------------------------------------------------
1 | /* fallback */
2 |
3 | @font-face {
4 | font-family: 'Material Icons';
5 | font-style: normal;
6 | font-weight: 400;
7 | src: url(../fonts/material-icons.woff2) format('woff2');
8 | }
9 |
10 | .material-icons {
11 | font-family: 'Material Icons';
12 | font-weight: normal;
13 | font-style: normal;
14 | font-size: 24px;
15 | line-height: 1;
16 | letter-spacing: normal;
17 | text-transform: none;
18 | display: inline-block;
19 | white-space: nowrap;
20 | word-wrap: normal;
21 | direction: ltr;
22 | -moz-font-feature-settings: 'liga';
23 | -moz-osx-font-smoothing: grayscale;
24 | }
--------------------------------------------------------------------------------
/app/src/main/assets/reader/libs/polyfill.css:
--------------------------------------------------------------------------------
1 | dialog {
2 | position: absolute;
3 | left: 0; right: 0;
4 | width: -moz-fit-content;
5 | width: -webkit-fit-content;
6 | width: fit-content;
7 | height: -moz-fit-content;
8 | height: -webkit-fit-content;
9 | height: fit-content;
10 | margin: auto;
11 | border: solid;
12 | padding: 1em;
13 | background: white;
14 | color: black;
15 | display: block;
16 | }
17 |
18 | dialog:not([open]) {
19 | display: none;
20 | }
21 |
22 | dialog + .backdrop {
23 | position: fixed;
24 | top: 0; right: 0; bottom: 0; left: 0;
25 | background: rgba(0,0,0,0.1);
26 | }
27 |
28 | ._dialog_overlay {
29 | position: fixed;
30 | top: 0; right: 0; bottom: 0; left: 0;
31 | }
32 |
33 | dialog.fixed {
34 | position: fixed;
35 | top: 50%;
36 | transform: translate(0, -50%);
37 | }
--------------------------------------------------------------------------------
/app/src/main/assets/reader/reader/css/recorder.css:
--------------------------------------------------------------------------------
1 | #analyser {
2 | height: 128px;
3 | display: block;
4 | }
5 |
6 | #waveform {
7 | display: none;
8 | }
9 |
10 | #recorder-container {
11 | padding: 10px;
12 | width: 350px;
13 | max-width: calc(100% - 30px);
14 | }
15 | #recorder-file-buttons{
16 | float:right;
17 | }
18 | #total-time{
19 | float: right;
20 | margin-top:8px;
21 | }
--------------------------------------------------------------------------------
/app/src/main/assets/reader/reader/css/reminders.css:
--------------------------------------------------------------------------------
1 | .reminder-item .hour{
2 | display: block;
3 | font-size:18px;
4 | }
5 | .reminder-item{
6 | padding-bottom:10px;
7 | padding-top:10px;
8 |
9 | }
10 | .reminder-calendar-picker .c-datepicker__header-day,.reminder-date-picker .c-datepicker__toggle{
11 | display:none;
12 | }
13 | .reminder-date-picker{
14 | min-height: 354px !important;
15 | }
16 | .reminder-date-picker .c-datepicker__header{
17 | display:none;
18 | }
19 |
--------------------------------------------------------------------------------
/app/src/main/assets/reader/reader/libs/jquery.hammer.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4 | (function (factory) {
5 | if (typeof define === 'function' && define.amd) {
6 | define(['jquery', 'hammerjs'], factory);
7 | } else if ((typeof exports === "undefined" ? "undefined" : _typeof(exports)) === 'object') {
8 | factory(require('jquery'), require('hammerjs'));
9 | } else {
10 | factory(jQuery, Hammer);
11 | }
12 | })(function ($, Hammer) {
13 | function hammerify(el, options) {
14 | var $el = $(el);
15 | if (!$el.data("hammer")) {
16 | $el.data("hammer", new Hammer($el[0], options));
17 | }
18 | }
19 | $.fn.hammer = function (options) {
20 | return this.each(function () {
21 | hammerify(this, options);
22 | });
23 | };
24 |
25 | // extend the emit method to also trigger jQuery events
26 | Hammer.Manager.prototype.emit = function (originalEmit) {
27 | return function (type, data) {
28 | originalEmit.call(this, type, data);
29 | $(this.element).trigger({
30 | type: type,
31 | gesture: data
32 | });
33 | };
34 | }(Hammer.Manager.prototype.emit);
35 | });
--------------------------------------------------------------------------------
/app/src/main/assets/reader/reader/libs/jquery.ui.touch-punch.min.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | /*!
4 | * jQuery UI Touch Punch 0.2.3
5 | *
6 | * Copyright 2011–2014, Dave Furfero
7 | * Dual licensed under the MIT or GPL Version 2 licenses.
8 | *
9 | * Depends:
10 | * jquery.ui.widget.js
11 | * jquery.ui.mouse.js
12 | */
13 | !function (a) {
14 | function f(a, b) {
15 | if (!(a.originalEvent.touches.length > 1)) {
16 | a.preventDefault();
17 | var c = a.originalEvent.changedTouches[0],
18 | d = document.createEvent("MouseEvents");
19 | d.initMouseEvent(b, !0, !0, window, 1, c.screenX, c.screenY, c.clientX, c.clientY, !1, !1, !1, !1, 0, null), a.target.dispatchEvent(d);
20 | }
21 | }
22 | if (a.support.touch = "ontouchend" in document, a.support.touch) {
23 | var e,
24 | b = a.ui.mouse.prototype,
25 | c = b._mouseInit,
26 | d = b._mouseDestroy;
27 | b._touchStart = function (a) {
28 | var b = this;
29 | !e && b._mouseCapture(a.originalEvent.changedTouches[0]) && (e = !0, b._touchMoved = !1, f(a, "mouseover"), f(a, "mousemove"), f(a, "mousedown"));
30 | }, b._touchMove = function (a) {
31 | e && (this._touchMoved = !0, f(a, "mousemove"));
32 | }, b._touchEnd = function (a) {
33 | e && (f(a, "mouseup"), f(a, "mouseout"), this._touchMoved || f(a, "click"), e = !1);
34 | }, b._mouseInit = function () {
35 | var b = this;
36 | b.element.bind({
37 | touchstart: a.proxy(b, "_touchStart"),
38 | touchmove: a.proxy(b, "_touchMove"),
39 | touchend: a.proxy(b, "_touchEnd")
40 | }), c.call(b);
41 | }, b._mouseDestroy = function () {
42 | var b = this;
43 | b.element.unbind({
44 | touchstart: a.proxy(b, "_touchStart"),
45 | touchmove: a.proxy(b, "_touchMove"),
46 | touchend: a.proxy(b, "_touchEnd")
47 | }), d.call(b);
48 | };
49 | }
50 | }(jQuery);
--------------------------------------------------------------------------------
/app/src/main/assets/reader/reader/libs/recorder/decoderWorker.min.wasm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/reader/reader/libs/recorder/decoderWorker.min.wasm
--------------------------------------------------------------------------------
/app/src/main/assets/reader/reader/libs/recorder/encoderWorker.min.wasm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/assets/reader/reader/libs/recorder/encoderWorker.min.wasm
--------------------------------------------------------------------------------
/app/src/main/assets/reader/reader/libs/simplecolorpicker/css/simple-color-picker.styl:
--------------------------------------------------------------------------------
1 | pickerHueWidth = 20px
2 |
3 | .Scp
4 | user-select none
5 | position relative
6 |
7 | .Scp-saturation
8 | position relative
9 | height 100%
10 | background linear-gradient(to right, #FFFFFF, #FF0000);
11 | float left
12 | margin-right 5px
13 |
14 | .Scp-brightness
15 | width 100%
16 | height 100%
17 | background linear-gradient(rgba(255, 255, 255, 0), rgba(0, 0, 0, 1));
18 |
19 | .Scp-sbSelector
20 | border 2px solid white
21 | position absolute
22 | width 14px
23 | height 14px
24 | background white
25 | border-radius 10px
26 | top -7px
27 | left -7px
28 | box-sizing border-box
29 | z-index 10
30 |
31 | .Scp-hue
32 | width pickerHueWidth
33 | height 100%
34 | position relative
35 | float left
36 | background linear-gradient(rgb(255, 0, 0) 0%, rgb(255, 0, 255) 17%, rgb(0, 0, 255) 34%, rgb(0, 255, 255) 50%, rgb(0, 255, 0) 67%, rgb(255, 255, 0) 84%, rgb(255, 0, 0) 100%)
37 |
38 | .Scp-hSelector
39 | position absolute
40 | background white
41 | border-bottom 1px solid black
42 | right -3px
43 | width 10px
44 | height 2px
45 |
--------------------------------------------------------------------------------
/app/src/main/assets/reader/reader/libs/simplecolorpicker/index.d.ts:
--------------------------------------------------------------------------------
1 | export interface ColorPickerOptions {
2 | color?: string | number;
3 | background?: string | number;
4 | el?: HTMLElement;
5 | width?: number;
6 | height?: number;
7 | }
8 |
9 | export interface ColorPicker {
10 | new (options?: ColorPickerOptions): ColorPicker;
11 |
12 | appendTo(domElement: HTMLElement): void;
13 |
14 | remove(): void;
15 |
16 | setColor(color: string | number): void;
17 |
18 | setSize(width: number, height: number): void;
19 |
20 | setBackgroundColor(color: string | number): void;
21 |
22 | setNoBackground(): void;
23 |
24 | onChange(callback: Function): void;
25 |
26 | getColor(): string | number;
27 |
28 | getHexString(): string;
29 |
30 | getHexNumber(): number;
31 |
32 | getRGB(): { r: number, g: number, b: number };
33 |
34 | getHSV(): { h: number, s: number, v: number };
35 |
36 | isDark(): boolean;
37 |
38 | isLight(): boolean;
39 | }
40 |
41 | export var ColorPicker: ColorPicker;
42 |
43 | export default ColorPicker;
44 |
--------------------------------------------------------------------------------
/app/src/main/assets/reader/reader/libs/simplecolorpicker/simple-color-picker.css:
--------------------------------------------------------------------------------
1 | .Scp {
2 | -webkit-user-select: none;
3 | -moz-user-select: none;
4 | -ms-user-select: none;
5 | user-select: none;
6 | position: relative;
7 | }
8 | .Scp-saturation {
9 | height: 100%;
10 | background: -webkit-linear-gradient(left, #fff, #f00);
11 | background: linear-gradient(to right, #fff, #f00);
12 | margin-right: 5px;
13 | display: inline-block;
14 | }
15 | .Scp-brightness {
16 | width: 100%;
17 | height: 100%;
18 | background: -webkit-linear-gradient(rgba(255,255,255,0), #000);
19 | background: linear-gradient(rgba(255,255,255,0), #000);
20 | }
21 | .Scp-sbSelector {
22 | border: 2px solid #fff;
23 | position: absolute;
24 | width: 14px;
25 | height: 14px;
26 | background: #fff;
27 | border-radius: 10px;
28 | top: -7px;
29 | left: -7px;
30 | box-sizing: border-box;
31 | z-index: 10;
32 | }
33 | .Scp-hue {
34 | width: 20px;
35 | height: 100%;
36 | display: inline-block;
37 | background: -webkit-linear-gradient(#f00 0%, #f0f 17%, #00f 34%, #0ff 50%, #0f0 67%, #ff0 84%, #f00 100%);
38 | background: linear-gradient(#f00 0%, #f0f 17%, #00f 34%, #0ff 50%, #0f0 67%, #ff0 84%, #f00 100%);
39 | }
40 | .Scp-hSelector {
41 | position: absolute;
42 | background: #fff;
43 | border-bottom: 1px solid #000;
44 | right: -3px;
45 | width: 10px;
46 | height: 2px;
47 | }
48 |
--------------------------------------------------------------------------------
/app/src/main/assets/reader/utils/folder-picker-preload.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | var _require = require('electron'),
4 | ipcRenderer = _require.ipcRenderer;
5 | setInterval(function () {
6 | ipcRenderer.sendToHost('ping');
7 | }, 1000);
--------------------------------------------------------------------------------
/app/src/main/ic_launcher-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CarnetApp/CarnetAndroid/f0d75c0d89e1b2c847c178923fac37d82525c30a/app/src/main/ic_launcher-web.png
--------------------------------------------------------------------------------
/app/src/main/java/com/spisoft/quicknote/BootReceiver.kt:
--------------------------------------------------------------------------------
1 | package com.spisoft.quicknote
2 |
3 | import android.content.BroadcastReceiver
4 | import android.content.Context
5 | import android.content.Intent
6 | import com.spisoft.quicknote.reminders.RemindersManager
7 | import com.spisoft.sync.synchro.SynchroService
8 |
9 | class BootReceiver : BroadcastReceiver() {
10 |
11 | override fun onReceive(context: Context, intent: Intent) {
12 | // This method is called when the BroadcastReceiver is receiving an Intent broadcast.
13 | RemindersManager.getInstance(context)!!.onBoot()
14 | try {
15 | SynchroService.startIfNeeded(context)
16 | } catch(ex:IllegalStateException){
17 |
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/app/src/main/java/com/spisoft/quicknote/ChangelogActivity.kt:
--------------------------------------------------------------------------------
1 | package com.spisoft.quicknote
2 |
3 | import androidx.appcompat.app.AppCompatActivity
4 | import android.os.Bundle
5 |
6 | class ChangelogActivity : AppCompatActivity() {
7 |
8 | override fun onCreate(savedInstanceState: Bundle?) {
9 | super.onCreate(savedInstanceState)
10 | setContentView(R.layout.activity_changelog)
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/app/src/main/java/com/spisoft/quicknote/FileReaderActivity.kt:
--------------------------------------------------------------------------------
1 | package com.spisoft.quicknote
2 |
3 | import androidx.appcompat.app.AppCompatActivity
4 | import android.os.Bundle
5 |
6 | class FileReaderActivity : AppCompatActivity() {
7 |
8 | override fun onCreate(savedInstanceState: Bundle?) {
9 | super.onCreate(savedInstanceState)
10 | setContentView(R.layout.activity_changelog)
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/app/src/main/java/com/spisoft/quicknote/FloatingFragment.java:
--------------------------------------------------------------------------------
1 | package com.spisoft.quicknote;
2 |
3 | import android.view.View;
4 | import android.view.ViewGroup;
5 |
6 | /**
7 | * Created by alexandre on 18/02/16.
8 | */
9 | public interface FloatingFragment {
10 | public View getView();
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/app/src/main/java/com/spisoft/quicknote/HomeReceiver.java:
--------------------------------------------------------------------------------
1 | package com.spisoft.quicknote;
2 |
3 | import android.content.BroadcastReceiver;
4 | import android.content.Context;
5 | import android.content.Intent;
6 |
7 | /**
8 | * Created by alexandre on 11/02/16.
9 | */
10 | public class HomeReceiver extends BroadcastReceiver {
11 | @Override
12 | public void onReceive(Context context, Intent intent) {
13 | if(FloatingService.sService!=null){
14 | FloatingService.sService.requestMinimize();
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/app/src/main/java/com/spisoft/quicknote/KeywordsDialog.java:
--------------------------------------------------------------------------------
1 | package com.spisoft.quicknote;
2 |
3 | import android.database.Cursor;
4 | import android.os.Bundle;
5 | import androidx.fragment.app.DialogFragment;
6 | import androidx.loader.app.LoaderManager;
7 | import androidx.loader.content.Loader;
8 | import androidx.cursoradapter.widget.CursorAdapter;
9 | import android.view.LayoutInflater;
10 | import android.view.View;
11 | import android.view.ViewGroup;
12 | import android.widget.ListView;
13 |
14 | /**
15 | * Created by phoenamandre on 09/07/17.
16 | */
17 |
18 | public class KeywordsDialog extends DialogFragment implements LoaderManager.LoaderCallbacks{
19 | public static final String NOTE_KEY = "note_key";
20 | private ListView mListView;
21 | private CursorAdapter mAdapter;
22 | private Note mNote;
23 |
24 | @Override
25 | public View onCreateView(LayoutInflater inflater, ViewGroup container,
26 | Bundle savedInstanceState) {
27 | View v = inflater.inflate(R.layout.fragment_keywords_dialog, container, false);
28 |
29 | mNote = (Note)getArguments().getSerializable(NOTE_KEY);
30 | getDialog().setTitle("");
31 | mListView = (ListView)v.findViewById(R.id.listView);
32 | return v;
33 | }
34 |
35 | @Override
36 | public Loader onCreateLoader(int id, Bundle args) {
37 | return new KeywordsLoader(getContext());
38 | }
39 |
40 | @Override
41 | public void onLoadFinished(Loader loader, Object data) {
42 | mAdapter = new KeywordsListAdapter(getContext(), (Cursor)data);
43 | mListView.setAdapter(mAdapter);
44 | }
45 |
46 | @Override
47 | public void onLoaderReset(Loader loader) {
48 |
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/app/src/main/java/com/spisoft/quicknote/KeywordsListAdapter.java:
--------------------------------------------------------------------------------
1 | package com.spisoft.quicknote;
2 |
3 | import android.content.Context;
4 | import android.database.Cursor;
5 | import androidx.cursoradapter.widget.CursorAdapter;
6 | import android.view.LayoutInflater;
7 | import android.view.View;
8 | import android.view.ViewGroup;
9 | import android.widget.TextView;
10 |
11 | import com.spisoft.quicknote.R;
12 | import com.spisoft.quicknote.indexer.IndexDatabase;
13 |
14 | /**
15 | * Created by alexandre on 10/07/17.
16 | */
17 |
18 | public class KeywordsListAdapter extends CursorAdapter{
19 | private int mKeywordIndex;
20 |
21 | public KeywordsListAdapter(Context context, Cursor c) {
22 | super(context, c, true);
23 | mKeywordIndex = c.getColumnIndex(IndexDatabase.KEY_KEYWORD);
24 | }
25 |
26 | @Override
27 | public View newView(Context context, Cursor cursor, ViewGroup parent) {
28 | return LayoutInflater.from(context).inflate(R.layout.keyword_item, parent, false);
29 | }
30 |
31 | @Override
32 | public void bindView(View view, Context context, Cursor cursor) {
33 | ((TextView)view.findViewById(R.id.textView)).setText(cursor.getString(mKeywordIndex));
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/app/src/main/java/com/spisoft/quicknote/KeywordsLoader.java:
--------------------------------------------------------------------------------
1 | package com.spisoft.quicknote;
2 |
3 | import android.content.Context;
4 | import androidx.loader.content.CursorLoader;
5 |
6 | import com.spisoft.quicknote.indexer.IndexDatabase;
7 | import com.spisoft.quicknote.indexer.IndexerProvider;
8 |
9 | /**
10 | * Created by phoenamandre on 09/07/17.
11 | */
12 |
13 | public class KeywordsLoader extends CursorLoader {
14 | public KeywordsLoader(Context context) {
15 | super(context);
16 | setUri(IndexerProvider.getKeywordsUri());
17 | setProjection(IndexDatabase.COLUMNS);
18 | setSelection("DISTINCT("+IndexDatabase.KEY_KEYWORD+")");
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/app/src/main/java/com/spisoft/quicknote/ListingEngine.java:
--------------------------------------------------------------------------------
1 | package com.spisoft.quicknote;
2 |
3 | import android.os.Handler;
4 |
5 | import java.io.File;
6 | import java.util.ArrayList;
7 | import java.util.Collections;
8 | import java.util.List;
9 |
10 | /**
11 | * Created by phoenamandre on 07/02/16.
12 | */
13 | public class ListingEngine {
14 |
15 | private final File mUri;
16 | private final ListingListener mListener;
17 | private String mExt;
18 | private boolean mOnlyDirectory;
19 | private Handler mHandler = new Handler();
20 | public interface ListingListener{
21 | public void onFileList(List list);
22 | }
23 |
24 |
25 |
26 | public ListingEngine(File uri, ListingListener listener){
27 | mListener = listener;
28 | mUri = uri;
29 | }
30 | public void setFilter(boolean onlyDirectories, String ext){
31 | mExt = ext;
32 | mOnlyDirectory = onlyDirectories;
33 | }
34 | public void list(){
35 | new Thread(){
36 | public void run(){
37 | File file = mUri;
38 | File[] files = file.listFiles();
39 | final List fileList = new ArrayList<>();
40 | if(files!=null){
41 | for (File f : files){
42 |
43 | if(!mOnlyDirectory||f.isDirectory()) {
44 | if(f.isDirectory()||mExt==null||mExt.isEmpty()|| f.getName().endsWith("."+mExt))
45 | fileList.add(f);
46 |
47 | }
48 |
49 | }
50 | }
51 | Collections.sort(fileList);
52 | mHandler.post(new Runnable() {
53 | @Override
54 | public void run() {
55 | mListener.onFileList(fileList);
56 | }
57 | });
58 |
59 | }
60 | }.start();
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/app/src/main/java/com/spisoft/quicknote/RecordingActivity.java:
--------------------------------------------------------------------------------
1 | package com.spisoft.quicknote;
2 |
3 | /**
4 | * Created by alexandre on 05/07/17.
5 | */
6 |
7 | public class RecordingActivity {
8 | }
9 |
--------------------------------------------------------------------------------
/app/src/main/java/com/spisoft/quicknote/SettingsActivity.java:
--------------------------------------------------------------------------------
1 | package com.spisoft.quicknote;
2 |
3 | import androidx.annotation.NonNull;
4 | import androidx.appcompat.app.AppCompatActivity;
5 | import android.os.Bundle;
6 | import android.view.Menu;
7 | import android.view.MenuItem;
8 |
9 | import com.spisoft.quicknote.browser.PermissionChecker;
10 |
11 | public class SettingsActivity extends AppCompatActivity {
12 |
13 | private PermissionChecker mPermissionChecker;
14 |
15 | @Override
16 | protected void onCreate(Bundle savedInstanceState) {
17 | super.onCreate(savedInstanceState);
18 | setContentView(R.layout.activity_settings);
19 | }
20 |
21 |
22 | @Override
23 | public boolean onCreateOptionsMenu(Menu menu) {
24 | // Inflate the menu; this adds items to the action bar if it is present.
25 | getMenuInflater().inflate(R.menu.menu_settings, menu);
26 | return true;
27 | }
28 |
29 | @Override
30 | public boolean onOptionsItemSelected(MenuItem item) {
31 | // Handle action bar item clicks here. The action bar will
32 | // automatically handle clicks on the Home/Up button, so long
33 | // as you specify a parent activity in AndroidManifest.xml.
34 | int id = item.getItemId();
35 |
36 | //noinspection SimplifiableIfStatement
37 | if (id == R.id.action_settings) {
38 | return true;
39 | }
40 |
41 | return super.onOptionsItemSelected(item);
42 | }
43 |
44 | @Override
45 | public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults){
46 | mPermissionChecker.onRequestPermissionsResult(requestCode, permissions, grantResults);
47 | }
48 |
49 | public void getStoragePermission(PermissionChecker.PermissionCallback callback) {
50 | mPermissionChecker = new PermissionChecker();
51 | mPermissionChecker.checkAndRequestPermission(this,callback);
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/app/src/main/java/com/spisoft/quicknote/WebBasedActivity.kt:
--------------------------------------------------------------------------------
1 | package com.spisoft.quicknote
2 |
3 | import androidx.appcompat.app.AppCompatActivity
4 | import android.os.Bundle
5 |
6 | class WebBasedActivity : AppCompatActivity() {
7 |
8 | override fun onCreate(savedInstanceState: Bundle?) {
9 | super.onCreate(savedInstanceState)
10 | setContentView(R.layout.activity_web_based)
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/app/src/main/java/com/spisoft/quicknote/browser/PasteBin.java:
--------------------------------------------------------------------------------
1 | package com.spisoft.quicknote.browser;
2 |
3 | import java.util.ArrayList;
4 | import java.util.List;
5 |
6 | /**
7 | * Created by alexandre on 12/05/16.
8 | */
9 | public class PasteBin {
10 | private static ArrayList