Compare commits

...

1467 Commits

Author SHA1 Message Date
d2ace696ca
Merge remote-tracking branch 'origin/develop' into develop 2024-02-05 17:44:19 +09:00
b320aeedca
バージョンコードのインクリメント 2024-02-05 16:56:24 +09:00
ろむねこ
376d1c7014
Merge pull request #126 from lacerta-doc/improve_
最終バージョンに追従
2024-01-29 17:32:02 +09:00
0fe0f5dd00
バージョンを遡れない不具合を修正 2024-01-29 13:20:44 +09:00
2fcab4e931
削除した後フリーズしないように(Workaround) 2024-01-29 12:59:56 +09:00
9288360eb4
rootでは削除を呼べないように 2024-01-29 12:32:31 +09:00
841258d82a
フォルダ削除実装 2024-01-29 12:31:18 +09:00
8f7594c628
削除メソッド実装 2024-01-29 12:31:08 +09:00
f77b7c7089
FolderDaoに削除を追加 2024-01-29 12:30:21 +09:00
bfce8039ae
アイコン変更 2024-01-29 12:07:51 +09:00
d4947e1ca8
アイコンリソース追加 2024-01-29 12:07:29 +09:00
abdab63bb8
アニメーションを調整 2024-01-29 12:03:03 +09:00
4d2973eaae
謎のテキストを修正 2024-01-29 12:01:07 +09:00
06e965d4ae
Delete, Mergeにアイコンを設定してifRoomに 2024-01-29 12:00:38 +09:00
356397b71f
色調整 2024-01-29 11:58:24 +09:00
67a2a303cf
リソース追加 2024-01-29 11:57:59 +09:00
0100541fc2
Bodyにマージンを追加 2024-01-29 11:54:00 +09:00
266920349e
タグ追加ボタンのアイコンを変更 2024-01-29 11:53:51 +09:00
71e573af29
アイコン追加 2024-01-29 11:53:37 +09:00
b7232d2723
タブからも選択できるようにした(はずだけど動かないのでとりあえず見なかったことに) 2024-01-29 11:51:22 +09:00
f7a71c70ed
Revert "共有ビューモデル実装"
This reverts commit 6d17811ada4a7dba85f403c3344417dc8b991e24.
2024-01-29 11:45:42 +09:00
c3e1825542
Revert "WIP"
This reverts commit 0c27cf6b24d81e37931a10272a47f502ee7d2725.
2024-01-29 11:45:41 +09:00
0c27cf6b24
WIP 2024-01-29 11:45:35 +09:00
6d17811ada
共有ビューモデル実装 2024-01-29 11:30:40 +09:00
b756eea9bb
いろいろ 2024-01-29 11:21:28 +09:00
80941c39d6
テキスト変更 2024-01-29 11:14:02 +09:00
7dcec94c03
RevIDが指定されている場合の呼び出し先も新しい方へ変更 2024-01-29 11:09:27 +09:00
f1d947e159
実装 2024-01-29 11:07:00 +09:00
d9a9cd0743
Revisionが指定されている場合はBodyに渡すように 2024-01-29 11:04:33 +09:00
a569182fd1
AdapterにRevListを追加 2024-01-29 11:03:15 +09:00
756b735884
RevIDの取り扱いを追加 WIP 2024-01-29 10:57:37 +09:00
e460bcbe6e
RevIDの取り扱いを追加 WIP 2024-01-29 10:57:29 +09:00
e4418e6322
JavaDoc対応, コメント削除 2024-01-29 10:56:34 +09:00
b60bc92495
不要なメソッドを削除 2024-01-29 10:55:48 +09:00
2cb6b45cbd
コメント追加 2024-01-29 10:54:38 +09:00
fb17848ad1
Resume時に自動更新するように 2024-01-29 10:54:14 +09:00
aee7f523d9
文字列変更(暫定) 2024-01-29 10:52:15 +09:00
9a8180ab65
実装をやめた項目を削除 2024-01-29 10:51:23 +09:00
c095b50bf5
Homeの場合の更新時刻表示をライブラリと統一 2024-01-29 10:50:39 +09:00
6693275dd9
テキスト色を変更するように 2024-01-29 10:48:53 +09:00
5da9e14d61
Workaround追加 2024-01-29 10:46:41 +09:00
0410377c77
Descriptionに表示される時間に秒を追加 2024-01-29 10:44:59 +09:00
e583481b9a
moveDocument実装 2024-01-29 10:43:35 +09:00
9861dfe5b6
deleteDocument実装 2024-01-29 10:42:20 +09:00
732f599df9
画像ファイルを直接追加できるように(仮) 2024-01-29 10:40:18 +09:00
4c30def77b
依存関係追加 2024-01-29 10:16:53 +09:00
21279e0c9a
依存関係追加 2024-01-29 10:13:19 +09:00
6f37ed988b
仮メニューアイテム追加 2024-01-29 10:03:43 +09:00
26b76fa3e0
いろいろ 2024-01-29 07:10:51 +09:00
282c09bbd1
正常に遡れない問題を修正 2024-01-29 07:10:41 +09:00
17590660c7
画像を更新できるように 2024-01-29 05:50:20 +09:00
13efbaf9bb
最初の画像を自動で開くように 2024-01-29 05:48:26 +09:00
9042817d63
WIP 2024-01-29 05:45:10 +09:00
426a3534c8
Vcs更新実装 WIP 2024-01-29 05:29:13 +09:00
1e046e7b9e
更新実装 WIP 2024-01-29 05:28:47 +09:00
afb40170ca
更新機能 WIP 2024-01-29 05:27:29 +09:00
dbdb2b76d7
依存関係追加 2024-01-29 05:22:19 +09:00
bdf6bae5fa
アクション実装 WIP 2024-01-29 05:20:49 +09:00
83cadceefa
Long clickのリスナーを追加 2024-01-29 05:16:35 +09:00
8731855849
一応修正 2024-01-29 05:15:56 +09:00
d38a60508d
対応 2024-01-29 05:15:51 +09:00
cc1d2d2756
onItemLongClick追加 2024-01-29 05:14:44 +09:00
6413ffae88
ポップアップメニューに変更 2024-01-29 05:12:29 +09:00
8a64d84ff7
メニューリソース作成 2024-01-29 05:10:10 +09:00
7f82358fa8
仮置きテキストを置き換え 2024-01-29 05:06:45 +09:00
06f6048b78
Descriptionを非表示に 2024-01-29 05:06:05 +09:00
e1c79e44ae
修正 2024-01-29 05:05:13 +09:00
65b87ef346
WIP 2024-01-29 04:55:05 +09:00
57fc9c5a73
Adapter実装 WIP 2024-01-29 04:48:51 +09:00
a8ee792928
Adapter修正 2024-01-29 04:38:00 +09:00
ろむねこ
a3b3000d59
Merge pull request #125 from lacerta-doc/improve_scanner2
Improve scanner2
2024-01-29 04:33:12 +09:00
1fb37a0317
iroiro 2024-01-29 04:31:38 +09:00
57d1c7809c
Iroiro 2024-01-29 04:31:14 +09:00
4158faf453
コンストラクタインジェクションに変更 2024-01-29 04:26:22 +09:00
beef661e3b
WIP 2024-01-29 04:24:01 +09:00
8329769028
コメント解除 2024-01-29 04:23:41 +09:00
49ac5c2ddc
依存関係追加 2024-01-29 04:18:33 +09:00
5645cf64b6
失敗したら終了するように 2024-01-29 04:17:46 +09:00
d76d0a02e2
スキャンがキャンセルされたら終了するように 2024-01-29 04:17:31 +09:00
719769c045
Singleモード追加 2024-01-29 04:17:01 +09:00
b0a0682561
修正 2024-01-29 04:13:59 +09:00
3c75a04a5f
引数で最大撮影枚数を指定できるように 2024-01-29 04:13:04 +09:00
ろむねこ
0a0a4b56b9
Merge pull request #124 from lacerta-doc/add_edit_meta_dialog
結合したドキュメントの名前を変えられるように, タグをドキュメントに付与/剥奪できるように
2024-01-29 02:51:32 +09:00
d393087ff6
編集に追従してタブのタイトルも正しく変わるように 2024-01-29 02:49:04 +09:00
d691ee0126
タブタイトル更新メソッド作成 2024-01-29 02:44:15 +09:00
e85c8a7ed0
Getter追加 2024-01-29 02:43:11 +09:00
c44fd3ae8b
Revert "Revert "Adapterをインタンス変数に持たせるように""
This reverts commit 1a2cf77f62d540183324df1009c73e30466680ab.
2024-01-29 02:40:55 +09:00
1a2cf77f62
Revert "Adapterをインタンス変数に持たせるように"
This reverts commit 19f6eb1683cf4d437fd1d04f3b31cdad206b3059.
2024-01-29 02:39:30 +09:00
19f6eb1683
Adapterをインタンス変数に持たせるように 2024-01-29 02:38:47 +09:00
f673954bef
リネームできるように 2024-01-29 02:37:16 +09:00
6fdef14eec
タイトルキャッシュ更新メソッド追加 2024-01-29 02:16:03 +09:00
dcfb22f6a0
findByParentIdAndChildId追加 2024-01-29 02:15:00 +09:00
f2bbfca36c
ミス修正 2024-01-29 02:09:54 +09:00
972487fec1
Combinedなドキュメントの名前を変更できるように 2024-01-29 02:06:51 +09:00
1fd992fb4a
Getter追加 2024-01-29 02:03:55 +09:00
8b1af8e2d7
コメント追加 2024-01-29 02:02:58 +09:00
53ae1dadb8
リファクタリング 2024-01-29 02:02:01 +09:00
7bcb2f07ab
リファクタリング 2024-01-29 02:01:18 +09:00
da78f5eef1
Adapterの変更に追従, StreamAPIに変更 2024-01-29 02:00:32 +09:00
fcdb7c838b
不足していたSetterを追加 2024-01-29 01:59:44 +09:00
7086582fad
getItemCountでインスタンス変数の中身を軽くチェックするように 2024-01-29 01:56:57 +09:00
9084613e38
FragmentではなくTargetIdを持つように変更 2024-01-29 01:55:06 +09:00
c849fdae2e
WIP 2024-01-29 01:43:18 +09:00
6d73bede6b
メタデータ編集ダイアログ実装WIP 2024-01-29 01:41:28 +09:00
74784a76d3
ログ追加 2024-01-29 01:39:16 +09:00
4e17c5636c
デバッグログ削除 2024-01-29 01:39:06 +09:00
331a520be0
正常に切り替えできるように 2024-01-29 01:38:52 +09:00
0735c90d5e
修正 2024-01-29 01:33:14 +09:00
ea345c45e4
StreamAPIで書き直し 2024-01-29 01:29:50 +09:00
50f00411ca
PositiveButtonを押されたときに更新するようにした 2024-01-29 01:18:29 +09:00
1e0ba33519
applyTagListToDocument実装 2024-01-29 01:17:46 +09:00
b32ce60ad8
レイアウト修正 2024-01-29 01:14:00 +09:00
55ceb2838e
レイアウト修正 2024-01-29 01:13:35 +09:00
bbc8674c0b
レイアウト修正 2024-01-29 01:13:10 +09:00
4ed8d96caa
修正 2024-01-29 01:12:51 +09:00
141c91e1d7
WIP 2024-01-29 01:07:54 +09:00
68dddbabee
WIP 2024-01-29 01:07:41 +09:00
efdf9c1fea
修正 2024-01-29 01:03:14 +09:00
a13f6e28ec
WIP 2024-01-29 01:02:43 +09:00
fa4f074871
修正 2024-01-29 00:52:44 +09:00
3715627c07
イベントをContainerまで伝達させるように 2024-01-29 00:47:34 +09:00
8542869a63
選択肢のテキストが指定されていない場合の既定値を定義 2024-01-29 00:45:10 +09:00
d66546a567
CheckBoxの変化に応じてインスタンス変数のTagListを変化させるように 2024-01-29 00:44:02 +09:00
f2f4c77016
登録されているタグ一覧の取得を切り出し 2024-01-29 00:40:06 +09:00
9a4d3a1310
非同期実行に変更 2024-01-29 00:38:03 +09:00
bf58f25cd5
AppliedTagをクラス変数で持つように 2024-01-29 00:35:51 +09:00
04e0c9c05a
Inflateするレイアウトを間違えていたので修正 2024-01-29 00:32:54 +09:00
4770977e66
CheckBoxのId変更 2024-01-29 00:32:17 +09:00
d794bb97b6
メニューアイテムのイベント実装(テスト) 2024-01-29 00:28:03 +09:00
0d5c3c4337
メニューアイテム追加 2024-01-29 00:26:20 +09:00
67a8f42ef1
コンストラクタ追加 2024-01-29 00:25:30 +09:00
79a64c3108
ダイアログ実装WIP 2024-01-29 00:25:20 +09:00
6847af9b9a
コールバックにタグを使うように 2024-01-29 00:23:18 +09:00
d562447777
拡張モデルを使うようにアダプタを修正 2024-01-29 00:14:02 +09:00
425616c335
コメント 2024-01-29 00:12:28 +09:00
dcd10b7d2b
Dialogで使う拡張モデルを作成 2024-01-29 00:12:02 +09:00
1515e53484
Adapter実装 WIP 2024-01-29 00:06:28 +09:00
8ca05fe454
ダイアログ内容レイアウト作成 2024-01-28 23:57:03 +09:00
33766fbe18
ApplyTagListItem作成 仮 2024-01-28 23:56:26 +09:00
ろむねこ
5e0310beb2
Merge pull request #123 from lacerta-doc/add_tag_chip
タグ関係 WIP
2024-01-28 23:33:44 +09:00
d8c525fe37
デバッグログ削除 2024-01-28 23:28:59 +09:00
8af2afe996
修正 2024-01-28 23:27:14 +09:00
9045cec67d
とりあえずタグを表示できるようにした 2024-01-28 23:13:20 +09:00
ab92c6ce93
TagAdapter実装 WIP 2024-01-28 22:50:09 +09:00
10621d2935
ListItemにtagListを追加 2024-01-28 16:40:24 +09:00
45c2b5f0fb
Chipつきのレイアウトを作成 2024-01-28 16:34:37 +09:00
6ed09e6103
getAppliedTagList実装 2024-01-28 16:27:24 +09:00
ろむねこ
23489e20c6
Merge pull request #122 from lacerta-doc/combined_doc
ドキュメントを結合できるように
2024-01-28 15:17:44 +09:00
8f0bdbb89a
hasCombined対応 2024-01-28 15:15:33 +09:00
289f70c6cb
ボタンに仮のリスナーを追加 2024-01-28 15:13:20 +09:00
fa9b86e909
レイアウト調整 2024-01-28 15:09:18 +09:00
88c801aedf
アイコンリソース追加 2024-01-28 15:03:27 +09:00
6f9384039a
カスタムタブレイアウト実装 WIP 2024-01-28 15:01:51 +09:00
457eabcdf4
カスタムタブレイアウト作成 WIP 2024-01-28 14:57:41 +09:00
fa985b86bd
修正 2024-01-28 14:40:58 +09:00
0dafecc75d
Combine処理の変更に追従 2024-01-28 14:13:53 +09:00
47c6478227
Combine処理の変更に追従 2024-01-28 14:13:47 +09:00
671718ba83
Combine処理を変更 2024-01-28 14:13:17 +09:00
0210bcaeb6
タイトルを表示できるように WIP 2024-01-28 14:07:23 +09:00
3a13b8e4b7
親要素を追加するように 2024-01-28 13:54:09 +09:00
b3c1f3a949
ログ追加 2024-01-28 13:51:33 +09:00
c88ab85cf2
WIP 2024-01-28 13:51:04 +09:00
8270156373
hasCombinedを初期化するように 2024-01-28 13:49:22 +09:00
aa2ee9462f
追加 2024-01-28 13:47:48 +09:00
8052b9b329
追加 2024-01-28 13:47:34 +09:00
b7414cf8aa
追加 2024-01-28 13:47:21 +09:00
435fe7b3ce
hasCombinedに変更 2024-01-28 13:47:08 +09:00
b86843bd57
ListItemにisCombinedを追加 2024-01-28 13:46:03 +09:00
b9c1c521cf
combine実装 2024-01-28 13:43:56 +09:00
f9df1379f4
JavaDoc対応 2024-01-28 13:40:23 +09:00
4649399ef9
Combineされていないドキュメントの場合はTabLayoutを隠すように 2024-01-28 13:30:33 +09:00
e1bc6466e7
Toolbarのinitを起動時呼び出すように 2024-01-28 13:29:04 +09:00
eeeef90ec2
ドキュメントのリネームだけ実装 2024-01-28 13:28:13 +09:00
8038b7e198
Toolbarを処理するメソッド実装 WIP 2024-01-28 13:23:16 +09:00
3afe8ce4cb
Bodyレイアウト 2024-01-28 13:17:29 +09:00
a239fd2f9c
Combineされていないときの処理を追加 2024-01-28 13:14:34 +09:00
314214f734
ViewerMainActivityからContainerを呼び出すように 2024-01-28 13:13:51 +09:00
92167656fc
コンテナフラグメント処理実装 WIP 2024-01-28 13:12:03 +09:00
beceec0abe
Combineするときのタイトルをキャッシュするように 2024-01-28 13:09:26 +09:00
0a96a9443d
インターフェース変更, Impl変更 2024-01-28 13:07:32 +09:00
ff5ef8611a
ToxiDocumentModel実装 2024-01-28 13:03:57 +09:00
9110352f68
DBのバージョンをインクリメント 2024-01-28 13:00:42 +09:00
a2a3d2ab54
ToxiテーブルのEntityにタイトルのキャッシュを追加 2024-01-28 13:00:14 +09:00
5f0e88d804
Adapter実装修正 2024-01-28 12:54:41 +09:00
874946a38d
ViewPager2に変更 2024-01-28 12:52:41 +09:00
6ec0710bac
引数処理実装 2024-01-28 12:51:38 +09:00
adcf9f16b9
ViewerBodyFragment処理実装WIP 2024-01-28 12:49:58 +09:00
b7822945fd
引数処理, LoadDocumentメソッド実装 2024-01-28 12:49:06 +09:00
2812b02ba2
Factoryメソッド実装 2024-01-28 12:39:10 +09:00
e6cdba337e
HiltのInjectを追加 2024-01-28 12:37:48 +09:00
bd1ea74c4c
PagerAdapter実装WIP 2024-01-28 12:35:16 +09:00
adb60b7fb2
依存関係にViewPager2を追加 2024-01-28 12:31:11 +09:00
a0dc49ab95
引数削除 2024-01-28 12:25:02 +09:00
f693c5e88b
Bodyフラグメント作成 2024-01-28 12:24:45 +09:00
a349bc7317
引数削除 2024-01-28 12:23:59 +09:00
f9938867ae
コンテナフラグメント作成 2024-01-28 12:23:31 +09:00
79beb8f87f
結合アクションを実装 2024-01-28 11:44:05 +09:00
8e1127586d
主キー指定漏れ 2024-01-28 11:39:23 +09:00
ff210f50a9
メニューにアイテムを追加 2024-01-28 11:34:58 +09:00
6fbe4081d2
Merge branch 'develop' into combined_doc 2024-01-28 11:33:31 +09:00
ろむねこ
e517e08b51
Merge pull request #120 from lacerta-doc/component/common/file_picker
ファイルピッカーを実装
2024-01-28 11:33:07 +09:00
63f1dff6f0
修正忘れ対処 2024-01-28 11:31:55 +09:00
8ec4e51eb0
不要なチェックを削除 2024-01-28 11:29:24 +09:00
b29df41b5e
ファイルピッカー実装 2024-01-28 11:28:48 +09:00
9978b26ace
Baseを継承したアダプタを作成 2024-01-28 11:27:25 +09:00
f3afb68b18
継承先で使いたいのでProtectedに変更 2024-01-28 11:24:36 +09:00
98e0ea6f85
クラス作成 2024-01-28 11:14:31 +09:00
ろむねこ
f29e626f03
Merge pull request #119 from lacerta-doc/component/common/picker_improve
DirPicker改善
2024-01-28 11:12:40 +09:00
383a7020ce
新ダイアログに変更 2024-01-28 11:02:44 +09:00
f71aabed2a
リファクタリング 2024-01-28 11:02:28 +09:00
8256d01682
ダイアログ高さ指定, 2024-01-28 11:02:23 +09:00
4d7f38a0f7
PublicPathの生成ロジックを変更 2024-01-28 10:59:28 +09:00
13e8ee7d87
データセット更新をUiスレッドでやるように(IndexOutOfBounds対策, デバイスのスペックなどの都合で挿入が更新に追いつかないと壊れるため) 2024-01-28 10:58:22 +09:00
41776b360b
updatePathTextViewをBase側に追加 2024-01-28 10:36:30 +09:00
8a656f673d
メソッドリネーム 2024-01-28 10:34:22 +09:00
e5ba889780
Setterをメソッドチェーンに対応 2024-01-28 10:31:40 +09:00
c717f4c596
新DirPicker実装 2024-01-28 10:28:48 +09:00
be64f5a186
Adapter, Dialogベース実装 2024-01-28 10:28:38 +09:00
1654700ee0
クラス変数とSetterをBaseに移動 2024-01-28 10:11:26 +09:00
7a106b1ed3
FilePickerDialogBase実装 WIP 2024-01-28 09:56:37 +09:00
97b1806407
ディレクトリ整理 2024-01-28 09:26:22 +09:00
d7bfcd8970
getCombinedDocumentIdList実装 2024-01-28 09:08:56 +09:00
575df32157
インターフェース変更 2024-01-28 09:08:17 +09:00
0a98cfd8a5
uncombineDocument実装 2024-01-28 09:06:56 +09:00
cd784cad15
combineDocument実装 2024-01-28 09:06:13 +09:00
68635e2f12
Impl生成 2024-01-27 17:24:38 +09:00
244fba1616
必要なメソッドをリポジトリに追加 2024-01-27 17:24:18 +09:00
3ac7c4072d
Documentを作成するときに正しく既定値を設定するように 2024-01-27 17:21:39 +09:00
4bdb1a489c
すべてのコンストラクタで既定値(false)を入れるように 2024-01-27 17:20:50 +09:00
45e6b9ab05
DocumentMetaにフラグを追加, コンストラクタ, Getter/Setter追加 2024-01-27 17:20:02 +09:00
98b141f96f
DocumentDaoのSelectクエリを修正(CombineのChildを含めないように 2024-01-27 17:13:51 +09:00
4ffcd970b4
ToxiテーブルDao実装WIP 2024-01-27 17:09:52 +09:00
e43c3beda0
ToxiテーブルのDaoを追加 2024-01-27 17:08:04 +09:00
c43b516320
エンティティをLacertaDBに追加 2024-01-27 17:07:05 +09:00
e1f2a43d0b
Toxiテーブル作成 2024-01-27 17:06:24 +09:00
217b152c47
子/親をDocumentEntity単体で管理するように 2024-01-27 17:04:50 +09:00
a187ef3523
Revert "CombineDocumentEntity作成"
This reverts commit 74563f75b1eae33bf95645430cecbf4dce2c8868.
2024-01-27 17:03:46 +09:00
74563f75b1
CombineDocumentEntity作成 2024-01-27 17:03:25 +09:00
055f1fdae1
DocumentEntityにisCombinedフラグを追加 2024-01-27 16:54:19 +09:00
ろむねこ
77830ca96b
Merge pull request #118 from lacerta-doc/improve/ui3
UI改善
2024-01-27 16:33:22 +09:00
bda2b82cea
アイコンに合わせてプロパティ名を変更 2024-01-27 16:23:35 +09:00
c05c80f3e7
アイコン変更 2024-01-27 16:22:59 +09:00
9ba3c224c4
リファクタリング 2024-01-27 16:22:34 +09:00
603a758ab6
不要なコードの削除, テキストを明示 2024-01-27 16:21:41 +09:00
c7f5502535
選択されたRevisionに推移できるように 2024-01-27 16:20:11 +09:00
7ef75bb375
negativeButtonTextが指定されていない場合の既定値を追加 2024-01-27 16:17:52 +09:00
78d4345313
イベントを受け取るように WIP 2024-01-27 16:17:09 +09:00
542c04b908
アイテムにタッチリスナーを追加 2024-01-27 16:16:52 +09:00
cf257a44ec
レイアウト修正 2024-01-27 16:13:01 +09:00
f812e6c38e
実際にRevisionを表示するように 2024-01-27 16:09:26 +09:00
87c913811b
依存関係追加 2024-01-27 16:03:33 +09:00
3cfd54faf0
RevDialog実装WIP 2024-01-27 16:01:03 +09:00
ffeb701b40
RevDialogAdapter実装WIP 2024-01-27 15:26:18 +09:00
c48e5becac
レイアウトコピー 2024-01-27 15:16:58 +09:00
7291ab243e
イベントリスナ作成 2024-01-27 15:08:32 +09:00
a34109441f
Rev選択画面のダイアログレイアウト作成 2024-01-27 15:04:09 +09:00
75045c3fe3
検証用に設定したアニメーションをもとに戻した 2024-01-27 15:00:38 +09:00
733371ecbc
検証用に設定したアニメーションをもとに戻した 2024-01-27 14:50:41 +09:00
5096e8de23
iroiro 2024-01-27 14:36:06 +09:00
6679f8389c
ライブラリ画面のアニメーションを明示 2024-01-26 20:17:47 +09:00
8df63b0ac6
アニメーションリソースをいくつか追加 2024-01-26 19:39:43 +09:00
4df56774c3
セレクトダイアログの高さを画面の40%に変更 2024-01-26 19:38:14 +09:00
834ee42353
リファクタ 2024-01-26 18:41:09 +09:00
8a2b4ed12d
表示アニメーションを500ms以上かかった場合のみに 2024-01-26 18:41:05 +09:00
58e74dbb16
表示アニメーションを500ms以上かかった場合のみに 2024-01-26 18:38:02 +09:00
9d750b5244
リファクタリング 2024-01-26 18:33:44 +09:00
e96d213c33
パスをサブタイトルに表示するように 2024-01-26 18:33:02 +09:00
c2f62a5a84
依存関係追加 2024-01-26 18:16:24 +09:00
dbef7b45d1
ファイルのパスをサブタイトルとして表示するように 2024-01-26 18:16:00 +09:00
3c079ffc23
SubtitleCollapsingToolbarLayoutに変更 2024-01-26 18:04:49 +09:00
f1667788aa
バージョン変更 2024-01-26 18:00:46 +09:00
cad97ef7a3
Subtitle付きのCollapsingToolBarを追加 2024-01-26 17:55:18 +09:00
ろむねこ
5e5e98f0b6
Merge pull request #117 from lacerta-doc/tag/add
タグ管理画面の追加
2024-01-26 15:41:49 +09:00
513af3fda8
Cancelでも更新するように 2024-01-26 15:41:15 +09:00
b0effa21a4
更新処理改善 2024-01-26 15:32:47 +09:00
21b198bc35
タグリストの更新を切り出し, 追加後に更新するように 2024-01-26 15:28:41 +09:00
fad9fcc48a
タグを実際に生成するように 2024-01-26 15:26:19 +09:00
8acbe6338b
IDが指定されなかった場合に自動で生成するように 2024-01-26 15:26:04 +09:00
2f9df5a225
クリックイベントスタブ実装 2024-01-26 15:18:32 +09:00
fc56781c20
ダイアログ挙動修正 2024-01-26 15:17:43 +09:00
3960c07482
レイアウト修正 2024-01-26 15:12:22 +09:00
6902fbebbd
実装WIP(デバッグ) 2024-01-26 15:06:32 +09:00
515a881428
依存関係追加 2024-01-26 15:05:07 +09:00
cf623c5640
ロジック, リスナ実装WIP 2024-01-26 15:04:20 +09:00
4cc4151254
リスナ作成 2024-01-26 15:03:24 +09:00
c4bd3d761e
タイトルなどのGetter/Setter実装 2024-01-26 15:00:53 +09:00
9bff04ce2e
実装WIP 2024-01-26 14:59:56 +09:00
7ab5449b2d
レイアウト作成WIP 2024-01-26 14:58:28 +09:00
ろむねこ
94def7bf1c
Merge pull request #116 from lacerta-doc/tag/add
タグシステム実装 WIP
2024-01-25 16:56:03 +09:00
b259f11529
レイアウトWIP 2024-01-25 16:54:01 +09:00
c2a8728098
タグ作成ダイアログのレイアウト作成 2024-01-25 16:46:55 +09:00
87f6d582dc
Fragmentの処理を実装 WIP 2024-01-25 16:46:12 +09:00
885f1b40c8
PluginにHiltを追加 2024-01-25 16:45:41 +09:00
e7529ef62b
依存関係追加 2024-01-25 16:44:12 +09:00
4319e1d1ec
fix 2024-01-25 16:42:42 +09:00
7eb87305ea
Adapter実装WIP 2024-01-25 16:42:08 +09:00
71986bb17d
リストアイテムレイアウト実装 WIP 2024-01-25 16:38:53 +09:00
74fcc50615
リストアイテムレイアウト作成 2024-01-25 16:36:09 +09:00
3a47cd97fd
アダプタ実装 WIP 2024-01-25 16:35:18 +09:00
b44d1b0746
インタフェース実装 2024-01-25 16:34:05 +09:00
2dc3ab6bc6
依存関係追加 2024-01-25 16:32:41 +09:00
165d45ad40
TagListItem廃止 2024-01-25 16:31:47 +09:00
070cfda21d
修正 2024-01-25 16:30:57 +09:00
26b0994343
プロパティ, コンストラクタ, Getter/Setter実装 2024-01-25 16:30:31 +09:00
0f6412c792
モデル, アダプタ作成WIP 2024-01-25 16:29:04 +09:00
b5d7aa4edd
レイアウト修正 2024-01-25 16:26:25 +09:00
1212d5111b
複合主キーの指定方法を修正 2024-01-25 16:22:54 +09:00
28319a60ba
アイコンリソースの色を変更 2024-01-25 16:17:09 +09:00
a818c59a02
トップメニューの項目に追加 WIP 2024-01-25 16:16:21 +09:00
5be465df67
ナビゲーショングラフに追加 2024-01-25 16:15:22 +09:00
a3a5676136
Fragment内実装 WIP 2024-01-25 16:14:21 +09:00
062ecad4fd
仮アクション追加 2024-01-25 16:13:17 +09:00
cdc3019807
レイアウト修正 2024-01-25 16:08:53 +09:00
a68ee50e6b
レイアウト修正 2024-01-25 16:08:42 +09:00
7319c8c1a9
レイアウトコピー 2024-01-25 16:07:40 +09:00
994ceb414e
引数削除 2024-01-25 16:06:58 +09:00
48ae5d7ac0
タグ管理画面フラグメント作成 2024-01-25 16:06:35 +09:00
f9f395c160
リソース追加 2024-01-25 16:05:23 +09:00
397244ffdd
fix 2024-01-25 16:00:07 +09:00
0dad6d30d4
操作メソッド実装 2024-01-25 15:59:21 +09:00
950e0fe2dc
操作メソッド実装 2024-01-25 15:58:28 +09:00
ea0e52a602
コンバータ実装 2024-01-25 15:54:47 +09:00
fce59d74bc
Impl生成 2024-01-25 15:52:21 +09:00
512ac0b775
Tag系インタフェース作成 2024-01-25 15:52:06 +09:00
05915a2f4e
Dao実装 2024-01-25 15:49:53 +09:00
396c5e914f
Dao追加 2024-01-25 15:48:42 +09:00
ae0f023e0e
Dao実装 WIP 2024-01-25 15:48:22 +09:00
b91f0ae022
Entity追加 2024-01-25 15:47:35 +09:00
0cdd4b1af1
Tags, DefaultBranch削除 WIP 2024-01-25 15:44:39 +09:00
6e50239c9e
Tags, DefaultBranch削除 WIP 2024-01-25 15:44:33 +09:00
cf60bc3423
Tags, DefaultBranch削除 WIP 2024-01-25 15:44:00 +09:00
57ec698b78
Toxiテーブル作成 2024-01-25 15:40:30 +09:00
ろむねこ
3f84b1a3e2
Merge pull request #115 from lacerta-doc/custom_dialog
ダイアログのデザインを修正, ディレクトリピッカー実装, フォルダの移動に対応
2024-01-25 15:25:53 +09:00
4779d51976
新しい実装にあわせて修正 2024-01-25 15:24:22 +09:00
1aeb0184a7
Fix typo 2024-01-25 15:11:01 +09:00
74ee492b49
タイトル, メッセージ, 選択肢のテキストを指定できるように, 決定されたらイベントを呼ぶように 2024-01-25 15:10:42 +09:00
4f864eb57d
リスナ実装 2024-01-25 15:04:23 +09:00
6b44435656
インタフェースリネーム 2024-01-25 15:03:12 +09:00
44edd1c23e
moveDocumentを定義, 実装 2024-01-25 15:01:18 +09:00
d5ebc2c498
最大サイズを変更 2024-01-25 15:00:03 +09:00
ce1686a1d7
更新条件を修正 2024-01-25 14:55:55 +09:00
5f89955d80
WIP 2024-01-25 14:50:27 +09:00
58f9d81555
fix 2024-01-25 14:36:34 +09:00
e51ce209dc
ルートの場合は戻るボタンを表示しないように 2024-01-25 14:33:49 +09:00
fd9b69174d
アイコンを正しく表示できるように 2024-01-25 14:32:43 +09:00
dde9d460ed
一旦Descriptionを非表示に 2024-01-25 14:31:04 +09:00
bf756abb16
レイアウト修正 2024-01-25 14:29:47 +09:00
0128cecfae
LibraryItemPageを使用するように変更, 戻るアクションを実装 2024-01-25 14:28:36 +09:00
04bd081d99
インタフェースの変更に追従 2024-01-25 14:17:25 +09:00
4f3c79564b
インタフェース修正 2024-01-25 14:16:54 +09:00
6c8fdc4d81
アクションタイプにバックを追加 2024-01-25 14:15:12 +09:00
232967c905
処理修正 2024-01-25 14:12:10 +09:00
20ecbeea5c
レイアウト調整 2024-01-25 14:11:58 +09:00
nero
1a1dfe1be2 Merge remote-tracking branch 'origin/develop' into develop 2024-01-25 13:51:54 +09:00
dfe6049775
ダイアログ内でパスを移動できるように 2024-01-25 13:46:51 +09:00
69d64fd44f
レイアウト修正 2024-01-25 13:40:09 +09:00
87054f1b83
レイアウト修正 2024-01-25 13:40:01 +09:00
6cff3dd6b4
処理順序修正 2024-01-25 12:54:17 +09:00
1dff7381af
レイアウト修正 2024-01-25 12:52:56 +09:00
af55033914
依存関係整理 2024-01-25 12:48:38 +09:00
4ad5df6c98
実装整理 2024-01-25 12:21:26 +09:00
7fa3588127
依存関係追加 2024-01-25 12:20:44 +09:00
dbd719368f
実装整理 2024-01-25 12:19:37 +09:00
7a9c81282f
依存関係整理 2024-01-25 12:18:48 +09:00
6710ae9d56
依存関係整理 2024-01-25 12:18:10 +09:00
705b89a500
移植元削除 2024-01-25 12:17:38 +09:00
afa3460b24
コード移植 2024-01-25 12:17:00 +09:00
45fcd95e6f
レイアウト移植 2024-01-25 12:16:23 +09:00
6ef54e5940
Revert "不要な依存を削除"
This reverts commit 5c165b96d38475a144f7dc919f3e083183918e31.
2024-01-25 12:15:32 +09:00
5c165b96d3
不要な依存を削除 2024-01-25 12:15:06 +09:00
240b4675c8
依存関係追加 2024-01-25 12:08:40 +09:00
ccfed654df
フォルダの一覧を取得するメソッド作成 2024-01-25 12:07:48 +09:00
03d78b1200
イベントリスナに対応した実装を作成 WIP 2024-01-25 12:06:21 +09:00
a815d3b1b4
依存関係追加 2024-01-25 12:03:29 +09:00
dfbe26ee9a
イベントリスナ作成 2024-01-25 11:58:02 +09:00
420197e5c3
RecyclerViewDialog WIP 2024-01-25 11:56:15 +09:00
38a277c15e
アダプタ作成WIP 2024-01-25 11:51:26 +09:00
031ef6f088
ディレクトリ選択ダイアログ作成WIP 2024-01-25 11:41:38 +09:00
1477169f6c
ディレクトリ選択ダイアログ用レイアウト作成 WIP 2024-01-25 11:38:44 +09:00
d94aab43d5
削除ダイアログをMaterialAlertDialogに 2024-01-25 11:37:47 +09:00
434d58bd47
新しいダイアログを使用するように 2024-01-25 11:36:45 +09:00
b341c78432
新しいダイアログを使用するように 2024-01-25 11:19:58 +09:00
a711f7284d
新しいダイアログを使用するように 2024-01-25 11:12:08 +09:00
4f8751e4b3
廃止 2024-01-25 11:11:52 +09:00
5bac9657ac
ダイアログ用レイアウト作成 2024-01-25 11:09:49 +09:00
bc3b74989d
引数変更 2024-01-25 10:32:18 +09:00
d4c10d8c05
フラグメント作成 2024-01-25 10:31:26 +09:00
ろむねこ
517b7d2c39
Merge pull request #114 from lacerta-doc/vcs_move_rev
リビジョンを遡れるように
2024-01-25 09:55:10 +09:00
c1c705729a
クエリ修正 2024-01-24 18:40:11 +09:00
0b7b499624
クエリ変更 2024-01-24 18:36:59 +09:00
6b3d0c0dae
失敗したときにログを削除してリカバリするように 2024-01-24 18:36:08 +09:00
113bca723f
最後に追加したLogを削除するメソッド追加 2024-01-24 18:34:25 +09:00
383b34c3d2
最後のレコードを削除できるように 2024-01-24 18:33:56 +09:00
70380df8fd
DaoにDeleteを追加 2024-01-24 18:31:45 +09:00
749cad231c
処理の順番を改善 2024-01-24 18:29:19 +09:00
da5b134a2b
Indexから溢れたときの処理を追加 WIP 2024-01-24 18:25:59 +09:00
16dfccca14
forEach文をやめた 2024-01-24 18:21:59 +09:00
dfd488329b
CREATE_DOCUMENTに対応できるようにした 2024-01-24 18:12:35 +09:00
4b1ae7326b
ActionTypeを追加するように 2024-01-24 18:11:25 +09:00
6e9606b050
ActionTypeを追加するように 2024-01-24 18:10:37 +09:00
d778840484
コメント追加 2024-01-24 18:09:56 +09:00
93cef07ce5
コメント追加 2024-01-24 18:06:45 +09:00
826f8928d1
コメント追加 2024-01-24 18:06:10 +09:00
d3afdbcef5
ログ追加 2024-01-24 18:02:57 +09:00
f6bc9167d2
修正 2024-01-24 17:58:13 +09:00
f59c4445dc
メソッド名修正 2024-01-24 17:56:44 +09:00
929ba7347c
リファクタリング 2024-01-24 17:56:26 +09:00
8c4e651a79
一部を非同期にした 2024-01-24 17:55:23 +09:00
cd1a58dcc0
リファクタリング 2024-01-24 17:49:45 +09:00
b58e80f7ea
リファクタリング 2024-01-24 17:48:00 +09:00
daab41620f
リファクタリング 2024-01-24 17:45:16 +09:00
615d58f3ca
WIP 2024-01-24 17:43:10 +09:00
5639117e0e
イベントリスナ実装 2024-01-24 17:32:58 +09:00
1b60b15187
インタフェース作成 2024-01-24 17:31:21 +09:00
7822fdd3c5
リネーム 2024-01-24 17:10:48 +09:00
778473f898
リビジョンIDを指定して呼び出した場合にそのバージョンを表示するように 2024-01-24 17:09:32 +09:00
bd8edc85ce
コンストラクタ追加 2024-01-24 17:04:36 +09:00
5fc8a501ad
ファイル名変更 2024-01-24 17:03:50 +09:00
aa2ebce32c
ファイル名の一覧からPageリストを作成するメソッド実装 2024-01-24 17:01:33 +09:00
8d4d9cab9a
コメント追加 2024-01-24 16:54:49 +09:00
f6f7c3a630
getDocumentPageListRev実装, 不要になったメソッドを削除 2024-01-24 16:49:42 +09:00
3fbdc761dd
LogEntityにActionTypeを追加 2024-01-24 16:42:17 +09:00
3c237d3751
修正 2024-01-24 16:37:54 +09:00
85dba22f57
Revert "引数/戻り値修正"
This reverts commit 3d01ff3d816ec8af275c8fceb82b2709632d62ca.
2024-01-24 16:28:39 +09:00
3d01ff3d81
引数/戻り値修正 2024-01-24 16:27:35 +09:00
d5ca5ebc90
必要なメソッド作成 WIP 2024-01-24 16:21:27 +09:00
fc1c8f66cc
実装 WIP 2024-01-24 15:53:46 +09:00
b6f0a5554a
リファクタリング, 実装いろいろ 2024-01-24 15:49:17 +09:00
dafb49cca0
クエリ修正 2024-01-24 15:39:51 +09:00
904ae8d39f
メソッド追加 2024-01-24 15:38:29 +09:00
895cf64a15
メソッド追加 2024-01-24 15:37:03 +09:00
93e7c10393
VcsLogModel作成 2024-01-24 15:34:37 +09:00
ろむねこ
ab5a8bfa87
Merge pull request #113 from lacerta-doc/submit_jan23
23日に提出した状態に追従
2024-01-24 12:37:26 +09:00
nero
29d0737c00 赤色で名前の部分が表示されてしまう。 2024-01-24 12:01:59 +09:00
nero
281d1eeb39 ブクマ機能おそらくできてる 2024-01-24 11:28:22 +09:00
nero
c1b55ef29a Revert "ブクマ機能"
This reverts commit 0cbc81238cc6b83e749cff4b0d6072a770b73528.
2024-01-24 10:55:47 +09:00
nero
0cbc81238c ブクマ機能 2024-01-24 10:46:24 +09:00
nero
cf79581638 ブクマ作成・保存機能 2024-01-24 10:22:57 +09:00
nero
7beecca0da ブクマ機能実装中 2024-01-24 10:22:25 +09:00
nero
1447148fba ブクマ機能実装中 2024-01-23 12:50:30 +09:00
af53ba6c86
パーミッションチェックを追加, 使えない機能を非表示に 2024-01-23 05:43:40 +09:00
64d7a53616
アイコン変更, 一部フラグ変更 2024-01-23 05:35:42 +09:00
696c58921d
アイコンリソース生成 2024-01-23 05:32:57 +09:00
ろむねこ
bda8496259
Update README.md 2024-01-23 05:26:53 +09:00
ろむねこ
60f279d365
Merge pull request #100 from lacerta-doc/submit_jan23
Submit jan23
2024-01-23 05:25:02 +09:00
6e4904967b
リファクタリング 2024-01-23 05:24:11 +09:00
fda8adae80
UI修正 2024-01-23 05:23:21 +09:00
1ce3af59e6
UI修正 2024-01-23 05:22:48 +09:00
1692399b9a
ライブラリからドキュメントを開けるように 2024-01-23 05:21:48 +09:00
5288855075
コメント追加 2024-01-23 05:21:19 +09:00
7ece8c7b69
Depend 2024-01-23 05:21:13 +09:00
56a49d4c7e
Revの作成日時を表示できるように 2024-01-23 05:17:53 +09:00
ろむねこ
e69d489a96
Merge pull request #99 from lacerta-doc/submit1
提出用訂正いろいろ
2024-01-23 05:13:12 +09:00
53c8114708
コメント修正 2024-01-23 05:11:57 +09:00
ろむねこ
4611c46eca
Merge pull request #98 from lacerta-doc/r-ca-patch-3
Update README.md
2024-01-23 05:04:08 +09:00
ろむねこ
6f94b3408f
Update README.md 2024-01-23 05:04:00 +09:00
f65732c42b
Import Optimize 2024-01-23 04:34:42 +09:00
2821ad8552
Import Optimize 2024-01-23 04:33:57 +09:00
fc5ef3ed8f
Import Optimize 2024-01-23 04:33:33 +09:00
ad05e3db44
Import Optimize 2024-01-23 04:32:53 +09:00
18abe66031
Import Optimize 2024-01-23 04:31:41 +09:00
c5a0079812
整理 2024-01-23 04:31:14 +09:00
73c2271782
renameとか 2024-01-23 04:28:18 +09:00
06771d2e74
Resume時に更新されるように 2024-01-23 04:27:20 +09:00
09c6d47a47
Delete実装 2024-01-23 04:20:59 +09:00
29f745bb5c
リネーム実装 2024-01-23 04:20:34 +09:00
cef688187a
メニューアイテム追加 2024-01-23 04:17:03 +09:00
da26641e2f
fix 2024-01-23 04:14:48 +09:00
9f50696b39
正常にタイトルが表示されるように 2024-01-23 04:13:02 +09:00
9865790a98
Bundle追加 2024-01-23 04:07:45 +09:00
5df0c7ee52
iroiro 2024-01-23 04:07:14 +09:00
872bbd0f4e
ドキュメント名を表示するように 2024-01-23 04:07:05 +09:00
8e2af0c963
ToolBar, テキスト修正 2024-01-23 03:53:43 +09:00
b3d095fa40
Drawable追加 2024-01-23 03:49:44 +09:00
1c71ac6545
テキスト修正 2024-01-23 03:47:40 +09:00
c731749233
設定画面を表示できないように 2024-01-23 03:46:30 +09:00
0ef6863992
未実装の設定画面をWork In Progressにした 2024-01-23 03:44:18 +09:00
1a247d9b8b
Work In Progress レイアウト作成 2024-01-23 03:43:45 +09:00
ce4656558a
提出用: 代替処理実装 2024-01-23 03:38:58 +09:00
32b238df58
IndexOutOfBoundsException 修正 2024-01-23 03:24:34 +09:00
87099ae693
レイアウト, ToolBar修正 2024-01-23 03:22:01 +09:00
b11b78fa7f
デバッグ用の処理を削除 2024-01-23 03:11:38 +09:00
cd0c5e81c5
margin調整 2024-01-23 03:10:30 +09:00
b9d81ab997
fab追加 2024-01-23 03:10:17 +09:00
a61de24931
fix 2024-01-23 03:09:07 +09:00
9de39309bc
依存関係追加 2024-01-23 03:08:42 +09:00
ろむねこ
9d229a2857
Merge pull request #97 from lacerta-doc/scan_setting
Scan setting
2024-01-23 03:05:44 +09:00
da9cd9be8e
代替としてStoreで管理するように 2024-01-23 03:04:55 +09:00
0b2d58470b
代替としてStoreで管理するように 2024-01-23 02:57:36 +09:00
ed5e699493
WIP 2024-01-23 02:53:53 +09:00
29737303af
依存関係追加 2024-01-23 02:35:59 +09:00
ろむねこ
151c2dde25
Merge pull request #96 from lacerta-doc/vcs/rev_list
fixUI
2024-01-23 02:10:38 +09:00
18eee403ef
fixUI 2024-01-23 02:09:36 +09:00
ろむねこ
2b9a68b6f5
Merge pull request #95 from lacerta-doc/vcs/rev_list
Vcs/rev list
2024-01-23 02:06:26 +09:00
b820f42007
iroiro, コミット履歴を表示できるように 2024-01-23 02:04:25 +09:00
af8935cd7f
アイテムレイアウト作成 2024-01-23 01:46:47 +09:00
6c50675938
修正 2024-01-23 01:29:30 +09:00
791084b737
依存関係追加 2024-01-23 01:28:22 +09:00
15d4a369d8
移動 2024-01-23 01:27:20 +09:00
07e14eb90c
getRevisionHistoryByDocumentId実装 2024-01-23 01:27:11 +09:00
b13f048c7e
Adapter作成 2024-01-23 01:15:46 +09:00
f0ed4327ca
Model作成 2024-01-23 01:13:00 +09:00
b852e9b7ee
RevListFragment作成 2024-01-23 01:05:45 +09:00
ろむねこ
ca063709dd
Merge pull request #94 from lacerta-doc/improve/fixui
Improve/fixui
2024-01-23 01:03:40 +09:00
67de02b502
画面推移で発生する問題を概ね解消した 2024-01-23 00:56:31 +09:00
5fafbec247
Revert "コンテナフラグメント作成"
This reverts commit 14ff9abab9ee434ead52126dcf9cfb4c50ecef0b.
2024-01-23 00:45:15 +09:00
e104b3d8ff
Revert "引数削除など"
This reverts commit 4714e3d8cbe79e011eb58992abe8c4fddd1e845c.
2024-01-23 00:45:15 +09:00
d8d8a5932b
Revert "WIP"
This reverts commit 113a2fd3d2a09084711fe00a4112744faa6febb5.
2024-01-23 00:45:14 +09:00
113a2fd3d2
WIP 2024-01-23 00:45:02 +09:00
4714e3d8cb
引数削除など 2024-01-23 00:38:17 +09:00
14ff9abab9
コンテナフラグメント作成 2024-01-23 00:37:23 +09:00
1105c17fca
WIp 2024-01-23 00:36:26 +09:00
37a18704e3
バックスタックに積まずにナビゲーションするメソッドを追加 2024-01-22 23:48:09 +09:00
d5df291c81
バックスタックに積まずにナビゲーションするメソッドを追加 2024-01-22 23:47:46 +09:00
3178e9233b
iroiro 2024-01-22 23:46:23 +09:00
004bedb45f
フォルダを正常に取得できるように, 作成できるように 2024-01-22 23:35:30 +09:00
de30eb241c
ドキュメントを正常に取得できるようになった 2024-01-22 23:29:49 +09:00
c7f2a3eebe
Daoクエリ追加 2024-01-22 23:28:15 +09:00
2a7e329ad7
parentIdに切り替え WIP 2024-01-22 23:20:39 +09:00
52f41881fd
Iroiro 2024-01-22 20:48:47 +09:00
68fb0b719b
CreateFolder改修 2024-01-22 20:23:36 +09:00
da8d4fb4fc
PublicPathを生成するメソッド作成 2024-01-22 20:22:51 +09:00
f7d07b0ec3
パス解決メソッドを作成 2024-01-22 20:21:01 +09:00
7f71e818a8
fix 2024-01-22 20:10:04 +09:00
fc6cbb9d37
一部廃止 2024-01-22 20:06:19 +09:00
df3edbf354
Model修正 2024-01-22 20:03:56 +09:00
d40b188f87
Model修正 2024-01-22 20:03:42 +09:00
253c77d6f5
Dao修正 2024-01-22 20:00:45 +09:00
b87b635d2b
DBバージョンインクリメント 2024-01-22 19:59:21 +09:00
9df033af73
Entity更新 2024-01-22 19:58:59 +09:00
58e0686304
Entity更新 2024-01-22 19:58:20 +09:00
a0f89de1ac
WIP 2024-01-22 19:41:54 +09:00
fe4999384a
Fix 2024-01-22 19:28:42 +09:00
bc304f8535
WIP 2024-01-22 19:22:24 +09:00
e77fafc108
WIP 2024-01-22 19:22:15 +09:00
305cbcd679
WIP 2024-01-22 19:17:09 +09:00
c06d7e6b15
引数のフォルダ名を使って取得開始前にToolBarをinitするように 2024-01-22 18:43:46 +09:00
1648e0b7c1
フォルダ名を引数にとるようにした 2024-01-22 18:42:50 +09:00
04db160548
フォルダ名を引数にとるようにした 2024-01-22 18:41:24 +09:00
611c5b516d
不要な実装を削除 2024-01-22 18:40:24 +09:00
734f75b4c7
iroiro 2024-01-22 18:35:18 +09:00
6e0c473c66
setupToolbar実装 2024-01-22 18:24:53 +09:00
20828e2f0f
ステータスバーの色を合わせる処理を移植 2024-01-22 18:18:12 +09:00
3b684bec53
不要な実装を削除 2024-01-22 18:15:41 +09:00
afef074242
ビルドエラー回避 2024-01-22 18:14:42 +09:00
1ceb3e29b7
実装修正 2024-01-22 18:14:11 +09:00
a5fa89252c
Merge branch 'develop' into improve/fixui
# Conflicts:
#	app/src/main/java/one/nem/lacerta/MainActivity.java
#	feature/library/src/main/java/one/nem/lacerta/feature/library/LibraryPageFragment.java
2024-01-22 18:13:44 +09:00
ろむねこ
106bb93644
Merge pull request #93 from lacerta-doc/feature/library/open_folder
Feature/library/open folder
2024-01-22 18:11:00 +09:00
ab39cd4d00
レイアウト復元 2024-01-22 17:26:03 +09:00
d1a5cd2f23
実装整理 2024-01-22 17:24:05 +09:00
0dc69e1d73
実装整理 2024-01-22 17:22:52 +09:00
3d8ab69742
実装整理 2024-01-22 17:22:41 +09:00
6bc43869c9
レイアウト復元 2024-01-22 17:21:54 +09:00
63dfbc120d
レイアウト復元 2024-01-22 17:21:30 +09:00
064c4edfbe
レイアウト復元 2024-01-22 17:20:39 +09:00
1a80d00319
フォルダを開けるように WIP 2024-01-22 13:29:40 +09:00
3f893fc580
インタフェース修正 2024-01-22 12:16:56 +09:00
225058f836
壊れたImportを修正 2024-01-22 12:11:06 +09:00
c23b92d386
リネーム 2024-01-22 12:10:45 +09:00
ろむねこ
41e5ab2349
Merge pull request #92 from lacerta-doc/feature/library/create_folder
Feature/library/create folder
2024-01-22 12:09:26 +09:00
580e79b03a
Revert "InputDialogのWrapper作成 WIP"
This reverts commit 301fab802417ea81bff966efa1eb143f848af9c7.
2024-01-22 12:07:52 +09:00
301fab8024
InputDialogのWrapper作成 WIP 2024-01-22 12:07:46 +09:00
281238a38e
作成するフォルダの名前を指定できるように 2024-01-22 12:07:07 +09:00
81fa259985
フォルダを作成できるように 2024-01-22 11:55:38 +09:00
b2c6085933
パースメソッドを追加 2024-01-22 11:54:39 +09:00
caf3a0dd34
絶対パスを正常に解決できるように 2024-01-22 11:50:29 +09:00
c4e10b9487
絶対パスを正常に解決できるように 2024-01-22 11:49:45 +09:00
b05ee22c29
createFolder関数実装 2024-01-22 11:34:03 +09:00
ろむねこ
839433dbb1
Merge pull request #91 from lacerta-doc/test
Test
2024-01-22 11:28:31 +09:00
153242ef66
WIP 2024-01-22 11:27:56 +09:00
05997eafe1
フラグメントからToolBarのアイテムを制御できるようにした 2024-01-22 11:26:11 +09:00
d6f4885b4a
iroiro 2024-01-22 11:08:48 +09:00
0b33c60a5a
ToolBar削除 2024-01-22 11:04:21 +09:00
ad3a600e8c
ToolBar削除 2024-01-22 11:03:44 +09:00
50dfb9be8b
ToolBar削除 2024-01-22 11:03:14 +09:00
fafb996453
ToolBar削除 2024-01-22 11:02:08 +09:00
e1129bc009
ToolBar削除 2024-01-22 11:02:01 +09:00
5752e3285b
ToolBar削除 2024-01-22 11:01:57 +09:00
a2ed78dfb8
プロパティ追加 2024-01-22 10:58:52 +09:00
0eadc3c3d5
レイアウト移植 2024-01-22 10:56:19 +09:00
6d0b24eb70
レイアウト移植 WIP 2024-01-22 10:54:51 +09:00
ろむねこ
9da41e73aa
Merge pull request #90 from lacerta-doc/feature/library/add
Feature/library/add
2024-01-22 10:32:47 +09:00
01f28ecd4d
ドキュメントを正常に取得できるように 2024-01-22 10:31:26 +09:00
2f3a331527
FeatureSwitch切り替え 2024-01-22 10:31:09 +09:00
9496c3efbb
依存関係追加 2024-01-22 10:23:08 +09:00
93b833f7a9
nullの場合は0を返すように 2024-01-22 10:20:38 +09:00
3130be88be
getLibraryPage実装WIP 2024-01-22 10:12:21 +09:00
bb7b628d2f
壊れた実装を削除 2024-01-22 10:00:17 +09:00
5f9ea732cf
実装 WIP 2024-01-22 01:24:55 +09:00
42f6bc17d3
レイアウトコピー 2024-01-22 01:21:10 +09:00
1c6878c3fd
コピー 2024-01-22 01:21:00 +09:00
b5beb7cc15
Adapter修正 2024-01-22 01:20:55 +09:00
c6fb06ffe2
レイアウトコピー 2024-01-22 01:17:57 +09:00
ろむねこ
95d808dc75
Merge pull request #89 from lacerta-doc/feature/switch
Feature/switch
2024-01-22 01:12:16 +09:00
b4135f9ec0
リファクタリング 2024-01-21 20:37:04 +09:00
a62d748c72
ログ追加 2024-01-21 20:35:20 +09:00
ea0b1a7665
初回起動の場合に初期化処理としてデフォルト値を書き込むように 2024-01-21 20:34:47 +09:00
4cfc87a40b
初回起動フラグ追加 2024-01-21 20:32:29 +09:00
40a0d08a1f
デバッグメニューを無効に 2024-01-21 20:28:56 +09:00
fd850651b3
実装を単純にした 2024-01-21 20:28:33 +09:00
ec633a7238
FeatureSwitch実装仮 2024-01-21 20:16:38 +09:00
e10207959b
Merge branch 'develop' into feature/switch 2024-01-21 19:53:55 +09:00
ろむねこ
c46ec70d97
Merge pull request #88 from lacerta-doc/fix_versions
compileSDKバージョンを34にアップデート
2024-01-21 19:53:25 +09:00
871dfad6c4
compileSDKバージョンを34にアップデート 2024-01-21 19:48:30 +09:00
676a0e2772
WIP 2024-01-21 19:45:02 +09:00
d9d22198d5
FeatureSwitch実装WIP 2024-01-21 19:18:43 +09:00
2dc3407217
FeatureSwitchのOverrideができるように 2024-01-21 19:11:25 +09:00
d40f61928c
依存関係追加 2024-01-21 19:10:03 +09:00
19ff824591
Enum追加 2024-01-21 19:09:37 +09:00
ec7adbe331
SharedPrefUtilsメソッド追加 2024-01-21 19:07:33 +09:00
af626f4dc0
依存関係追加 2024-01-21 19:04:01 +09:00
acea8ba27d
Revert "依存関係追加"
This reverts commit 8f1849591dad900ce5ac34d9de49cb9f83dfc75e.
2024-01-21 19:03:45 +09:00
8f1849591d
依存関係追加 2024-01-21 19:02:33 +09:00
882207682f
FeatureSwitchクラス作成 WIP 2024-01-21 18:56:15 +09:00
ろむねこ
0be12e73a8
Merge pull request #87 from lacerta-doc/component/viewer/1
ビューワー実装 WIP
2024-01-21 18:49:50 +09:00
f0b4cc556e
正常に画像を取得できるように 2024-01-21 18:45:51 +09:00
8c71dedd85
XmlMetaのパース処理を修正 2024-01-21 18:44:26 +09:00
c1151b778c
画像の表示時にアニメーションするように 2024-01-21 17:56:52 +09:00
10e3093c53
レイアウト調整 2024-01-21 17:56:07 +09:00
9ef49e0226
レイアウト調整 2024-01-21 17:55:51 +09:00
a8ce70e6d9
レイアウト調整 2024-01-21 17:54:52 +09:00
2f9777f1f4
adjustViewBounds 2024-01-21 17:53:56 +09:00
0a867051f2
パス修正 2024-01-21 16:43:51 +09:00
673918771c
XmlMetaを正常に更新できるようにした 2024-01-21 16:36:52 +09:00
df14850df1
メソッドチェーン対応 2024-01-21 16:34:07 +09:00
28cae3fa19
メソッドチェーン対応WIP 2024-01-21 16:33:26 +09:00
c167d83940
引数変更 2024-01-21 16:28:06 +09:00
722a3d8c7b
Xmlを保存できるようにした 2024-01-21 16:26:56 +09:00
d7f22c8e36
nullをキャッチするようにした 2024-01-21 16:15:11 +09:00
0da5e8a961
WIP 2024-01-21 15:43:09 +09:00
c45847ecd2
NavigationComponent廃止 2024-01-21 15:31:06 +09:00
d6faf8ec16
ナビゲーショングラフに追加 2024-01-21 15:23:51 +09:00
3e21b0ea1c
Hiltをプラグインとして追加 2024-01-21 15:18:21 +09:00
a8e15d8e18
リスナに対応するイベントを実装 2024-01-21 15:17:43 +09:00
50eeaa03bf
不要な実装を削除 2024-01-21 15:16:29 +09:00
f5b94e0f6a
コンストラクタに追加 2024-01-21 15:16:18 +09:00
e9145d491c
インターフェース作成 2024-01-21 15:15:35 +09:00
cb662fe1ff
WIP 2024-01-21 15:13:53 +09:00
8ad3150f33
コールバックインターフェース作成 2024-01-21 15:10:52 +09:00
5cc718e35d
Setter, コンストラクタ追加 2024-01-21 15:06:48 +09:00
0accd4fa79
Merge branch 'develop' into component/viewer/1 2024-01-21 15:04:37 +09:00
ろむねこ
5840c0126e
Merge pull request #86 from lacerta-doc/fix/async
非同期化
2024-01-21 15:03:21 +09:00
017a2413b6
挿入時にアニメーションが発生するように 2024-01-20 23:51:34 +09:00
c53c4ed9a1
Debug 2024-01-20 23:51:20 +09:00
12ba9234a4
遅れて追加されたアイテムをUIに反映できるように 2024-01-20 23:49:13 +09:00
aaff0be438
Debug 2024-01-20 23:40:32 +09:00
11e32572ef
エラー回避(暫定, 廃止予定) 2024-01-20 23:30:14 +09:00
ce3f9ebfd7
エラー回避(暫定, 廃止予定) 2024-01-20 23:30:09 +09:00
1b70b444f2
コンストラクタ追加 2024-01-20 23:23:54 +09:00
7214da80fa
仮置きを非同期に 2024-01-20 23:19:20 +09:00
4e5aab276a
getRecentDocumentを非同期に 2024-01-20 23:17:31 +09:00
4ab13508c4
InterfaceをCompletableFutureに変更 2024-01-20 23:08:49 +09:00
df22a754b7
ProgressDialogをShowしていなかったので修正 2024-01-20 23:07:17 +09:00
9efecab4b6
コンストラクタ追加 2024-01-20 23:00:57 +09:00
9aea4bb90e
LacertaLibraryのスタブを廃止 2024-01-20 23:00:21 +09:00
5c17f96d3d
ドキュメントを非同期で取得できるようにした WIP 2024-01-20 22:59:00 +09:00
d47c6d0cc8
修正 2024-01-20 22:40:59 +09:00
176160cd8f
createDocument修正 2024-01-20 22:40:03 +09:00
e6a4393b6d
非同期化 2024-01-20 22:39:35 +09:00
acc5b166d5
CompletableFeatureを使用して処理するように 2024-01-20 22:24:12 +09:00
1d2f3345df
CompletableFeatureを使用して処理するように 2024-01-20 22:22:59 +09:00
b63e9a6747
テスト 2024-01-20 17:46:23 +09:00
1f8b56bc78
依存関係追加 2024-01-20 17:45:42 +09:00
dc9a6bfd9b
iroiro 2024-01-20 17:43:23 +09:00
a825ad6a36
アダプタ実装 2024-01-20 17:39:21 +09:00
dd1be73904
アダプタ作成 WIP 2024-01-20 17:37:26 +09:00
7156bc417c
モデル作成 2024-01-20 17:35:57 +09:00
d9c46898ab
依存関係追加 2024-01-20 17:29:24 +09:00
19ce9cbd7e
レイアウト修正 WIP 2024-01-20 17:27:28 +09:00
584556faca
レイアウトコピー 2024-01-20 17:26:59 +09:00
028ca6303a
引数追加 2024-01-20 17:25:44 +09:00
76734de987
引数削除 2024-01-20 17:24:32 +09:00
646a97e77b
Arg取得 WIP 2024-01-20 17:21:48 +09:00
1aa41eb638
依存関係追加 2024-01-20 17:19:50 +09:00
2a34100bf2
NavHost追加 2024-01-20 17:15:39 +09:00
5d33d188bd
ComponentViewerTopFragment作成 2024-01-20 17:13:27 +09:00
8343ba9c2d
依存関係追加 2024-01-20 17:11:44 +09:00
95cbfdf42c
ナビゲーショングラフ作成 2024-01-20 17:10:30 +09:00
7e72cbef54
アクティビティ作成 2024-01-20 17:06:28 +09:00
ろむねこ
a7642795ca
Merge pull request #85 from lacerta-doc/feature/settings/create
設定画面の骨組みを作成
2024-01-20 16:31:49 +09:00
f392991988
アニメーションのDurationを変更 2024-01-20 16:18:15 +09:00
556c7d0841
アニメーションを全部に追加 2024-01-20 16:14:36 +09:00
d43bcf09b2
UI調整 2024-01-20 16:13:42 +09:00
6120427400
カラーリソース追加 2024-01-20 16:10:46 +09:00
2b087a4c45
アイコン背景色変更 2024-01-20 16:06:57 +09:00
457e58264b
Stringリソースからタイトルを取得するように 2024-01-20 16:05:55 +09:00
4d5d02c794
アイコン変更 2024-01-20 16:02:57 +09:00
b8f3b016b7
メニューに追加 2024-01-20 16:00:10 +09:00
b6307f67ce
ナビゲーションに追加 2024-01-20 15:59:21 +09:00
1e8dec3021
引数削除 2024-01-20 15:58:12 +09:00
86d290b217
引数削除 2024-01-20 15:57:55 +09:00
02d26f864d
引数削除 2024-01-20 15:57:34 +09:00
5aa6c975da
スキャンページフラグメント作成 2024-01-20 15:56:49 +09:00
7075fc710d
Dataページフラグメント作成 2024-01-20 15:56:14 +09:00
ba0cb871a4
Display設定ページフラグメント作成 2024-01-20 15:55:43 +09:00
95a2a44cb1
ハイフン削除 2024-01-20 15:54:51 +09:00
fd65b17921
Drawable追加 2024-01-20 15:54:13 +09:00
a3f469b466
アニメーションを追加 テスト 2024-01-20 15:50:03 +09:00
e86129295a
Durationを200msに変更 2024-01-20 15:49:53 +09:00
f4c46fbd5d
アイテムをタッチしたら画面推移するように 2024-01-20 15:40:52 +09:00
439b76f8bf
Stringリソースを参照するように 2024-01-20 15:38:59 +09:00
ffd455c6d8
Stringリソースを参照するように 2024-01-20 15:38:13 +09:00
29c3fddd14
Stringリソース追加 2024-01-20 15:37:55 +09:00
516a55e4e0
ボトムナビゲーションに追加 2024-01-20 15:29:09 +09:00
68e4d0639a
メインナビゲーションにinclude 2024-01-20 15:28:08 +09:00
db26e639e6
テスト用にアイテム追加 2024-01-20 15:27:39 +09:00
32cd27997c
モデル変更 2024-01-20 15:27:11 +09:00
6fb8091754
ナビゲーショングラフに追加 2024-01-20 15:24:58 +09:00
0d7d47ea10
引数削除 2024-01-20 15:24:37 +09:00
3d544fa423
フラグメント生成 2024-01-20 15:23:56 +09:00
487451712e
ナビゲーショングラフ生成 2024-01-20 15:22:23 +09:00
e78718ab79
id修正 2024-01-20 15:20:09 +09:00
35c58e14ad
インポート修正 2024-01-20 15:19:00 +09:00
4efad853f7
アダプタ実装 2024-01-20 15:18:39 +09:00
6c22050906
設定画面のリストアイテム用モデル作成 2024-01-20 15:18:32 +09:00
17dc90162b
ファイル移動 2024-01-20 15:14:16 +09:00
72933fd45b
ファイル移動 2024-01-20 15:13:49 +09:00
c8c0e37052
リネーム 2024-01-20 15:11:59 +09:00
7b6d8e3a18
レイアウトコピー 2024-01-20 15:10:52 +09:00
6167c412c7
依存関係追加 2024-01-20 15:10:00 +09:00
226f09f8bb
引数削除 2024-01-20 15:09:13 +09:00
0c4ba99a07
TopFragment作成 2024-01-20 15:08:44 +09:00
097adebd9b
.idea 2024-01-20 15:07:51 +09:00
03a75a5b29
依存関係に追加 2024-01-20 15:07:45 +09:00
0c6e2b1a98
settingモジュール作成 2024-01-20 15:07:07 +09:00
ろむねこ
a7b92120ba
Merge pull request #84 from lacerta-doc/feature/home/fix
ホーム画面改修
2024-01-20 15:06:00 +09:00
3f78dccf3b
コード整理 2024-01-20 15:02:17 +09:00
c6ddd6fd03
なんかもう全部変えた 2024-01-19 20:09:26 +09:00
eab00983a8
色変更 2024-01-19 18:46:06 +09:00
038c526652
いろいろ 2024-01-19 18:43:26 +09:00
704c128801
いろいろ 2024-01-19 18:43:22 +09:00
209eab0755
ListItemAdapter実装 WIP 2024-01-19 18:28:26 +09:00
65d48d03fd
依存関係に追加 2024-01-19 18:23:08 +09:00
dcd5f1b650
Placeholderテキスト追加 2024-01-19 18:19:51 +09:00
a74eb821f8
レイアウト作成 WIP 2024-01-19 18:19:42 +09:00
738d8a055c
依存関係追加 2024-01-19 18:15:45 +09:00
2e5559df88
WIP 2024-01-19 18:00:45 +09:00
dc1cc429e9
ドロワーを廃止 2024-01-19 17:47:57 +09:00
339566b243
ドロワーを廃止 2024-01-19 17:46:33 +09:00
0e1d4703e5
Revert "Revert "Revert "テスト"""
This reverts commit bcaa0e5c5c8ddb7610502dd721888fbeac6709ad.
2024-01-19 17:42:55 +09:00
bcaa0e5c5c
Revert "Revert "テスト""
This reverts commit cbc1d139afcd46370eda035e544152f3db3fc8bd.
2024-01-19 17:35:55 +09:00
cbc1d139af
Revert "テスト"
This reverts commit ef48223d465593974768b0d943228025d98fb23b.
2024-01-19 17:27:43 +09:00
ef48223d46
テスト 2024-01-19 17:27:38 +09:00
81ba96a3d0
WIP 2024-01-19 16:51:20 +09:00
80104a2285
テスト用のリソース追加 2024-01-19 16:43:45 +09:00
b9973b845f
WIP 2024-01-19 16:00:37 +09:00
a325ace6f3
レイアウト訂正 WIP 2024-01-19 15:51:03 +09:00
7a2beececc
レイアウト訂正 WIP 2024-01-19 15:49:23 +09:00
4b5ce622fd
一旦コメントアウト(ビルドエラー回避) 2024-01-19 15:45:33 +09:00
5d8b9f338d
CollapsingToolBar実装テスト 2024-01-19 15:45:18 +09:00
9d2e5dd217
ConstraintLayoutに変更 2024-01-19 15:37:15 +09:00
ろむねこ
9ad6a6291d
Merge pull request #82 from lacerta-doc/improve/extract_resource_1
テキストリソースを抽出 1
2024-01-19 15:32:45 +09:00
4235030986
外部リソースを使うように 2024-01-19 15:27:51 +09:00
c60fedeb87
WIP 2024-01-19 15:26:57 +09:00
2f18134581
WIP 2024-01-19 15:25:28 +09:00
ろむねこ
4101f75685
Merge pull request #81 from lacerta-doc/refactor/refactor1
リファクタリング
2024-01-19 15:20:52 +09:00
184771c92d
リソースを切り出す準備 2024-01-19 15:19:15 +09:00
3e12f1222b
ナビゲーションの並び順を変更 2024-01-19 15:17:44 +09:00
29f2749cb7
整形 2024-01-19 15:16:20 +09:00
244b2fb123
リファクタリング 2024-01-19 15:15:46 +09:00
725d541316
リファクタリング 2024-01-19 15:14:08 +09:00
fc712a131a
Revert "utilsを依存関係に追加, LoggerをInject"
This reverts commit 42eb3d4c80497dcbd6065fbbab2f27d0943363c1.
2024-01-19 15:07:35 +09:00
cc7b0dc5d1
Revert "utilsを依存関係に追加, LoggerをInject"
This reverts commit 169a6c6e0ab403647539c4d7469002798bb92e3d.
2024-01-19 15:07:34 +09:00
169a6c6e0a
utilsを依存関係に追加, LoggerをInject 2024-01-19 15:07:27 +09:00
42eb3d4c80
utilsを依存関係に追加, LoggerをInject 2024-01-19 15:07:23 +09:00
1c87b73a5b
テスト用に設置していたトーストを削除 2024-01-19 15:05:44 +09:00
ろむねこ
46f119b531
Merge pull request #80 from lacerta-doc/improve/bottom_nav_color
システムナビゲーションの色をUIにあわせるようにした
2024-01-19 15:02:32 +09:00
def799bbe6
APIレベル27以上でシステムナビゲーションのアイコン色を適切に変更できるようにした 2024-01-19 15:01:20 +09:00
defc051436
システムナビゲーションの背景をボトムナビゲーションと同じに 2024-01-19 14:56:44 +09:00
de9b68de87
Revert "依存関係追加"
This reverts commit 802e4cc75af207c87f24a121d79dd1e459f9e657.
2024-01-19 14:50:20 +09:00
802e4cc75a
依存関係追加 2024-01-19 14:48:17 +09:00
ろむねこ
abc91b79ee
Merge pull request #79 from lacerta-doc/feature/search/add_ui
Feature/search/add UI
2024-01-19 14:24:03 +09:00
Fuchimoto1234
b601b28f81 search UI 2024-01-19 12:49:33 +09:00
Fuchimoto1234
853ac1eca3 search UI 2024-01-19 12:42:04 +09:00
Fuchimoto1234
834bc35318 search UI 2024-01-19 12:30:17 +09:00
Fuchimoto1234
1e3a3262a4 search UI 2024-01-19 12:11:56 +09:00
475c511d32
hotfix 2024-01-18 18:23:14 +09:00
474d6417c9
hotfix: Adapterの初期化処理修正 2024-01-18 18:22:10 +09:00
c7e141b892
hotfix: 型の変更に追従 2024-01-18 18:21:01 +09:00
ろむねこ
3d2cc5ac05
Merge pull request #78 from lacerta-doc/feature/home/add_document_history
ドキュメント履歴をホームに追加
2024-01-18 18:19:49 +09:00
73c310ee01
hotfix: 型の変更に追従 2024-01-18 18:16:44 +09:00
ろむねこ
5c3d811979
Merge pull request #77 from lacerta-doc/feature/lacerta_library_recent
Feature/lacerta library recent
2024-01-18 18:12:18 +09:00
ろむねこ
f5bc740f58
Merge pull request #76 from lacerta-doc/feature/scan_and_save_document
Feature/scan and save document
2024-01-18 18:11:21 +09:00
8a57331d32
メニューに検索を追加 2024-01-18 14:33:27 +09:00
abdca108d4
ナビゲーショングラフに追加 2024-01-18 14:32:57 +09:00
8b66646e7d
ナビゲーショングラフ作成 2024-01-18 14:32:36 +09:00
c9160a2df0
依存関係修正 2024-01-18 14:31:52 +09:00
c5b0a33720
Revert "ナビゲーショングラフ作成"
This reverts commit 13f31017f75256dcef4d2ea73c5c2c72eda94372.
2024-01-18 14:31:30 +09:00
13f31017f7
ナビゲーショングラフ作成 2024-01-18 14:30:22 +09:00
e6778e6214
フラグメント作成 2024-01-18 14:29:29 +09:00
Fuchimoto1234
71f9be77cd fix 2024-01-17 12:58:25 +09:00
e0d63122bd
getRecentDocument実装 2024-01-17 12:52:13 +09:00
1c3fdf921d
Dao追加 2024-01-17 12:52:05 +09:00
Fuchimoto1234
d07e63f534 Merge branch 'develop' into feature/home/add_document_history
# Conflicts:
#	data/src/main/java/one/nem/lacerta/data/Document.java
#	data/src/main/java/one/nem/lacerta/data/impl/DocumentImpl.java
2024-01-17 12:42:55 +09:00
Fuchimoto1234
5160411c76 fix 2024-01-17 12:41:31 +09:00
Fuchimoto1234
20d30e338e wip 2024-01-17 12:35:30 +09:00
3be6185c21
getRecentDocumentの戻り値を変更 2024-01-17 12:15:47 +09:00
c82952f397
スキーマ更新, Dao更新 2024-01-17 12:11:12 +09:00
8c9dc14f16
DBスキーマアップデート 2024-01-17 12:09:27 +09:00
d22644e37a
依存関係に追加 2024-01-17 12:08:54 +09:00
c80576d046
修正 2024-01-17 12:08:45 +09:00
b7cb4369d1
クエリ追加 2024-01-17 12:08:24 +09:00
2cfab24c76
Injection追加 2024-01-17 12:07:28 +09:00
55b34d964c
Folderをデータベースに保存するように WIP 2024-01-17 12:07:18 +09:00
744a2bef65
actionを追加するように WIP 2024-01-17 11:25:41 +09:00
74becab37b
デバッグ用のログポイント追加 2024-01-17 11:09:33 +09:00
58d6ae17c6
タイミングの都合でエラーが出るのでloggerを使わないように 2024-01-17 11:07:54 +09:00
dea5f240f0
ドキュメント新規保存のロジックを実装 WIP 2024-01-17 11:05:25 +09:00
119771a7f9
コメント追加, デバッグ用の実装を追加 2024-01-17 11:00:20 +09:00
b6a30d5cbf
Document実装 2024-01-17 10:57:08 +09:00
2ec4b96c14
Vcs変更 2024-01-17 10:55:39 +09:00
151911d0b2
バージョンコード更新 2024-01-17 10:46:55 +09:00
d832438f8f
Vcs実装 2024-01-17 10:46:31 +09:00
0487553f3b
Dao追加 2024-01-17 10:40:01 +09:00
678c9730ef
Dao追加 2024-01-17 10:39:17 +09:00
e1b43a5f22
EntityにisIncludedを追加 2024-01-17 10:37:42 +09:00
d384347e0a
Merge branch 'develop' into feature/scan_and_save_document 2024-01-17 10:31:28 +09:00
8faaf1e84a
hotfix: 起動できないので暫定で修正 2024-01-16 13:01:35 +09:00
ろむねこ
a81d79a972
Merge pull request #75 from lacerta-doc/refactor/refactoring2
リファクタリング
2024-01-16 12:59:08 +09:00
1e2f48e0ae
shared:iconを削除 2024-01-16 12:58:04 +09:00
be7bd6b6fc
依存関係から削除 2024-01-16 12:55:04 +09:00
16eb6d083e
:shared:iconを廃止1 2024-01-16 12:54:07 +09:00
4de33b9550
JGit関連のモジュールを削除 2024-01-16 12:53:04 +09:00
b4d94954b9
消し忘れていた記述を削除 2024-01-16 12:51:54 +09:00
526ab97706
整理, コメント追加 2024-01-16 12:50:06 +09:00
6f0af7c4eb
整理 2024-01-16 12:49:37 +09:00
c6d85471c6
整理, コメント追加 2024-01-16 12:48:54 +09:00
c5d7224b40
不用意なインポートを整理 2024-01-16 12:46:20 +09:00
ろむねこ
cc62529224
Merge pull request #74 from lacerta-doc/r-ca-patch-2
Create PULL_REQUEST_TEMPLATE.md
2024-01-16 12:42:06 +09:00
ろむねこ
2d686ce776
Create PULL_REQUEST_TEMPLATE.md 2024-01-16 12:41:50 +09:00
a61c044391
新ドキュメントを生成できるように 2024-01-16 12:36:28 +09:00
bc19dd22d8
DocumentMetaにコンストラクタを追加 2024-01-16 12:35:19 +09:00
ろむねこ
61ed1bbf79
Merge pull request #71 from lacerta-doc/add_scanner_component
スキャナの追加
2024-01-16 12:28:58 +09:00
ろむねこ
fd785d9334
Merge pull request #68 from lacerta-doc/improve_document_object
WIP: 全体的なオブジェクトの修正/変更/追加/削除
2024-01-16 12:27:44 +09:00
e6ce3571bf
Inject追加 2024-01-16 12:25:37 +09:00
462ea77e91
依存関係に追加 2024-01-16 12:21:44 +09:00
faf0971ffe
アクションをメニューに合わせて更新 2024-01-16 12:16:33 +09:00
3eac0cf49c
アクションをメニューに合わせて更新 WIP 2024-01-16 12:15:16 +09:00
680b101476
メニューアイテム更新 2024-01-16 12:14:00 +09:00
8200a03168
ログ修正 2024-01-16 12:08:29 +09:00
290795d3aa
Merge remote-tracking branch 'origin/improve/logger_add_error_code' into add_scanner_component 2024-01-16 12:04:19 +09:00
ろむねこ
1e1f014e59
Merge pull request #70 from lacerta-doc/improve/logger_add_error_code
エラーIDをログに流すメソッドを実装
2024-01-16 12:03:54 +09:00
20f6333dcc
エラーIDをログに流すメソッドを実装 2024-01-16 12:03:33 +09:00
d30e68b23f
コメント修正 2024-01-16 11:59:36 +09:00
24e54ec0f0
終了ボタンを実装 2024-01-16 11:58:42 +09:00
d01f5b9c79
ToolBar実装 WIP 2024-01-16 11:50:50 +09:00
8502bcdcab
命名修正 2024-01-16 11:45:49 +09:00
7c91987c76
アイコン色修正 2024-01-16 11:44:24 +09:00
74aef19312
アイコン追加 2024-01-16 11:43:34 +09:00
2168f67fea
scaleType修正 2024-01-16 11:27:03 +09:00
380e8117b8
プレビュー実装 WIP 2024-01-16 11:06:44 +09:00
a6aeb5480a
スキャン後の操作を行う画面を実装 WIP 2024-01-16 11:05:43 +09:00
78505c62e6
暫定Drawable作成 2024-01-16 10:50:49 +09:00
467d5ae9ee
WIP 2024-01-16 10:37:36 +09:00
0f4b66eb37
いろいろ 2024-01-16 10:29:15 +09:00
cec7f3bb15
レイアウト設計WIP 2024-01-16 10:26:25 +09:00
1137604515
レイアウトリソース作成 2024-01-16 10:18:11 +09:00
091467d113
Revert "フラグメント作成"
This reverts commit d780e57e39a3793d0edae7e4db8dd6233e6f7493.
2024-01-16 10:17:30 +09:00
aefe5d1001
スキャナ実装いろいろ 2024-01-16 10:16:58 +09:00
d780e57e39
フラグメント作成 2024-01-16 10:16:45 +09:00
35b998eebe
アクティビティ作成 2024-01-15 15:09:58 +09:00
b99efb3336
いろいろ 2024-01-15 15:03:24 +09:00
9ebf656274
メニューに追加 2024-01-15 15:03:21 +09:00
84a8d0d44d
Revert "アクティビティ作成"
This reverts commit 5b1461ff2614dc33db408b093c949ea546232341.
2024-01-15 14:59:13 +09:00
5b1461ff26
アクティビティ作成 2024-01-15 14:50:09 +09:00
57ca804b2b
Revert "アクティビティ作成"
This reverts commit b81f8d5c874f86156c0d6f375d577e48145d930a.
2024-01-15 14:49:39 +09:00
b81f8d5c87
アクティビティ作成 2024-01-15 14:48:55 +09:00
e44313d418
ナビゲーショングラフに追加 2024-01-15 14:46:18 +09:00
334d1ccba2
処理実装 WIP 2024-01-15 14:45:23 +09:00
5bf55ada0e
依存関係追加 2024-01-15 14:36:52 +09:00
75c0700144
レイアウト編集, 処理init 2024-01-15 14:36:10 +09:00
dbb737d896
ScannerManagerFragment作成 2024-01-15 14:32:16 +09:00
3045c75c45
ビルドエラー回避コメントアウト 2024-01-14 17:36:21 +09:00
aac94922df
HiltをPluginに追加 2024-01-14 17:35:17 +09:00
78ff41b3e3
ビルドエラー回避コメントアウト 2024-01-14 17:34:32 +09:00
e026da96fa
DocumentDebugを削除 2024-01-14 17:27:43 +09:00
9245981233
仕様変更でスタブが壊れたのでとりあえずコメントアウト 2024-01-14 17:26:01 +09:00
bc74ee605e
不要になったデバッグメニューの画面を削除 2024-01-14 17:25:19 +09:00
475e378b7c
Impl 2024-01-14 17:22:37 +09:00
6c8233536c
コメント追加 2024-01-14 17:18:37 +09:00
3878c139af
createDocument実装 2024-01-14 17:18:25 +09:00
56a3acf36d
createDocument実装 2024-01-14 17:17:34 +09:00
0cab05c581
PublicPathにrootを返すメソッドを追加 2024-01-14 17:16:28 +09:00
9db85bb9b3
Setter追加漏れ修正 2024-01-14 17:13:43 +09:00
17cb2829ce
依存関係追加 2024-01-14 17:08:22 +09:00
397c923cc1
修正 2024-01-14 17:00:10 +09:00
94cec3432e
修正 2024-01-14 16:59:36 +09:00
e78ee829ce
修正 2024-01-14 16:59:21 +09:00
4ae2a9fe3a
メソッドの統合 2024-01-14 16:59:02 +09:00
d6a0dbeaa2
VCSに変更履歴を登録するように WIP 2024-01-14 16:58:19 +09:00
98c3820679
Initを廃止 2024-01-14 16:55:50 +09:00
de85626d66
依存関係追加 2024-01-14 16:53:30 +09:00
7e20d8e443
close()を廃止, DocumentDetailを取得できるように 2024-01-14 16:48:04 +09:00
eba02abfd4
DocumentProcessor更新 WIP 2024-01-14 16:45:48 +09:00
aa7f285773
WIP 2024-01-14 16:40:03 +09:00
e5e1b3a2bb
パーサー更新 2024-01-14 16:35:22 +09:00
cd5a588545
XmlMetaModel更新 2024-01-14 16:34:41 +09:00
bd5a041424
Impl生成し直し 2024-01-14 16:28:28 +09:00
9d793c3c0a
Documentインタフェース実装 2024-01-14 16:27:56 +09:00
0d4f0686b7
DocumentDetailにPagesを追加 2024-01-14 16:13:09 +09:00
5e6fa45fed
コメント 2024-01-14 16:11:43 +09:00
885cd77d5b
Pageオブジェクトを作成 2024-01-14 16:11:17 +09:00
cbd7c103c5
コメント 2024-01-14 16:07:48 +09:00
ddd303fa88
コンストラクタ追加 2024-01-14 16:06:58 +09:00
14fbb56dcd
Setter追加 2024-01-14 16:06:36 +09:00
bf01610eb5
Getter追加 2024-01-14 16:06:14 +09:00
b63e2dd862
コンストラクタ変更 2024-01-14 16:05:23 +09:00
8f0f95d8af
移動したフィールドを追加 2024-01-14 16:04:55 +09:00
d75ecff0e7
DefaultBranchをMetaに移動, Repositoryを廃止 2024-01-14 16:03:50 +09:00
bc20c92d44
DocumentPathを廃止, 作者情報をMetaに移動WIP 2024-01-14 16:02:49 +09:00
ろむねこ
5837a1a2d3
Merge pull request #63 from lacerta-doc/feature/add_vcs
VCS追加(WIP)
2024-01-14 15:39:10 +09:00
176d8da59d
Revert "Log一覧フラグメント実装WIP"
This reverts commit dc516bc08359571083878d03c8644d918c38add9.
2024-01-14 15:19:36 +09:00
dc516bc083
Log一覧フラグメント実装WIP 2024-01-14 15:19:33 +09:00
5c83c8fe13
リネーム 2024-01-14 15:18:08 +09:00
200af1955b
コミット漏れ 2024-01-14 15:10:07 +09:00
951ee15235
コミット漏れ 2024-01-14 15:10:04 +09:00
9a35c218b3
仮の実装を追加 2024-01-14 15:09:56 +09:00
52894cf19c
デバッグのためにデータベースの破壊を許可 2024-01-14 15:09:44 +09:00
656d3a5964
DBバージョンのインクリメント 2024-01-14 15:09:31 +09:00
f95a2d64c3
アイテム追加 2024-01-14 14:57:27 +09:00
92f9cfe4aa
ビルドエラー回避のために一旦rootPathを戻した 2024-01-14 14:56:30 +09:00
162f0a7bdb
ビルドエラー修正 2024-01-14 14:54:12 +09:00
ba119fdb3d
壊れたインポートを削除 2024-01-14 14:53:47 +09:00
c711ad304b
アノテーション修正 2024-01-14 14:53:35 +09:00
b2a619629f
リネーム 2024-01-14 14:51:24 +09:00
a3426b6620
デバッグロジック実装 WIP 2024-01-14 14:01:43 +09:00
a9fb6283e7
依存関係追加 2024-01-14 13:59:53 +09:00
6153e944eb
レイアウト作成 WIP 2024-01-14 13:59:14 +09:00
a0baaf02cb
WIP 2024-01-14 13:59:06 +09:00
623be098d1
レイアウト変更 2024-01-14 13:56:30 +09:00
999de728f0
メニューにアイテム追加 2024-01-14 13:55:40 +09:00
a032b9c1b1
ナビゲーショングラフ追加 2024-01-14 13:53:32 +09:00
34de82cec3
引数削除など 2024-01-14 13:52:31 +09:00
fb4ba28391
引数削除など 2024-01-14 13:49:30 +09:00
44baef8199
デバッグ用フラグメント作成 2024-01-14 13:48:52 +09:00
60f86cd9a2
デバッグ用フラグメント作成 2024-01-14 13:48:22 +09:00
add140ad39
ナビゲーショングラフに追加 2024-01-14 13:46:22 +09:00
4c40f9926e
フラグメント作成, 引数関係を削除 2024-01-14 13:45:43 +09:00
f119264599
WIP 画面推移実装 2024-01-14 13:44:04 +09:00
7f7e7d4af3
レイアウト修正 2024-01-14 13:43:09 +09:00
b99277082d
引数関係を削除 2024-01-14 13:40:25 +09:00
a6167b98af
ナビゲーショングラフに追加 2024-01-14 13:34:30 +09:00
f75594233f
デバッグ用フラグメント実装 WIP 2024-01-14 13:32:33 +09:00
32ee755d08
Factory実装 WIP 2024-01-14 13:29:47 +09:00
0758b697a2
Impl実装 WIP 2024-01-14 13:28:02 +09:00
1abfcc1e62
依存関係にRoomを追加 2024-01-14 13:26:59 +09:00
a1b6ed81df
VcsLogDao実装 2024-01-14 13:25:29 +09:00
00a141a101
VcsRevDao実装 2024-01-14 13:23:48 +09:00
6845e552ef
Entity微修正 2024-01-14 13:22:28 +09:00
f98614c5f2
Implクラスコンストラクタ実装 WIP 2024-01-14 13:00:29 +09:00
b040e2572c
Implクラス作成, Impl生成 2024-01-14 12:55:09 +09:00
3eb94cade0
インタフェース実装 WIP 2024-01-14 12:54:29 +09:00
e9b7ad4d92
fromJson実装 WIP 2024-01-14 12:50:56 +09:00
e07cbda769
toJson実装 2024-01-14 12:48:54 +09:00
80aeb8811b
Action系のModelはActionBaseを継承するように 2024-01-14 12:40:46 +09:00
2d7dfe1b5b
ActionBaseを作成 2024-01-14 12:39:45 +09:00
362eda782d
実装を後回しにする部分にコメントを追加 2024-01-14 12:30:44 +09:00
b51eeb50ac
一旦後回しにするので削除 2024-01-14 12:28:56 +09:00
2673fb6bce
実装を後回しにする部分にコメントを追加 2024-01-14 12:28:02 +09:00
bb5c38cbca
パッケージを間違えてたので修正 2024-01-14 12:27:28 +09:00
3f4614cf6b
CreateBranchモデル作成, コンストラクタ, Getter作成 2024-01-14 12:27:10 +09:00
dc65cdbac8
DeletePageモデル作成, コンストラクタ, Getter作成 2024-01-14 12:25:16 +09:00
dbbdda79f4
UpdatePageモデル作成, コンストラクタ, Getter作成 2024-01-14 12:24:46 +09:00
20c0dbd371
InsertPageモデル作成, コンストラクタ, Getter作成 2024-01-14 12:23:23 +09:00
ccaed8387a
パッケージ構成変更 2024-01-14 12:17:05 +09:00
bfb6bee14a
modelを定義するパッケージ作成, placeholder 2024-01-14 12:15:48 +09:00
3b283c1b05
依存関係にJacksonを追加 2024-01-14 12:08:46 +09:00
e718e13ed9
表記ゆれ修正 2024-01-14 12:05:53 +09:00
8277258760
ActionTypes定義 WIP 2024-01-14 11:56:44 +09:00
062e8c8bf9
Dao作成 WIP 2024-01-14 11:31:33 +09:00
0439370bd0
Dao作成 WIP 2024-01-14 11:30:56 +09:00
541b748501
Dao作成 WIP 2024-01-14 11:30:43 +09:00
88546fe89a
Databaseに追加 WIP 2024-01-14 11:29:58 +09:00
53b3ebebef
Rev実装 2024-01-14 11:28:51 +09:00
a7195c4079
Converter追加 2024-01-13 15:51:35 +09:00
e848f40b8b
エンティティ実装 WIP 2024-01-13 15:51:09 +09:00
578f1ef8a8
変更履歴を管理するEntity追加 2024-01-13 15:47:29 +09:00
fca44e1753
リビジョンを管理するエンティティ作成 2024-01-13 15:46:42 +09:00
da1dba5fda
DBにパブリックパスを追加 2024-01-13 15:43:38 +09:00
c614230744
WIP 2024-01-13 15:42:51 +09:00
e5c3b3aa92
依存関係追加 2024-01-13 15:37:08 +09:00
442ac4866a
インタフェース作成 2024-01-13 15:36:42 +09:00
8d00386f20
依存関係追加 2024-01-13 15:34:43 +09:00
9a14b1db23
VCSモジュール作成 2024-01-13 15:33:54 +09:00
ろむねこ
385f2f327d
Merge pull request #60 from lacerta-doc/model/public_path
PublicPathの追加
2024-01-13 15:20:45 +09:00
ろむねこ
f09d35b8c0
Merge pull request #59 from lacerta-doc/data/add_search_stub
JavaDoc対応
2024-01-13 15:18:32 +09:00
002c78d09b
実装 2024-01-13 15:17:48 +09:00
171c8b380c
効率化 2024-01-13 15:13:56 +09:00
04651f3b8e
実装 WIP 2024-01-13 15:12:03 +09:00
180428fbb7
実装 WIP 2024-01-13 15:07:11 +09:00
955e9fa6c8
JavaDoc対応 2024-01-13 14:59:54 +09:00
ろむねこ
1d3015a7e4
Merge pull request #58 from lacerta-doc/data/add_search_stub
LacertaSearchインタフェースにスタブを追加
2024-01-13 14:39:12 +09:00
4ce8315678
HiltModule実装 2024-01-13 14:36:59 +09:00
3c66480f0f
受け取ったクエリをコンソールに吐き出すようにした 2024-01-13 14:35:25 +09:00
82d0187a11
LacertaLibraryの実装を流用して取得できるように 2024-01-13 14:34:07 +09:00
dc340f1a96
継承, impl生成 2024-01-13 14:30:30 +09:00
1d24467c09
インタフェースの戻り値を修正 2024-01-13 14:29:58 +09:00
ろむねこ
bf385b952c
Merge pull request #55 from lacerta-doc/data/add_search_interface
検索インタフェースをを追加
2024-01-13 14:27:29 +09:00
da207fe251
autoSearch追加 2024-01-13 14:22:50 +09:00
e7ababe65a
Revert "検索オブジェクト作成 WIP"
This reverts commit 9725c1a07ccdb3414e74d0f338a48b91221952ed.
2024-01-13 14:14:07 +09:00
cbf56dd331
Revert "検索オブジェクト作成 WIP"
This reverts commit c2aada949e1ac8c30675afb6bea7eb61eafbfff4.
2024-01-13 14:14:07 +09:00
1a360057b6
Revert "検索モード実装"
This reverts commit e8f51d37171a4e63625dfca2cde36f0486e20a02.
2024-01-13 14:14:06 +09:00
bc8e68126b
Revert "iroiro"
This reverts commit 8eee8843b7e064d007ac31e9afea06a842f8800a.
2024-01-13 14:14:06 +09:00
ccb4dc4bb6
Revert "AUTO追加"
This reverts commit 2690eec511867a1d5cbb09a72723916615692c76.
2024-01-13 14:14:06 +09:00
2690eec511
AUTO追加 2024-01-13 14:12:06 +09:00
8eee8843b7
iroiro 2024-01-13 14:11:49 +09:00
e8f51d3717
検索モード実装 2024-01-13 14:10:45 +09:00
c2aada949e
検索オブジェクト作成 WIP 2024-01-13 14:08:59 +09:00
9725c1a07c
検索オブジェクト作成 WIP 2024-01-13 14:07:03 +09:00
1090e1bf74
インタフェース生成 2024-01-13 14:03:54 +09:00
ろむねこ
a9b76161b7
Merge pull request #53 from lacerta-doc/data/add_library_item_stub
LacertaLibraryインターフェースにスタブを追加
2024-01-13 14:02:05 +09:00
37af356c92
Debug 2024-01-12 12:47:14 +09:00
af4513212d
適当な日付を表示するようにした 2024-01-12 12:43:01 +09:00
3f58c623f3
LayoutManager追加 2024-01-12 12:40:46 +09:00
a754198d75
修正 2024-01-12 12:38:56 +09:00
8ee554d445
ナビゲーショングラフ追加 2024-01-12 12:28:31 +09:00
c346170a9d
HiltModuleのアノテーション修正 2024-01-12 12:27:51 +09:00
5bd84e730f
コンストラクタのアノテーション忘れ修正 2024-01-12 12:25:01 +09:00
9a56846e3a
デバッグロジック実装 2024-01-12 12:24:30 +09:00
8cd49804ca
命名修正 2024-01-12 12:19:12 +09:00
993f34e1fe
レイアウト作成 2024-01-12 12:18:11 +09:00
81ceaaf0d6
init 2024-01-12 12:16:11 +09:00
d77cedc68f
引数削除 2024-01-12 12:15:45 +09:00
283146a81f
デバッグ用フラグメント作成 2024-01-12 12:15:11 +09:00
dc4879c900
HiltModule作成 2024-01-12 12:14:01 +09:00
2f6bd99572
JavaDoc対応 2024-01-12 12:11:17 +09:00
527d3c309f
getDocumentDetailByIdのスタブを実装 2024-01-12 11:04:18 +09:00
f326771aaf
idを正しく返すように修正 2024-01-12 11:03:14 +09:00
d2ebed3934
DocumentDetailを生成する内部メソッド作成 2024-01-12 11:02:50 +09:00
3cd1f50f34
スタブメソッド実装 2024-01-12 10:59:39 +09:00
c663d78e11
履歴を生成する内部メソッド作成 2024-01-12 10:59:16 +09:00
bb36458c4d
スタブメソッド生成 2024-01-12 10:54:28 +09:00
7107b03de9
空のコンストラクタを追加, コメントを追加 2024-01-12 10:50:19 +09:00
db4da7812b
LibraryItemPageにSetterを追加 2024-01-12 10:49:44 +09:00
a6ee0c12f4
ListItemに空のコンストラクタを追加 2024-01-12 10:41:13 +09:00
f9f07972ac
ListItemにSetterを追加 2024-01-12 10:40:32 +09:00
e8876cec73
JavaFakerを依存関係に追加 2024-01-12 10:32:33 +09:00
01f0d74ab6
継承, Impl生成 2024-01-12 10:27:36 +09:00
1036cbe5d9
スタブクラス作成, 2024-01-12 10:27:04 +09:00
b1886438e1
継承, impl生成 2024-01-12 10:26:32 +09:00
ろむねこ
5bc54f6083
Merge pull request #50 from lacerta-doc/data/add_library_item_interface
ライブラリを取得するインタフェースを実装
2024-01-12 10:24:00 +09:00
f937503840
インタフェース設計 WIP 2024-01-12 10:18:04 +09:00
9f41632b0f
リネーム 2024-01-12 09:56:18 +09:00
fb2ba1e6e5
戻り値の型変更 2024-01-12 09:55:34 +09:00
3930ec6d9c
WIP 2024-01-12 09:54:48 +09:00
ca61d2c055
ListItemモデルをラッピングするモデルを作成 2024-01-12 09:54:38 +09:00
451e8532d1
ListItemモデルをラッピングするモデルを作成 2024-01-11 16:12:29 +09:00
8314f850f6
Repository, Module, Implファイル作成 2024-01-11 15:55:51 +09:00
ろむねこ
78ad88206c
Merge pull request #47 from lacerta-doc/model/add_list_item_model
ListItemのモデルを追加
2024-01-11 15:08:33 +09:00
5dcb27a2e9
アイコンIDを追加 2024-01-11 15:04:42 +09:00
f833465dc8
:shared:uiを依存関係に追加 2024-01-11 15:03:44 +09:00
4ac03fd4f3
重複を削除, 名前を統一 2024-01-11 15:02:41 +09:00
17b2392fea
drawableにアイコンを2個追加 2024-01-11 15:01:17 +09:00
68f2ba3b59
修正 2024-01-11 14:55:06 +09:00
91bbca54ff
enum作成 2024-01-11 14:53:20 +09:00
19dfa070fd
ListItemモデル作成, コンストラクタ定義, Getter 2024-01-11 14:52:30 +09:00
b7f55ef0db
ListItemモデル作成 2024-01-11 14:03:10 +09:00
ろむねこ
1c91b52431
Merge pull request #45 from lacerta-doc/improve/document_1
Readme.mdに説明を追加
2024-01-11 13:55:39 +09:00
1b85845499
Readme.mdに説明を追加 2024-01-11 10:59:36 +09:00
ろむねこ
523008ff3f
Merge pull request #41 from lacerta-doc/improve/improve_debug_menu
デバッグメニューから不要になったアイテムを削除
2024-01-10 12:28:11 +09:00
50c2b1dc4d
リンクを削除 2024-01-10 12:23:17 +09:00
ae8f7ef1f1
ナビゲーショングラフから削除 2024-01-10 12:23:03 +09:00
27766effc1
メタデータを表示するフラグメント, クラスを削除 2024-01-10 12:22:49 +09:00
f7fe8b35b1
メニューから削除 2024-01-10 12:11:29 +09:00
87c4738f37
ナビゲーションから削除 2024-01-10 12:10:48 +09:00
96bfca0550
レイアウト, クラス削除 2024-01-10 12:10:37 +09:00
ろむねこ
0140c0376b
Merge pull request #34 from lacerta-doc/improve/remove_page_index
Indexの廃止
2024-01-09 17:26:14 +09:00
89a3a179bd
index廃止 2024-01-09 17:23:56 +09:00
ff905d9280
index廃止 2024-01-09 17:23:08 +09:00
4b0ea02f16
cleanup 2024-01-09 17:22:23 +09:00
ca37a97e2f
Indexを廃止 2024-01-09 17:21:00 +09:00
ろむねこ
217f096a38
Merge pull request #33 from lacerta-doc/feature/add_doc_proc_missing
DocumentProcessorの不足しているメソッドを実装する(1)
2024-01-09 17:16:11 +09:00
0c59c85b28
addNewPageBeforeIndex実装 2024-01-09 17:12:13 +09:00
e3a5dee36c
addNewPageAfterIndex実装 2024-01-09 17:07:37 +09:00
1805cd7d73
WIP 2024-01-09 17:05:25 +09:00
513a91b41e
throws追加 2024-01-09 17:04:42 +09:00
ろむねこ
3f2534b1eb
Merge pull request #30 from lacerta-doc/improve/improve_file_manager
FileManagerの修正
2024-01-09 16:26:20 +09:00
af836ed486
修正 2024-01-09 16:18:02 +09:00
fe3d332a36
修正 2024-01-09 15:56:47 +09:00
5fb938c263
リファクタリング 2024-01-09 15:54:14 +09:00
3cafa05b27
修正 WIP 2024-01-09 15:53:20 +09:00
9065ee1e1f
ログ追加, 保存場所が異常になる問題を修正 2024-01-09 15:52:47 +09:00
36ecb3ab13
新しいインスタンスを生成できるようにした 2024-01-09 15:30:18 +09:00
01e111bdd5
必要に応じてインスタンスを生成するようにした 2024-01-09 15:27:42 +09:00
65a25ad228
Revert "Revert "WIP""
This reverts commit 1b676f83681f69cf322faecdf3806d82ad0ef05f.
2024-01-09 15:18:31 +09:00
1efac1ffb6
Revert "Revert "新しいインスタンスを作成するメソッドを作った""
This reverts commit 27aa6a2f156586baec8cf1303b991234103a1598.
2024-01-09 15:18:30 +09:00
c05d45afdd
fix 2024-01-09 15:11:15 +09:00
27aa6a2f15
Revert "新しいインスタンスを作成するメソッドを作った"
This reverts commit 943ca1daf58dd33a994e007aa49260240e42a7e4.
2024-01-09 15:10:27 +09:00
1b676f8368
Revert "WIP"
This reverts commit 30ed65079b28f58ff572a8b1cebe7528c2889cbe.
2024-01-09 15:10:27 +09:00
30ed65079b
WIP 2024-01-09 15:10:19 +09:00
943ca1daf5
新しいインスタンスを作成するメソッドを作った 2024-01-09 15:05:28 +09:00
8913f8118d
ファイルが存在しない場合に作成するメソッドを追加 2024-01-09 14:31:01 +09:00
4cf3ff5f3c
createFileの場合でも親ディレクトリを生成するように 2024-01-09 14:24:43 +09:00
360580eff2
自動でパス解決させる 2024-01-09 14:20:06 +09:00
730640425f
暫定)エラーハンドリング 2024-01-09 14:09:27 +09:00
69b60944b4
暫定)エラーハンドリング 2024-01-09 14:09:05 +09:00
e8804e8f84
close処理修正 2024-01-09 14:03:29 +09:00
7951bef6e0
保存処理 2024-01-09 14:02:07 +09:00
fbde892f40
ifNotExist実装 2024-01-09 13:52:00 +09:00
022e7e278a
fix 2024-01-09 13:51:19 +09:00
d88c9c2030
isExistを引数なしでも実行できるように 2024-01-09 13:50:47 +09:00
e055f8fe9e
ディレクトリがない場合だけ新規作成するメソッド追加 WIP 2024-01-09 13:49:46 +09:00
1af344a6d3
throws追加, 実装WIP 2024-01-09 13:47:58 +09:00
f3ac07e633
throws追加 2024-01-09 13:45:27 +09:00
a887446d21
isExistの実装を変更 2024-01-09 13:44:28 +09:00
b3a4207762
アンコメント 2024-01-09 13:42:36 +09:00
0439a998e3
createDirectory実装 fix 2024-01-09 12:53:18 +09:00
a2eb04e96b
createDirectory実装 WIP 2024-01-09 12:52:39 +09:00
b0c97da382
createFile実装 2024-01-09 12:52:18 +09:00
3a9053e987
impl 2024-01-09 12:50:01 +09:00
7cdb005ebb
ファイル/ディレクトリを作成するメソッドを定義 2024-01-09 12:49:51 +09:00
3a270cdc9f
loggerをfinalに 2024-01-09 12:48:32 +09:00
f380e7eef8
不要なimportを削除 2024-01-09 12:48:11 +09:00
8ca642c7f4
getFileRef実装 2024-01-09 12:46:20 +09:00
c28d94e417
loadBitmapInternal, loadBitmap実装 2024-01-09 12:44:40 +09:00
8587c6a707
リファクタリング 2024-01-09 12:42:16 +09:00
f3465bcf81
loadXml, loadXmlInternal実装 2024-01-09 12:42:03 +09:00
3e2a295a22
重複したメソッドを削除 2024-01-09 12:40:07 +09:00
f36dc05db1
リファクタリング 2024-01-09 12:39:36 +09:00
78525d634a
saveBitmap実装 2024-01-09 12:39:05 +09:00
0736a7326a
saveBitmapInternal実装 2024-01-09 12:38:48 +09:00
76f4a6c228
saveXml実装 2024-01-09 12:37:23 +09:00
3a41c4e105
Save系のメソッドからチェーンできる必要はなさそうなので戻り値をvoidに fix 2024-01-09 12:36:55 +09:00
301678658c
Save系のメソッドからチェーンできる必要はなさそうなので戻り値をvoidに 2024-01-09 12:36:35 +09:00
e20b3f4a35
修正 2024-01-09 12:34:42 +09:00
e0a344bb48
Xmlを保存するInternalメソッド実装 2024-01-09 12:34:10 +09:00
a2eda32183
getCurrentInstance実装 2024-01-09 12:32:50 +09:00
0f8b71e739
Impl生成 2024-01-09 12:31:57 +09:00
91fe39d141
読み書きのインタフェースを実装 2024-01-09 12:31:31 +09:00
0dced5d0dc
ディレクトリ/ファイルの判定メソッドを実装 2024-01-09 12:25:25 +09:00
9e5b2dad46
読み書きの確認の前にファイルの存在を確認するように 2024-01-09 12:24:56 +09:00
5c931ece3f
ファイルの存在確認を実装 2024-01-09 12:23:59 +09:00
3b861e3a07
読み込み/書き込み権限の確認を実装 WIP 2024-01-09 12:23:37 +09:00
37497cb1ea
configの書き込みを実装 2024-01-09 12:22:09 +09:00
3efaf30b95
configの書き込みを実装 2024-01-09 12:20:15 +09:00
9142696fac
resolve実装 2024-01-09 12:19:40 +09:00
d5cf2f31d6
resolve実装 2024-01-09 12:18:03 +09:00
fcda369a2e
resolveと競合するのでStringのsetPathを廃止 2024-01-09 12:15:12 +09:00
9faf5c9055
実装 WIP 2024-01-09 12:14:43 +09:00
0d78f9fa7c
rootの合致チェックをフラグで切り替えるように 2024-01-09 12:00:26 +09:00
8ebc96fa98
rootの合致チェックをフラグで切り替えるように 2024-01-09 12:00:16 +09:00
2b8766db0a
自動でディレクトリを作成するかを切り替えるフラグを追加 2024-01-09 11:58:21 +09:00
2233bb1a35
Impl WIP 2024-01-09 11:56:50 +09:00
c513b44e8d
Impl WIP 2024-01-09 11:55:37 +09:00
cc35d8a5ea
Impl WIP 2024-01-09 11:55:24 +09:00
16ac36dd4f
既存の実装を削除 2024-01-09 11:48:46 +09:00
eadd65a334
WIP 2024-01-09 11:48:06 +09:00
3ed835ef2f
既存の実装を削除 2024-01-09 11:34:12 +09:00
4a66ed786d
コメントアウト(エラーを減らすため) 2024-01-08 16:49:11 +09:00
89e2f15a29
コメントアウト(エラーを減らすため) 2024-01-08 16:47:42 +09:00
ろむねこ
717b8e9637
Merge pull request #23 from lacerta-doc/source/add_files
画像ファイルの追加(保存), メタデータの管理
2024-01-08 16:18:36 +09:00
ろむねこ
3e24896bd1
Merge pull request #11 from lacerta-doc/feature/library/add_document_list
Feature/library/add document list
2024-01-08 16:14:10 +09:00
ろむねこ
94943184c4
Merge pull request #20 from lacerta-doc/r-ca-patch-1
Update issue templates
2024-01-08 15:58:17 +09:00
ろむねこ
30f2dc39ae
Update issue templates 2024-01-08 15:57:51 +09:00
ろむねこ
4621025e62
Merge pull request #18 from lacerta-doc/r-ca-issue-template-1
Update issue templates
2024-01-08 15:56:18 +09:00
ろむねこ
164527d41a
Merge pull request #19 from lacerta-doc/r-ca-pr-1
PRテンプレート追加
2024-01-08 15:56:01 +09:00
ろむねこ
d770ac76aa
Create general.md 2024-01-08 15:55:46 +09:00
ろむねこ
642f306ad6
Update issue templates 2024-01-08 15:45:01 +09:00
ろむねこ
930b48af2f
Merge pull request #15 from lacerta-doc/common/improve_logger
Loggerの機能を強化
2024-01-08 15:36:24 +09:00
3205923eb5
修正 2024-01-08 15:15:12 +09:00
441479d9b9
デバッグ実装 2024-01-08 15:13:58 +09:00
099d900ffd
close処理を実装 2024-01-08 15:11:54 +09:00
080e86d05d
デバッグ処理実装 2024-01-08 15:11:28 +09:00
6d6f4790a0
ページを修正 2024-01-08 15:09:48 +09:00
1a31d63786
Currentの確認処理を修正 2024-01-08 15:09:17 +09:00
ce834a7cfd
Currentを確認するメソッド追加 2024-01-08 15:06:33 +09:00
f7b8006fa4
保存ロジック修正 2024-01-08 14:42:29 +09:00
5bb2f0d387
修正漏れ 2024-01-08 14:37:50 +09:00
e54cc07e9d
ファイルマネージャーを共用するように 2024-01-08 14:37:10 +09:00
bc5d0edd68
unused警告を無効に 2024-01-08 12:52:45 +09:00
3540f20c46
ログ追加 2024-01-08 12:52:10 +09:00
164b6ea6d4
ログ追加 2024-01-08 12:50:44 +09:00
8fdefb9850
Logger追加 2024-01-08 12:50:26 +09:00
8e4018beb0
必要のなかった戻り値を削除 2024-01-08 12:49:52 +09:00
ddd2b097e6
import整理 2024-01-08 12:48:20 +09:00
9fe646fad8
import整理 2024-01-08 12:48:04 +09:00
5e1d1f6a76
書き換えない変数をfinalに 2024-01-08 12:47:39 +09:00
649d6ccfdc
ログ修正 2024-01-08 12:46:42 +09:00
dccb3090e1
Merge branch 'common/improve_logger' into source/add_files_refactor1 2024-01-08 12:43:58 +09:00
de4a501c3f
Revert "KeyValueログモデル作成"
This reverts commit b75759b6501950078f2ef7349a3c6cd57c304619.
2024-01-08 12:43:49 +09:00
28b5f97c31
Revert "移動"
This reverts commit 3453d224e1ae0a5b62afc89245774604be9fa3d9.
2024-01-08 12:43:49 +09:00
4656914203
Revert "Key-Valueなログを出力しやすくした"
This reverts commit a439bbd88839578940070c98a00b579fed6cbaf6.
2024-01-08 12:43:48 +09:00
1996d8dc4a
Revert "修正"
This reverts commit 3b6d88bafd9c15b3153206dcab547cfd79a91955.
2024-01-08 12:43:48 +09:00
dec4983bfc
移動 2024-01-08 12:43:31 +09:00
88dfae7d37
KeyValueログモデル作成 2024-01-08 12:43:30 +09:00
48101190a2
修正 2024-01-08 12:43:21 +09:00
2b79c7669f
Key-Valueなログを出力しやすくした 2024-01-08 12:43:21 +09:00
3b6d88bafd
修正 2024-01-08 12:41:10 +09:00
a439bbd888
Key-Valueなログを出力しやすくした 2024-01-08 12:39:37 +09:00
3453d224e1
移動 2024-01-08 12:36:39 +09:00
b75759b650
KeyValueログモデル作成 2024-01-08 12:35:30 +09:00
a78cac8178
リファクタリング 2024-01-08 12:29:24 +09:00
a42ef8f4fc
改行の訂正 2024-01-08 12:27:00 +09:00
5c16ea6e21
メタデータの書き込みに対応 2024-01-08 12:23:48 +09:00
f000addbce
Documentオブジェクト読み込みメソッド作成 2024-01-08 12:20:12 +09:00
73fa8201d6
Documentオブジェクト保存メソッド作成 2024-01-08 12:17:16 +09:00
5c0fd4fdbb
WIP Documentオブジェクト保存メソッド作成 2024-01-08 12:16:03 +09:00
6e514b216a
パーサー作り直し 2024-01-08 12:14:23 +09:00
59ba2cdcfc
WIP 2024-01-08 12:03:26 +09:00
b3be0b9e21
Initメソッド作り直し 2024-01-08 12:00:22 +09:00
a836410cbd
ファイルにStringを保存するメソッド作成 2024-01-08 11:56:24 +09:00
15d454690e
ファイルにStringを保存するメソッド作成 WIP 2024-01-08 11:54:13 +09:00
2ba243ea4a
ファイルの中身をStringで読み出すメソッド作成 2024-01-08 11:48:17 +09:00
52657fdbbd
ファイルを取得するメソッド作成 2024-01-08 11:42:58 +09:00
88cd58f920
いくつかのメソッドで対応する引数を増やした 2024-01-08 11:38:05 +09:00
1ee0a1b8ea
ファイル名から検索するメソッドを追加 2024-01-08 11:35:09 +09:00
656482e968
一気に移動する処理を作成 WIP 2024-01-08 11:32:46 +09:00
efc16423d4
ログ 2024-01-08 11:30:48 +09:00
38db65c9d3
挙動修正 2024-01-08 11:30:30 +09:00
31a0220b90
Currentまでを自動で作成するメソッドを作成 2024-01-08 11:27:59 +09:00
5cb57997b8
WIP 2024-01-08 11:27:09 +09:00
0fade2c41b
ファイルマネージャにメソッド追加, 微修正 2024-01-08 11:26:18 +09:00
5a0b215626
ファイルマネージャにメソッド追加 WIP 2024-01-08 11:24:29 +09:00
49775a1f49
WIP 2024-01-08 11:23:06 +09:00
552f0e42b5
親ディレクトリが不足している場合は作成するように WIP 2024-01-08 11:19:05 +09:00
b8e70cd015
ログポイント追加 2024-01-08 11:14:48 +09:00
67350639c7
ファイル作成/削除を追加 WIP 2024-01-08 11:12:51 +09:00
eb6a13baba
ボタン追加WIP 2024-01-08 11:00:55 +09:00
bd0a16bec6
ボタン追加WIP 2024-01-08 10:56:33 +09:00
1019b1d035
init処理を追加 2024-01-08 10:54:46 +09:00
2f0460a9ea
サンプルにパスを追加 2024-01-08 10:53:20 +09:00
2b4a24de7c
クラス変数作成 2024-01-08 10:51:39 +09:00
b683c311df
クラス変数作成 2024-01-08 10:51:10 +09:00
4bbb119729
Listで追加するメソッドを実装 2024-01-08 10:50:31 +09:00
8c714d5193
修正 2024-01-08 09:52:19 +09:00
f441a957f7
pluginにHiltを追加 2024-01-07 19:37:38 +09:00
dfe5c36e9e
リファクタリング 2024-01-07 19:36:49 +09:00
c54967f016
WIP 2024-01-07 19:22:57 +09:00
95beda8cc2
WIP 2024-01-07 18:07:43 +09:00
02d72ffa68
グローバル変数作成 2024-01-07 18:04:07 +09:00
b159db97bb
サンプルを生成するメソッド作成 2024-01-07 18:03:33 +09:00
1653da9c94
依存関係に追加 2024-01-07 18:01:33 +09:00
1b00f2c64e
WIP 2024-01-07 18:00:40 +09:00
de668412fc
WIP 2024-01-07 17:55:39 +09:00
07042f4e91
リスナー作成 いろいろ 2024-01-07 17:52:56 +09:00
78c36df105
レイアウト修正 2024-01-07 17:52:17 +09:00
14837f83cc
依存関係追加 2024-01-07 17:48:44 +09:00
4fd490ee12
Factory作成 2024-01-07 17:47:47 +09:00
d453c0705f
import 2024-01-07 17:44:42 +09:00
aca90aa6e1
依存関係に追加 2024-01-07 16:38:12 +09:00
f52d00f930
リスナー追加 2024-01-07 16:37:07 +09:00
9b70adecac
レイアウト修正 WIP 2024-01-07 16:36:19 +09:00
80c5bca179
WIP 2024-01-07 16:32:44 +09:00
0a639d4b05
レイアウト修正 2024-01-07 16:30:57 +09:00
3ed6f7b5a6
テーマをインポート 2024-01-07 16:29:22 +09:00
f86dc981b4
レイアウト修正 WIP 2024-01-07 16:28:33 +09:00
c9eda4837b
いろいろ 2024-01-07 16:26:46 +09:00
4d72fc10bf
引数の処理を削除 2024-01-07 16:25:38 +09:00
c9a594763d
デバッグ用フラグメント作成 2024-01-07 16:25:04 +09:00
5a93b79b07
依存関係追加 2024-01-07 16:23:33 +09:00
8a5cbe7b18
メタデータのパース処理実装 WIP 2023-12-25 15:51:11 +09:00
ca153f5602
Injectできるように 2023-12-25 15:45:42 +09:00
73f553cff3
パーサーを依存関係に追加 2023-12-25 15:44:15 +09:00
bd1a1d56cb
XMLMetaのパーサーを作成 Impl WIP 2023-12-25 15:43:03 +09:00
b98fa18cae
XMLMetaのパーサーを作成 Impl WIP 2023-12-25 15:34:17 +09:00
4875394417
XMLMetaのパーサーを作成 Repository WIP 2023-12-25 15:33:56 +09:00
b675e7ffa9
XMLMetaのパーサーを作成 WIP 2023-12-25 15:32:57 +09:00
453fa4c4cf
utilsの依存関係にmodelを追加 2023-12-25 15:31:39 +09:00
ce3565c082
依存修正 2023-12-25 15:31:10 +09:00
523a66429e
モデル移動 2023-12-25 15:30:13 +09:00
b7062a4942
一旦コメントアウト 2023-12-25 15:15:58 +09:00
43c7f4ae0f
一旦コメントアウト 2023-12-25 15:15:55 +09:00
77702b9da5
Revert "XMLメタデータを読み取るメソッド追加"
This reverts commit d2950ab781b5e2ac7b4ee4d24923c30f17142c6d.
2023-12-25 15:14:09 +09:00
d2950ab781
XMLメタデータを読み取るメソッド追加 2023-12-25 15:13:55 +09:00
4aefae6b51
XMLメタデータを読み取るメソッド追加 2023-12-25 15:07:00 +09:00
f2ed0515f8
モデルを移動 2023-12-25 15:05:49 +09:00
b30834479e
initメソッド実装 WIP 2023-12-25 15:04:16 +09:00
aa0728e97b
initメソッド作成 2023-12-25 15:03:04 +09:00
3affd2dd2f
ログ追加 2023-12-25 15:00:14 +09:00
9534e36a9d
LoggerをInjectした 2023-12-25 14:57:21 +09:00
3bfcc9fd63
close()を追加 WIP 2023-12-25 14:55:02 +09:00
e3186249a0
XmlMetaProcessor廃止 2023-12-25 14:53:12 +09:00
c8517ad814
Impl 2023-12-25 14:49:04 +09:00
ffb6ebb358
Repository追加 2023-12-25 14:46:45 +09:00
a4db519fcf
操作メソッド追加 2023-12-25 14:29:10 +09:00
5ff6ac32ba
コンストラクタ, Getter, Setter 2023-12-25 14:25:22 +09:00
bc06438811
メタデータのモデル作成 WIP 2023-12-25 14:23:12 +09:00
6adcbf81c6
メタデータのモデル作成 WIP 2023-12-25 14:23:08 +09:00
bc24ec45af
メタデータのプロセッサーを作成 2023-12-25 14:16:46 +09:00
ca3b4d78a5
Revert "メタデータのプロセッサーを作成"
This reverts commit c1b8722b828cc1fb5f74fa97ffce05311b230766.
2023-12-25 14:16:13 +09:00
c1b8722b82
メタデータのプロセッサーを作成 2023-12-25 14:15:54 +09:00
646627ac49
一旦コメントアウト 2023-12-25 13:34:04 +09:00
6a98deab83
FileManagerに普通のファイル読み書きを追加 WIP 2023-12-25 13:33:28 +09:00
92b48336ac
FileManagerに普通のファイル読み書きを追加 WIP 2023-12-25 13:30:46 +09:00
81d545b90b
addNewPage実装 WIP 2023-12-25 13:29:02 +09:00
9daccbb084
山っぽいものを描画するように 2023-12-25 12:13:22 +09:00
a47d652275
pngで保存するように変更 2023-12-25 11:57:48 +09:00
e55b5709dd
pngで保存するように変更 2023-12-25 11:57:44 +09:00
9fc5d160ac
pngで保存するように変更 2023-12-25 11:57:37 +09:00
544b09dc39
デバッグメニューロジック実装 2023-12-25 11:55:42 +09:00
bc42d59471
デバッグメニューレイアウト修正 2023-12-25 11:52:10 +09:00
5d46fc3e81
デバッグメニューレイアウト作成 2023-12-25 11:50:13 +09:00
9a17910862
saveの中身を実装 WIP 2023-12-25 11:49:01 +09:00
8441b88ab3
save/load/removeを追加 Impl WIP 2023-12-25 11:46:54 +09:00
92d147ab65
Revert "save/load/removeを追加 Impl WIP"
This reverts commit 1eee31316ae4bdbba3cf01a087934d0db717c555.
2023-12-25 11:45:33 +09:00
1eee31316a
save/load/removeを追加 Impl WIP 2023-12-25 11:44:58 +09:00
302eccfdfe
save/load/removeを追加 Impl WIP 2023-12-25 11:42:51 +09:00
93d1fa3f19
save/load/removeを追加 2023-12-25 11:41:37 +09:00
2154e67178
WIP 2023-12-25 11:38:14 +09:00
de9b78035a
Merge remote-tracking branch 'origin/source/add_files' into source/add_files 2023-12-24 15:07:30 +09:00
7cb5b1ca7c
アノテーション忘れ修正 2023-12-24 15:07:17 +09:00
85c419c3ea
アノテーション忘れ修正 2023-12-24 15:07:17 +09:00
685bdd56f8
メニューに追加 2023-12-24 15:07:16 +09:00
a32ea3568f
Navigationに追加 2023-12-24 15:07:16 +09:00
275cd77f53
Impl, Factory修正 2023-12-24 15:07:15 +09:00
a8274d3882
ロジック実装 2023-12-24 15:07:15 +09:00
8b0b58ce99
ID変更 2023-12-24 15:07:14 +09:00
eeb5387cdf
WIP レイアウト 2023-12-24 15:07:14 +09:00
41d5f8d71f
ファイルマネージャーのデバッグ用フラグメント作成 2023-12-24 15:07:13 +09:00
b90ef6a487
Factory作成, 実装 2023-12-24 15:07:13 +09:00
734f6eb41d
Module実装 2023-12-24 15:07:13 +09:00
4f762627cf
Module作成 2023-12-24 15:07:12 +09:00
85a1f8a505
create/remove実装 2023-12-24 15:07:12 +09:00
98232dc403
create/removeの引数変更 2023-12-24 15:07:11 +09:00
e925893ad2
getList修正 2023-12-24 15:07:11 +09:00
2f21ecd6bd
getList修正 2023-12-24 15:07:10 +09:00
d203b1b76e
Revert "パッケージ整理"
This reverts commit f2dfd2ca56abd84cf383c1c4e0783ed6ced9e2c1.
2023-12-24 15:07:10 +09:00
a15383d420
Revert "WIP"
This reverts commit bbad45fbbdaf820571a8f623a86eb95bdb61c340.
2023-12-24 15:07:09 +09:00
6433b9a1ae
WIP 2023-12-24 15:07:09 +09:00
1a1446ac62
パッケージ整理 2023-12-24 15:07:09 +09:00
60544c7905
Impl実装 WIP 2023-12-24 15:07:08 +09:00
7e7d72f903
Impl実装 WIP 2023-12-24 15:07:08 +09:00
5a468e37f9
なんかもう全部変えた 2023-12-24 15:07:07 +09:00
25cbc32ef9
リネーム 2023-12-24 15:07:07 +09:00
310944f51e
ImplクラスInit 2023-12-24 15:07:06 +09:00
c90715b0f5
Repository実装 2023-12-24 15:07:06 +09:00
effdd8e9f3
リネーム 2023-12-24 15:07:05 +09:00
b07d370e69
モジュール整理 2023-12-24 15:07:05 +09:00
f51313411b
依存関係にHiltを追加 2023-12-24 15:07:04 +09:00
c183327842
依存関係にJGitを追加 2023-12-24 15:07:04 +09:00
95d9af1281
インポート追加 2023-12-24 15:07:04 +09:00
413c42fdc1
Impl実装 WIP 2023-12-24 15:07:03 +09:00
7eca8e9528
リポジトリ更新 2023-12-24 15:07:03 +09:00
a0deb45fa0
WIP 2023-12-24 15:07:02 +09:00
e19198446b
Factory作成 2023-12-24 15:07:02 +09:00
e0fe27eadd
Impl, Moduleクラス作成 2023-12-24 15:07:01 +09:00
83707f8bec
パッケージ整理 2023-12-24 15:07:01 +09:00
c3d9bb0cf9
DocumentProcessor リポジトリ作成 2023-12-24 15:07:00 +09:00
39d356841b
依存関係修正 2023-12-24 15:07:00 +09:00
4db67a59d7
Init 2023-12-24 15:07:00 +09:00
26f5968a4a
Init WIP 2023-12-24 15:06:56 +09:00
ろむねこ
6be44cd9b5
Merge pull request #13 from lacerta-doc/component/fix_camera_stub
カメラスタブが現行のAndroidバージョンから呼び出せない問題を修正
2023-12-24 14:58:56 +09:00
efa3134dc6
Manifestで使用するインテントを明言した 2023-12-22 11:33:11 +09:00
nero
54f2076eda ArrayListを削除(使ってなかったので) 2023-12-22 10:50:23 +09:00
nero
c31a590ce3 例外時に出力するメッセージを変更 2023-12-22 10:29:57 +09:00
21f2f55531
アノテーション忘れ修正 2023-12-21 16:55:50 +09:00
02f1ac13cf
アノテーション忘れ修正 2023-12-21 16:54:52 +09:00
e0f634fcb6
メニューに追加 2023-12-21 16:54:13 +09:00
69a0b392ff
Navigationに追加 2023-12-21 16:53:55 +09:00
0d42dc3461
Impl, Factory修正 2023-12-21 16:53:17 +09:00
2aa6bf8c5b
ロジック実装 2023-12-21 16:49:17 +09:00
123145b6a8
ID変更 2023-12-21 16:49:13 +09:00
e723174b81
WIP レイアウト 2023-12-21 16:45:26 +09:00
c1b3c06a9d
ファイルマネージャーのデバッグ用フラグメント作成 2023-12-21 16:38:59 +09:00
nero
2402936a19 重複事項を削除 2023-12-21 16:25:10 +09:00
nero
ba87fb283e コメント追加 2023-12-21 16:19:34 +09:00
nero
c35c4e829e コメントと例外が起こった際の処理を入れた 2023-12-21 16:16:07 +09:00
nero
017748b4a6 保存されたデータを一覧表示できるようにした 2023-12-21 16:03:49 +09:00
a23010b535
Factory作成, 実装 2023-12-21 15:13:31 +09:00
29e0dca2c7
Module実装 2023-12-21 15:12:21 +09:00
a1c87535c6
Module作成 2023-12-21 15:09:15 +09:00
a0c4718b3a
create/remove実装 2023-12-21 15:08:32 +09:00
7c0d82f25c
create/removeの引数変更 2023-12-21 15:07:32 +09:00
5f74123c63
getList修正 2023-12-21 15:06:56 +09:00
d0543d89b9
getList修正 2023-12-21 15:05:56 +09:00
fd74f5eab0
Revert "パッケージ整理"
This reverts commit f2dfd2ca56abd84cf383c1c4e0783ed6ced9e2c1.
2023-12-21 15:03:51 +09:00
1bac068c8c
Revert "WIP"
This reverts commit bbad45fbbdaf820571a8f623a86eb95bdb61c340.
2023-12-21 15:03:51 +09:00
bbad45fbbd
WIP 2023-12-21 15:03:44 +09:00
f2dfd2ca56
パッケージ整理 2023-12-21 15:02:02 +09:00
e3d6826912
Impl実装 WIP 2023-12-21 14:59:12 +09:00
nero
c2ee49d274 保存されているデータ件数を表示する機能 2023-12-21 14:54:58 +09:00
b28a939792
Impl実装 WIP 2023-12-21 14:54:45 +09:00
nero
dd98602309 コメント追加 2023-12-21 14:54:06 +09:00
7ba70cc84b
なんかもう全部変えた 2023-12-21 14:53:04 +09:00
865d8b994c
リネーム 2023-12-21 14:49:36 +09:00
1c5325711a
ImplクラスInit 2023-12-21 14:45:35 +09:00
aff7af76d4
Repository実装 2023-12-21 14:44:36 +09:00
9fecefeb4e
リネーム 2023-12-21 14:41:06 +09:00
577453a4db
モジュール整理 2023-12-21 14:35:41 +09:00
814dfd23fa
依存関係にHiltを追加 2023-12-21 14:31:04 +09:00
0309864d0b
依存関係にJGitを追加 2023-12-21 14:29:53 +09:00
947c2aa2ab
インポート追加 2023-12-21 14:29:16 +09:00
0f4ce1b9b1
Impl実装 WIP 2023-12-21 14:27:28 +09:00
8a851e4f11
リポジトリ更新 2023-12-21 14:26:59 +09:00
a298247824
WIP 2023-12-21 14:09:00 +09:00
ろむねこ
acb039ee23
Merge pull request #10 from lacerta-doc/feature/library/add_document_list
Feature/library/add document list
2023-12-21 14:06:55 +09:00
59e32fe696
Factory作成 2023-12-21 14:00:22 +09:00
nero
7965ce90a6 LibraryArchiveFragmentにてコードが重複していたため、削除した 2023-12-21 13:58:20 +09:00
nero
142ca57f76 名前を修正
前のは適当でわかりにくい名前になっていたため
2023-12-21 13:50:08 +09:00
15beb0af57
Impl, Moduleクラス作成 2023-12-21 12:47:23 +09:00
14e7fbd127
パッケージ整理 2023-12-21 12:46:49 +09:00
144ff7dfd2
DocumentProcessor リポジトリ作成 2023-12-21 12:44:42 +09:00
d030847992
依存関係修正 2023-12-21 12:42:50 +09:00
eb1ad1f4af
Init 2023-12-21 12:27:50 +09:00
fc048c9bd6
Init WIP 2023-12-21 12:27:28 +09:00
c7a387df3d レイアウトマージン設定 2023-12-21 12:24:46 +09:00
732f047ff7 余白が異常に大きくなるのを修正 2023-12-21 12:24:46 +09:00
bbeba2b733 コメント追加 2023-12-21 12:24:46 +09:00
83d2d0af02 一旦保存して読み込むように 2023-12-21 12:24:46 +09:00
3518464716 権限修正 2023-12-21 12:24:46 +09:00
f9247e9114 プロバイダパスを追加 2023-12-21 12:24:46 +09:00
be610059cf プロバイダパスを追加 2023-12-21 12:24:46 +09:00
b12c689d4e AndroidManifest.xmlにFileProviderを追加 WIP 2023-12-21 12:24:46 +09:00
55ae0b541a 取得される画像の解像度が低すぎるので修正 WIP 2023-12-21 12:24:46 +09:00
f74abd11fc レイアウト修正 2023-12-21 12:24:46 +09:00
8817c62ed3 レイアウト修正 2023-12-21 12:24:46 +09:00
d5616d63b6 Revert "Revert "内部クラスじゃだめそうなので切り出し""
This reverts commit ba4ff5652e25b95aee61c6b28bfaa68645a7da78.
2023-12-21 12:24:46 +09:00
9cbf6f9d56 Revert "Revert "WIP 内部クラスじゃだめそうなので切り出し""
This reverts commit aea6ea380843027d5e9e25e5b35b5ea3ae2ca41f.
2023-12-21 12:24:46 +09:00
ad66688bf9 WIP 2023-12-21 12:24:46 +09:00
b5281443bf Revert "WIP 内部クラスじゃだめそうなので切り出し"
This reverts commit 9a71fb5c26c21e925544bfc624aa70966492e40b.
2023-12-21 12:24:46 +09:00
c616edf9f7 Revert "内部クラスじゃだめそうなので切り出し"
This reverts commit c0e64ad5fd228c66e7dfeb4c8ebf32bfe8749bcc.
2023-12-21 12:24:46 +09:00
aa4f8360dc 内部クラスじゃだめそうなので切り出し 2023-12-21 12:24:46 +09:00
99dea6d6f6 WIP 内部クラスじゃだめそうなので切り出し 2023-12-21 12:24:46 +09:00
b3dcaefede WIP 結果をプレビューするロジック実装 2023-12-21 12:24:46 +09:00
9ec45096ba 命名修正 2023-12-21 12:24:46 +09:00
a3edcf845a レイアウト修正 2023-12-21 12:24:46 +09:00
48de3f9a8d fix typo 2023-12-21 12:24:46 +09:00
979a3f8ee7 レイアウト修正 2023-12-21 12:24:46 +09:00
9c79e02cc8 レイアウト修正 2023-12-21 12:24:46 +09:00
3db91fb937 レイアウト修正 2023-12-21 12:24:46 +09:00
e9f2a6b711 レイアウト実装WIP 2023-12-21 12:24:46 +09:00
955c0122cf レイアウトファイル作成 2023-12-21 12:24:46 +09:00
d5f3d36d23 仮置きデータモデル作成 2023-12-21 12:24:46 +09:00
2c74fa3339 仮置きデータモデル作成 2023-12-21 12:24:46 +09:00
e3220910f5 レイアウトにRecyclerViewを追加 2023-12-21 12:24:46 +09:00
8e97dd6972 まちがえてrequireActivityを使っていたので修正 2023-12-21 12:24:46 +09:00
0bf6b3fa1a ログ追加 2023-12-21 12:24:46 +09:00
6ac0599f4c パーミッションを追加してみた 2023-12-21 12:24:46 +09:00
f14b9accee デバッグメニューにリンクを追加 2023-12-21 12:24:46 +09:00
da2ff27391 暫定, debugメニューのナビゲーショングラフに追加 2023-12-21 12:24:46 +09:00
60d13ac9a9 fix typo 2023-12-21 12:24:46 +09:00
011cac925a fix typo 2023-12-21 12:24:46 +09:00
4d0412e5bd debugの依存関係にスキャナコンポーネントを追加 2023-12-21 12:24:46 +09:00
be30ce2c62 ボタンアクションを実装 2023-12-21 12:24:46 +09:00
3c6541607c カメラ起動を実装 2023-12-21 12:24:46 +09:00
be80e42dc5 ArrayListに変更 2023-12-21 12:24:46 +09:00
031a1d2810 ロジック実装 WIP 2023-12-21 12:24:46 +09:00
ccbbb45f39 引数削除 2023-12-21 12:24:46 +09:00
13b53c62ec スタイル変更 2023-12-21 12:24:46 +09:00
8c83c7adcf レイアウトマージン修正 2023-12-21 12:24:46 +09:00
5617dacfe7 テーマ設定 2023-12-21 12:24:46 +09:00
ed9e20ede3 依存関係追加 2023-12-21 12:24:46 +09:00
b7f91b593e レイアウト作成 WIP 2023-12-21 12:24:46 +09:00
4a39c5c525 スキャナのスタブを実装 WIP 2023-12-21 12:24:46 +09:00
fc716df189 一旦過去に作成したフラグメントを削除 2023-12-21 12:24:46 +09:00
nero
9d108212dd データを取得するための機能実装 2023-12-20 12:52:24 +09:00
nero
e34dd65dda コードの微修正 2023-12-20 12:22:18 +09:00
nero
3386418abd 画面変移のコード作成。
データを受け取る側と渡す側を作った
2023-12-20 12:21:37 +09:00
nero
c8b99e10e8 コメントを足した。 2023-12-20 12:02:21 +09:00
nero
d8f8b87c54 フォーマットを整えた 2023-12-20 12:00:33 +09:00
nero
31d3b975ea 表示されている文字をクリックすることでそのページを表示する機能の基礎部分 2023-12-20 10:52:01 +09:00
Fuchimoto1234
a5efab5838 アイテムのレイアウトを作成 2023-12-20 10:00:16 +09:00
Fuchimoto1234
f186064f6e 途中 2023-12-19 12:56:31 +09:00
nero
866b8270fe 仮データを出力できるように調整した。 2023-12-19 12:45:41 +09:00
nero
e0af9381cb Revert "アクティビティを宣言"
This reverts commit 6d713229823168a9a2c4e7b87a5e016389aa56ed.
2023-12-19 12:24:19 +09:00
nero
e70f930929 コードを微修正 2023-12-19 12:00:56 +09:00
Fuchimoto1234
59a35cbb4a 依存関係追加 2023-12-19 10:36:27 +09:00
Fuchimoto1234
a78e60416d 依存関係追加 2023-12-19 10:34:31 +09:00
nero
ac2001142f Laibraryが表示できるようにコードを書き換えた。
・nullを検出して安全性を高めた
・RecyclerView.Adapterを使用するためのコードを追加
2023-12-19 10:15:33 +09:00
nero
6d71322982 アクティビティを宣言 2023-12-18 16:26:19 +09:00
nero
3bf14799b5 改善したもののやっぱり実行するとアプリが落ちる 2023-12-18 16:19:50 +09:00
nero
aaf4264f44 仮の画面はできたが、実行するとアプリが落ちる 2023-12-18 16:13:35 +09:00
nero
b097e8070a ListViewからRecyclerViewに変えた 2023-12-18 16:09:40 +09:00
nero
99ad244376 基本的な画面レイアウトを作成 2023-12-18 15:57:48 +09:00
nero
99817d3e33 依存関係追加
レイアウトの設定
2023-12-18 15:45:31 +09:00
Fuchimoto1234
ac5a950ce3 依存関係追加 2023-12-18 15:16:57 +09:00
nero
5a92c210f7 依存関係追加 2023-12-18 15:15:54 +09:00
447 changed files with 14451 additions and 1290 deletions

