├── .gitignore
├── .idea
├── .gitignore
├── .name
├── MarsCodeWorkspaceAppSettings.xml
├── codeStyles
│ ├── Project.xml
│ └── codeStyleConfig.xml
├── compiler.xml
├── deploymentTargetSelector.xml
├── dictionaries
│ └── tao_wu.xml
├── gradle.xml
├── inspectionProfiles
│ └── Project_Default.xml
├── kotlinc.xml
├── migrations.xml
├── misc.xml
├── runConfigurations.xml
└── vcs.xml
├── LICENSE
├── README-CN.md
├── README.md
├── app
├── .gitignore
├── build.gradle.kts
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ ├── com
│ │ └── ldlywt
│ │ │ └── note
│ │ │ ├── App.kt
│ │ │ ├── backup
│ │ │ ├── BackupScheduler.kt
│ │ │ ├── BackupWorker.kt
│ │ │ ├── SyncManager.kt
│ │ │ ├── api
│ │ │ │ ├── Encryption.kt
│ │ │ │ └── OnSyncResultListener.kt
│ │ │ ├── model
│ │ │ │ └── DavData.java
│ │ │ └── utils
│ │ │ │ ├── Base64Util.java
│ │ │ │ └── DefaultEncryption.kt
│ │ │ ├── bean
│ │ │ ├── Attachment.kt
│ │ │ ├── LocationInfo.kt
│ │ │ ├── Note.kt
│ │ │ ├── NoteTagCrossRef.kt
│ │ │ ├── Option.kt
│ │ │ ├── Reminder.kt
│ │ │ └── Tag.kt
│ │ │ ├── biometric
│ │ │ ├── AppBioMetricManager.kt
│ │ │ └── BiometricAuthListener.kt
│ │ │ ├── component
│ │ │ ├── ActionBottomSheet.kt
│ │ │ ├── CardCalender.kt
│ │ │ ├── DraggableCard.kt
│ │ │ ├── EmptyComponent.kt
│ │ │ ├── ImageCard.kt
│ │ │ ├── LoadingComponent.kt
│ │ │ ├── MySaltUi.kt
│ │ │ ├── NoteCard.kt
│ │ │ ├── PIconButton.kt
│ │ │ ├── RYDialog.kt
│ │ │ ├── RYOutlineTextField.kt
│ │ │ ├── RYScaffold.kt
│ │ │ ├── StateHandler.kt
│ │ │ └── Wave.kt
│ │ │ ├── db
│ │ │ ├── AppDatabase.kt
│ │ │ ├── DatabaseConverters.kt
│ │ │ ├── dao
│ │ │ │ ├── NoteDao.kt
│ │ │ │ ├── NoteTagCrossRefDao.kt
│ │ │ │ ├── TagDao.kt
│ │ │ │ └── TagNoteDao.kt
│ │ │ └── repo
│ │ │ │ └── TagNoteRepo.kt
│ │ │ ├── hilt
│ │ │ ├── DatabaseModule.kt
│ │ │ ├── RepositoryModule.kt
│ │ │ └── SyncModule.kt
│ │ │ ├── state
│ │ │ └── NoteState.kt
│ │ │ ├── ui
│ │ │ └── page
│ │ │ │ ├── NoteViewModel.kt
│ │ │ │ ├── PictureDisplayPage.kt
│ │ │ │ ├── data
│ │ │ │ ├── DataManagerPage.kt
│ │ │ │ ├── DataManagerViewModel.kt
│ │ │ │ └── WebdavConfigPage.kt
│ │ │ │ ├── home
│ │ │ │ ├── AllNotePage.kt
│ │ │ │ ├── CalenderContent.kt
│ │ │ │ └── CalenderPage.kt
│ │ │ │ ├── input
│ │ │ │ ├── ChatInputDialog.kt
│ │ │ │ ├── InputImage.kt
│ │ │ │ ├── MemoInputPage.kt
│ │ │ │ └── MemoInputViewModel.kt
│ │ │ │ ├── main
│ │ │ │ ├── MainActivity.kt
│ │ │ │ ├── MainScreen.kt
│ │ │ │ └── NavigationBar.kt
│ │ │ │ ├── router
│ │ │ │ ├── App.kt
│ │ │ │ └── Screen.kt
│ │ │ │ ├── search
│ │ │ │ ├── SearchPage.kt
│ │ │ │ └── SearchViewModel.kt
│ │ │ │ ├── settings
│ │ │ │ ├── AboutPage.kt
│ │ │ │ ├── ExplorePage.kt
│ │ │ │ ├── GalleryPage.kt
│ │ │ │ ├── HeatPage.kt
│ │ │ │ ├── HomeSettingsPage.kt
│ │ │ │ ├── MoreInfoPage.kt
│ │ │ │ └── SettingsViewModel.kt
│ │ │ │ ├── share
│ │ │ │ └── SharePage.kt
│ │ │ │ └── tag
│ │ │ │ ├── LocationDetailPage.kt
│ │ │ │ ├── LocationListPage.kt
│ │ │ │ ├── TagDetailPage.kt
│ │ │ │ ├── TagListPage.kt
│ │ │ │ └── YearDetailPage.kt
│ │ │ └── utils
│ │ │ ├── ActivityResultUtils.kt
│ │ │ ├── BackUp.kt
│ │ │ ├── BioMetricUtil.kt
│ │ │ ├── BlurTransformation.kt
│ │ │ ├── Constant.kt
│ │ │ ├── CoroutinesHelper.kt
│ │ │ ├── DateUtils.kt
│ │ │ ├── DonateUtils.kt
│ │ │ ├── File.kt
│ │ │ ├── FirstTimeManager.kt
│ │ │ ├── PathUtils.java
│ │ │ ├── ReceiveFileKtx.kt
│ │ │ ├── Resource.kt
│ │ │ ├── SettingsPreferences.kt
│ │ │ ├── SharedPreferencesUtils.kt
│ │ │ ├── String.kt
│ │ │ ├── Tools.kt
│ │ │ ├── TopicUtils.kt
│ │ │ └── ktx.kt
│ ├── dev
│ │ └── jeziellago
│ │ │ └── compose
│ │ │ └── markdowntext
│ │ │ ├── AutoSizeConfig.kt
│ │ │ ├── CustomTextView.kt
│ │ │ ├── MarkdownRender.kt
│ │ │ ├── MarkdownText.kt
│ │ │ └── TextAppearanceExt.kt
│ └── top
│ │ └── zibin
│ │ └── luban
│ │ ├── Checker.java
│ │ ├── CompressionPredicate.java
│ │ ├── Engine.java
│ │ ├── InputStreamAdapter.java
│ │ ├── InputStreamProvider.java
│ │ ├── Luban.java
│ │ ├── OnCompressListener.java
│ │ └── OnRenameListener.java
│ └── res
│ ├── drawable
│ ├── about.xml
│ ├── agreement.xml
│ ├── android.xml
│ ├── app_theme.xml
│ ├── auto_check_update.xml
│ ├── coffee.xml
│ ├── color.xml
│ ├── complete.xml
│ ├── dark_color.xml
│ ├── haptic.xml
│ ├── home_screen.xml
│ ├── ic_arrow_drop_down.xml
│ ├── ic_database.xml
│ ├── ic_empty.xml
│ ├── ic_info.xml
│ ├── json_file.xml
│ └── light_color.xml
│ ├── mipmap-xxhdpi
│ ├── ic_launcher.png
│ ├── ic_start.png
│ └── pic_thinking.png
│ ├── values-de
│ └── strings.xml
│ ├── values-es
│ └── strings.xml
│ ├── values-hi
│ └── strings.xml
│ ├── values-it
│ └── strings.xml
│ ├── values-ja
│ └── strings.xml
│ ├── values-zh-rCN
│ └── strings.xml
│ ├── values-zh-rTW
│ └── strings.xml
│ ├── values
│ ├── strings.xml
│ ├── styles.xml
│ └── themes.xml
│ └── xml
│ ├── file_provider_paths.xml
│ └── network__config.xml
├── build.gradle.kts
├── gradle.properties
├── gradle
├── libs.versions.toml
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle.kts
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/caches
5 | /.idea/libraries
6 | /.idea/modules.xml
7 | /.idea/workspace.xml
8 | /.idea/navEditor.xml
9 | /.idea/assetWizardSettings.xml
10 | .DS_Store
11 | /build
12 | /captures
13 | .externalNativeBuild
14 | .cxx
15 | local.properties
16 | /keystore/
17 | /keystore/noteKeyStore.jks
18 |
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # 默认忽略的文件
2 | /shelf/
3 | /workspace.xml
4 |
--------------------------------------------------------------------------------
/.idea/.name:
--------------------------------------------------------------------------------
1 | Note
--------------------------------------------------------------------------------
/.idea/MarsCodeWorkspaceAppSettings.xml:
--------------------------------------------------------------------------------
1 |
2 |
13 |
29 |
34 |
49 |
A quick record app written with Jetpack Compose.
4 | 简体中文 | English 5 |9 | * Get the input stream through this interface, and obtain the picture using compatible files and FileProvider 10 | */ 11 | public interface InputStreamProvider { 12 | 13 | InputStream open() throws IOException; 14 | 15 | void close(); 16 | 17 | String getPath(); 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/top/zibin/luban/OnCompressListener.java: -------------------------------------------------------------------------------- 1 | package top.zibin.luban; 2 | 3 | import java.io.File; 4 | 5 | public interface OnCompressListener { 6 | 7 | /** 8 | * Fired when the compression is started, override to handle in your own code 9 | */ 10 | void onStart(); 11 | 12 | /** 13 | * Fired when a compression returns successfully, override to handle in your own code 14 | */ 15 | void onSuccess(File file); 16 | 17 | /** 18 | * Fired when a compression fails to complete, override to handle in your own code 19 | */ 20 | void onError(Throwable e); 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/top/zibin/luban/OnRenameListener.java: -------------------------------------------------------------------------------- 1 | package top.zibin.luban; 2 | 3 | /** 4 | * Author: zibin 5 | * Datetime: 2018/5/18 6 | *
7 | * 提供修改压缩图片命名接口 8 | *
9 | * A functional interface (callback) that used to rename the file after compress. 10 | */ 11 | public interface OnRenameListener { 12 | 13 | /** 14 | * 压缩前调用该方法用于修改压缩后文件名 15 | *
16 | * Call before compression begins.
17 | *
18 | * @param filePath 传入文件路径/ file path
19 | * @return 返回重命名后的字符串/ file name
20 | */
21 | String rename(String filePath);
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/about.xml:
--------------------------------------------------------------------------------
1 |