View File

@ -0,0 +1,17 @@
---
name: 不具合用テンプレート
about: 不具合用テンプレート
title: "[BUG]: "
labels: バグ
assignees: ''
---
# 概要
<!-- Issueの概要 -->
# 詳細
<!-- バグの詳細 -->
# 影響箇所
<!-- 予想される影響箇所(省略可) -->

View File

@ -0,0 +1,17 @@
---
name: 改善用テンプレート
about: 改善用テンプレート
title: "[IMPROVE]"
labels: ''
assignees: ''
---
# 概要
<!-- Issueの概要 -->
# 詳細
<!-- 改善内容の詳細 -->
# 影響箇所
<!-- 予想される影響箇所(省略可) -->

View File

@ -1,10 +1,20 @@
---
name: 新機能用テンプレート
about: 新規開発Issue用テンプレート
about: 新規用テンプレート
title: ''
labels: ''
labels: 新機能
assignees: ''
---
WIP
# 概要
<!-- Issueの概要 -->
# 詳細
<!-- 機能の詳細 -->
# 関連Issue
<!-- 関連するIssueがあれば -->
# 影響箇所
<!-- 予想される影響箇所(省略可) -->

View File

@ -0,0 +1,18 @@
# 概要
<!-- PRの概要 -->
# 関連Issue
- #000 <!-- 関連するIssueを指定(なければ省略可) -->
# 詳細
<!-- 詳細 -->
# 影響箇所
<!-- 予想される影響箇所 -->
# チェック
<!-- 参考用, 全てにチェックがついている必要があるわけではありません -->
- [ ] 機能として完成している
- [ ] WIP(Work in progress: 作業中)
- [ ] 正常にビルド/起動ができる
- [ ] 既存の機能を壊していない

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<value>
<entry key="app">
<State />
</entry>
</value>
</component>
</project>

View File

@ -4,10 +4,10 @@
<selectionStates>
<SelectionState runConfigName="app">
<option name="selectionMode" value="DROPDOWN" />
<DropdownSelection timestamp="2023-12-18T03:36:14.973846Z">
<DropdownSelection timestamp="2024-01-20T07:15:21.179573376Z">
<Target type="DEFAULT_BOOT">
<handle>
<DeviceId pluginId="PhysicalDevice" identifier="serial=ZY22H7V3G7" />
<DeviceId pluginId="LocalEmulator" identifier="path=/home/rca/.android/avd/Pixel_3a_API_34_extension_level_7_x86_64.avd" />
</handle>
</Target>
</DropdownSelection>

5
.idea/gradle.xml generated
View File

@ -4,6 +4,7 @@
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="testRunner" value="GRADLE" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleJvm" value="jbr-17" />
<option name="modules">
@ -22,13 +23,15 @@
<option value="$PROJECT_DIR$/feature/library" />
<option value="$PROJECT_DIR$/feature/scan" />
<option value="$PROJECT_DIR$/feature/search" />
<option value="$PROJECT_DIR$/feature/setting" />
<option value="$PROJECT_DIR$/model" />
<option value="$PROJECT_DIR$/processor" />
<option value="$PROJECT_DIR$/shared" />
<option value="$PROJECT_DIR$/shared/icon" />
<option value="$PROJECT_DIR$/shared/ui" />
<option value="$PROJECT_DIR$/source" />
<option value="$PROJECT_DIR$/utils" />
<option value="$PROJECT_DIR$/vcs" />
<option value="$PROJECT_DIR$/viewer2" />
</set>
</option>
<option name="resolveExternalAnnotations" value="false" />

2
.idea/misc.xml generated
View File

@ -1,6 +1,6 @@
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">

18
PULL_REQUEST_TEMPLATE.md Normal file
View File

@ -0,0 +1,18 @@
# 概要
<!-- PRの概要 -->
# 関連Issue
- #000 <!-- 関連するIssueを指定(なければ省略可) -->
# 詳細
<!-- 詳細 -->
# 影響箇所
<!-- 予想される影響箇所 -->
# チェック
<!-- 参考用, 全てにチェックがついている必要があるわけではありません -->
- [ ] 機能として完成している
- [ ] WIP(Work in progress: 作業中)
- [ ] 正常にビルド/起動ができる
- [ ] 既存の機能を壊していない

View File

@ -1,17 +1,40 @@
# Lacerta
WIP
## モジュール設計
学習に便利な機能とGit-like VCSを持ったドキュメントスキャナ (Work In Progress)
(グループワーク)
## モジュール設計
![Untitled Diagram(2)(1) drawio(1)](https://github.com/lacerta-doc/Lacerta/assets/66072112/f9b9c40f-bed0-4ade-95c1-50e28df68f35)
![Untitled Diagram(2)](https://github.com/lacerta-doc/Lacerta/assets/66072112/9daabaca-5cdc-49f8-ac66-196c588a47c9)
## メモ
- アイコン: Google Material Icons https://fonts.google.com/icons (Weight:300, Grade:0, Optical size: 24px)
## モジュール構成
### モジュール一覧
- `component` : コンポーネント
- `common` : 共通コンポーネント
- `scanner` : スキャナー
- `viewer` : ビューワー
- `data` : UIからデータを取得/保存するためのラッパーモジュール
- `feature` : 機能モジュール(ナビゲーションからみた機能で分割)
- `common`: 共通機能
- `debug`: デバッグメニュー
- `home`: ホーム画面
- `library`: ライブラリ画面
- `scan`: スキャン画面 (廃止予定)
- `search`: 検索画面
- `model` : データモデルをまとめたモジュール
- `processor` : プロセッサ(例: `DocumentProcessor` : ドキュメント処理(ドキュメントにページを追加したり更新したり))
- `shared`: 共有リソース
- `ui`: UI要素(Theme, Drawable, Colorなど)
- `source` : ソース(DB/FileManagerなど)
- `utils` : ユーティリティ(ちょっとしたユーティリティをまとめたモジュール)
## コーディング規則/推奨(WIP)
### 規則
- `// TODO`コメントには任意のsuffixを付ける
- 全員が同じ`// TODO:`を使っていると検索がむずかしくなるため
- (例: `// TODO-rca:`)
### 推奨
- マジックナンバーは控える(必要な場合もあるので)
## Thanks for
- [SDA-SE/document-scanner-android](https://github.com/SDA-SE/document-scanner-android)
-

View File

@ -14,8 +14,8 @@ android {
// , Internal, Release問わず毎回インクリメントする
// https://developer.android.com/studio/publish/versioning#versioningsettings
versionCode 1
versionName "0.1.0"
versionCode 2
versionName "0.2.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
@ -59,32 +59,6 @@ dependencies {
androidTestImplementation libs.androidx.test.ext.junit
androidTestImplementation libs.androidx.test.espresso.core
//
// Feature
implementation project(':feature:home')
implementation project(':feature:search')
implementation project(':feature:library')
implementation project(':feature:scan')
implementation project(':feature:debug') //
// // Component
// implementation project(':component:common')
// implementation project(':component:scanner')
// implementation project(':component:viewer')
// // Data
// implementation project(':data:repository')
//
// // Source
// implementation project(':data:source:database')
// implementation project(':data:source:preference')
//
implementation project(':data')
implementation project(':shared:ui')
implementation project(':shared:icon')
// Hilt (DI)
implementation libs.com.google.dagger.hilt.android
annotationProcessor libs.com.google.dagger.hilt.compiler
@ -94,4 +68,20 @@ dependencies {
implementation libs.navigation.ui
implementation libs.navigation.dynamic.features.fragment
// Feature
implementation project(':feature:home')
implementation project(':feature:search')
implementation project(':feature:library')
implementation project(':feature:scan')
implementation project(':feature:debug') //
implementation project(':feature:setting') //
implementation project(':data')
implementation project(':shared:ui')
implementation project(':model')
implementation project(':utils')
implementation project(':component:scanner')
}

View File

@ -2,14 +2,25 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-permission android:name="android.permission.CAMERA" />
<queries>
<intent>
<action android:name="android.media.action.IMAGE_CAPTURE" />
</intent>
</queries>
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:icon="@mipmap/ic_launcher_final"
android:name=".LacertaApplication"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:roundIcon="@mipmap/ic_launcher_final_round"
android:supportsRtl="true"
android:theme="@style/Theme.Lacerta"
tools:targetApi="31">
@ -22,6 +33,16 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="one.nem.lacerta.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
</application>
</manifest>

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

@ -1,10 +1,12 @@
package one.nem.lacerta;
import android.app.Application;
import android.util.Log;
import com.google.android.material.color.DynamicColors;
import dagger.hilt.android.HiltAndroidApp;
import one.nem.lacerta.utils.FeatureSwitch;
@HiltAndroidApp
public class LacertaApplication extends Application {
@ -12,7 +14,17 @@ public class LacertaApplication extends Application {
public void onCreate() {
super.onCreate();
// DynamicColorを有効化
DynamicColors.applyToActivitiesIfAvailable(this);
if (DynamicColors.isDynamicColorAvailable()) {
Log.d("DynamicColors", "DynamicColors is available. Applying to activities...");
if (FeatureSwitch.Meta.disableDynamicColor) {
Log.d("DynamicColors", "DynamicColors is disabled by FeatureSwitch.");
} else {
DynamicColors.applyToActivitiesIfAvailable(this);
}
} else {
Log.d("DynamicColors", "DynamicColors is not available.");
}
}
}

View File

@ -1,40 +1,200 @@
package one.nem.lacerta;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.navigation.NavController;
import androidx.navigation.NavOptions;
import androidx.navigation.fragment.NavHostFragment;
import androidx.navigation.ui.NavigationUI;
import android.app.ActivityOptions;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
import one.nem.lacerta.component.scanner.ScannerManagerActivity;
import one.nem.lacerta.model.FragmentNavigation;
import one.nem.lacerta.model.pref.FeatureSwitchOverride;
import one.nem.lacerta.utils.FeatureSwitch;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import java.io.NotActiveException;
import dagger.hilt.android.AndroidEntryPoint;
import one.nem.lacerta.utils.repository.SharedPrefUtils;
import javax.inject.Inject;
@AndroidEntryPoint
public class MainActivity extends AppCompatActivity {
public class MainActivity extends AppCompatActivity implements FragmentNavigation {
@Inject
SharedPrefUtils sharedPrefUtils;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Debug
FragmentManager supportFragmentManager = getSupportFragmentManager();
NavHostFragment navHostFragment = (NavHostFragment) supportFragmentManager.findFragmentById(R.id.nav_host_fragment);
NavController navController = navHostFragment.getNavController();
BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_nav);
NavigationUI.setupWithNavController(bottomNavigationView, navController);
// Initialize app
if (sharedPrefUtils.getIsFirstLaunch()) initializeApp();
// Init navigation
try {
FragmentManager supportFragmentManager = getSupportFragmentManager();
NavHostFragment navHostFragment = (NavHostFragment) supportFragmentManager.findFragmentById(R.id.nav_host_fragment);
assert navHostFragment != null;
NavController navController = navHostFragment.getNavController();
NavigationUI.setupWithNavController(bottomNavigationView, navController);
bottomNavigationView.setOnItemSelectedListener(item -> {
NavOptions navOptions = new NavOptions.Builder()
.setLaunchSingleTop(true)
.setEnterAnim(androidx.navigation.ui.R.anim.nav_default_enter_anim)
.setExitAnim(androidx.navigation.ui.R.anim.nav_default_exit_anim)
.setPopEnterAnim(androidx.navigation.ui.R.anim.nav_default_pop_enter_anim)
.setPopExitAnim(androidx.navigation.ui.R.anim.nav_default_pop_exit_anim)
.build();
navController.navigate(item.getItemId(), null, navOptions);
return true;
});
}
catch (Exception e) {
Log.e("Init", "Failed to init navigation");
Log.e("Init", "Searchable Error code: " + "894b5941-3bc0-46fe-b752-0dbc88be29a8");
Toast.makeText(this, "Failed to init navigation", Toast.LENGTH_LONG).show();
finish(); // Exit app
}
// Apply feature switch
applyFeatureSwitch(bottomNavigationView, FeatureSwitchOverride.ENABLE_SEARCH, FeatureSwitch.FeatureMaster.enableSearch, one.nem.lacerta.feature.search.R.id.feature_search_navigation);
applyFeatureSwitch(bottomNavigationView, FeatureSwitchOverride.ENABLE_DEBUG_MENU, FeatureSwitch.FeatureMaster.enableDebugMenu, one.nem.lacerta.feature.debug.R.id.feature_debug_navigation);
// Set navigation bar color
getWindow().setNavigationBarColor(ContextCompat.getColor(this, one.nem.lacerta.shared.ui.R.color.colorSecondaryContainer));
// Set status bar color
getWindow().setStatusBarColor(ContextCompat.getColor(this, one.nem.lacerta.shared.ui.R.color.colorSurface));
// Fab
findViewById(R.id.scanFab).setOnClickListener(v -> {
Toast.makeText(this, "Scan", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(this.getApplicationContext(), ScannerManagerActivity.class);
// startActivity(intent);
startActivity(intent, ActivityOptions.makeCustomAnimation(this, one.nem.lacerta.shared.ui.R.anim.nav_up_enter_anim, one.nem.lacerta.shared.ui.R.anim.nav_up_exit_anim).toBundle());
});
Toast.makeText(this, "testMessage", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 1) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "Permission granted", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Permission denied", Toast.LENGTH_SHORT).show();
Toast.makeText(this, "カメラの権限は必須です.", Toast.LENGTH_LONG).show();
finish(); // Exit app
}
}
}
private void initializeApp() {
Log.d("Init", "Initializing app");
// Set feature switch override to default value
sharedPrefUtils.setFeatureSwitchOverride(FeatureSwitchOverride.ENABLE_SEARCH, FeatureSwitch.FeatureMaster.enableSearch);
sharedPrefUtils.setFeatureSwitchOverride(FeatureSwitchOverride.ENABLE_DEBUG_MENU, FeatureSwitch.FeatureMaster.enableDebugMenu);
// Set isFirstLaunch to false
sharedPrefUtils.setIsFirstLaunch(false);
}
private void applyFeatureSwitch(BottomNavigationView bottomNavigationView, FeatureSwitchOverride featureSwitchOverride, boolean defaultValue, int menuId) {
boolean isEnabled = FeatureSwitch.Meta.canOverrideSwitch ? sharedPrefUtils.getFeatureSwitchOverride(featureSwitchOverride) : defaultValue;
if (!isEnabled) bottomNavigationView.getMenu().removeItem(menuId);
}
@Override
public void navigateToFragment(Fragment fragment) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.nav_host_fragment, fragment)
.addToBackStack(null)
.commit();
}
@Override
public void navigateToFragment(Fragment fragment, boolean addToBackStack) {
if (addToBackStack) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.nav_host_fragment, fragment)
.addToBackStack(null)
.commit();
} else {
getSupportFragmentManager().beginTransaction()
.replace(R.id.nav_host_fragment, fragment)
.commit();
}
}
@Override
public void navigateToFragment(Fragment fragment, boolean addToBackStack, boolean clearBackStack) {
if (clearBackStack) {
getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
if (addToBackStack) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.nav_host_fragment, fragment)
.addToBackStack(null)
.commit();
} else {
getSupportFragmentManager().beginTransaction()
.replace(R.id.nav_host_fragment, fragment)
.commit();
}
}
public void navigateToFragmentAlternate(Fragment fragment, boolean addToBackStack) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
// get the current fragment
Fragment currentFragment = getSupportFragmentManager().getPrimaryNavigationFragment();
// hide the current fragment
if (currentFragment != null) {
transaction.hide(currentFragment);
}
// Add the new fragment
transaction.add(R.id.nav_host_fragment, fragment);
// Add the transaction to the back stack if needed
if (addToBackStack) {
transaction.addToBackStack(null);
}
// Commit the transaction
transaction.commit();
// Update the primary navigation fragment
getSupportFragmentManager().beginTransaction().setPrimaryNavigationFragment(fragment).commit();
}
}

View File

@ -0,0 +1,15 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:tint="?attr/colorControlNormal">
<group android:scaleX="0.37"
android:scaleY="0.37"
android:translateX="302.4"
android:translateY="302.4">
<path
android:fillColor="@android:color/white"
android:pathData="M92.12,225.15L92.12,51.92L265.15,51.92L265.15,107.88L148.08,107.88L148.08,225.15L92.12,225.15ZM812.12,225.15L812.12,107.88L694.85,107.88L694.85,51.92L868.08,51.92L868.08,225.15L812.12,225.15ZM92.12,907.88L92.12,734.85L148.08,734.85L148.08,851.92L265.15,851.92L265.15,907.88L92.12,907.88ZM694.85,907.88L694.85,851.92L812.12,851.92L812.12,734.85L868.08,734.85L868.08,907.88L694.85,907.88ZM268.08,719.61Q268.08,724.42 271.83,728.17Q275.58,731.92 280.39,731.92L679.81,731.92Q684.42,731.92 688.27,728.17Q692.12,724.42 692.12,719.61L692.12,240.19Q692.12,235.58 688.27,231.73Q684.42,227.88 679.81,227.88L280.39,227.88Q275.58,227.88 271.83,231.73Q268.08,235.58 268.08,240.19L268.08,719.61ZM280.39,787.88Q251.74,787.88 231.93,768.07Q212.12,748.26 212.12,719.61L212.12,240.19Q212.12,211.76 231.93,191.84Q251.74,171.92 280.39,171.92L679.81,171.92Q708.24,171.92 728.16,191.84Q748.08,211.76 748.08,240.19L748.08,719.61Q748.08,748.26 728.16,768.07Q708.24,787.88 679.81,787.88L280.39,787.88ZM372.12,387.88L588.08,387.88L588.08,331.92L372.12,331.92L372.12,387.88ZM372.12,507.88L588.08,507.88L588.08,451.92L372.12,451.92L372.12,507.88ZM372.12,627.88L588.08,627.88L588.08,571.92L372.12,571.92L372.12,627.88ZM268.08,719.61L268.08,240.19Q268.08,235.58 268.08,231.73Q268.08,227.88 268.08,227.88L268.08,227.88Q268.08,227.88 268.08,231.73Q268.08,235.58 268.08,240.19L268.08,719.61Q268.08,724.42 268.08,728.17Q268.08,731.92 268.08,731.92L268.08,731.92Q268.08,731.92 268.08,728.17Q268.08,724.42 268.08,719.61Z"/>
</group>
</vector>

View File

@ -0,0 +1,15 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="#5F4769">
<group android:scaleX="0.377"
android:scaleY="0.377"
android:translateX="7.476"
android:translateY="7.476">
<path
android:fillColor="@android:color/white"
android:pathData="M7,3H4v3H2V1h5V3zM22,6V1h-5v2h3v3H22zM7,21H4v-3H2v5h5V21zM20,18v3h-3v2h5v-5H20zM19,18c0,1.1 -0.9,2 -2,2H7c-1.1,0 -2,-0.9 -2,-2V6c0,-1.1 0.9,-2 2,-2h10c1.1,0 2,0.9 2,2V18zM15,8H9v2h6V8zM15,11H9v2h6V11zM15,14H9v2h6V14z"/>
</group>
</vector>

View File

@ -18,15 +18,33 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:navGraph="@navigation/main_nav"
tools:layout="@layout/fragment_debug_menu_container" />
tools:layout="@layout/fragment_home_top" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_nav"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@color/colorSecondaryContainer"
app:itemIconTint="@color/colorOnSecondaryContainer"
app:itemTextColor="@color/colorOnSecondaryContainer"
app:itemActiveIndicatorStyle="@style/Lacerta.Custom.Indicator"
app:labelVisibilityMode="selected"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:menu="@menu/bottom_nav_menu"/>
app:menu="@menu/bottom_nav_menu" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/scanFab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="32dp"
android:layout_marginBottom="32dp"
android:clickable="true"
app:layout_constraintBottom_toTopOf="@+id/bottom_nav"
app:layout_constraintEnd_toEndOf="parent"
app:srcCompat="@drawable/ic_baseline_add_24" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -4,17 +4,26 @@
<item
android:id="@id/feature_home_navigation"
android:icon="@drawable/home_24px"
android:title="Home"/>
android:title="@string/home_title"/>
<item
android:id="@id/feature_search_navigation"
android:icon="@drawable/search_24px"
android:title="@string/search_title"/>
<item
android:id="@id/feature_library_navigation"
android:icon="@drawable/folder_24px"
android:title="Library"/>
android:title="@string/library_title"/>
<item
android:id="@id/feature_debug_navigation"
android:icon="@drawable/developer_mode_24px"
android:title="Debug menu"/>
android:title="@string/debug_menu_title" />
<item
android:id="@id/feature_setting_navigation"
android:icon="@drawable/settings_24px"
android:title="@string/setting_title"/>
</menu>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_final_background"/>
<foreground android:drawable="@drawable/ic_launcher_final_foreground"/>
</adaptive-icon>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_final_background"/>
<foreground android:drawable="@drawable/ic_launcher_final_foreground"/>
</adaptive-icon>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_temp_background"/>
<foreground android:drawable="@drawable/ic_launcher_temp_foreground"/>
</adaptive-icon>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_temp_background"/>
<foreground android:drawable="@drawable/ic_launcher_temp_foreground"/>
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 888 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 768 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 728 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 630 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1004 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

View File

@ -2,7 +2,7 @@
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/app_main_nav"
app:startDestination="@id/feature_debug_navigation">
app:startDestination="@id/feature_home_navigation">
<include app:graph="@navigation/feature_debug_navigation" />
@ -10,5 +10,9 @@
<include app:graph="@navigation/feature_home_navigation" />
<include app:graph="@navigation/feature_search_navigation" />
<include app:graph="@navigation/feature_setting_navigation" />
</navigation>

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_final_background">#B8D3C3</color>
</resources>

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_temp_background">#A386EB</color>
</resources>

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<paths>
<cache-path name="cache" path="." />
</paths>

View File

@ -1,10 +1,11 @@
plugins {
alias(libs.plugins.com.android.library)
id 'com.google.dagger.hilt.android'
}
android {
namespace 'one.nem.lacerta.component.common'
compileSdk 33
compileSdk 34
defaultConfig {
minSdk 26
@ -32,4 +33,15 @@ dependencies {
testImplementation libs.junit
androidTestImplementation libs.androidx.test.ext.junit
androidTestImplementation libs.androidx.test.espresso.core
// Hilt (DI)
implementation libs.com.google.dagger.hilt.android
annotationProcessor libs.com.google.dagger.hilt.compiler
implementation project(':shared:ui')
implementation project(':utils')
implementation project(':model')
implementation project(':data')
implementation project(':vcs')
}

View File

@ -0,0 +1,83 @@
package one.nem.lacerta.component.common;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import one.nem.lacerta.component.common.model.DocumentTagApplyTagDialogExtendedModel;
import one.nem.lacerta.model.document.tag.DocumentTag;
public class LacertaApplyTagAdapter extends RecyclerView.Adapter<LacertaApplyTagAdapter.LacertaApplyTagViewHolder>{
// Listener
public interface LacertaApplyTagDialogListener {
void itemChecked(View view, String tagId);
void itemUnchecked(View view, String tagId);
}
// Variables
private ArrayList<DocumentTagApplyTagDialogExtendedModel> documentTagArrayList;
private LacertaApplyTagDialogListener listener;
// Setter
public LacertaApplyTagAdapter setListener(LacertaApplyTagDialogListener listener) {
this.listener = listener;
return this;
}
public LacertaApplyTagAdapter setDocumentTagArrayList(ArrayList<DocumentTagApplyTagDialogExtendedModel> documentTagArrayList) {
this.documentTagArrayList = documentTagArrayList;
return this;
}
// Empty constructor
public LacertaApplyTagAdapter() {
}
@NonNull
@Override
public LacertaApplyTagAdapter.LacertaApplyTagViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.apply_tag_list_item, parent, false);
return new LacertaApplyTagAdapter.LacertaApplyTagViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull LacertaApplyTagAdapter.LacertaApplyTagViewHolder holder, int position) {
DocumentTagApplyTagDialogExtendedModel documentTag = documentTagArrayList.get(position);
if (holder.checkBox == null) {
Log.d("LacertaApplyTagAdapter", "onBindViewHolder: holder.checkBox is null");
}
holder.checkBox.setText(documentTag.getName());
holder.checkBox.setChecked(documentTag.getIsChecked());
holder.checkBox.setOnCheckedChangeListener((buttonView, isChecked) -> {
if (isChecked) {
listener.itemChecked(buttonView, documentTag.getId());
} else {
listener.itemUnchecked(buttonView, documentTag.getId());
}
});
}
@Override
public int getItemCount() {
return documentTagArrayList == null ? 0 : documentTagArrayList.size();
}
public class LacertaApplyTagViewHolder extends RecyclerView.ViewHolder {
CheckBox checkBox;
public LacertaApplyTagViewHolder(@NonNull View itemView) {
super(itemView);
checkBox = itemView.findViewById(R.id.tag_check_box);
}
}
}

View File

@ -0,0 +1,184 @@
package one.nem.lacerta.component.common;
import android.app.Dialog;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.CheckBox;
import android.widget.Checkable;
import android.widget.EditText;
import android.widget.Toast;
import androidx.fragment.app.DialogFragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionException;
import java.util.stream.Collectors;
import javax.inject.Inject;
import dagger.hilt.android.AndroidEntryPoint;
import one.nem.lacerta.component.common.model.DocumentTagApplyTagDialogExtendedModel;
import one.nem.lacerta.data.Document;
import one.nem.lacerta.data.LacertaLibrary;
import one.nem.lacerta.model.document.tag.DocumentTag;
import one.nem.lacerta.utils.LacertaLogger;
@AndroidEntryPoint
public class LacertaApplyTagDialog extends DialogFragment {
@Inject
LacertaLogger logger;
@Inject
LacertaLibrary lacertaLibrary;
// Listener
public interface LacertaApplyTagDialogListener {
void onDialogPositiveClick(ArrayList<DocumentTag> appliedTags);
void onDialogNegativeClick();
}
// Variables
private String title;
private String message;
private String positiveButtonText;
private String negativeButtonText;
private String documentId;
private LacertaApplyTagDialogListener listener;
private ArrayList<DocumentTag> registeredTags;
private ArrayList<DocumentTag> appliedTags;
// Setter
public LacertaApplyTagDialog setListener(LacertaApplyTagDialogListener listener) {
this.listener = listener;
return this;
}
public LacertaApplyTagDialog setTitle(String title) {
this.title = title;
return this;
}
public LacertaApplyTagDialog setMessage(String message) {
this.message = message;
return this;
}
public LacertaApplyTagDialog setPositiveButtonText(String positiveButtonText) {
this.positiveButtonText = positiveButtonText;
return this;
}
public LacertaApplyTagDialog setNegativeButtonText(String negativeButtonText) {
this.negativeButtonText = negativeButtonText;
return this;
}
public LacertaApplyTagDialog setDocumentId(String documentId) {
this.documentId = documentId;
return this;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getActivity());
LayoutInflater inflater = requireActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.lacerta_dialog_apply_tag, null);
// RecyclerView
RecyclerView recyclerView = view.findViewById(R.id.apply_tag_list);
LacertaApplyTagAdapter lacertaApplyTagAdapter = new LacertaApplyTagAdapter();
lacertaApplyTagAdapter.setListener(new LacertaApplyTagAdapter.LacertaApplyTagDialogListener() {
@Override
public void itemChecked(View view, String tagId) {
applyChangeToVariable(true, tagId);
}
@Override
public void itemUnchecked(View view, String tagId) {
applyChangeToVariable(false, tagId);
}
});
recyclerView.setAdapter(lacertaApplyTagAdapter);
recyclerView.setLayoutManager(new LinearLayoutManager(view.getContext()));
getDocumentTagArrayList(documentId).thenAccept(documentTagArrayList -> {
lacertaApplyTagAdapter.setDocumentTagArrayList(documentTagArrayList);
lacertaApplyTagAdapter.notifyDataSetChanged(); // TODO-rca: アニメーション
});
// Set the dialog title
builder.setTitle(title)
.setMessage(message)
.setView(view)
.setPositiveButton(positiveButtonText == null ? "OK" : positiveButtonText, (dialog, id) -> {
// Send the positive button event back to the host activity
listener.onDialogPositiveClick(this.appliedTags);
})
.setNegativeButton(negativeButtonText == null ? "Cancel" : negativeButtonText, (dialog, id) -> {
// Send the negative button event back to the host activity
listener.onDialogNegativeClick();
});
return builder.create();
}
private void applyChangeToVariable(boolean isChecked, String tagId) {
if (isChecked) {
this.registeredTags.stream().filter(tag -> tag.getId().equals(tagId)).findFirst().ifPresent(tag -> this.appliedTags.add(tag));
} else {
this.appliedTags.stream().filter(tag -> tag.getId().equals(tagId)).findFirst().ifPresent(tag -> this.appliedTags.remove(tag));
}
}
private CompletableFuture<ArrayList<DocumentTagApplyTagDialogExtendedModel>> getDocumentTagArrayList(String documentId) {
return CompletableFuture.supplyAsync(() -> {
ArrayList<DocumentTagApplyTagDialogExtendedModel> documentTagArrayList = new ArrayList<>();
setRegisteredTagList().thenRun(() -> setAppliedTagList(documentId).join()).thenAccept(Void -> {
logger.debug("getDocumentTagArrayList", "this.registeredTags.size(): " + this.registeredTags.size());
logger.debug("getDocumentTagArrayList", "this.appliedTags.size(): " + this.appliedTags.size());
documentTagArrayList.addAll(this.registeredTags.stream().map(tag -> {
DocumentTagApplyTagDialogExtendedModel documentTag = new DocumentTagApplyTagDialogExtendedModel(
new DocumentTag(tag.getId(), tag.getName(), tag.getColor()),
this.appliedTags.stream().anyMatch(appliedTag -> appliedTag.getId().equals(tag.getId()))
);
return documentTag;
}).collect(Collectors.toCollection(ArrayList::new)));
}).join();
return documentTagArrayList;
});
}
private CompletableFuture<Void> setRegisteredTagList() {
return CompletableFuture.runAsync(() -> {
this.registeredTags = new ArrayList<>();
this.lacertaLibrary.getTagList().thenAccept(documentTagList -> {
for (int i = 0; i < documentTagList.size(); i++) {
this.registeredTags.add(new DocumentTag(documentTagList.get(i).getId(), documentTagList.get(i).getName(), documentTagList.get(i).getColor()));
}
}).join();
});
}
private CompletableFuture<Void> setAppliedTagList(String documentId) {
return CompletableFuture.runAsync(() -> {
this.appliedTags = new ArrayList<>();
this.lacertaLibrary.getAppliedTagList(documentId).thenAccept(documentTagList -> {
for (int i = 0; i < documentTagList.size(); i++) {
this.appliedTags.add(new DocumentTag(documentTagList.get(i).getId(), documentTagList.get(i).getName(), documentTagList.get(i).getColor()));
}
}).join();
});
}
}

View File

@ -0,0 +1,87 @@
package one.nem.lacerta.component.common;
import android.app.Dialog;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;
import androidx.fragment.app.DialogFragment;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
public class LacertaCreateTagDialog extends DialogFragment {
private String title;
private String message;
private String positiveButtonText;
private String negativeButtonText;
private LacertaCreateTagDialogListener listener;
// Setter
public LacertaCreateTagDialog setListener(LacertaCreateTagDialogListener listener) {
this.listener = listener;
return this;
}
public LacertaCreateTagDialog setTitle(String title) {
this.title = title;
return this;
}
public LacertaCreateTagDialog setMessage(String message) {
this.message = message;
return this;
}
public LacertaCreateTagDialog setPositiveButtonText(String positiveButtonText) {
this.positiveButtonText = positiveButtonText;
return this;
}
public LacertaCreateTagDialog setNegativeButtonText(String negativeButtonText) {
this.negativeButtonText = negativeButtonText;
return this;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getActivity());
LayoutInflater inflater = requireActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.lacerta_dialog_create_tag, null);
// TextEdit
EditText tag_name_edit_text = view.findViewById(R.id.tag_name_edit_text);
com.google.android.material.textfield.TextInputLayout tag_name_text_input_layout = view.findViewById(R.id.tag_name_text_input_layout);
tag_name_text_input_layout.setHint("タグの名前");
EditText tag_color_edit_text = view.findViewById(R.id.tag_color_edit_text);
com.google.android.material.textfield.TextInputLayout tag_color_text_input_layout = view.findViewById(R.id.tag_color_text_input_layout);
tag_color_text_input_layout.setHint("タグの色(カラーコード)");
builder.setTitle(this.title == null ? "Create new tag" : this.title);
// Button
builder.setPositiveButton(positiveButtonText == null ? "OK" : positiveButtonText, (dialog, which) -> {
String tag_name = tag_name_edit_text.getText().toString();
String tag_color = tag_color_edit_text.getText().toString();
if (listener != null) {
listener.onPositiveClick(tag_name, tag_color);
}
});
builder.setNegativeButton(negativeButtonText == null ? "Cancel" : negativeButtonText, (dialog, which) -> {
if (listener != null) {
listener.onNegativeClick();
}
});
builder.setView(view);
return builder.create();
}
}

View File

@ -0,0 +1,8 @@
package one.nem.lacerta.component.common;
public interface LacertaCreateTagDialogListener {
void onPositiveClick(String tag_name, String tag_color);
void onNegativeClick();
}

View File

@ -0,0 +1,4 @@
package one.nem.lacerta.component.common;
public class LacertaEditMetaDialog {
}

View File

@ -0,0 +1,163 @@
package one.nem.lacerta.component.common;
import android.app.Dialog;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import androidx.fragment.app.DialogFragment;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import javax.inject.Inject;
import dagger.hilt.android.AndroidEntryPoint;
import one.nem.lacerta.data.LacertaLibrary;
import one.nem.lacerta.model.ListItemType;
import one.nem.lacerta.utils.LacertaLogger;
@AndroidEntryPoint
public class LacertaSelectDirDialog extends DialogFragment {
@Inject
LacertaLibrary lacertaLibrary;
@Inject
LacertaLogger logger;
private LacertaSelectDirDialogListener listener;
private String title;
private String message;
private String positiveButtonText;
private String negativeButtonText;
private SelectDirDialogItemAdapter adapter;
private RecyclerView recyclerView;
private TextView current_dir_text_view;
// Setter
public LacertaSelectDirDialog setListener(LacertaSelectDirDialogListener listener) {
this.listener = listener;
return this;
}
public LacertaSelectDirDialog setTitle(String title) {
this.title = title;
return this;
}
public LacertaSelectDirDialog setMessage(String message) {
this.message = message;
return this;
}
public LacertaSelectDirDialog setPositiveButtonText(String positiveButtonText) {
this.positiveButtonText = positiveButtonText;
return this;
}
public LacertaSelectDirDialog setNegativeButtonText(String negativeButtonText) {
this.negativeButtonText = negativeButtonText;
return this;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
super.onCreateDialog(savedInstanceState);
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getActivity());
LayoutInflater inflater = requireActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.lacerta_dialog_select_dir, null);
// 高さを画面の40%にする
int height = (int) (getResources().getDisplayMetrics().heightPixels * 0.4);
view.setMinimumHeight(height);
this.recyclerView = view.findViewById(R.id.select_dir_recycler_view);
this.current_dir_text_view = view.findViewById(R.id.current_dir_text_view);
this.adapter = new SelectDirDialogItemAdapter(new LacertaSelectDirDialogInternalEventListener() {
@Override
public void onDirSelected(String name, String itemId) {
showRecyclerViewItem(itemId);
}
@Override
public void onBackSelected(String parentId) {
showRecyclerViewItem(parentId);
}
});
this.recyclerView.setAdapter(this.adapter);
builder.setView(view);
showRecyclerViewItem(null); // get root folder
builder.setTitle(this.title == null ? "Select a directory" : this.title);
builder.setMessage(this.message == null ? "Select a directory" : this.message);
builder.setPositiveButton(this.positiveButtonText == null ? "OK" : this.positiveButtonText, (dialog, which) -> {
if (listener != null) {
listener.onDirSelected(
adapter.getCurrentPageTitle() == null ? null : adapter.getCurrentPageTitle(),
adapter.getCurrentId() == null ? null : adapter.getCurrentId());
}
});
builder.setNegativeButton(this.negativeButtonText == null ? "Cancel" : this.negativeButtonText, (dialog, which) -> {
if (listener != null) {
listener.onCanceled();
}
});
return builder.create();
}
private void showRecyclerViewItem(String targetDirId) {
lacertaLibrary.getPublicPath(targetDirId, ListItemType.ITEM_TYPE_FOLDER).thenAccept(publicPath -> {
getActivity().runOnUiThread(() -> {
if (publicPath != null) {
current_dir_text_view.setText("/" + publicPath.getStringPath()); // TODO-rca: PublicPathの実装を修正する
} else {
current_dir_text_view.setText("/");
}
});
});
lacertaLibrary.getFolderList(targetDirId).thenAccept(libraryItemPage -> {
getActivity().runOnUiThread(() -> {
int currentCount = adapter.getItemCount();
String currentDirId = adapter.getCurrentId();
if (currentDirId == null) {
// Rootが関わる推移 (Rootからの推移)
adapter.setListItems(libraryItemPage);
adapter.notifyItemRangeRemoved(0, currentCount);
adapter.notifyItemRangeInserted(0, libraryItemPage.getListItems().size());
} else if (libraryItemPage.getPageId() == null) {
// Rootが関わる推移 (Rootへの推移)
adapter.setListItems(libraryItemPage);
adapter.notifyItemRangeRemoved(0, currentCount);
adapter.notifyItemRangeInserted(0, libraryItemPage.getListItems().size());
} else if (libraryItemPage.getPageId() != null) {
// Rootが関わらない推移
adapter.setListItems(libraryItemPage);
adapter.notifyItemRangeRemoved(1, currentCount);
adapter.notifyItemRangeInserted(1, libraryItemPage.getListItems().size());
} else {
// その他の遷移(安全側に倒すため全アイテム更新)
logger.warn("LacertaSelectDirDialog", "Unknown transition.");
logger.warn("LacertaSelectDirDialog", "currentDirId: " + currentDirId + ", libraryItemPage.getPageId(): " + libraryItemPage.getPageId());
adapter.setListItems(libraryItemPage);
adapter.notifyItemRangeRemoved(0, currentCount);
adapter.notifyItemRangeInserted(0, libraryItemPage.getListItems().size());
}
});
});
}
}

View File

@ -0,0 +1,6 @@
package one.nem.lacerta.component.common;
public interface LacertaSelectDirDialogInternalEventListener {
void onDirSelected(String name, String itemId);
void onBackSelected(String parentId);
}

View File

@ -0,0 +1,7 @@
package one.nem.lacerta.component.common;
public interface LacertaSelectDirDialogListener {
void onDirSelected(String name, String itemId);
void onCanceled();
}

View File

@ -0,0 +1,112 @@
package one.nem.lacerta.component.common;
import android.app.Dialog;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Toast;
import androidx.fragment.app.DialogFragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import javax.inject.Inject;
import dagger.hilt.android.AndroidEntryPoint;
import one.nem.lacerta.data.LacertaLibrary;
import one.nem.lacerta.utils.LacertaLogger;
import one.nem.lacerta.vcs.LacertaVcs;
import one.nem.lacerta.vcs.factory.LacertaVcsFactory;
@AndroidEntryPoint
public class LacertaSelectRevDialog extends DialogFragment {
@Inject
LacertaVcsFactory lacertaVcsFactory;
@Inject
LacertaLogger logger;
String title;
String documentId;
String message;
String negativeButtonText;
LacertaSelectRevDialogListener listener;
public LacertaSelectRevDialog setTitle(String title) {
this.title = title;
return this;
}
public LacertaSelectRevDialog setDocumentId(String documentId) {
this.documentId = documentId;
return this;
}
public LacertaSelectRevDialog setMessage(String message) {
this.message = message;
return this;
}
public LacertaSelectRevDialog setNegativeButtonText(String negativeButtonText) {
this.negativeButtonText = negativeButtonText;
return this;
}
public LacertaSelectRevDialog setListener(LacertaSelectRevDialogListener listener) {
this.listener = listener;
return this;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
super.onCreateDialog(savedInstanceState);
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getActivity());
LayoutInflater inflater = requireActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.lacerta_dialog_select_rev, null);
int height = (int) (getResources().getDisplayMetrics().heightPixels * 0.4);
view.setMinimumHeight(height);
RecyclerView recyclerView = view.findViewById(R.id.select_rev_recycler_view);
SelectRevDialogItemAdapter adapter = new SelectRevDialogItemAdapter(revId -> {
if (listener != null) {
listener.onItemSelected(revId);
dismiss();
}
});
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
builder.setView(view);
if (this.documentId == null) {
logger.error("SelectRevDialog", "documentId is null");
logger.e_code("0296fb0c-07a3-4971-a280-bd1a61461bb7");
Toast.makeText(getContext(), "Sorry, something went wrong", Toast.LENGTH_SHORT).show();
dismiss();
}
LacertaVcs lacertaVcs = lacertaVcsFactory.create(this.documentId);
lacertaVcs.getRevisionHistory().thenAccept(revList -> {
adapter.setRevList(revList);
adapter.notifyDataSetChanged(); // TODO-rca:時間に応じてアニメーションをつける
});
builder.setTitle(title == null ? "Select Rev" : title);
builder.setMessage(message == null ? "Select Rev" : message);
builder.setNegativeButton(negativeButtonText == null ? "Cancel" : negativeButtonText, (dialog, which) -> {
if (listener != null) {
listener.onDialogCanceled();
dismiss();
}
});
return builder.create();
}
}

View File

@ -0,0 +1,6 @@
package one.nem.lacerta.component.common;
public interface LacertaSelectRevDialogInternalListener {
void onItemSelected(String revId);
}

View File

@ -0,0 +1,8 @@
package one.nem.lacerta.component.common;
public interface LacertaSelectRevDialogListener {
void onItemSelected(String revId);
void onDialogCanceled();
}

View File

@ -0,0 +1,100 @@
package one.nem.lacerta.component.common;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import one.nem.lacerta.model.LibraryItemPage;
import one.nem.lacerta.model.ListItem;
import one.nem.lacerta.model.ListItemType;
public class SelectDirDialogItemAdapter extends RecyclerView.Adapter<SelectDirDialogItemAdapter.SelectDirDialogItemViewHolder> {
private LibraryItemPage libraryItemPage;
LacertaSelectDirDialogInternalEventListener listener;
public SelectDirDialogItemAdapter(LacertaSelectDirDialogInternalEventListener listener) {
this.listener = listener;
}
public void setListItems(LibraryItemPage libraryItemPage) {
this.libraryItemPage = libraryItemPage;
if (this.libraryItemPage.getPageId() != null) { // ルートディレクトリの場合は戻るボタンを表示しない
this.libraryItemPage.getListItems().add(0, new ListItem("戻る", " ", ListItemType.ITEM_TYPE_ACTION_BACK, null));
}
}
@NonNull
@Override
public SelectDirDialogItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(one.nem.lacerta.shared.ui.R.layout.common_list_item, parent, false);
return new SelectDirDialogItemViewHolder(view);
}
@Override
public void onBindViewHolder(SelectDirDialogItemViewHolder holder, int position) {
ListItem listItem = libraryItemPage.getListItems().get(position);
holder.title.setText(listItem.getTitle());
holder.description.setText(listItem.getDescription());
holder.icon.setImageResource(listItem.getItemType().getIconId());
if(listItem.getItemType() == ListItemType.ITEM_TYPE_ACTION_BACK) {
holder.itemView.setOnClickListener(v -> listener.onBackSelected(this.libraryItemPage.getParentId()));
} else {
holder.itemView.setOnClickListener(v -> listener.onDirSelected(listItem.getTitle(), listItem.getItemId()));
}
}
@Override
public int getItemCount() {
return this.libraryItemPage == null ? 0 : this.libraryItemPage.getListItems().size();
}
public String getCurrentId() {
if (this.libraryItemPage == null) {
return null;
} else {
if (this.libraryItemPage.getPageId() == null) {
return null;
} else {
return this.libraryItemPage.getPageId();
}
}
}
public String getCurrentPageTitle() {
if (this.libraryItemPage == null) {
return null;
} else {
if (this.libraryItemPage.getPageId() == null) {
return null;
} else {
return this.libraryItemPage.getPageTitle();
}
}
}
public static class SelectDirDialogItemViewHolder extends RecyclerView.ViewHolder {
TextView title;
TextView description;
ImageView icon;
public SelectDirDialogItemViewHolder(@NonNull View itemView) {
super(itemView);
title = itemView.findViewById(one.nem.lacerta.shared.ui.R.id.item_title);
description = itemView.findViewById(one.nem.lacerta.shared.ui.R.id.item_description);
icon = itemView.findViewById(one.nem.lacerta.shared.ui.R.id.item_icon);
description.setVisibility(View.GONE); // 暫定
}
}
}

View File

@ -0,0 +1,66 @@
package one.nem.lacerta.component.common;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import one.nem.lacerta.model.VcsRevModel;
public class SelectRevDialogItemAdapter extends RecyclerView.Adapter<SelectRevDialogItemAdapter.SelectRevDialogItemViewHolder>{
ArrayList<VcsRevModel> revList;
LacertaSelectRevDialogInternalListener listener;
public SelectRevDialogItemAdapter(LacertaSelectRevDialogInternalListener listener) {
this.listener = listener;
}
public void setRevList(ArrayList<VcsRevModel> revList) {
this.revList = revList;
}
@NonNull
@Override
public SelectRevDialogItemAdapter.SelectRevDialogItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.common_rev_list_item, parent, false);
return new SelectRevDialogItemAdapter.SelectRevDialogItemViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull SelectRevDialogItemAdapter.SelectRevDialogItemViewHolder holder, int position) {
VcsRevModel rev = revList.get(position);
holder.title.setText(rev.getCommitMessage());
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
holder.description.setText(simpleDateFormat.format(rev.getCreatedAt()));
holder.revId.setText("RevID: " + rev.getId());
holder.itemView.setOnClickListener(v -> listener.onItemSelected(rev.getId()));
}
@Override
public int getItemCount() {
return this.revList == null ? 0 : this.revList.size();
}
public class SelectRevDialogItemViewHolder extends RecyclerView.ViewHolder {
TextView title;
TextView description;
TextView revId;
public SelectRevDialogItemViewHolder(@NonNull View itemView) {
super(itemView);
title = itemView.findViewById(R.id.rev_item_title);
description = itemView.findViewById(R.id.rev_item_detail);
revId = itemView.findViewById(R.id.rev_item_id);
}
}
}

View File

@ -0,0 +1,31 @@
package one.nem.lacerta.component.common.model;
import one.nem.lacerta.model.document.tag.DocumentTag;
// TODO-rca: クラス名が長すぎ
/**
* DocumentTagを設定するダイアログで使うための拡張モデル
* チェックボックスの状態を保持するように
*/
public class DocumentTagApplyTagDialogExtendedModel extends DocumentTag {
private boolean isChecked;
public DocumentTagApplyTagDialogExtendedModel(DocumentTag documentTag) {
super(documentTag.getId(), documentTag.getName(), documentTag.getColor());
}
public DocumentTagApplyTagDialogExtendedModel(DocumentTag documentTag, boolean isChecked) {
super(documentTag.getId(), documentTag.getName(), documentTag.getColor());
this.isChecked = isChecked;
}
public boolean getIsChecked() {
return isChecked;
}
public void setIsChecked(boolean checked) {
isChecked = checked;
}
}

View File

@ -0,0 +1,115 @@
package one.nem.lacerta.component.common.picker;
import android.app.Dialog;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import javax.inject.Inject;
import dagger.hilt.android.AndroidEntryPoint;
import one.nem.lacerta.component.common.R;
import one.nem.lacerta.component.common.picker.base.LacertaFilePickerAdapterBase;
import one.nem.lacerta.component.common.picker.base.LacertaFilePickerDialogBase;
import one.nem.lacerta.data.LacertaLibrary;
import one.nem.lacerta.model.ListItemType;
import one.nem.lacerta.model.PublicPath;
@AndroidEntryPoint
public class LacertaDirPickerDialog extends LacertaFilePickerDialogBase {
@Inject
LacertaLibrary lacertaLibrary;
// Listener
public interface LacertaDirPickerDialogListener {
void onDirSelected(String name, String dirId);
}
// Variables
LacertaDirPickerDialogListener listener;
// Setter
public LacertaDirPickerDialog setListener(LacertaDirPickerDialogListener listener) {
this.listener = listener;
return this;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
super.onCreateDialog(savedInstanceState);
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getActivity());
View view = LayoutInflater.from(getActivity()).inflate(R.layout.lacerta_dialog_select_dir, null);
// 高さを画面の40%にする
int height = (int) (getResources().getDisplayMetrics().heightPixels * 0.4);
view.setMinimumHeight(height);
RecyclerView recyclerView = view.findViewById(R.id.select_dir_recycler_view);
TextView currentDirTextView = view.findViewById(R.id.current_dir_text_view);
LacertaFilePickerAdapterBase adapter = new LacertaFilePickerAdapterBase();
adapter.setListener(new LacertaFilePickerAdapterBase.LacertaFilePickerAdapterListener() {
@Override
public void onItemSelected(String dirId) {
updateList(adapter, dirId);
updatePublicPath(currentDirTextView, dirId);
}
@Override
public void onBackSelected(String dirId) {
updateList(adapter, dirId);
updatePublicPath(currentDirTextView, dirId);
}
});
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
this.updateList(adapter, null); // ルートディレクトリのリストを表示
// Init dialog
builder.setTitle(this.title == null ? "フォルダを選択" : this.title);
builder.setMessage(this.message == null ? "フォルダを選択してください" : this.message);
builder.setView(view);
builder.setPositiveButton(this.positiveButtonText == null ? "OK" : this.positiveButtonText, (dialog, which) -> {
if (listener != null) {
listener.onDirSelected(
adapter.getCurrentPageTitle(),
adapter.getCurrentId());
}
});
builder.setNegativeButton(this.negativeButtonText == null ? "キャンセル" : this.negativeButtonText, (dialog, which) -> {
if (listener != null) {
dismiss();
}
});
return builder.create();
}
private void updatePublicPath(TextView currentDirTextView, String folderId) {
lacertaLibrary.getPublicPath(folderId, ListItemType.ITEM_TYPE_FOLDER).thenAccept(publicPath -> {
this.updatePathTextView(currentDirTextView, publicPath, ListItemType.ITEM_TYPE_FOLDER);
});
}
private void updateList(LacertaFilePickerAdapterBase adapter, String folderId) {
lacertaLibrary.getFolderList(folderId).thenAccept(libraryItemPage -> {
int currentCount = adapter.getItemCount();
String currentId = adapter.getCurrentId();
// adapter.setListItems(libraryItemPage);
getActivity().runOnUiThread(() -> {
this.updateListView(adapter, libraryItemPage, currentCount, currentId);
});
});
}
}

View File

@ -0,0 +1,42 @@
package one.nem.lacerta.component.common.picker;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import one.nem.lacerta.component.common.picker.base.LacertaFilePickerAdapterBase;
import one.nem.lacerta.model.ListItem;
import one.nem.lacerta.model.ListItemType;
public class LacertaFilePickerAdapter extends LacertaFilePickerAdapterBase {
// Listener
public interface LacertaFilePickerAdapterListener extends LacertaFilePickerAdapterBase.LacertaFilePickerAdapterListener {
void onDocumentSelected(String documentId);
void onCombinedDocumentSelected(String documentId);
}
// Variables
LacertaFilePickerAdapterListener listener;
// Setter
public LacertaFilePickerAdapter setListener(LacertaFilePickerAdapterListener listener) {
this.listener = listener;
return this;
}
@Override
public void onBindViewHolder(LacertaFilePickerViewHolder holder, int position) {
super.onBindViewHolder(holder, position);
if (libraryItemPage.getListItems().get(position).getItemType() == ListItemType.ITEM_TYPE_DOCUMENT) {
if (libraryItemPage.getListItems().get(position).getHasCombined()) {
holder.itemView.setOnClickListener(v -> {
listener.onCombinedDocumentSelected(libraryItemPage.getListItems().get(position).getItemId());
});
} else {
holder.itemView.setOnClickListener(v -> {
ListItem listItem = libraryItemPage.getListItems().get(position);
listener.onDocumentSelected(listItem.getItemId());
});
}
}
}
}

View File

@ -0,0 +1,127 @@
package one.nem.lacerta.component.common.picker;
import android.app.Dialog;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import javax.inject.Inject;
import dagger.hilt.android.AndroidEntryPoint;
import one.nem.lacerta.component.common.R;
import one.nem.lacerta.component.common.picker.base.LacertaFilePickerAdapterBase;
import one.nem.lacerta.component.common.picker.base.LacertaFilePickerDialogBase;
import one.nem.lacerta.data.LacertaLibrary;
import one.nem.lacerta.model.ListItemType;
@AndroidEntryPoint
public class LacertaFilePickerDialog extends LacertaFilePickerDialogBase {
@Inject
LacertaLibrary lacertaLibrary;
// Listener
public interface LacertaFilePickerDialogListener {
void onFileSelected(String name, String fileId);
}
// Variables
LacertaFilePickerDialogListener listener;
// Setter
public LacertaFilePickerDialog setListener(LacertaFilePickerDialogListener listener) {
this.listener = listener;
return this;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
super.onCreateDialog(savedInstanceState);
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getActivity());
View view = LayoutInflater.from(getActivity()).inflate(R.layout.lacerta_dialog_select_dir, null);
// 高さを画面の40%にする
int height = (int) (getResources().getDisplayMetrics().heightPixels * 0.4);
view.setMinimumHeight(height);
RecyclerView recyclerView = view.findViewById(R.id.select_dir_recycler_view);
TextView currentDirTextView = view.findViewById(R.id.current_dir_text_view);
LacertaFilePickerAdapter adapter = new LacertaFilePickerAdapter();
adapter.setListener(new LacertaFilePickerAdapter.LacertaFilePickerAdapterListener() {
@Override
public void onItemSelected(String dirId) {
updateList(adapter, dirId);
updatePublicPath(currentDirTextView, dirId);
}
@Override
public void onBackSelected(String dirId) {
updateList(adapter, dirId);
updatePublicPath(currentDirTextView, dirId);
}
@Override
public void onDocumentSelected(String documentId) {
if (listener != null) {
dismiss();
listener.onFileSelected(documentId, documentId);
}
}
@Override
public void onCombinedDocumentSelected(String documentId) {
if (listener != null) {
LacertaFilePickerSelectDocumentDialog dialog = new LacertaFilePickerSelectDocumentDialog();
dialog.setDocumentId(documentId);
dialog.setListener(documentId1 -> {
dismiss();
listener.onFileSelected(documentId1, documentId1);
});
dialog.show(getParentFragmentManager(), "select_document_dialog");
}
}
});
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
this.updateList(adapter, null); // ルートディレクトリのリストを表示
// Init dialog
builder.setTitle(this.title == null ? "ファイルを選択" : this.title);
builder.setMessage(this.message == null ? "ファイルを選択してください" : this.message);
builder.setView(view);
builder.setNegativeButton(this.negativeButtonText == null ? "キャンセル" : this.negativeButtonText, (dialog, which) -> {
dismiss();
});
return builder.create();
}
private void updatePublicPath(TextView currentDirTextView, String folderId) {
lacertaLibrary.getPublicPath(folderId, ListItemType.ITEM_TYPE_FOLDER).thenAccept(publicPath -> {
this.updatePathTextView(currentDirTextView, publicPath, ListItemType.ITEM_TYPE_FOLDER);
});
}
private void updateList(LacertaFilePickerAdapterBase adapter, String folderId) {
lacertaLibrary.getLibraryPage(folderId, 100).thenAccept(libraryItemPage -> { // TODO-rca: 100 is a magic number
int currentCount = adapter.getItemCount();
String currentId = adapter.getCurrentId();
// adapter.setListItems(libraryItemPage);
getActivity().runOnUiThread(() -> {
this.updateListView(adapter, libraryItemPage, currentCount, currentId);
});
});
}
}

View File

@ -0,0 +1,75 @@
package one.nem.lacerta.component.common.picker;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import one.nem.lacerta.component.common.R;
import one.nem.lacerta.model.ListItem;
import one.nem.lacerta.model.document.DocumentMeta;
public class LacertaFilePickerSelectDocumentAdapter extends RecyclerView.Adapter<LacertaFilePickerSelectDocumentAdapter.LacertaFilePickerSelectDocumentViewHolder>{
// Listener
public interface LacertaFilePickerSelectDocumentAdapterListener {
void onDocumentSelected(String documentId);
}
// Variables
LacertaFilePickerSelectDocumentAdapterListener listener;
ArrayList<ListItem> listItems;
// Setter
public LacertaFilePickerSelectDocumentAdapter setListener(LacertaFilePickerSelectDocumentAdapterListener listener) {
this.listener = listener;
return this;
}
public void setListItems(ArrayList<ListItem> listItems) {
this.listItems = listItems;
}
@NonNull
@Override
public LacertaFilePickerSelectDocumentAdapter.LacertaFilePickerSelectDocumentViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(one.nem.lacerta.shared.ui.R.layout.common_list_item, parent, false);
return new LacertaFilePickerSelectDocumentViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull LacertaFilePickerSelectDocumentAdapter.LacertaFilePickerSelectDocumentViewHolder holder, int position) {
ListItem listItem = listItems.get(position);
holder.title.setText(listItem.getTitle());
holder.description.setVisibility(View.GONE);
holder.icon.setImageResource(listItem.getItemType().getIconId());
holder.itemView.setOnClickListener(v -> listener.onDocumentSelected(listItem.getItemId()));
}
@Override
public int getItemCount() {
return listItems == null ? 0 : listItems.size();
}
public class LacertaFilePickerSelectDocumentViewHolder extends RecyclerView.ViewHolder {
ImageView icon;
TextView title;
TextView description;
public LacertaFilePickerSelectDocumentViewHolder(@NonNull View itemView) {
super(itemView);
icon = itemView.findViewById(one.nem.lacerta.shared.ui.R.id.item_icon);
title = itemView.findViewById(one.nem.lacerta.shared.ui.R.id.item_title);
description = itemView.findViewById(one.nem.lacerta.shared.ui.R.id.item_description);
}
}
}

View File

@ -0,0 +1,88 @@
package one.nem.lacerta.component.common.picker;
import android.app.Dialog;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import androidx.fragment.app.DialogFragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import java.util.ArrayList;
import javax.inject.Inject;
import dagger.hilt.android.AndroidEntryPoint;
import one.nem.lacerta.component.common.R;
import one.nem.lacerta.data.LacertaLibrary;
import one.nem.lacerta.model.ListItem;
import one.nem.lacerta.model.ListItemType;
import one.nem.lacerta.model.pref.ToxiDocumentModel;
@AndroidEntryPoint
public class LacertaFilePickerSelectDocumentDialog extends DialogFragment {
@Inject
LacertaLibrary lacertaLibrary;
// Listener
public interface LacertaFilePickerSelectDocumentDialogListener {
void onDocumentSelected(String documentId);
}
// Variables
LacertaFilePickerSelectDocumentDialogListener listener;
String documentId;
// Setter
public LacertaFilePickerSelectDocumentDialog setListener(LacertaFilePickerSelectDocumentDialogListener listener) {
this.listener = listener;
return this;
}
public LacertaFilePickerSelectDocumentDialog setDocumentId(String documentId) {
this.documentId = documentId;
return this;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
super.onCreateDialog(savedInstanceState);
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getActivity());
View view = LayoutInflater.from(getActivity()).inflate(R.layout.lacerta_dialog_select_doc, null);
// 高さを画面の40%にする
int height = (int) (getResources().getDisplayMetrics().heightPixels * 0.4);
view.setMinimumHeight(height);
RecyclerView recyclerView = view.findViewById(R.id.document_list_recycler_view);
LacertaFilePickerSelectDocumentAdapter adapter = new LacertaFilePickerSelectDocumentAdapter();
adapter.setListener(documentId -> listener.onDocumentSelected(documentId));
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
builder.setTitle("追加先を選択");
builder.setView(view);
lacertaLibrary.getCombinedDocumentToxiList(this.documentId).thenAccept(toxiDocumentModels -> {
ArrayList<ListItem> listItems = new ArrayList<>();
for (ToxiDocumentModel toxiDocumentModel : toxiDocumentModels) {
listItems.add(new ListItem(toxiDocumentModel.titleCache, null, ListItemType.ITEM_TYPE_DOCUMENT, toxiDocumentModel.childDocumentId));
}
adapter.setListItems(listItems);
adapter.notifyDataSetChanged();
});
return builder.create();
}
}

View File

@ -0,0 +1,110 @@
package one.nem.lacerta.component.common.picker.base;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import one.nem.lacerta.model.LibraryItemPage;
import one.nem.lacerta.model.ListItem;
import one.nem.lacerta.model.ListItemType;
public class LacertaFilePickerAdapterBase extends RecyclerView.Adapter<LacertaFilePickerAdapterBase.LacertaFilePickerViewHolder> {
// Listener
public interface LacertaFilePickerAdapterListener {
void onItemSelected(String dirId);
void onBackSelected(String dirId);
}
protected LibraryItemPage libraryItemPage;
protected LacertaFilePickerAdapterListener listener;
// Empty constructor
public LacertaFilePickerAdapterBase() {
}
public void setListItems(LibraryItemPage libraryItemPage) {
this.libraryItemPage = libraryItemPage;
if (this.libraryItemPage.getPageId() != null) { // ルートディレクトリの場合は戻るボタンを表示しない
this.libraryItemPage.getListItems().add(0, new ListItem("戻る", " ", ListItemType.ITEM_TYPE_ACTION_BACK, null));
}
}
public void setListener(LacertaFilePickerAdapterListener listener) {
this.listener = listener;
}
@NonNull
@Override
public LacertaFilePickerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(one.nem.lacerta.shared.ui.R.layout.common_list_item, parent, false);
return new LacertaFilePickerViewHolder(view);
}
@Override
public void onBindViewHolder(LacertaFilePickerViewHolder holder, int position) {
ListItem listItem = libraryItemPage.getListItems().get(position);
holder.title.setText(listItem.getTitle());
holder.description.setText(listItem.getDescription());
holder.icon.setImageResource(listItem.getItemType().getIconId());
if(listItem.getItemType() == ListItemType.ITEM_TYPE_ACTION_BACK) {
holder.itemView.setOnClickListener(v -> listener.onBackSelected(this.libraryItemPage.getParentId()));
} else {
holder.itemView.setOnClickListener(v -> listener.onItemSelected(listItem.getItemId()));
}
}
@Override
public int getItemCount() {
return this.libraryItemPage == null ? 0 : this.libraryItemPage.getListItems().size();
}
public String getCurrentId() {
if (this.libraryItemPage == null) {
return null;
} else {
if (this.libraryItemPage.getPageId() == null) {
return null;
} else {
return this.libraryItemPage.getPageId();
}
}
}
public String getCurrentPageTitle() {
if (this.libraryItemPage == null) {
return null;
} else {
if (this.libraryItemPage.getPageId() == null) {
return null;
} else {
return this.libraryItemPage.getPageTitle();
}
}
}
public static class LacertaFilePickerViewHolder extends RecyclerView.ViewHolder {
TextView title;
TextView description;
ImageView icon;
public LacertaFilePickerViewHolder(@NonNull View itemView) {
super(itemView);
title = itemView.findViewById(one.nem.lacerta.shared.ui.R.id.item_title);
description = itemView.findViewById(one.nem.lacerta.shared.ui.R.id.item_description);
icon = itemView.findViewById(one.nem.lacerta.shared.ui.R.id.item_icon);
description.setVisibility(View.GONE); // 暫定
}
}
}

View File

@ -0,0 +1,88 @@
package one.nem.lacerta.component.common.picker.base;
import android.widget.TextView;
import androidx.fragment.app.DialogFragment;
import javax.inject.Inject;
import one.nem.lacerta.model.LibraryItemPage;
import one.nem.lacerta.model.ListItemType;
import one.nem.lacerta.model.PublicPath;
import one.nem.lacerta.utils.LacertaLogger;
public class LacertaFilePickerDialogBase extends DialogFragment {
@Inject
LacertaLogger logger;
// Variables
protected String title;
protected String message;
protected String positiveButtonText;
protected String negativeButtonText;
// Setter
public LacertaFilePickerDialogBase setTitle(String title) {
this.title = title;
return this;
}
public LacertaFilePickerDialogBase setMessage(String message) {
this.message = message;
return this;
}
public LacertaFilePickerDialogBase setPositiveButtonText(String positiveButtonText) {
this.positiveButtonText = positiveButtonText;
return this;
}
public LacertaFilePickerDialogBase setNegativeButtonText(String negativeButtonText) {
this.negativeButtonText = negativeButtonText;
return this;
}
// Methods
protected void updatePathTextView(TextView currentDirTextView, PublicPath publicPath, ListItemType listItemType) {
if (publicPath == null) {
currentDirTextView.setText("/");
} else {
if (listItemType == ListItemType.ITEM_TYPE_FOLDER) {
currentDirTextView.setText("/" + publicPath.getStringPath()); // TODO-rca: PublicPath側の実装を治すべき
} else {
currentDirTextView.setText("/" + publicPath.parent().getStringPath()); // TODO-rca: PublicPath側の実装を治すべき
}
}
}
protected void updateListView(LacertaFilePickerAdapterBase adapter, LibraryItemPage libraryItemPage, int currentCount, String currentDirId) {
if (currentCount == 0) {
// 初回表示
adapter.setListItems(libraryItemPage);
adapter.notifyItemRangeInserted(0, libraryItemPage.getListItems().size());
} else if (currentDirId == null) {
// Rootが関わる推移 (Rootからの推移)
adapter.setListItems(libraryItemPage);
adapter.notifyItemRangeRemoved(0, currentCount);
adapter.notifyItemRangeInserted(0, libraryItemPage.getListItems().size());
} else if (libraryItemPage.getPageId() == null) {
// Rootが関わる推移 (Rootへの推移)
adapter.setListItems(libraryItemPage);
adapter.notifyItemRangeRemoved(0, currentCount);
adapter.notifyItemRangeInserted(0, libraryItemPage.getListItems().size());
} else if (libraryItemPage.getPageId() != null) {
// Rootが関わらない推移
adapter.setListItems(libraryItemPage);
adapter.notifyItemRangeRemoved(1, currentCount);
adapter.notifyItemRangeInserted(1, libraryItemPage.getListItems().size());
} else {
// その他の遷移(安全側に倒すため全アイテム更新)
logger.warn("FilePickerDialogBase", "Unknown transition.");
logger.warn("FilePickerDialogBase", "currentDirId: " + currentDirId + ", libraryItemPage.getPageId(): " + libraryItemPage.getPageId());
adapter.setListItems(libraryItemPage);
adapter.notifyItemRangeRemoved(0, currentCount);
adapter.notifyItemRangeInserted(0, libraryItemPage.getListItems().size());
}
}
}

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<CheckBox
android:id="@+id/tag_check_box"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:layout_marginHorizontal="16dp"
android:layout_marginVertical="4dp"
android:text="CheckBox" />
</LinearLayout>

View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingHorizontal="24dp"
android:paddingVertical="16dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/item_text_container"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/rev_item_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:layout_marginEnd="8dp"
android:text="Placeholder Title"
android:textColor="@color/colorOnSurface"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/rev_item_detail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="14sp"
android:text="2023/01/01 00:00:00 - hogehoge"
android:textColor="@color/colorOnSurfaceSecondary"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/rev_item_title" />
<TextView
android:id="@+id/rev_item_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="12sp"
android:text="dd76a029-51f1-40f7-b316-a0c74bbfebb1(Example)"
android:textColor="@color/colorOnSurfaceSecondary"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/rev_item_detail" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/apply_tag_list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/tag_name_text_input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:paddingHorizontal="16dp"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/tag_name_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/tag_color_text_input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:paddingHorizontal="16dp"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">
<!-- todo: add color picker -->
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/tag_color_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>

View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/title_text_input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:paddingHorizontal="16dp"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/tag_name_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.google.android.material.textview.MaterialTextView
android:id="@+id/current_dir_text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="32dp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/select_dir_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>
</LinearLayout>

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/document_list_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>
</FrameLayout>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/select_rev_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>

View File

@ -1,10 +1,11 @@
plugins {
alias(libs.plugins.com.android.library)
id 'com.google.dagger.hilt.android'
}
android {
namespace 'one.nem.lacerta.component.scanner'
compileSdk 33
compileSdk 34
defaultConfig {
minSdk 26
@ -29,9 +30,28 @@ dependencies {
implementation libs.androidx.appcompat
implementation libs.com.google.android.material
implementation libs.androidx.activity
implementation libs.androidx.constraintlayout
testImplementation libs.junit
androidTestImplementation libs.androidx.test.ext.junit
androidTestImplementation libs.androidx.test.espresso.core
// Hilt (DI)
implementation libs.com.google.dagger.hilt.android
annotationProcessor libs.com.google.dagger.hilt.compiler
implementation 'com.websitebeaver:documentscanner:1.0.0'
implementation project(':shared:ui')
implementation project(':model')
implementation project(':processor')
implementation project(':utils')
implementation project(':vcs')
implementation project(':data')
implementation project(':component:common')
}

View File

@ -1,4 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application>
<activity
android:name=".ScannerManagerActivity"
android:exported="false" />
</application>
</manifest>

View File

@ -0,0 +1,55 @@
package one.nem.lacerta.component.scanner;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
public class CaptureResultAdapter extends RecyclerView.Adapter<CaptureResultAdapter.ViewHolder> {
private final ArrayList<CapturedData> results;
public CaptureResultAdapter(ArrayList<CapturedData> results) {
this.results = results;
}
@Override
public CaptureResultAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_scanner_component_manager_stub, parent, false);
return new CaptureResultAdapter.ViewHolder(view);
}
@Override
public void onBindViewHolder(CaptureResultAdapter.ViewHolder holder, int position) {
CapturedData result = results.get(position);
holder.textViewPath.setText(result.getPath());
holder.textViewResolutionHeight.setText(result.getResolutionHeight());
holder.textViewResolutionWidth.setText(result.getResolutionWidth());
holder.imageView.setImageBitmap(result.getBitmap());
}
@Override
public int getItemCount() {
return results.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView textViewPath;
public TextView textViewResolutionHeight;
public TextView textViewResolutionWidth;
public ImageView imageView;
public ViewHolder(View view) {
super(view);
textViewPath = view.findViewById(R.id.textViewPath);
textViewResolutionHeight = view.findViewById(R.id.textViewResHeight);
textViewResolutionWidth = view.findViewById(R.id.textViewResWidth);
imageView = view.findViewById(R.id.imageViewResult);
}
}
}

View File

@ -0,0 +1,44 @@
package one.nem.lacerta.component.scanner;
import android.graphics.Bitmap;
public class CapturedData {
private String path;
private String resolutionHeight;
private String resolutionWidth;
private String size;
private Bitmap bitmap;
// Constructor
public CapturedData(String path, String resolutionHeight, String resolutionWidth, String size, Bitmap bitmap) {
this.path = path;
this.resolutionHeight = resolutionHeight;
this.resolutionWidth = resolutionWidth;
this.size = size;
this.bitmap = bitmap;
}
// Getters
public String getPath() {
return path;
}
public String getResolutionHeight() {
return resolutionHeight;
}
public String getResolutionWidth() {
return resolutionWidth;
}
public String getSize() {
return size;
}
public Bitmap getBitmap() {
return bitmap;
}
}

View File

@ -0,0 +1,251 @@
package one.nem.lacerta.component.scanner;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.core.content.FileProvider;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Date;
import java.util.Locale;
import java.util.UUID;
import javax.inject.Inject;
import dagger.hilt.android.AndroidEntryPoint;
import one.nem.lacerta.model.document.DocumentDetail;
import one.nem.lacerta.model.document.DocumentMeta;
import one.nem.lacerta.model.document.path.DocumentPath;
import one.nem.lacerta.processor.DocumentProcessor;
import one.nem.lacerta.processor.factory.DocumentProcessorFactory;
import one.nem.lacerta.utils.LacertaLogger;
import one.nem.lacerta.utils.repository.DeviceInfoUtils;
/**
* A simple {@link Fragment} subclass.
* Use the {@link ScannerDataManagerStubFragment#newInstance} factory method to
* create an instance of this fragment.
*/
@AndroidEntryPoint
public class ScannerDataManagerStubFragment extends Fragment {
// TODO-rca: 時間があったらcacheを使うようにする
// Results
private ArrayList<CapturedData> results = new ArrayList<>();
private Uri photoURI;
private DocumentDetail documentDetail;
private DocumentProcessor documentProcessor;
@Inject
DocumentProcessorFactory documentProcessorFactory;
@Inject
LacertaLogger logger;
@Inject
DeviceInfoUtils deviceInfoUtils;
private final ActivityResultLauncher<Intent> cameraLauncher = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
result -> {
if (result.getResultCode() == Activity.RESULT_OK) {
try {
if (getActivity() == null) {
Log.d("ScannerDataManagerStubFragment", "getActivity() is null");
return;
}
if (photoURI == null) {
Log.d("ScannerDataManagerStubFragment", "photoURI is null");
Toast.makeText(getActivity(), "photoURI is null", Toast.LENGTH_LONG).show();
return;
}
Bitmap imageBitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), photoURI);
results.add(new CapturedData("Placeholder", Integer.toString(imageBitmap.getHeight()), Integer.toString(imageBitmap.getWidth()), "Placeholder", imageBitmap));
} catch (IOException e) {
Log.e("ScannerDataManagerStubFragment", "Error occurred while reading the file", e);
}
}
}
);
public ScannerDataManagerStubFragment() {
// Required empty public constructor
}
// TODO: Rename and change types and number of parameters
public static ScannerDataManagerStubFragment newInstance() {
ScannerDataManagerStubFragment fragment = new ScannerDataManagerStubFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_scanner_data_manager_stub, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
// view.findViewById(R.id.button_call_camera).setOnClickListener(v -> {
// Log.d("ScannerDataManagerStubFragment", "button_call_camera clicked");
// Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) {
// File photoFile = null;
// try {
// String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US).format(new Date());
// String imageFileName = "JPEG_" + timeStamp + "_";
// File storageDir = getActivity().getExternalFilesDir(Environment.DIRECTORY_PICTURES);
// photoFile = File.createTempFile(imageFileName, ".jpg", storageDir);
// } catch (IOException ex) {
// Log.e("ScannerDataManagerStubFragment", "Error occurred while creating the file", ex);
// }
// if (photoFile != null) {
// photoURI = FileProvider.getUriForFile(getActivity(), "one.nem.lacerta.provider", photoFile);
// takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
// cameraLauncher.launch(takePictureIntent);
// }
// else {
// Log.d("ScannerDataManagerStubFragment", "photoFile is null");
// }
// }
// else {
// Log.d("ScannerDataManagerStubFragment", "camera not available");
// }
// updateResults();
// });
//
// view.findViewById(R.id.button_create_documnent).setOnClickListener(v -> {
// Log.d("ScannerDataManagerStubFragment", "button_create_documnent clicked");
// Toast.makeText(getActivity(), "button_create_documnent clicked", Toast.LENGTH_LONG).show();
//
// this.documentDetail = createSampleDocumentDetail();
//
// });
//
// view.findViewById(R.id.button_init_document_processor).setOnClickListener(v -> {
// Log.d("ScannerDataManagerStubFragment", "button_init_document_processor clicked");
// Toast.makeText(getActivity(), "button_init_document_processor clicked", Toast.LENGTH_LONG).show();
// // TODO-rca: ここでDocumentProcessorを初期化する
// if (this.documentDetail == null) {
// Toast.makeText(getActivity(), "documentDetail is null", Toast.LENGTH_LONG).show();
// return;
// }
// this.documentProcessor = documentProcessorFactory.create(this.documentDetail);
// Toast.makeText(getActivity(), "documentProcessor created", Toast.LENGTH_LONG).show();
// try {
// this.documentProcessor.init();
// } catch (Exception e) {
// Toast.makeText(getActivity(), "Error occurred while initializing documentProcessor", Toast.LENGTH_LONG).show();
// Log.e("ScannerDataManagerStubFragment", "Error occurred while initializing documentProcessor", e);
// }
// Toast.makeText(getActivity(), "documentProcessor initialized", Toast.LENGTH_LONG).show();
// });
//
// view.findViewById(R.id.button_add_page).setOnClickListener(v -> {
// Log.d("ScannerDataManagerStubFragment", "button_add_page clicked");
// Toast.makeText(getActivity(), "button_add_page clicked", Toast.LENGTH_LONG).show();
// if (this.documentProcessor == null) {
// Toast.makeText(getActivity(), "documentProcessor is null", Toast.LENGTH_LONG).show();
// return;
// }
// Bitmap[] bitmaps = new Bitmap[results.size()];
// for (int i = 0; i < results.size(); i++) {
// bitmaps[i] = results.get(i).getBitmap();
// }
//
// try {
// this.documentProcessor.addNewPagesToLast(bitmaps);
// } catch (Exception e) {
// Toast.makeText(getActivity(), "Error occurred while adding pages", Toast.LENGTH_LONG).show();
// Log.e("ScannerDataManagerStubFragment", "Error occurred while adding pages", e);
// }
//
// Toast.makeText(getActivity(), "pages added", Toast.LENGTH_LONG).show();
//
// try {
// this.documentProcessor.close();
// } catch (Exception e) {
// Toast.makeText(getActivity(), "Error occurred while closing documentProcessor", Toast.LENGTH_LONG).show();
// Log.e("ScannerDataManagerStubFragment", "Error occurred while closing documentProcessor", e);
// }
// });
}
public DocumentDetail createSampleDocumentDetail() {
//
// String id = UUID.randomUUID().toString();
//
// Toast.makeText(getActivity(), "Generated id: " + id, Toast.LENGTH_LONG).show();
// //logger.debug("CreateSample", "Generated id: " + id);
//
// DocumentMeta meta = new DocumentMeta(
// id,
// "Sample" + DateTimeFormatter.ofPattern("yyyyMMddHHmmss").format(LocalDateTime.now()),
// new Date(),
// new Date());
//
// DocumentPath path = new DocumentPath(
// deviceInfoUtils.getExternalStorageDirectoryString(),
// "Sample" + DateTimeFormatter.ofPattern("yyyyMMddHHmmss").format(LocalDateTime.now()));
//
// return new DocumentDetail(meta, path, "SampleAuthor", "SampleDefaultBranch");
return null;
}
@Override
public void onResume() {
super.onResume();
Log.d("ScannerDataManagerStubFragment", "onResume");
updateResults();
}
public void updateResults() {
Log.d("ScannerDataManagerStubFragment", "updateResults");
// TODO-rca: エラーハンドリング
RecyclerView recyclerView = getView().findViewById(R.id.result_recycler_view);
recyclerView.setLayoutManager(new androidx.recyclerview.widget.LinearLayoutManager(getContext()));
recyclerView.setAdapter(new CaptureResultAdapter(this.results));
}
}

View File

@ -0,0 +1,333 @@
package one.nem.lacerta.component.scanner;
import android.Manifest;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import com.google.android.material.appbar.MaterialToolbar;
import com.websitebeaver.documentscanner.DocumentScanner;
import java.util.ArrayList;
import java.util.Objects;
import java.util.concurrent.CompletableFuture;
import javax.inject.Inject;
import dagger.hilt.android.AndroidEntryPoint;
import one.nem.lacerta.component.common.picker.LacertaFilePickerDialog;
import one.nem.lacerta.data.Document;
import one.nem.lacerta.data.LacertaLibrary;
import one.nem.lacerta.model.document.DocumentDetail;
import one.nem.lacerta.model.document.DocumentMeta;
import one.nem.lacerta.model.document.page.Page;
import one.nem.lacerta.processor.DocumentProcessor;
import one.nem.lacerta.processor.factory.DocumentProcessorFactory;
import one.nem.lacerta.utils.LacertaLogger;
import one.nem.lacerta.vcs.factory.LacertaVcsFactory;
@AndroidEntryPoint
public class ScannerManagerActivity extends AppCompatActivity {
String TAG = "ScannerManagerActivity";
@Inject
LacertaLogger logger;
@Inject
Document document;
@Inject
DocumentProcessorFactory documentProcessorFactory;
@Inject
LacertaVcsFactory lacertaVcsFactory;
// @Inject
// public ScannerManagerActivity(LacertaLogger logger, Document document, LacertaLibrary lacertaLibrary, DocumentProcessorFactory documentProcessorFactory, LacertaVcsFactory lacertaVcsFactory) {
// this.logger = logger;
// this.document = document;
// this.lacertaLibrary = lacertaLibrary;
// this.documentProcessorFactory = documentProcessorFactory;
// this.lacertaVcsFactory = lacertaVcsFactory;
// }
@Inject
public ScannerManagerActivity() {
// Required empty public constructor
}
// Variables
private ArrayList<Bitmap> croppedImages = new ArrayList<>();
private boolean update = false;
private String documentId;
private int index = 0;
View view;
DocumentScanner documentScanner = new DocumentScanner(
this,
(croppedImageResults) -> {
logger.debug(TAG, "croppedImage size: " + croppedImageResults.size());
ArrayList<Bitmap> croppedImages = new ArrayList<>();
for (String result : croppedImageResults) {
croppedImages.add(BitmapFactory.decodeFile(result));
}
processResult(croppedImages);
return null;
},
(errorMessage) -> {
// an error happened
logger.error(TAG, "Error: " + errorMessage);
logger.e_code("543a230e-cb9a-47a2-8131-3beecfe1c458");
return null;
},
() -> {
// user canceled document scan
logger.debug(TAG, "User canceled document scan");
return null;
},
null,
null,
null
);
DocumentScanner documentScannerUpdate = new DocumentScanner( // TODO-rca: ひどすぎるのでなんとかする
this,
(croppedImageResults) -> {
logger.debug(TAG, "croppedImage size: " + croppedImageResults.size());
ArrayList<Bitmap> croppedImages = new ArrayList<>();
for (String result : croppedImageResults) {
croppedImages.add(BitmapFactory.decodeFile(result));
}
processResult(croppedImages);
updatePage();
return null;
},
(errorMessage) -> {
// an error happened
logger.error(TAG, "Error: " + errorMessage);
logger.e_code("543a230e-cb9a-47a2-8131-3beecfe1c458");
finish();
return null;
},
() -> {
// user canceled document scan
logger.debug(TAG, "User canceled document scan");
finish();
return null;
},
null,
null,
1
);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_scanner_manager);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, 1); // TODO-rca: リクエストコードを定数にする
}
MaterialToolbar toolbar = findViewById(R.id.top_toolbar);
setSupportActionBar(toolbar);
Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
if (bundle != null) {
update = bundle.getBoolean("update", false);
documentId = bundle.getString("documentId");
index = bundle.getInt("index", 0);
}
if (this.update) {
documentScanner = documentScannerUpdate;
}
documentScanner.startScan();
// Init
this.view = findViewById(R.id.main); // TODO-rca:なんとかする
}
@Override
public boolean onCreateOptionsMenu(android.view.Menu menu) {
getMenuInflater().inflate(R.menu.scanner_result_toolbar, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(android.view.MenuItem item) {
if (item.getItemId() == R.id.action_save_new) {
// 新ドキュメントとして保存
saveNewDocument();
return true;
}
else if (item.getItemId() == R.id.action_insert_exist) {
// 既存ドキュメントに挿入
insertToExistDocument();
return true;
} else if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
private void processResult(ArrayList<Bitmap> resultImages) {
logger.debug(TAG, "processResult");
if (resultImages.isEmpty()) {
logger.debug(TAG, "resultImages(arg) is empty");
if (this.croppedImages.isEmpty()) {
logger.debug(TAG, "this.resultImages is empty");
logger.e_code("7cb0584e-74ef-48ec-848a-c4d14e75e15a");
} else {
logger.debug(TAG, "this.resultImages is not empty");
updateResultView(this.croppedImages);
}
} else {
logger.debug(TAG, "resultImages(arg) is not empty");
updateResultView(resultImages);
this.croppedImages = resultImages;
}
}
private void saveNewDocument() {
logger.debug(TAG, "saveNewDocument");
// Deprecatedだが中断機能が存在しないので操作をブロックする目的で(意図的に)使用
ProgressDialog dialog = new ProgressDialog(this);
dialog.setMessage("保存中..."); // TODO-rca: テキストをリソースに移動
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.setCancelable(false);
dialog.show();
DocumentMeta documentMeta = new DocumentMeta("Untitled"); // TODO-rca: デフォルトタイトルを指定できるようにする
document.createDocument(documentMeta).thenAccept((documentDetail) -> {
Bitmap[] bitmaps = new Bitmap[croppedImages.size()];
croppedImages.toArray(bitmaps);
logger.debug(TAG, "bitmaps.length: " + bitmaps.length);
addPagesToDocumentDetail(documentDetail, bitmaps, "Initial Commit").join();
document.updateDocument(documentDetail).join();
dialog.dismiss();
finish();
});
}
private CompletableFuture<Void> addPagesToDocumentDetail(DocumentDetail documentDetail, Bitmap[] bitmaps, String commitMessage) {
return CompletableFuture.runAsync(() -> {
try {
document.updateDocument(documentProcessorFactory.create(documentDetail).addNewPagesToLast(bitmaps).getDocumentDetail()).join();
lacertaVcsFactory.create(documentDetail.getMeta().getId()).generateRevisionAtCurrent(commitMessage == null ? "NONE" : commitMessage);
} catch (Exception e) {
logger.error(TAG, "Error: " + e.getMessage());
logger.e_code("9dff2a28-20e8-4ccd-9d04-f0c7646faa6a");
}
});
}
private void updatePage() {
logger.debug(TAG, "updatePage");
// Deprecatedだが中断機能が存在しないので操作をブロックする目的で(意図的に)使用
ProgressDialog dialog = new ProgressDialog(this);
dialog.setMessage("保存中..."); // TODO-rca: テキストをリソースに移動
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.setCancelable(false);
dialog.show();
document.getDocument(documentId).thenAccept((documentDetail) -> {
DocumentProcessor documentProcessor = documentProcessorFactory.create(documentDetail);
if (croppedImages.size() != 1) {
logger.error(TAG, "croppedImages.size() != 1");
logger.e_code("d8e2b8c9-9b7e-4b7e-9e1e-9e3b8b8b8b8b");
return;
}
if (croppedImages.get(0) == null) {
logger.error(TAG, "croppedImages.get(0) == null");
logger.e_code("d8e2b8c9-9b7e-4b7e-9e1e-9e3b8b8b8b8b");
return;
}
documentProcessor.updatePageAtIndex(croppedImages.get(0), index);
document.updateDocument(documentProcessor.getDocumentDetail()).join();
lacertaVcsFactory.create(documentDetail.getMeta().getId()).generateRevisionAtCurrent(index + "ページ目を更新"); // TODO-rca: メッセージを動的にする, 指定できるようにする
dialog.dismiss();
});
}
private void insertToExistDocument() {
logger.debug(TAG, "insertToExistDocument");
LacertaFilePickerDialog dialog = new LacertaFilePickerDialog();
dialog.setListener(((name, fileId) -> {
document.getDocument(fileId).thenAccept((documentDetail) -> {
Bitmap[] bitmaps = new Bitmap[croppedImages.size()];
croppedImages.toArray(bitmaps);
logger.debug(TAG, "bitmaps.length: " + bitmaps.length);
addPagesToDocumentDetail(documentDetail, bitmaps, "ページを追加").join();
document.updateDocument(documentDetail).join();
finish();
});
}));
dialog.setTitle("追加するドキュメントを選択");
dialog.show(getSupportFragmentManager(), "LacertaFilePickerDialog");
}
private void updateResultView(ArrayList<Bitmap> resultImages) {
logger.debug(TAG, "updateResultView");
LinearLayout resultView = findViewById(R.id.result_list_container);
ImageView selectedImage = findViewById(R.id.selected_image);
resultView.removeAllViews();
for (Bitmap resultImage : resultImages) {
View resultImageView = getLayoutInflater().inflate(R.layout.result_image_container_item, null);
ImageView imageView = resultImageView.findViewById(R.id.result_image);
imageView.setImageBitmap(resultImage);
imageView.setOnClickListener(v -> {
selectedImage.setImageBitmap(resultImage);
for (int i = 0; i < resultView.getChildCount(); i++) {
View child = resultView.getChildAt(i).findViewById(R.id.result_image);
child.setSelected(false);
}
v.setSelected(true);
});
resultView.addView(resultImageView);
}
selectedImage.setImageBitmap(resultImages.get(0));
}
}

View File

@ -0,0 +1,95 @@
package one.nem.lacerta.component.scanner;
import android.content.Intent;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.websitebeaver.documentscanner.DocumentScanner;
import com.websitebeaver.documentscanner.DocumentScannerActivity;
import java.util.Objects;
import javax.inject.Inject;
import dagger.hilt.android.AndroidEntryPoint;
import one.nem.lacerta.utils.LacertaLogger;
import one.nem.lacerta.vcs.LacertaVcs;
import one.nem.lacerta.vcs.factory.LacertaVcsFactory;
@AndroidEntryPoint
public class ScannerManagerFragment extends Fragment {
String TAG = getClass().getSimpleName();
@Inject
LacertaLogger logger;
@Inject
LacertaVcsFactory vcsFactory;
private static final boolean DEFAULT_SINGLE_PAGE = false;
private boolean singlePage;
public ScannerManagerFragment() {
// Required empty public constructor
}
// public static ScannerManagerFragment newInstance(boolean singlePage) {
// ScannerManagerFragment fragment = new ScannerManagerFragment();
// Bundle args = new Bundle();
// args.putBoolean("singlePage", singlePage);
// fragment.setArguments(args);
// return fragment;
// }
public static ScannerManagerFragment newInstance() {
ScannerManagerFragment fragment = new ScannerManagerFragment();
Bundle args = new Bundle();
args.putBoolean("singlePage", DEFAULT_SINGLE_PAGE);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
singlePage = getArguments().getBoolean("singlePage", DEFAULT_SINGLE_PAGE);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_scanner_manager, container, false);
// ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(
// ViewGroup.LayoutParams.MATCH_PARENT,
// ViewGroup.LayoutParams.MATCH_PARENT
// );
// view.setLayoutParams(layoutParams);
return view;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
// Init
logger.debug(TAG, "called");
view.findViewById(R.id.button_intent_scanner_manager_activity).setOnClickListener(v -> {
// DocumentScannerActivityを起動する
Intent intent = new Intent(requireActivity().getApplicationContext(), ScannerManagerActivity.class);
startActivity(intent);
});
}
}

View File

@ -1,75 +0,0 @@
package one.nem.lacerta.component.scanner;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import androidx.constraintlayout.utils.widget.ImageFilterView;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.websitebeaver.documentscanner.DocumentScanner;
/**
* A simple {@link Fragment} subclass.
* Use the {@link ScannerScanFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class ScannerScanFragment extends Fragment {
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
// private static final String MAX_SCAN_COUNT = "max_scan_count"; // 規定値
// TODO: Rename and change types of parameters
private String mParam1;
public ScannerScanFragment() {
// Required empty public constructor
}
public static ScannerScanFragment newInstance(String param1) {
ScannerScanFragment fragment = new ScannerScanFragment();
Bundle args = new Bundle();
// args.putString(MAX_SCAN_COUNT, param1);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
// mParam1 = getArguments().getString(MAX_SCAN_COUNT);
// scan(Integer.parseInt(mParam1));
}
}
public DocumentScanner getDocumentScanner() {
return new DocumentScanner(
this,
(croppedImageResults) -> {
// display the first cropped image
croppedImageView.setImageBitmap(
BitmapFactory.decodeFile(croppedImageResults.get(0))
);
return null;
},
(errorMessage) -> {
// an error happened
return null;
},
() -> {
// user canceled document scan
return null;
},
null,
null,
null
);
}
}

View File

@ -1,64 +0,0 @@
package one.nem.lacerta.component.scanner;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* A simple {@link Fragment} subclass.
* Use the {@link ScannerScanResultFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class ScannerScanResultFragment extends Fragment {
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
// TODO: Rename and change types of parameters
private String mParam1;
private String mParam2;
public ScannerScanResultFragment() {
// Required empty public constructor
}
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @param param1 Parameter 1.
* @param param2 Parameter 2.
* @return A new instance of fragment ScannerScanResultFragment.
*/
// TODO: Rename and change types and number of parameters
public static ScannerScanResultFragment newInstance(String param1, String param2) {
ScannerScanResultFragment fragment = new ScannerScanResultFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_scanner_scan_result, container, false);
}
}

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true">
<shape android:shape="rectangle">
<solid android:color="#00000000" />
<corners android:radius="8dp" />
<stroke android:color="#FF0000" android:width="2dp" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="#00000000" />
<corners android:radius="8dp" />
</shape>
</item>
</selector>

View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main"
android:theme="@style/Theme.Lacerta"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/top_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimaryContainer"
app:titleTextColor="@color/colorOnPrimaryContainer"
app:title="Preview"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/selected_image"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_above="@+id/horizontal_scroll"
android:scaleType="centerInside"
app:layout_constraintBottom_toTopOf="@+id/horizontal_scroll"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/top_toolbar" />
<HorizontalScrollView
android:id="@+id/horizontal_scroll"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:scrollbars="none"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/selected_image">
<LinearLayout
android:id="@+id/result_list_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
</LinearLayout>
</HorizontalScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:theme="@style/Theme.Lacerta"
tools:context=".ScannerDataManagerStubFragment" >
<LinearLayout
android:id="@+id/action_button_container"
android:layout_width="match_parent"
android:layout_height="0dp"
android:weightSum="2"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.button.MaterialButton
android:id="@+id/button_call_camera"
style="@style/Widget.Material3.Button.IconButton.Filled"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16px"
android:layout_weight="1"
android:text="Call camera" />
</LinearLayout>
<LinearLayout
android:id="@+id/init_button_container"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal"
android:weightSum="2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/action_button_container">
<com.google.android.material.button.MaterialButton
android:id="@+id/button_create_documnent"
style="@style/Widget.Material3.Button.IconButton.Filled"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16px"
android:layout_weight="1"
android:text="Create Doc Obj" />
<com.google.android.material.button.MaterialButton
android:id="@+id/button_init_document_processor"
style="@style/Widget.Material3.Button.IconButton.Filled"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16px"
android:layout_weight="1"
android:text="Init Processor" />
</LinearLayout>
<LinearLayout
android:id="@+id/doc_button_container"
android:layout_width="match_parent"
android:layout_height="0dp"
android:weightSum="2"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/init_button_container">
<com.google.android.material.button.MaterialButton
android:id="@+id/button_add_page"
style="@style/Widget.Material3.Button.IconButton.Filled"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16px"
android:layout_weight="1"
android:text="Add page to last" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/result_recycler_view"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/doc_button_container" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ScannerManagerFragment">
<Button
android:id="@+id/button_intent_scanner_manager_activity"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -1,133 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<androidx.constraintlayout.utils.widget.ImageFilterView
android:id="@+id/cropped_image_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintBottom_toTopOf="@+id/linear_layout_buttons">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_margin="12dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="0"
android:text="Saturation" />
<SeekBar
android:id="@+id/seekBar_saturation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:max="200"
android:progress="100"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_margin="12dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="0"
android:text="Contrast" />
<SeekBar
android:id="@+id/seekBar_contrast"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:max="200"
android:progress="100"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_margin="12dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="0"
android:text="Brightness" />
<SeekBar
android:id="@+id/seekBar_brightness"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="200"
android:progress="100"
android:layout_weight="1"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_margin="12dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="0"
android:text="Warmth" />
<SeekBar
android:id="@+id/seekBar_warmth"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="500"
android:progress="100"
android:layout_weight="1"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/linear_layout_buttons"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<Button
android:id="@+id/button_save_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:insetLeft="12dp"
android:insetRight="12dp"
android:text="Save Image" />
<Button
android:id="@+id/button_kill_me"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:insetLeft="12dp"
android:insetRight="12dp"
android:text="Kill me" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="24px">
<ImageView
android:id="@+id/imageViewResult"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:srcCompat="@android:drawable/presence_video_online"
android:adjustViewBounds="true"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageViewResult">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="2"
android:text="Resolution:"
android:textIsSelectable="false"
android:textSize="16sp" />
<TextView
android:id="@+id/textViewResHeight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Height"
android:textIsSelectable="false"
android:textSize="16sp" />
<TextView
android:id="@+id/textViewResWidth"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Width"
android:textIsSelectable="false"
android:textSize="16sp" />
</LinearLayout>
<TextView
android:id="@+id/textViewPath"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Path"
android:textIsSelectable="false"
android:textSize="16sp" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/result_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxHeight="64dp"
android:adjustViewBounds="true"
android:background="@drawable/result_image_container_item_border"
android:padding="8dp"
android:scaleType="centerCrop" />
</FrameLayout>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_save_new"
android:icon="@drawable/save_24px"
android:title="Save"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/action_insert_exist"
android:icon="@drawable/description_24px"
android:title="Insert"
app:showAsAction="ifRoom"/>
</menu>

View File

@ -1,10 +1,11 @@
plugins {
alias(libs.plugins.com.android.library)
id 'com.google.dagger.hilt.android'
}
android {
namespace 'one.nem.lacerta.component.viewer'
compileSdk 33
compileSdk 34
defaultConfig {
minSdk 26
@ -29,7 +30,39 @@ dependencies {
implementation libs.androidx.appcompat
implementation libs.com.google.android.material
implementation libs.androidx.activity
implementation libs.androidx.constraintlayout
testImplementation libs.junit
androidTestImplementation libs.androidx.test.ext.junit
androidTestImplementation libs.androidx.test.espresso.core
// Navigation
implementation libs.navigation.fragment
implementation libs.navigation.ui
implementation libs.navigation.dynamic.features.fragment
// DI
implementation libs.com.google.dagger.hilt.android
annotationProcessor libs.com.google.dagger.hilt.compiler
// shared
implementation project(':shared:ui')
implementation project(':utils')
implementation project(':data')
implementation project(':model')
implementation project(':vcs')
implementation project(':component:common')
// TODO-rca:
implementation "com.hendraanggrian.material:collapsingtoolbarlayout-subtitle:1.5.0"
// ViewPager2
implementation "androidx.viewpager2:viewpager2:1.0.0"
implementation project(':component:scanner') //
}

View File

@ -1,4 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application>
<activity
android:name=".ViewerMainActivity"
android:exported="false" />
</application>
</manifest>

Some files were not shown because too many files have changed in this diff Show More