From d4c10d8c05d2701d70c1b498f2e897922c2173c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 10:31:26 +0900 Subject: [PATCH 01/53] =?UTF-8?q?=E3=83=95=E3=83=A9=E3=82=B0=E3=83=A1?= =?UTF-8?q?=E3=83=B3=E3=83=88=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shared/ui/LacertaTextInputDialog.java | 64 +++++++++++++++++++ .../fragment_lacerta_text_input_dialog.xml | 14 ++++ shared/ui/src/main/res/values/strings.xml | 2 + 3 files changed, 80 insertions(+) create mode 100644 shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaTextInputDialog.java create mode 100644 shared/ui/src/main/res/layout/fragment_lacerta_text_input_dialog.xml diff --git a/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaTextInputDialog.java b/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaTextInputDialog.java new file mode 100644 index 00000000..db6e8280 --- /dev/null +++ b/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaTextInputDialog.java @@ -0,0 +1,64 @@ +package one.nem.lacerta.shared.ui; + +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 LacertaTextInputDialog#newInstance} factory method to + * create an instance of this fragment. + */ +public class LacertaTextInputDialog 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 LacertaTextInputDialog() { + // 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 LacertaTextInputDialog. + */ + // TODO: Rename and change types and number of parameters + public static LacertaTextInputDialog newInstance(String param1, String param2) { + LacertaTextInputDialog fragment = new LacertaTextInputDialog(); + 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_lacerta_text_input_dialog, container, false); + } +} \ No newline at end of file diff --git a/shared/ui/src/main/res/layout/fragment_lacerta_text_input_dialog.xml b/shared/ui/src/main/res/layout/fragment_lacerta_text_input_dialog.xml new file mode 100644 index 00000000..8b739179 --- /dev/null +++ b/shared/ui/src/main/res/layout/fragment_lacerta_text_input_dialog.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/shared/ui/src/main/res/values/strings.xml b/shared/ui/src/main/res/values/strings.xml index 2a35d080..ad9aa2ee 100644 --- a/shared/ui/src/main/res/values/strings.xml +++ b/shared/ui/src/main/res/values/strings.xml @@ -39,4 +39,6 @@ Placeholder(TODO: Replace) + + Hello blank fragment \ No newline at end of file From bc3b74989dd4482b16ed1c028ec4fa0b5d20ffba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 10:32:18 +0900 Subject: [PATCH 02/53] =?UTF-8?q?=E5=BC=95=E6=95=B0=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shared/ui/LacertaTextInputDialog.java | 29 +++++-------------- 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaTextInputDialog.java b/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaTextInputDialog.java index db6e8280..9dedec94 100644 --- a/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaTextInputDialog.java +++ b/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaTextInputDialog.java @@ -15,33 +15,18 @@ import android.view.ViewGroup; */ public class LacertaTextInputDialog 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; + String title; + String message; public LacertaTextInputDialog() { // 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 LacertaTextInputDialog. - */ - // TODO: Rename and change types and number of parameters - public static LacertaTextInputDialog newInstance(String param1, String param2) { + public static LacertaTextInputDialog newInstance(String title, String message) { LacertaTextInputDialog fragment = new LacertaTextInputDialog(); Bundle args = new Bundle(); - args.putString(ARG_PARAM1, param1); - args.putString(ARG_PARAM2, param2); + args.putString("title", title); + args.putString("message", message); fragment.setArguments(args); return fragment; } @@ -50,8 +35,8 @@ public class LacertaTextInputDialog extends Fragment { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { - mParam1 = getArguments().getString(ARG_PARAM1); - mParam2 = getArguments().getString(ARG_PARAM2); + title = getArguments().getString("title"); + message = getArguments().getString("message"); } } From 5bac9657ac2a169444b5329e3a62cad9eecbcc68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 11:09:49 +0900 Subject: [PATCH 03/53] =?UTF-8?q?=E3=83=80=E3=82=A4=E3=82=A2=E3=83=AD?= =?UTF-8?q?=E3=82=B0=E7=94=A8=E3=83=AC=E3=82=A4=E3=82=A2=E3=82=A6=E3=83=88?= =?UTF-8?q?=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../layout/lacerta_dialog_edit_text_layout.xml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 shared/ui/src/main/res/layout/lacerta_dialog_edit_text_layout.xml diff --git a/shared/ui/src/main/res/layout/lacerta_dialog_edit_text_layout.xml b/shared/ui/src/main/res/layout/lacerta_dialog_edit_text_layout.xml new file mode 100644 index 00000000..28edbef9 --- /dev/null +++ b/shared/ui/src/main/res/layout/lacerta_dialog_edit_text_layout.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file From 4f8751e4b3b34ac8e136edc98770450870688bd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 11:11:52 +0900 Subject: [PATCH 04/53] =?UTF-8?q?=E5=BB=83=E6=AD=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shared/ui/LacertaTextInputDialog.java | 49 ------------------- .../fragment_lacerta_text_input_dialog.xml | 14 ------ 2 files changed, 63 deletions(-) delete mode 100644 shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaTextInputDialog.java delete mode 100644 shared/ui/src/main/res/layout/fragment_lacerta_text_input_dialog.xml diff --git a/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaTextInputDialog.java b/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaTextInputDialog.java deleted file mode 100644 index 9dedec94..00000000 --- a/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaTextInputDialog.java +++ /dev/null @@ -1,49 +0,0 @@ -package one.nem.lacerta.shared.ui; - -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 LacertaTextInputDialog#newInstance} factory method to - * create an instance of this fragment. - */ -public class LacertaTextInputDialog extends Fragment { - - String title; - String message; - - public LacertaTextInputDialog() { - // Required empty public constructor - } - - public static LacertaTextInputDialog newInstance(String title, String message) { - LacertaTextInputDialog fragment = new LacertaTextInputDialog(); - Bundle args = new Bundle(); - args.putString("title", title); - args.putString("message", message); - fragment.setArguments(args); - return fragment; - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - if (getArguments() != null) { - title = getArguments().getString("title"); - message = getArguments().getString("message"); - } - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_lacerta_text_input_dialog, container, false); - } -} \ No newline at end of file diff --git a/shared/ui/src/main/res/layout/fragment_lacerta_text_input_dialog.xml b/shared/ui/src/main/res/layout/fragment_lacerta_text_input_dialog.xml deleted file mode 100644 index 8b739179..00000000 --- a/shared/ui/src/main/res/layout/fragment_lacerta_text_input_dialog.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - \ No newline at end of file From a711f7284d631c4cb31dfae4079efe491cf778cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 11:12:08 +0900 Subject: [PATCH 05/53] =?UTF-8?q?=E6=96=B0=E3=81=97=E3=81=84=E3=83=80?= =?UTF-8?q?=E3=82=A4=E3=82=A2=E3=83=AD=E3=82=B0=E3=82=92=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feature/library/LibraryPageFragment.java | 52 +++++++++++-------- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/feature/library/src/main/java/one/nem/lacerta/feature/library/LibraryPageFragment.java b/feature/library/src/main/java/one/nem/lacerta/feature/library/LibraryPageFragment.java index fd9d3e89..6563b70a 100644 --- a/feature/library/src/main/java/one/nem/lacerta/feature/library/LibraryPageFragment.java +++ b/feature/library/src/main/java/one/nem/lacerta/feature/library/LibraryPageFragment.java @@ -1,11 +1,8 @@ package one.nem.lacerta.feature.library; -import android.app.AlertDialog; import android.content.Intent; import android.os.Bundle; -import androidx.annotation.NonNull; -import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; @@ -14,34 +11,18 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; -import android.widget.ArrayAdapter; -import android.widget.ListView; -import android.widget.TextView; -import android.widget.Toast; import com.google.android.material.appbar.AppBarLayout; -import com.google.android.material.appbar.CollapsingToolbarLayout; - -import org.w3c.dom.Text; - -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; import javax.inject.Inject; import dagger.hilt.android.AndroidEntryPoint; import one.nem.lacerta.component.viewer.ViewerMainActivity; -import one.nem.lacerta.data.Document; import one.nem.lacerta.data.LacertaLibrary; -import one.nem.lacerta.model.FragmentNavigation; import one.nem.lacerta.model.LibraryItemPage; -import one.nem.lacerta.model.PublicPath; import one.nem.lacerta.utils.FeatureSwitch; import one.nem.lacerta.utils.LacertaLogger; @@ -221,12 +202,36 @@ public class LibraryPageFragment extends Fragment { */ private void createFolder(String pageId) { // TODO-rca: デザインをMaterial Design 3に合わせたカスタムダイアログにする - AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); +// AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); +// builder.setTitle("フォルダの作成"); +// builder.setMessage("フォルダ名を入力してください"); +// final android.widget.EditText input = new android.widget.EditText(getContext()); +// input.setText("フォルダ名"); +// builder.setView(input); +// builder.setPositiveButton("作成", (dialog, which) -> { +// lacertaLibrary.createFolder(pageId, input.getText().toString()).thenAccept(folderId -> { +// // Refresh +// updateItem(pageId); +// }); +// }); +// builder.setNegativeButton("キャンセル", (dialog, which) -> { +// dialog.cancel(); +// }); +// builder.show(); +// +// LacertaTextInputDialog lacertaTextInputDialog = LacertaTextInputDialog.newInstance("フォルダの作成", "フォルダ名を入力してください"); +// lacertaTextInputDialog.show(((AppCompatActivity) requireActivity()).getSupportFragmentManager(), "create_folder_dialog"); + + MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(requireContext()); builder.setTitle("フォルダの作成"); builder.setMessage("フォルダ名を入力してください"); - final android.widget.EditText input = new android.widget.EditText(getContext()); + + View view = LayoutInflater.from(requireContext()).inflate(one.nem.lacerta.shared.ui.R.layout.lacerta_dialog_edit_text_layout, null); + final android.widget.EditText input = view.findViewById(one.nem.lacerta.shared.ui.R.id.custom_edit_text); input.setText("フォルダ名"); - builder.setView(input); + + builder.setView(view); + builder.setPositiveButton("作成", (dialog, which) -> { lacertaLibrary.createFolder(pageId, input.getText().toString()).thenAccept(folderId -> { // Refresh @@ -236,6 +241,7 @@ public class LibraryPageFragment extends Fragment { builder.setNegativeButton("キャンセル", (dialog, which) -> { dialog.cancel(); }); + builder.show(); } From b341c78432351b5756bc3eabd3a7302a8563241d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 11:19:58 +0900 Subject: [PATCH 06/53] =?UTF-8?q?=E6=96=B0=E3=81=97=E3=81=84=E3=83=80?= =?UTF-8?q?=E3=82=A4=E3=82=A2=E3=83=AD=E3=82=B0=E3=82=92=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feature/library/LibraryPageFragment.java | 28 +++---------------- .../lacerta_dialog_edit_text_layout.xml | 2 +- 2 files changed, 5 insertions(+), 25 deletions(-) diff --git a/feature/library/src/main/java/one/nem/lacerta/feature/library/LibraryPageFragment.java b/feature/library/src/main/java/one/nem/lacerta/feature/library/LibraryPageFragment.java index 6563b70a..df1ad96b 100644 --- a/feature/library/src/main/java/one/nem/lacerta/feature/library/LibraryPageFragment.java +++ b/feature/library/src/main/java/one/nem/lacerta/feature/library/LibraryPageFragment.java @@ -201,37 +201,17 @@ public class LibraryPageFragment extends Fragment { * Currentにフォルダを作成する */ private void createFolder(String pageId) { - // TODO-rca: デザインをMaterial Design 3に合わせたカスタムダイアログにする -// AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); -// builder.setTitle("フォルダの作成"); -// builder.setMessage("フォルダ名を入力してください"); -// final android.widget.EditText input = new android.widget.EditText(getContext()); -// input.setText("フォルダ名"); -// builder.setView(input); -// builder.setPositiveButton("作成", (dialog, which) -> { -// lacertaLibrary.createFolder(pageId, input.getText().toString()).thenAccept(folderId -> { -// // Refresh -// updateItem(pageId); -// }); -// }); -// builder.setNegativeButton("キャンセル", (dialog, which) -> { -// dialog.cancel(); -// }); -// builder.show(); -// -// LacertaTextInputDialog lacertaTextInputDialog = LacertaTextInputDialog.newInstance("フォルダの作成", "フォルダ名を入力してください"); -// lacertaTextInputDialog.show(((AppCompatActivity) requireActivity()).getSupportFragmentManager(), "create_folder_dialog"); - MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(requireContext()); builder.setTitle("フォルダの作成"); builder.setMessage("フォルダ名を入力してください"); View view = LayoutInflater.from(requireContext()).inflate(one.nem.lacerta.shared.ui.R.layout.lacerta_dialog_edit_text_layout, null); - final android.widget.EditText input = view.findViewById(one.nem.lacerta.shared.ui.R.id.custom_edit_text); - input.setText("フォルダ名"); + final com.google.android.material.textfield.TextInputEditText input = view.findViewById(one.nem.lacerta.shared.ui.R.id.custom_edit_text); + final com.google.android.material.textfield.TextInputLayout inputLayout = view.findViewById(one.nem.lacerta.shared.ui.R.id.custom_text_input_layout); + inputLayout.setHint("フォルダ名"); builder.setView(view); - + builder.setPositiveButton("作成", (dialog, which) -> { lacertaLibrary.createFolder(pageId, input.getText().toString()).thenAccept(folderId -> { // Refresh diff --git a/shared/ui/src/main/res/layout/lacerta_dialog_edit_text_layout.xml b/shared/ui/src/main/res/layout/lacerta_dialog_edit_text_layout.xml index 28edbef9..0aed315c 100644 --- a/shared/ui/src/main/res/layout/lacerta_dialog_edit_text_layout.xml +++ b/shared/ui/src/main/res/layout/lacerta_dialog_edit_text_layout.xml @@ -5,7 +5,7 @@ android:id="@+id/custom_text_input_layout" android:layout_width="match_parent" android:layout_height="wrap_content" - android:hint="Custom EditText" + android:paddingHorizontal="16dp" style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"> Date: Thu, 25 Jan 2024 11:36:45 +0900 Subject: [PATCH 07/53] =?UTF-8?q?=E6=96=B0=E3=81=97=E3=81=84=E3=83=80?= =?UTF-8?q?=E3=82=A4=E3=82=A2=E3=83=AD=E3=82=B0=E3=82=92=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/viewer/ViewerListFragment.java | 22 ++++++++++++------- .../lacerta_dialog_edit_text_layout.xml | 1 + 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerListFragment.java b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerListFragment.java index 4c306755..790820b8 100644 --- a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerListFragment.java +++ b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerListFragment.java @@ -13,6 +13,8 @@ import android.view.View; import android.view.ViewGroup; import android.widget.Toast; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + import java.util.ArrayList; import javax.inject.Inject; @@ -158,14 +160,18 @@ public class ViewerListFragment extends Fragment { .commit(); return true; } else if (item.getItemId() == R.id.action_rename) { - // TODO-rca: デザインをMaterial Design 3に合わせたカスタムダイアログにする - AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); + + MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(requireContext()); builder.setTitle("ファイル名の変更"); - builder.setMessage("ファイル名を入力してください"); - final android.widget.EditText input = new android.widget.EditText(getContext()); - input.setText(documentName); - builder.setView(input); - builder.setPositiveButton("作成", (dialog, which) -> { + + View view = LayoutInflater.from(requireContext()).inflate(one.nem.lacerta.shared.ui.R.layout.lacerta_dialog_edit_text_layout, null); + final com.google.android.material.textfield.TextInputEditText input = view.findViewById(one.nem.lacerta.shared.ui.R.id.custom_edit_text); + final com.google.android.material.textfield.TextInputLayout inputLayout = view.findViewById(one.nem.lacerta.shared.ui.R.id.custom_text_input_layout); + inputLayout.setHint("ファイル名"); + + builder.setView(view); + + builder.setPositiveButton("変更", (dialog, which) -> { document.renameDocument(documentId, input.getText().toString()).thenAccept(aVoid -> { getActivity().runOnUiThread(() -> { toolbar.setTitle(input.getText().toString()); @@ -176,8 +182,8 @@ public class ViewerListFragment extends Fragment { builder.setNegativeButton("キャンセル", (dialog, which) -> { dialog.cancel(); }); - builder.show(); + builder.show(); return true; } else if (item.getItemId() == R.id.action_delete) { // TODO-rca: デザインをMaterial Design 3に合わせたカスタムダイアログにする diff --git a/shared/ui/src/main/res/layout/lacerta_dialog_edit_text_layout.xml b/shared/ui/src/main/res/layout/lacerta_dialog_edit_text_layout.xml index 0aed315c..b5d2b1d4 100644 --- a/shared/ui/src/main/res/layout/lacerta_dialog_edit_text_layout.xml +++ b/shared/ui/src/main/res/layout/lacerta_dialog_edit_text_layout.xml @@ -5,6 +5,7 @@ android:id="@+id/custom_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"> From d94aab43d5733d6baaf320fde5fe4a2e83c8ff3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 11:37:47 +0900 Subject: [PATCH 08/53] =?UTF-8?q?=E5=89=8A=E9=99=A4=E3=83=80=E3=82=A4?= =?UTF-8?q?=E3=82=A2=E3=83=AD=E3=82=B0=E3=82=92MaterialAlertDialog?= =?UTF-8?q?=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../one/nem/lacerta/component/viewer/ViewerListFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerListFragment.java b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerListFragment.java index 790820b8..9cd49f37 100644 --- a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerListFragment.java +++ b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerListFragment.java @@ -187,7 +187,7 @@ public class ViewerListFragment extends Fragment { return true; } else if (item.getItemId() == R.id.action_delete) { // TODO-rca: デザインをMaterial Design 3に合わせたカスタムダイアログにする - AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); + MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(requireContext()); builder.setTitle("ファイルの削除"); builder.setMessage("ファイルを削除しますか?"); builder.setPositiveButton("削除", (dialog, which) -> { From 1477169f6c115b76536ca1b484c9310180c7632e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 11:38:44 +0900 Subject: [PATCH 09/53] =?UTF-8?q?=E3=83=87=E3=82=A3=E3=83=AC=E3=82=AF?= =?UTF-8?q?=E3=83=88=E3=83=AA=E9=81=B8=E6=8A=9E=E3=83=80=E3=82=A4=E3=82=A2?= =?UTF-8?q?=E3=83=AD=E3=82=B0=E7=94=A8=E3=83=AC=E3=82=A4=E3=82=A2=E3=82=A6?= =?UTF-8?q?=E3=83=88=E4=BD=9C=E6=88=90=20WIP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shared/ui/src/main/res/layout/lacerta_dialog_select_dir.xml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 shared/ui/src/main/res/layout/lacerta_dialog_select_dir.xml diff --git a/shared/ui/src/main/res/layout/lacerta_dialog_select_dir.xml b/shared/ui/src/main/res/layout/lacerta_dialog_select_dir.xml new file mode 100644 index 00000000..77d9ef65 --- /dev/null +++ b/shared/ui/src/main/res/layout/lacerta_dialog_select_dir.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file From 031ef6f08813f6a581961f8295fe3f372cbad931 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 11:41:38 +0900 Subject: [PATCH 10/53] =?UTF-8?q?=E3=83=87=E3=82=A3=E3=83=AC=E3=82=AF?= =?UTF-8?q?=E3=83=88=E3=83=AA=E9=81=B8=E6=8A=9E=E3=83=80=E3=82=A4=E3=82=A2?= =?UTF-8?q?=E3=83=AD=E3=82=B0=E4=BD=9C=E6=88=90WIP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shared/ui/LacertaSelectDirDialog.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaSelectDirDialog.java diff --git a/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaSelectDirDialog.java b/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaSelectDirDialog.java new file mode 100644 index 00000000..ac3734aa --- /dev/null +++ b/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaSelectDirDialog.java @@ -0,0 +1,21 @@ +package one.nem.lacerta.shared.ui; + +import android.app.Dialog; +import android.os.Bundle; + +import androidx.fragment.app.DialogFragment; + +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +public class LacertaSelectDirDialog extends DialogFragment { + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getActivity()); + builder.setTitle("Select Directory"); + builder.setMessage("Please select a directory."); + builder.setPositiveButton("OK", null); + builder.setNegativeButton("Cancel", null); + return builder.create(); + } +} From 38a277c15e4c90ddb783ad4498c895e2d81a5226 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 11:51:26 +0900 Subject: [PATCH 11/53] =?UTF-8?q?=E3=82=A2=E3=83=80=E3=83=97=E3=82=BF?= =?UTF-8?q?=E4=BD=9C=E6=88=90WIP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shared/ui/SelectDirDialogItemAdapter.java | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 shared/ui/src/main/java/one/nem/lacerta/shared/ui/SelectDirDialogItemAdapter.java diff --git a/shared/ui/src/main/java/one/nem/lacerta/shared/ui/SelectDirDialogItemAdapter.java b/shared/ui/src/main/java/one/nem/lacerta/shared/ui/SelectDirDialogItemAdapter.java new file mode 100644 index 00000000..661cba5d --- /dev/null +++ b/shared/ui/src/main/java/one/nem/lacerta/shared/ui/SelectDirDialogItemAdapter.java @@ -0,0 +1,44 @@ +package one.nem.lacerta.shared.ui; + +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; + +public class SelectDirDialogItemAdapter extends RecyclerView.Adapter { + + @Override + public SelectDirDialogItemAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.common_list_item, parent, false); + return new SelectDirDialogItemAdapter.ViewHolder(view); + } + + @Override + public void onBindViewHolder(SelectDirDialogItemAdapter.ViewHolder holder, int position) { + holder.title.setText("title"); + holder.description.setText("description"); + } + + @Override + public int getItemCount() { + return 3; + } + + public class ViewHolder extends RecyclerView.ViewHolder { + + TextView title; + TextView description; + + + public ViewHolder(@NonNull View itemView) { + super(itemView); + + title = itemView.findViewById(R.id.item_title); + description = itemView.findViewById(R.id.item_description); + + } + } +} From 420197e5c3cdc52ac9fc8a9ac04695c18ee99d22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 11:56:15 +0900 Subject: [PATCH 12/53] RecyclerViewDialog WIP --- .../component/viewer/ViewerListFragment.java | 6 +++- .../shared/ui/LacertaSelectDirDialog.java | 23 +++++++++++++++ .../shared/ui/SelectDirDialogItemAdapter.java | 2 +- .../res/layout/lacerta_dialog_select_dir.xml | 28 +++++++++++++++++-- 4 files changed, 54 insertions(+), 5 deletions(-) diff --git a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerListFragment.java b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerListFragment.java index 9cd49f37..dfb89289 100644 --- a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerListFragment.java +++ b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerListFragment.java @@ -22,6 +22,7 @@ import javax.inject.Inject; import dagger.hilt.android.AndroidEntryPoint; import one.nem.lacerta.data.Document; import one.nem.lacerta.model.document.page.Page; +import one.nem.lacerta.shared.ui.LacertaSelectDirDialog; import one.nem.lacerta.utils.FeatureSwitch; import one.nem.lacerta.utils.LacertaLogger; import one.nem.lacerta.vcs.LacertaVcs; @@ -204,7 +205,10 @@ public class ViewerListFragment extends Fragment { builder.show(); return true; } else if (item.getItemId() == R.id.action_move) { - Toast.makeText(getContext(), "Work in progress", Toast.LENGTH_SHORT).show(); +// Toast.makeText(getContext(), "Work in progress", Toast.LENGTH_SHORT).show(); + + LacertaSelectDirDialog lacertaSelectDirDialog = new LacertaSelectDirDialog(); + lacertaSelectDirDialog.show(getParentFragmentManager(), "selectDirDialog"); return true; } else { return false; diff --git a/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaSelectDirDialog.java b/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaSelectDirDialog.java index ac3734aa..ba85c49f 100644 --- a/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaSelectDirDialog.java +++ b/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaSelectDirDialog.java @@ -2,8 +2,13 @@ package one.nem.lacerta.shared.ui; import android.app.Dialog; import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.Toast; +import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.DialogFragment; +import androidx.recyclerview.widget.RecyclerView; import com.google.android.material.dialog.MaterialAlertDialogBuilder; @@ -12,6 +17,24 @@ public class LacertaSelectDirDialog extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getActivity()); + LayoutInflater inflater = requireActivity().getLayoutInflater(); + View view = inflater.inflate(R.layout.lacerta_dialog_select_dir, null); + + RecyclerView recyclerView = view.findViewById(R.id.select_dir_recycler_view); + recyclerView.setHasFixedSize(true); + + SelectDirDialogItemAdapter adapter = new SelectDirDialogItemAdapter(); + recyclerView.setAdapter(adapter); + recyclerView.setLayoutManager(new androidx.recyclerview.widget.LinearLayoutManager(getContext())); + + Toolbar toolbar = view.findViewById(R.id.select_dir_toolbar); + toolbar.setNavigationOnClickListener(v -> { + Toast.makeText(getContext(), "Called", Toast.LENGTH_SHORT).show(); + dismiss(); + }); + + builder.setView(view); + builder.setTitle("Select Directory"); builder.setMessage("Please select a directory."); builder.setPositiveButton("OK", null); diff --git a/shared/ui/src/main/java/one/nem/lacerta/shared/ui/SelectDirDialogItemAdapter.java b/shared/ui/src/main/java/one/nem/lacerta/shared/ui/SelectDirDialogItemAdapter.java index 661cba5d..ede9a51e 100644 --- a/shared/ui/src/main/java/one/nem/lacerta/shared/ui/SelectDirDialogItemAdapter.java +++ b/shared/ui/src/main/java/one/nem/lacerta/shared/ui/SelectDirDialogItemAdapter.java @@ -24,7 +24,7 @@ public class SelectDirDialogItemAdapter extends RecyclerView.Adapter - + android:layout_height="match_parent" + android:orientation="vertical"> - \ No newline at end of file + + + + + + \ No newline at end of file From dfbe26ee9a7c5fd50367e941a185d5a84fd45b78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 11:58:02 +0900 Subject: [PATCH 13/53] =?UTF-8?q?=E3=82=A4=E3=83=99=E3=83=B3=E3=83=88?= =?UTF-8?q?=E3=83=AA=E3=82=B9=E3=83=8A=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shared/ui/LacertaSelectDirDialogEventListener.java | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaSelectDirDialogEventListener.java diff --git a/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaSelectDirDialogEventListener.java b/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaSelectDirDialogEventListener.java new file mode 100644 index 00000000..a2fb8fdb --- /dev/null +++ b/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaSelectDirDialogEventListener.java @@ -0,0 +1,5 @@ +package one.nem.lacerta.shared.ui; + +public interface LacertaSelectDirDialogEventListener { + void onDirSelected(String name, String itemId); +} From a815d3b1b4d9cf31d8e3e1c0ad2f5ced26b56eda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 12:03:29 +0900 Subject: [PATCH 14/53] =?UTF-8?q?=E4=BE=9D=E5=AD=98=E9=96=A2=E4=BF=82?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shared/ui/build.gradle | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/shared/ui/build.gradle b/shared/ui/build.gradle index 4ac5c270..13f39ffc 100644 --- a/shared/ui/build.gradle +++ b/shared/ui/build.gradle @@ -32,4 +32,8 @@ dependencies { testImplementation libs.junit androidTestImplementation libs.androidx.test.ext.junit androidTestImplementation libs.androidx.test.espresso.core + + implementation project(':data') + implementation project(':model') + implementation project(':utils') } \ No newline at end of file From 03d78b12009ed2d6f96514db7377182e52aa3e6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 12:06:21 +0900 Subject: [PATCH 15/53] =?UTF-8?q?=E3=82=A4=E3=83=99=E3=83=B3=E3=83=88?= =?UTF-8?q?=E3=83=AA=E3=82=B9=E3=83=8A=E3=81=AB=E5=AF=BE=E5=BF=9C=E3=81=97?= =?UTF-8?q?=E3=81=9F=E5=AE=9F=E8=A3=85=E3=82=92=E4=BD=9C=E6=88=90=20WIP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shared/ui/LacertaSelectDirDialog.java | 5 +- .../shared/ui/SelectDirDialogItemAdapter.java | 79 ++++++++++++------- 2 files changed, 53 insertions(+), 31 deletions(-) diff --git a/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaSelectDirDialog.java b/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaSelectDirDialog.java index ba85c49f..4faebf45 100644 --- a/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaSelectDirDialog.java +++ b/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaSelectDirDialog.java @@ -23,7 +23,10 @@ public class LacertaSelectDirDialog extends DialogFragment { RecyclerView recyclerView = view.findViewById(R.id.select_dir_recycler_view); recyclerView.setHasFixedSize(true); - SelectDirDialogItemAdapter adapter = new SelectDirDialogItemAdapter(); + SelectDirDialogItemAdapter adapter = new SelectDirDialogItemAdapter((name, itemId) -> { + Toast.makeText(getContext(), "Called", Toast.LENGTH_SHORT).show(); + dismiss(); + }); recyclerView.setAdapter(adapter); recyclerView.setLayoutManager(new androidx.recyclerview.widget.LinearLayoutManager(getContext())); diff --git a/shared/ui/src/main/java/one/nem/lacerta/shared/ui/SelectDirDialogItemAdapter.java b/shared/ui/src/main/java/one/nem/lacerta/shared/ui/SelectDirDialogItemAdapter.java index ede9a51e..81ffc6ec 100644 --- a/shared/ui/src/main/java/one/nem/lacerta/shared/ui/SelectDirDialogItemAdapter.java +++ b/shared/ui/src/main/java/one/nem/lacerta/shared/ui/SelectDirDialogItemAdapter.java @@ -8,37 +8,56 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; +import java.util.ArrayList; + +import one.nem.lacerta.model.ListItem; + public class SelectDirDialogItemAdapter extends RecyclerView.Adapter { - @Override - public SelectDirDialogItemAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.common_list_item, parent, false); - return new SelectDirDialogItemAdapter.ViewHolder(view); - } - - @Override - public void onBindViewHolder(SelectDirDialogItemAdapter.ViewHolder holder, int position) { - holder.title.setText("title"); - holder.description.setText("description"); - } - - @Override - public int getItemCount() { - return 100; - } - - public class ViewHolder extends RecyclerView.ViewHolder { - - TextView title; - TextView description; - - - public ViewHolder(@NonNull View itemView) { - super(itemView); - - title = itemView.findViewById(R.id.item_title); - description = itemView.findViewById(R.id.item_description); - - } + ArrayList listItems; + LacertaSelectDirDialogEventListener listener; + + public SelectDirDialogItemAdapter(LacertaSelectDirDialogEventListener listener) { + this.listener = listener; + } + + public void setListItems(ArrayList listItems) { + this.listItems = listItems; + } + + @Override + public SelectDirDialogItemAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.common_list_item, parent, false); + return new SelectDirDialogItemAdapter.ViewHolder(view); + } + + @Override + public void onBindViewHolder(SelectDirDialogItemAdapter.ViewHolder holder, int position) { + ListItem listItem = listItems.get(position); + holder.title.setText(listItem.getTitle()); + holder.description.setText(listItem.getDescription()); + holder.itemView.setOnClickListener(v -> { + listener.onDirSelected(listItem.getTitle(), listItem.getItemId()); + }); + } + + @Override + public int getItemCount() { + return listItems.size(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + + TextView title; + TextView description; + + + public ViewHolder(@NonNull View itemView) { + super(itemView); + + title = itemView.findViewById(R.id.item_title); + description = itemView.findViewById(R.id.item_description); + } + } } From ccfed654dfe5e2046a94cb47d844650784b9cd73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 12:07:48 +0900 Subject: [PATCH 16/53] =?UTF-8?q?=E3=83=95=E3=82=A9=E3=83=AB=E3=83=80?= =?UTF-8?q?=E3=81=AE=E4=B8=80=E8=A6=A7=E3=82=92=E5=8F=96=E5=BE=97=E3=81=99?= =?UTF-8?q?=E3=82=8B=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../one/nem/lacerta/data/LacertaLibrary.java | 3 +++ .../lacerta/data/impl/LacertaLibraryImpl.java | 25 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/data/src/main/java/one/nem/lacerta/data/LacertaLibrary.java b/data/src/main/java/one/nem/lacerta/data/LacertaLibrary.java index c5957e8b..eb11e289 100644 --- a/data/src/main/java/one/nem/lacerta/data/LacertaLibrary.java +++ b/data/src/main/java/one/nem/lacerta/data/LacertaLibrary.java @@ -20,6 +20,9 @@ public interface LacertaLibrary { CompletableFuture getLibraryPage(String pageId, int limit); CompletableFuture getLibraryPage(String pageId, int limit, int offset); + // Get Folder List + CompletableFuture> getFolderList(String parentId); + // Create Folder CompletableFuture createFolder(String parentId, String name); diff --git a/data/src/main/java/one/nem/lacerta/data/impl/LacertaLibraryImpl.java b/data/src/main/java/one/nem/lacerta/data/impl/LacertaLibraryImpl.java index 5067f701..139cf2bf 100644 --- a/data/src/main/java/one/nem/lacerta/data/impl/LacertaLibraryImpl.java +++ b/data/src/main/java/one/nem/lacerta/data/impl/LacertaLibraryImpl.java @@ -127,6 +127,31 @@ public class LacertaLibraryImpl implements LacertaLibrary { }); } + @Override + public CompletableFuture> getFolderList(String parentId) { + return CompletableFuture.supplyAsync(() -> { + List folderEntities; + if (parentId == null) { // When root folder + folderEntities = database.folderDao().findRootFolders(); + } else { + folderEntities = database.folderDao().findByParentId(parentId); + } + + ArrayList listItems = new ArrayList<>(); + for (FolderEntity childFolderEntity : folderEntities) { + logger.debug("LacertaLibraryImpl", "childFolderEntity.name: " + childFolderEntity.name); + ListItem listItem = new ListItem(); + listItem.setItemType(ListItemType.ITEM_TYPE_FOLDER); + listItem.setTitle(childFolderEntity.name); + listItem.setDescription("フォルダ"); // TODO-rca: ハードコーディングやめる + listItem.setItemId(childFolderEntity.id); + listItems.add(listItem); + } + + return listItems; + }); + } + @Override public CompletableFuture createFolder(String parentId, String name) { return CompletableFuture.supplyAsync(() -> { From 240b4675c8527dc31589d8f00a5cee1efedf858b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 12:08:40 +0900 Subject: [PATCH 17/53] =?UTF-8?q?=E4=BE=9D=E5=AD=98=E9=96=A2=E4=BF=82?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shared/ui/build.gradle | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/shared/ui/build.gradle b/shared/ui/build.gradle index 13f39ffc..d48fed86 100644 --- a/shared/ui/build.gradle +++ b/shared/ui/build.gradle @@ -1,5 +1,6 @@ plugins { alias(libs.plugins.com.android.library) + id 'com.google.dagger.hilt.android' } android { @@ -36,4 +37,8 @@ dependencies { implementation project(':data') implementation project(':model') implementation project(':utils') + + // Hilt (DI) + implementation libs.com.google.dagger.hilt.android + annotationProcessor libs.com.google.dagger.hilt.compiler } \ No newline at end of file From 5c165b96d38475a144f7dc919f3e083183918e31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 12:15:06 +0900 Subject: [PATCH 18/53] =?UTF-8?q?=E4=B8=8D=E8=A6=81=E3=81=AA=E4=BE=9D?= =?UTF-8?q?=E5=AD=98=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- model/build.gradle | 2 -- 1 file changed, 2 deletions(-) diff --git a/model/build.gradle b/model/build.gradle index 8546adc4..cfd215dc 100644 --- a/model/build.gradle +++ b/model/build.gradle @@ -36,6 +36,4 @@ dependencies { // JGit implementation 'org.eclipse.jgit:org.eclipse.jgit:6.8.0.202311291450-r' - implementation project(":shared:ui") - } \ No newline at end of file From 6ef54e594052a4a0b310781c9a170fbc0c31cae6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 12:15:32 +0900 Subject: [PATCH 19/53] =?UTF-8?q?Revert=20"=E4=B8=8D=E8=A6=81=E3=81=AA?= =?UTF-8?q?=E4=BE=9D=E5=AD=98=E3=82=92=E5=89=8A=E9=99=A4"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 5c165b96d38475a144f7dc919f3e083183918e31. --- model/build.gradle | 2 ++ 1 file changed, 2 insertions(+) diff --git a/model/build.gradle b/model/build.gradle index cfd215dc..8546adc4 100644 --- a/model/build.gradle +++ b/model/build.gradle @@ -36,4 +36,6 @@ dependencies { // JGit implementation 'org.eclipse.jgit:org.eclipse.jgit:6.8.0.202311291450-r' + implementation project(":shared:ui") + } \ No newline at end of file From 45fcd95e6f917b3199bace31bc42967e86e5e237 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 12:16:23 +0900 Subject: [PATCH 20/53] =?UTF-8?q?=E3=83=AC=E3=82=A4=E3=82=A2=E3=82=A6?= =?UTF-8?q?=E3=83=88=E7=A7=BB=E6=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../res/layout/lacerta_dialog_select_dir.xml | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 component/common/src/main/res/layout/lacerta_dialog_select_dir.xml diff --git a/component/common/src/main/res/layout/lacerta_dialog_select_dir.xml b/component/common/src/main/res/layout/lacerta_dialog_select_dir.xml new file mode 100644 index 00000000..b62a4868 --- /dev/null +++ b/component/common/src/main/res/layout/lacerta_dialog_select_dir.xml @@ -0,0 +1,28 @@ + + + + + + + + + \ No newline at end of file From afa3460b24e85dd0ef2c6a8dbfb2e5de982f5bcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 12:17:00 +0900 Subject: [PATCH 21/53] =?UTF-8?q?=E3=82=B3=E3=83=BC=E3=83=89=E7=A7=BB?= =?UTF-8?q?=E6=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/LacertaSelectDirDialog.java | 70 +++++++++++++++++++ .../LacertaSelectDirDialogEventListener.java | 5 ++ .../common/SelectDirDialogItemAdapter.java | 63 +++++++++++++++++ 3 files changed, 138 insertions(+) create mode 100644 component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java create mode 100644 component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialogEventListener.java create mode 100644 component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java new file mode 100644 index 00000000..77e1ab5a --- /dev/null +++ b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java @@ -0,0 +1,70 @@ +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.appcompat.widget.Toolbar; +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; + +@AndroidEntryPoint +public class LacertaSelectDirDialog extends DialogFragment { + + @Inject + LacertaLibrary lacertaLibrary; + + private SelectDirDialogItemAdapter adapter; + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getActivity()); + LayoutInflater inflater = requireActivity().getLayoutInflater(); + View view = inflater.inflate(one.nem.lacerta.shared.ui.R.layout.lacerta_dialog_select_dir, null); + + RecyclerView recyclerView = view.findViewById(one.nem.lacerta.shared.ui.R.id.select_dir_recycler_view); + recyclerView.setHasFixedSize(true); + + showRecyclerViewItem(null); // get root folder list + + this.adapter = new SelectDirDialogItemAdapter((name, itemId) -> { + Toast.makeText(getContext(), "Called: name", Toast.LENGTH_SHORT).show(); + showRecyclerViewItem(itemId); + dismiss(); + }); + + recyclerView.setAdapter(this.adapter); + recyclerView.setLayoutManager(new androidx.recyclerview.widget.LinearLayoutManager(getContext())); + + Toolbar toolbar = view.findViewById(one.nem.lacerta.shared.ui.R.id.select_dir_toolbar); + toolbar.setNavigationOnClickListener(v -> { + Toast.makeText(getContext(), "Called", Toast.LENGTH_SHORT).show(); + dismiss(); + }); + + builder.setView(view); + + builder.setTitle("Select Directory"); + builder.setMessage("Please select a directory."); + builder.setPositiveButton("OK", null); + builder.setNegativeButton("Cancel", null); + return builder.create(); + } + + private void showRecyclerViewItem(String parent) { + lacertaLibrary.getFolderList(parent).thenAccept(listItems -> { + adapter.setListItems(listItems); + adapter.notifyDataSetChanged(); + }); + + } +} diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialogEventListener.java b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialogEventListener.java new file mode 100644 index 00000000..f1f4ae4a --- /dev/null +++ b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialogEventListener.java @@ -0,0 +1,5 @@ +package one.nem.lacerta.component.common; + +public interface LacertaSelectDirDialogEventListener { + void onDirSelected(String name, String itemId); +} diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java b/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java new file mode 100644 index 00000000..79a95acb --- /dev/null +++ b/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java @@ -0,0 +1,63 @@ +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.util.ArrayList; + +import one.nem.lacerta.model.ListItem; + +public class SelectDirDialogItemAdapter extends RecyclerView.Adapter { + + ArrayList listItems; + LacertaSelectDirDialogEventListener listener; + + public SelectDirDialogItemAdapter(LacertaSelectDirDialogEventListener listener) { + this.listener = listener; + } + + public void setListItems(ArrayList listItems) { + this.listItems = listItems; + } + + @Override + public ViewHolder 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 ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + ListItem listItem = listItems.get(position); + holder.title.setText(listItem.getTitle()); + holder.description.setText(listItem.getDescription()); + holder.itemView.setOnClickListener(v -> { + listener.onDirSelected(listItem.getTitle(), listItem.getItemId()); + }); + } + + @Override + public int getItemCount() { + return listItems.size(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + + TextView title; + TextView description; + + + public ViewHolder(@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); + + } + } +} From 705b89a5002edb7fee3d9b353d783144ff9f09ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 12:17:38 +0900 Subject: [PATCH 22/53] =?UTF-8?q?=E7=A7=BB=E6=A4=8D=E5=85=83=E5=89=8A?= =?UTF-8?q?=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shared/ui/LacertaSelectDirDialog.java | 47 -------------- .../LacertaSelectDirDialogEventListener.java | 5 -- .../shared/ui/SelectDirDialogItemAdapter.java | 63 ------------------- .../res/layout/lacerta_dialog_select_dir.xml | 28 --------- 4 files changed, 143 deletions(-) delete mode 100644 shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaSelectDirDialog.java delete mode 100644 shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaSelectDirDialogEventListener.java delete mode 100644 shared/ui/src/main/java/one/nem/lacerta/shared/ui/SelectDirDialogItemAdapter.java delete mode 100644 shared/ui/src/main/res/layout/lacerta_dialog_select_dir.xml diff --git a/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaSelectDirDialog.java b/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaSelectDirDialog.java deleted file mode 100644 index 4faebf45..00000000 --- a/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaSelectDirDialog.java +++ /dev/null @@ -1,47 +0,0 @@ -package one.nem.lacerta.shared.ui; - -import android.app.Dialog; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.widget.Toast; - -import androidx.appcompat.widget.Toolbar; -import androidx.fragment.app.DialogFragment; -import androidx.recyclerview.widget.RecyclerView; - -import com.google.android.material.dialog.MaterialAlertDialogBuilder; - -public class LacertaSelectDirDialog extends DialogFragment { - - @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { - MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getActivity()); - LayoutInflater inflater = requireActivity().getLayoutInflater(); - View view = inflater.inflate(R.layout.lacerta_dialog_select_dir, null); - - RecyclerView recyclerView = view.findViewById(R.id.select_dir_recycler_view); - recyclerView.setHasFixedSize(true); - - SelectDirDialogItemAdapter adapter = new SelectDirDialogItemAdapter((name, itemId) -> { - Toast.makeText(getContext(), "Called", Toast.LENGTH_SHORT).show(); - dismiss(); - }); - recyclerView.setAdapter(adapter); - recyclerView.setLayoutManager(new androidx.recyclerview.widget.LinearLayoutManager(getContext())); - - Toolbar toolbar = view.findViewById(R.id.select_dir_toolbar); - toolbar.setNavigationOnClickListener(v -> { - Toast.makeText(getContext(), "Called", Toast.LENGTH_SHORT).show(); - dismiss(); - }); - - builder.setView(view); - - builder.setTitle("Select Directory"); - builder.setMessage("Please select a directory."); - builder.setPositiveButton("OK", null); - builder.setNegativeButton("Cancel", null); - return builder.create(); - } -} diff --git a/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaSelectDirDialogEventListener.java b/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaSelectDirDialogEventListener.java deleted file mode 100644 index a2fb8fdb..00000000 --- a/shared/ui/src/main/java/one/nem/lacerta/shared/ui/LacertaSelectDirDialogEventListener.java +++ /dev/null @@ -1,5 +0,0 @@ -package one.nem.lacerta.shared.ui; - -public interface LacertaSelectDirDialogEventListener { - void onDirSelected(String name, String itemId); -} diff --git a/shared/ui/src/main/java/one/nem/lacerta/shared/ui/SelectDirDialogItemAdapter.java b/shared/ui/src/main/java/one/nem/lacerta/shared/ui/SelectDirDialogItemAdapter.java deleted file mode 100644 index 81ffc6ec..00000000 --- a/shared/ui/src/main/java/one/nem/lacerta/shared/ui/SelectDirDialogItemAdapter.java +++ /dev/null @@ -1,63 +0,0 @@ -package one.nem.lacerta.shared.ui; - -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.util.ArrayList; - -import one.nem.lacerta.model.ListItem; - -public class SelectDirDialogItemAdapter extends RecyclerView.Adapter { - - ArrayList listItems; - LacertaSelectDirDialogEventListener listener; - - public SelectDirDialogItemAdapter(LacertaSelectDirDialogEventListener listener) { - this.listener = listener; - } - - public void setListItems(ArrayList listItems) { - this.listItems = listItems; - } - - @Override - public SelectDirDialogItemAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.common_list_item, parent, false); - return new SelectDirDialogItemAdapter.ViewHolder(view); - } - - @Override - public void onBindViewHolder(SelectDirDialogItemAdapter.ViewHolder holder, int position) { - ListItem listItem = listItems.get(position); - holder.title.setText(listItem.getTitle()); - holder.description.setText(listItem.getDescription()); - holder.itemView.setOnClickListener(v -> { - listener.onDirSelected(listItem.getTitle(), listItem.getItemId()); - }); - } - - @Override - public int getItemCount() { - return listItems.size(); - } - - public class ViewHolder extends RecyclerView.ViewHolder { - - TextView title; - TextView description; - - - public ViewHolder(@NonNull View itemView) { - super(itemView); - - title = itemView.findViewById(R.id.item_title); - description = itemView.findViewById(R.id.item_description); - - } - } -} diff --git a/shared/ui/src/main/res/layout/lacerta_dialog_select_dir.xml b/shared/ui/src/main/res/layout/lacerta_dialog_select_dir.xml deleted file mode 100644 index b62a4868..00000000 --- a/shared/ui/src/main/res/layout/lacerta_dialog_select_dir.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - \ No newline at end of file From 6710ae9d56b9b7bf20be37faef68a89dad457356 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 12:18:10 +0900 Subject: [PATCH 23/53] =?UTF-8?q?=E4=BE=9D=E5=AD=98=E9=96=A2=E4=BF=82?= =?UTF-8?q?=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shared/ui/build.gradle | 5 ----- 1 file changed, 5 deletions(-) diff --git a/shared/ui/build.gradle b/shared/ui/build.gradle index d48fed86..566f6ebc 100644 --- a/shared/ui/build.gradle +++ b/shared/ui/build.gradle @@ -1,6 +1,5 @@ plugins { alias(libs.plugins.com.android.library) - id 'com.google.dagger.hilt.android' } android { @@ -35,10 +34,6 @@ dependencies { androidTestImplementation libs.androidx.test.espresso.core implementation project(':data') - implementation project(':model') implementation project(':utils') - // Hilt (DI) - implementation libs.com.google.dagger.hilt.android - annotationProcessor libs.com.google.dagger.hilt.compiler } \ No newline at end of file From 7a9c81282f4b32f28da72d32138f21584e5155be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 12:18:48 +0900 Subject: [PATCH 24/53] =?UTF-8?q?=E4=BE=9D=E5=AD=98=E9=96=A2=E4=BF=82?= =?UTF-8?q?=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- component/common/build.gradle | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/component/common/build.gradle b/component/common/build.gradle index f728173b..cf064b8f 100644 --- a/component/common/build.gradle +++ b/component/common/build.gradle @@ -1,5 +1,6 @@ plugins { alias(libs.plugins.com.android.library) + id 'com.google.dagger.hilt.android' } android { @@ -33,5 +34,12 @@ dependencies { 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') } \ No newline at end of file From dbd719368f19d970f276a7ea4845a5af141f41a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 12:19:37 +0900 Subject: [PATCH 25/53] =?UTF-8?q?=E5=AE=9F=E8=A3=85=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/common/LacertaSelectDirDialog.java | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java index 77e1ab5a..068cbd08 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java @@ -29,9 +29,9 @@ public class LacertaSelectDirDialog extends DialogFragment { public Dialog onCreateDialog(Bundle savedInstanceState) { MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getActivity()); LayoutInflater inflater = requireActivity().getLayoutInflater(); - View view = inflater.inflate(one.nem.lacerta.shared.ui.R.layout.lacerta_dialog_select_dir, null); + View view = inflater.inflate(R.layout.lacerta_dialog_select_dir, null); - RecyclerView recyclerView = view.findViewById(one.nem.lacerta.shared.ui.R.id.select_dir_recycler_view); + RecyclerView recyclerView = view.findViewById(R.id.select_dir_recycler_view); recyclerView.setHasFixedSize(true); showRecyclerViewItem(null); // get root folder list @@ -45,12 +45,6 @@ public class LacertaSelectDirDialog extends DialogFragment { recyclerView.setAdapter(this.adapter); recyclerView.setLayoutManager(new androidx.recyclerview.widget.LinearLayoutManager(getContext())); - Toolbar toolbar = view.findViewById(one.nem.lacerta.shared.ui.R.id.select_dir_toolbar); - toolbar.setNavigationOnClickListener(v -> { - Toast.makeText(getContext(), "Called", Toast.LENGTH_SHORT).show(); - dismiss(); - }); - builder.setView(view); builder.setTitle("Select Directory"); From 7fa3588127012ab9f473c01f153f89b3675d4c4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 12:20:44 +0900 Subject: [PATCH 26/53] =?UTF-8?q?=E4=BE=9D=E5=AD=98=E9=96=A2=E4=BF=82?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- component/viewer/build.gradle | 2 ++ 1 file changed, 2 insertions(+) diff --git a/component/viewer/build.gradle b/component/viewer/build.gradle index 93006a1e..30bd5372 100644 --- a/component/viewer/build.gradle +++ b/component/viewer/build.gradle @@ -56,4 +56,6 @@ dependencies { implementation project(':vcs') + implementation project(':component:common') + } \ No newline at end of file From 4ad5df6c9893640bb1527984d7ea21479e6be812 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 12:21:26 +0900 Subject: [PATCH 27/53] =?UTF-8?q?=E5=AE=9F=E8=A3=85=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nem/lacerta/component/viewer/ViewerListFragment.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerListFragment.java b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerListFragment.java index dfb89289..be566e6a 100644 --- a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerListFragment.java +++ b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerListFragment.java @@ -1,6 +1,5 @@ package one.nem.lacerta.component.viewer; -import android.app.AlertDialog; import android.os.Bundle; import androidx.appcompat.widget.Toolbar; @@ -20,9 +19,9 @@ import java.util.ArrayList; import javax.inject.Inject; import dagger.hilt.android.AndroidEntryPoint; +import one.nem.lacerta.component.common.LacertaSelectDirDialog; import one.nem.lacerta.data.Document; import one.nem.lacerta.model.document.page.Page; -import one.nem.lacerta.shared.ui.LacertaSelectDirDialog; import one.nem.lacerta.utils.FeatureSwitch; import one.nem.lacerta.utils.LacertaLogger; import one.nem.lacerta.vcs.LacertaVcs; @@ -206,9 +205,8 @@ public class ViewerListFragment extends Fragment { return true; } else if (item.getItemId() == R.id.action_move) { // Toast.makeText(getContext(), "Work in progress", Toast.LENGTH_SHORT).show(); - LacertaSelectDirDialog lacertaSelectDirDialog = new LacertaSelectDirDialog(); - lacertaSelectDirDialog.show(getParentFragmentManager(), "selectDirDialog"); + lacertaSelectDirDialog.show(getParentFragmentManager(), "LacertaSelectDirDialog"); return true; } else { return false; From af55033914fdeac8c910f82e3f1efb92f320fe3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 12:48:38 +0900 Subject: [PATCH 28/53] =?UTF-8?q?=E4=BE=9D=E5=AD=98=E9=96=A2=E4=BF=82?= =?UTF-8?q?=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shared/ui/build.gradle | 3 --- 1 file changed, 3 deletions(-) diff --git a/shared/ui/build.gradle b/shared/ui/build.gradle index 566f6ebc..df745a93 100644 --- a/shared/ui/build.gradle +++ b/shared/ui/build.gradle @@ -33,7 +33,4 @@ dependencies { androidTestImplementation libs.androidx.test.ext.junit androidTestImplementation libs.androidx.test.espresso.core - implementation project(':data') - implementation project(':utils') - } \ No newline at end of file From 1dff7381afb712802cea6d9756524d05dff8ca05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 12:52:56 +0900 Subject: [PATCH 29/53] =?UTF-8?q?=E3=83=AC=E3=82=A4=E3=82=A2=E3=82=A6?= =?UTF-8?q?=E3=83=88=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/common/LacertaSelectDirDialog.java | 3 +-- .../main/res/layout/lacerta_dialog_select_dir.xml | 12 ------------ 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java index 068cbd08..c1d82091 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java @@ -32,12 +32,11 @@ public class LacertaSelectDirDialog extends DialogFragment { View view = inflater.inflate(R.layout.lacerta_dialog_select_dir, null); RecyclerView recyclerView = view.findViewById(R.id.select_dir_recycler_view); - recyclerView.setHasFixedSize(true); showRecyclerViewItem(null); // get root folder list this.adapter = new SelectDirDialogItemAdapter((name, itemId) -> { - Toast.makeText(getContext(), "Called: name", Toast.LENGTH_SHORT).show(); + Toast.makeText(getContext(), "Called:" + name, Toast.LENGTH_SHORT).show(); showRecyclerViewItem(itemId); dismiss(); }); diff --git a/component/common/src/main/res/layout/lacerta_dialog_select_dir.xml b/component/common/src/main/res/layout/lacerta_dialog_select_dir.xml index b62a4868..eee781d5 100644 --- a/component/common/src/main/res/layout/lacerta_dialog_select_dir.xml +++ b/component/common/src/main/res/layout/lacerta_dialog_select_dir.xml @@ -5,23 +5,11 @@ android:layout_height="match_parent" android:orientation="vertical"> - - - From 6cff3dd6b4466983733d2c305980aa6d82e9d9ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 12:54:17 +0900 Subject: [PATCH 30/53] =?UTF-8?q?=E5=87=A6=E7=90=86=E9=A0=86=E5=BA=8F?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nem/lacerta/component/common/LacertaSelectDirDialog.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java index c1d82091..e3262051 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java @@ -33,8 +33,6 @@ public class LacertaSelectDirDialog extends DialogFragment { RecyclerView recyclerView = view.findViewById(R.id.select_dir_recycler_view); - showRecyclerViewItem(null); // get root folder list - this.adapter = new SelectDirDialogItemAdapter((name, itemId) -> { Toast.makeText(getContext(), "Called:" + name, Toast.LENGTH_SHORT).show(); showRecyclerViewItem(itemId); @@ -43,9 +41,10 @@ public class LacertaSelectDirDialog extends DialogFragment { recyclerView.setAdapter(this.adapter); recyclerView.setLayoutManager(new androidx.recyclerview.widget.LinearLayoutManager(getContext())); - builder.setView(view); + showRecyclerViewItem(null); // get root folder list + builder.setTitle("Select Directory"); builder.setMessage("Please select a directory."); builder.setPositiveButton("OK", null); From 87054f1b8369c82ce4bebcc1dca67c1e800dde73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 13:40:01 +0900 Subject: [PATCH 31/53] =?UTF-8?q?=E3=83=AC=E3=82=A4=E3=82=A2=E3=82=A6?= =?UTF-8?q?=E3=83=88=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shared/ui/src/main/res/layout/common_list_item.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shared/ui/src/main/res/layout/common_list_item.xml b/shared/ui/src/main/res/layout/common_list_item.xml index 5ff6ecd1..08afc42f 100644 --- a/shared/ui/src/main/res/layout/common_list_item.xml +++ b/shared/ui/src/main/res/layout/common_list_item.xml @@ -28,7 +28,7 @@ Date: Thu, 25 Jan 2024 13:40:09 +0900 Subject: [PATCH 32/53] =?UTF-8?q?=E3=83=AC=E3=82=A4=E3=82=A2=E3=82=A6?= =?UTF-8?q?=E3=83=88=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/layout/lacerta_dialog_select_dir.xml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/component/common/src/main/res/layout/lacerta_dialog_select_dir.xml b/component/common/src/main/res/layout/lacerta_dialog_select_dir.xml index eee781d5..d4943dd9 100644 --- a/component/common/src/main/res/layout/lacerta_dialog_select_dir.xml +++ b/component/common/src/main/res/layout/lacerta_dialog_select_dir.xml @@ -9,8 +9,10 @@ android:id="@+id/select_dir_recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@color/colorSurface" - android:scrollbars="vertical" - android:scrollbarStyle="outsideOverlay" /> + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:layout_marginLeft="8dp" + android:layout_marginRight="8dp" + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/> \ No newline at end of file From dfe604977551417fea0c28705e7c580b010df334 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 13:46:51 +0900 Subject: [PATCH 33/53] =?UTF-8?q?=E3=83=80=E3=82=A4=E3=82=A2=E3=83=AD?= =?UTF-8?q?=E3=82=B0=E5=86=85=E3=81=A7=E3=83=91=E3=82=B9=E3=82=92=E7=A7=BB?= =?UTF-8?q?=E5=8B=95=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/LacertaSelectDirDialog.java | 23 ++++++++++++------- .../common/SelectDirDialogItemAdapter.java | 15 ++++++------ 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java index e3262051..d89ba473 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java @@ -8,6 +8,7 @@ import android.widget.Toast; import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.DialogFragment; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.google.android.material.dialog.MaterialAlertDialogBuilder; @@ -25,25 +26,28 @@ public class LacertaSelectDirDialog extends DialogFragment { private SelectDirDialogItemAdapter adapter; + private RecyclerView recyclerView; + @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); - RecyclerView recyclerView = view.findViewById(R.id.select_dir_recycler_view); + this.recyclerView = view.findViewById(R.id.select_dir_recycler_view); this.adapter = new SelectDirDialogItemAdapter((name, itemId) -> { Toast.makeText(getContext(), "Called:" + name, Toast.LENGTH_SHORT).show(); showRecyclerViewItem(itemId); - dismiss(); }); - recyclerView.setAdapter(this.adapter); - recyclerView.setLayoutManager(new androidx.recyclerview.widget.LinearLayoutManager(getContext())); + this.recyclerView.setAdapter(this.adapter); builder.setView(view); - showRecyclerViewItem(null); // get root folder list + showRecyclerViewItem(null); // get root folder builder.setTitle("Select Directory"); builder.setMessage("Please select a directory."); @@ -54,9 +58,12 @@ public class LacertaSelectDirDialog extends DialogFragment { private void showRecyclerViewItem(String parent) { lacertaLibrary.getFolderList(parent).thenAccept(listItems -> { - adapter.setListItems(listItems); - adapter.notifyDataSetChanged(); + getActivity().runOnUiThread(() -> { + int currentCount = adapter.getItemCount(); + adapter.notifyItemRangeRemoved(0, currentCount); + adapter.setListItems(listItems); + adapter.notifyItemRangeInserted(0, listItems.size()); + }); }); - } } diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java b/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java index 79a95acb..b9bfddaa 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java @@ -12,7 +12,7 @@ import java.util.ArrayList; import one.nem.lacerta.model.ListItem; -public class SelectDirDialogItemAdapter extends RecyclerView.Adapter { +public class SelectDirDialogItemAdapter extends RecyclerView.Adapter { ArrayList listItems; LacertaSelectDirDialogEventListener listener; @@ -25,14 +25,15 @@ public class SelectDirDialogItemAdapter extends RecyclerView.Adapter Date: Thu, 25 Jan 2024 14:11:58 +0900 Subject: [PATCH 34/53] =?UTF-8?q?=E3=83=AC=E3=82=A4=E3=82=A2=E3=82=A6?= =?UTF-8?q?=E3=83=88=E8=AA=BF=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/layout/lacerta_dialog_select_dir.xml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/component/common/src/main/res/layout/lacerta_dialog_select_dir.xml b/component/common/src/main/res/layout/lacerta_dialog_select_dir.xml index d4943dd9..c5a1231c 100644 --- a/component/common/src/main/res/layout/lacerta_dialog_select_dir.xml +++ b/component/common/src/main/res/layout/lacerta_dialog_select_dir.xml @@ -5,14 +5,16 @@ android:layout_height="match_parent" android:orientation="vertical"> + + \ No newline at end of file From 232967c9055be11394cfedb5774a7fa21c2f6edd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 14:12:10 +0900 Subject: [PATCH 35/53] =?UTF-8?q?=E5=87=A6=E7=90=86=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/common/LacertaSelectDirDialog.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java index d89ba473..58d02f06 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java @@ -4,6 +4,7 @@ import android.app.Dialog; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; +import android.widget.TextView; import android.widget.Toast; import androidx.appcompat.widget.Toolbar; @@ -13,10 +14,13 @@ import androidx.recyclerview.widget.RecyclerView; import com.google.android.material.dialog.MaterialAlertDialogBuilder; +import org.w3c.dom.Text; + import javax.inject.Inject; import dagger.hilt.android.AndroidEntryPoint; import one.nem.lacerta.data.LacertaLibrary; +import one.nem.lacerta.model.ListItemType; @AndroidEntryPoint public class LacertaSelectDirDialog extends DialogFragment { @@ -28,6 +32,8 @@ public class LacertaSelectDirDialog extends DialogFragment { private RecyclerView recyclerView; + private TextView current_dir_text_view; + @Override public Dialog onCreateDialog(Bundle savedInstanceState) { @@ -38,6 +44,7 @@ public class LacertaSelectDirDialog extends DialogFragment { View view = inflater.inflate(R.layout.lacerta_dialog_select_dir, null); 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((name, itemId) -> { Toast.makeText(getContext(), "Called:" + name, Toast.LENGTH_SHORT).show(); @@ -57,6 +64,15 @@ public class LacertaSelectDirDialog extends DialogFragment { } private void showRecyclerViewItem(String parent) { + lacertaLibrary.getPublicPath(parent, 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(parent).thenAccept(listItems -> { getActivity().runOnUiThread(() -> { int currentCount = adapter.getItemCount(); From 6c8fdc4d81c43d0c14715b05cec19deba26cbd21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 14:15:12 +0900 Subject: [PATCH 36/53] =?UTF-8?q?=E3=82=A2=E3=82=AF=E3=82=B7=E3=83=A7?= =?UTF-8?q?=E3=83=B3=E3=82=BF=E3=82=A4=E3=83=97=E3=81=AB=E3=83=90=E3=83=83?= =?UTF-8?q?=E3=82=AF=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- model/src/main/java/one/nem/lacerta/model/ListItemType.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/model/src/main/java/one/nem/lacerta/model/ListItemType.java b/model/src/main/java/one/nem/lacerta/model/ListItemType.java index 65376a1c..4b21f86d 100644 --- a/model/src/main/java/one/nem/lacerta/model/ListItemType.java +++ b/model/src/main/java/one/nem/lacerta/model/ListItemType.java @@ -3,7 +3,8 @@ package one.nem.lacerta.model; public enum ListItemType { ITEM_TYPE_FOLDER(one.nem.lacerta.shared.ui.R.drawable.folder_24px), - ITEM_TYPE_DOCUMENT(one.nem.lacerta.shared.ui.R.drawable.description_24px); + ITEM_TYPE_DOCUMENT(one.nem.lacerta.shared.ui.R.drawable.description_24px), + ITEM_TYPE_ACTION_BACK(one.nem.lacerta.shared.ui.R.drawable.arrow_back_24px); private int iconId; From 4f3c79564ba3a3a640ab680946640ac6c4988345 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 14:16:54 +0900 Subject: [PATCH 37/53] =?UTF-8?q?=E3=82=A4=E3=83=B3=E3=82=BF=E3=83=95?= =?UTF-8?q?=E3=82=A7=E3=83=BC=E3=82=B9=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/common/LacertaSelectDirDialogEventListener.java | 1 + 1 file changed, 1 insertion(+) diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialogEventListener.java b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialogEventListener.java index f1f4ae4a..27641e7c 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialogEventListener.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialogEventListener.java @@ -2,4 +2,5 @@ package one.nem.lacerta.component.common; public interface LacertaSelectDirDialogEventListener { void onDirSelected(String name, String itemId); + void onBackSelected(); } From 04bd081d997552a610415a26e14d9fa819d936a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 14:17:25 +0900 Subject: [PATCH 38/53] =?UTF-8?q?=E3=82=A4=E3=83=B3=E3=82=BF=E3=83=95?= =?UTF-8?q?=E3=82=A7=E3=83=BC=E3=82=B9=E3=81=AE=E5=A4=89=E6=9B=B4=E3=81=AB?= =?UTF-8?q?=E8=BF=BD=E5=BE=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/SelectDirDialogItemAdapter.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java b/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java index b9bfddaa..1a34fa22 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java @@ -11,6 +11,7 @@ import androidx.recyclerview.widget.RecyclerView; import java.util.ArrayList; import one.nem.lacerta.model.ListItem; +import one.nem.lacerta.model.ListItemType; public class SelectDirDialogItemAdapter extends RecyclerView.Adapter { @@ -22,7 +23,10 @@ public class SelectDirDialogItemAdapter extends RecyclerView.Adapter listItems) { - this.listItems = listItems; + // 戻るアクションを追加 + this.listItems.add(0, new ListItem("戻る", " ", ListItemType.ITEM_TYPE_ACTION_BACK, null)); + + this.listItems.addAll(listItems); } @NonNull @@ -37,9 +41,11 @@ public class SelectDirDialogItemAdapter extends RecyclerView.Adapter { - listener.onDirSelected(listItem.getTitle(), listItem.getItemId()); - }); + if(listItem.getItemType() == ListItemType.ITEM_TYPE_ACTION_BACK) { + holder.itemView.setOnClickListener(v -> listener.onBackSelected()); + } else { + holder.itemView.setOnClickListener(v -> listener.onDirSelected(listItem.getTitle(), listItem.getItemId())); + } } @Override From 0128cecfae012cfbbf9f4cb2f41f07e596c08fb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 14:28:36 +0900 Subject: [PATCH 39/53] =?UTF-8?q?LibraryItemPage=E3=82=92=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E5=A4=89?= =?UTF-8?q?=E6=9B=B4,=20=E6=88=BB=E3=82=8B=E3=82=A2=E3=82=AF=E3=82=B7?= =?UTF-8?q?=E3=83=A7=E3=83=B3=E3=82=92=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/LacertaSelectDirDialog.java | 25 ++++++++++++------- .../LacertaSelectDirDialogEventListener.java | 2 +- .../common/SelectDirDialogItemAdapter.java | 18 ++++++------- .../one/nem/lacerta/data/LacertaLibrary.java | 2 +- .../lacerta/data/impl/LacertaLibraryImpl.java | 24 +++++++++++++++--- 5 files changed, 47 insertions(+), 24 deletions(-) diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java index 58d02f06..7e07448b 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java @@ -46,9 +46,16 @@ public class LacertaSelectDirDialog extends DialogFragment { 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((name, itemId) -> { - Toast.makeText(getContext(), "Called:" + name, Toast.LENGTH_SHORT).show(); - showRecyclerViewItem(itemId); + this.adapter = new SelectDirDialogItemAdapter(new LacertaSelectDirDialogEventListener() { + @Override + public void onDirSelected(String name, String itemId) { + showRecyclerViewItem(itemId); + } + + @Override + public void onBackSelected(String parentId) { + showRecyclerViewItem(parentId); + } }); this.recyclerView.setAdapter(this.adapter); @@ -63,8 +70,8 @@ public class LacertaSelectDirDialog extends DialogFragment { return builder.create(); } - private void showRecyclerViewItem(String parent) { - lacertaLibrary.getPublicPath(parent, ListItemType.ITEM_TYPE_FOLDER).thenAccept(publicPath -> { + 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の実装を修正する @@ -73,12 +80,12 @@ public class LacertaSelectDirDialog extends DialogFragment { } }); }); - lacertaLibrary.getFolderList(parent).thenAccept(listItems -> { + lacertaLibrary.getFolderList(targetDirId).thenAccept(libraryItemPage -> { getActivity().runOnUiThread(() -> { int currentCount = adapter.getItemCount(); - adapter.notifyItemRangeRemoved(0, currentCount); - adapter.setListItems(listItems); - adapter.notifyItemRangeInserted(0, listItems.size()); + adapter.notifyItemRangeRemoved(1, currentCount); // Backボタンを除くすべてのアイテムを削除 + adapter.setListItems(libraryItemPage); + adapter.notifyItemRangeInserted(1, libraryItemPage.getListItems().size()); }); }); } diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialogEventListener.java b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialogEventListener.java index 27641e7c..31954b32 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialogEventListener.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialogEventListener.java @@ -2,5 +2,5 @@ package one.nem.lacerta.component.common; public interface LacertaSelectDirDialogEventListener { void onDirSelected(String name, String itemId); - void onBackSelected(); + void onBackSelected(String parentId); } diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java b/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java index 1a34fa22..fea64c0f 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java @@ -10,23 +10,23 @@ import androidx.recyclerview.widget.RecyclerView; import java.util.ArrayList; +import one.nem.lacerta.model.LibraryItemPage; import one.nem.lacerta.model.ListItem; import one.nem.lacerta.model.ListItemType; public class SelectDirDialogItemAdapter extends RecyclerView.Adapter { - ArrayList listItems; + + private LibraryItemPage libraryItemPage; LacertaSelectDirDialogEventListener listener; public SelectDirDialogItemAdapter(LacertaSelectDirDialogEventListener listener) { this.listener = listener; } - public void setListItems(ArrayList listItems) { - // 戻るアクションを追加 - this.listItems.add(0, new ListItem("戻る", " ", ListItemType.ITEM_TYPE_ACTION_BACK, null)); - - this.listItems.addAll(listItems); + public void setListItems(LibraryItemPage libraryItemPage) { + this.libraryItemPage = libraryItemPage; + this.libraryItemPage.getListItems().add(0, new ListItem("戻る", " ", ListItemType.ITEM_TYPE_ACTION_BACK, null)); } @NonNull @@ -38,11 +38,11 @@ public class SelectDirDialogItemAdapter extends RecyclerView.Adapter listener.onBackSelected()); + holder.itemView.setOnClickListener(v -> listener.onBackSelected(this.libraryItemPage.getParentId())); } else { holder.itemView.setOnClickListener(v -> listener.onDirSelected(listItem.getTitle(), listItem.getItemId())); } @@ -50,7 +50,7 @@ public class SelectDirDialogItemAdapter extends RecyclerView.Adapter getLibraryPage(String pageId, int limit, int offset); // Get Folder List - CompletableFuture> getFolderList(String parentId); + CompletableFuture getFolderList(String parentId); // Create Folder CompletableFuture createFolder(String parentId, String name); diff --git a/data/src/main/java/one/nem/lacerta/data/impl/LacertaLibraryImpl.java b/data/src/main/java/one/nem/lacerta/data/impl/LacertaLibraryImpl.java index 139cf2bf..ac2d08f0 100644 --- a/data/src/main/java/one/nem/lacerta/data/impl/LacertaLibraryImpl.java +++ b/data/src/main/java/one/nem/lacerta/data/impl/LacertaLibraryImpl.java @@ -128,13 +128,26 @@ public class LacertaLibraryImpl implements LacertaLibrary { } @Override - public CompletableFuture> getFolderList(String parentId) { + public CompletableFuture getFolderList(String targetDirId) { return CompletableFuture.supplyAsync(() -> { + LibraryItemPage libraryItemPage = new LibraryItemPage(); + List folderEntities; - if (parentId == null) { // When root folder + if (targetDirId == null) { // When root folder folderEntities = database.folderDao().findRootFolders(); + libraryItemPage.setParentId(null); + libraryItemPage.setPageId(targetDirId); + libraryItemPage.setPageTitle("ライブラリ"); } else { - folderEntities = database.folderDao().findByParentId(parentId); + folderEntities = database.folderDao().findByParentId(targetDirId); + FolderEntity folderEntity = database.folderDao().findById(targetDirId); + if (folderEntity == null) { + logger.warn("LacertaLibraryImpl", targetDirId + " is not found."); + return null; + } + libraryItemPage.setParentId(folderEntity.parentId); + libraryItemPage.setPageId(folderEntity.id); + libraryItemPage.setPageTitle(folderEntity.name); } ArrayList listItems = new ArrayList<>(); @@ -148,7 +161,10 @@ public class LacertaLibraryImpl implements LacertaLibrary { listItems.add(listItem); } - return listItems; + + libraryItemPage.setListItems(listItems); + + return libraryItemPage; }); } From bf756abb16c212f233fbd7f011a2b14b3d842068 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 14:29:47 +0900 Subject: [PATCH 40/53] =?UTF-8?q?=E3=83=AC=E3=82=A4=E3=82=A2=E3=82=A6?= =?UTF-8?q?=E3=83=88=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/src/main/res/layout/lacerta_dialog_select_dir.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component/common/src/main/res/layout/lacerta_dialog_select_dir.xml b/component/common/src/main/res/layout/lacerta_dialog_select_dir.xml index c5a1231c..8e2bb439 100644 --- a/component/common/src/main/res/layout/lacerta_dialog_select_dir.xml +++ b/component/common/src/main/res/layout/lacerta_dialog_select_dir.xml @@ -9,7 +9,7 @@ android:id="@+id/current_dir_text_view" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginStart="16dp" /> + android:layout_marginStart="32dp" /> Date: Thu, 25 Jan 2024 14:31:04 +0900 Subject: [PATCH 41/53] =?UTF-8?q?=E4=B8=80=E6=97=A6Description=E3=82=92?= =?UTF-8?q?=E9=9D=9E=E8=A1=A8=E7=A4=BA=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nem/lacerta/component/common/SelectDirDialogItemAdapter.java | 1 + 1 file changed, 1 insertion(+) diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java b/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java index fea64c0f..e7217912 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java @@ -64,6 +64,7 @@ public class SelectDirDialogItemAdapter extends RecyclerView.Adapter Date: Thu, 25 Jan 2024 14:32:43 +0900 Subject: [PATCH 42/53] =?UTF-8?q?=E3=82=A2=E3=82=A4=E3=82=B3=E3=83=B3?= =?UTF-8?q?=E3=82=92=E6=AD=A3=E3=81=97=E3=81=8F=E8=A1=A8=E7=A4=BA=E3=81=A7?= =?UTF-8?q?=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/common/SelectDirDialogItemAdapter.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java b/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java index e7217912..7a625a3f 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java @@ -1,8 +1,10 @@ package one.nem.lacerta.component.common; +import android.media.Image; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; @@ -41,6 +43,7 @@ public class SelectDirDialogItemAdapter extends RecyclerView.Adapter listener.onBackSelected(this.libraryItemPage.getParentId())); } else { @@ -58,12 +61,15 @@ public class SelectDirDialogItemAdapter extends RecyclerView.Adapter Date: Thu, 25 Jan 2024 14:33:49 +0900 Subject: [PATCH 43/53] =?UTF-8?q?=E3=83=AB=E3=83=BC=E3=83=88=E3=81=AE?= =?UTF-8?q?=E5=A0=B4=E5=90=88=E3=81=AF=E6=88=BB=E3=82=8B=E3=83=9C=E3=82=BF?= =?UTF-8?q?=E3=83=B3=E3=82=92=E8=A1=A8=E7=A4=BA=E3=81=97=E3=81=AA=E3=81=84?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lacerta/component/common/SelectDirDialogItemAdapter.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java b/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java index 7a625a3f..dca3de3e 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java @@ -28,7 +28,9 @@ public class SelectDirDialogItemAdapter extends RecyclerView.Adapter Date: Thu, 25 Jan 2024 14:36:34 +0900 Subject: [PATCH 44/53] fix --- .../component/common/LacertaSelectDirDialog.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java index 7e07448b..f5dd84df 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java @@ -83,9 +83,15 @@ public class LacertaSelectDirDialog extends DialogFragment { lacertaLibrary.getFolderList(targetDirId).thenAccept(libraryItemPage -> { getActivity().runOnUiThread(() -> { int currentCount = adapter.getItemCount(); - adapter.notifyItemRangeRemoved(1, currentCount); // Backボタンを除くすべてのアイテムを削除 - adapter.setListItems(libraryItemPage); - adapter.notifyItemRangeInserted(1, libraryItemPage.getListItems().size()); + if (targetDirId == null) { // When root folder + adapter.setListItems(libraryItemPage); + adapter.notifyItemRangeRemoved(0, currentCount); + adapter.notifyItemRangeInserted(0, libraryItemPage.getListItems().size()); + } else { // When child folder + adapter.setListItems(libraryItemPage); + adapter.notifyItemRangeRemoved(1, currentCount); + adapter.notifyItemRangeInserted(1, libraryItemPage.getListItems().size()); + } }); }); } From 5f89955d800ff5edaf06114985a66dcabf217267 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 14:50:27 +0900 Subject: [PATCH 45/53] WIP --- .../common/LacertaSelectDirDialog.java | 23 +++++++++++++++++-- .../common/SelectDirDialogItemAdapter.java | 4 ++++ .../lacerta/data/impl/LacertaLibraryImpl.java | 2 +- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java index f5dd84df..446a8fd5 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java @@ -21,6 +21,7 @@ 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 { @@ -28,6 +29,9 @@ public class LacertaSelectDirDialog extends DialogFragment { @Inject LacertaLibrary lacertaLibrary; + @Inject + LacertaLogger logger; + private SelectDirDialogItemAdapter adapter; private RecyclerView recyclerView; @@ -83,14 +87,29 @@ public class LacertaSelectDirDialog extends DialogFragment { lacertaLibrary.getFolderList(targetDirId).thenAccept(libraryItemPage -> { getActivity().runOnUiThread(() -> { int currentCount = adapter.getItemCount(); - if (targetDirId == null) { // When root folder + String currentDirId = adapter.getCurrentId(); + if (currentDirId == null && libraryItemPage.getPageId() != null) { + // Rootから推移してきた場合 adapter.setListItems(libraryItemPage); adapter.notifyItemRangeRemoved(0, currentCount); adapter.notifyItemRangeInserted(0, libraryItemPage.getListItems().size()); - } else { // When child folder + } else if (libraryItemPage.getPageId() == null) { + // Rootに推移した場合 + adapter.setListItems(libraryItemPage); + adapter.notifyItemRangeRemoved(0, currentCount); + adapter.notifyItemRangeInserted(0, libraryItemPage.getListItems().size()); + } else if (currentDirId != null && libraryItemPage.getPageId() != null) { + // 通常の遷移 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()); } }); }); diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java b/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java index dca3de3e..4cbe7d8e 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java @@ -58,6 +58,10 @@ public class SelectDirDialogItemAdapter extends RecyclerView.Adapter Date: Thu, 25 Jan 2024 14:55:55 +0900 Subject: [PATCH 46/53] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/common/LacertaSelectDirDialog.java | 10 +++++----- .../component/common/SelectDirDialogItemAdapter.java | 10 +++++++++- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java index 446a8fd5..414fe8a5 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java @@ -88,18 +88,18 @@ public class LacertaSelectDirDialog extends DialogFragment { getActivity().runOnUiThread(() -> { int currentCount = adapter.getItemCount(); String currentDirId = adapter.getCurrentId(); - if (currentDirId == null && libraryItemPage.getPageId() != null) { - // Rootから推移してきた場合 + 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が関わる推移 (Rootへの推移) adapter.setListItems(libraryItemPage); adapter.notifyItemRangeRemoved(0, currentCount); adapter.notifyItemRangeInserted(0, libraryItemPage.getListItems().size()); - } else if (currentDirId != null && libraryItemPage.getPageId() != null) { - // 通常の遷移 + } else if (libraryItemPage.getPageId() != null) { + // Rootが関わらない推移 adapter.setListItems(libraryItemPage); adapter.notifyItemRangeRemoved(1, currentCount); adapter.notifyItemRangeInserted(1, libraryItemPage.getListItems().size()); diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java b/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java index 4cbe7d8e..f6fd1a06 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java @@ -59,7 +59,15 @@ public class SelectDirDialogItemAdapter extends RecyclerView.Adapter Date: Thu, 25 Jan 2024 15:00:03 +0900 Subject: [PATCH 47/53] =?UTF-8?q?=E6=9C=80=E5=A4=A7=E3=82=B5=E3=82=A4?= =?UTF-8?q?=E3=82=BA=E3=82=92=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nem/lacerta/component/common/LacertaSelectDirDialog.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java index 414fe8a5..50b32166 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java @@ -47,6 +47,10 @@ public class LacertaSelectDirDialog extends DialogFragment { LayoutInflater inflater = requireActivity().getLayoutInflater(); View view = inflater.inflate(R.layout.lacerta_dialog_select_dir, null); + // 高さを画面の60%にする + int height = (int) (getResources().getDisplayMetrics().heightPixels * 0.6); + 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); From 44edd1c23ed20a2e21f35d4c7475732368e9af25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 15:01:18 +0900 Subject: [PATCH 48/53] =?UTF-8?q?moveDocument=E3=82=92=E5=AE=9A=E7=BE=A9,?= =?UTF-8?q?=20=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/one/nem/lacerta/data/Document.java | 2 ++ .../one/nem/lacerta/data/impl/DocumentImpl.java | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/data/src/main/java/one/nem/lacerta/data/Document.java b/data/src/main/java/one/nem/lacerta/data/Document.java index 3491fc7d..ced8eabf 100644 --- a/data/src/main/java/one/nem/lacerta/data/Document.java +++ b/data/src/main/java/one/nem/lacerta/data/Document.java @@ -23,6 +23,8 @@ public interface Document { CompletableFuture deleteDocument(String documentId); + CompletableFuture moveDocument(String documentId, String parentId); + CompletableFuture updateDocument(DocumentDetail detail); CompletableFuture getDocument(String documentId); diff --git a/data/src/main/java/one/nem/lacerta/data/impl/DocumentImpl.java b/data/src/main/java/one/nem/lacerta/data/impl/DocumentImpl.java index 523c7277..9c1e2c47 100644 --- a/data/src/main/java/one/nem/lacerta/data/impl/DocumentImpl.java +++ b/data/src/main/java/one/nem/lacerta/data/impl/DocumentImpl.java @@ -123,6 +123,19 @@ public class DocumentImpl implements Document { }); } + @Override + public CompletableFuture moveDocument(String documentId, String parentId) { + return CompletableFuture.supplyAsync(() -> { + DocumentEntity documentEntity = database.documentDao().findById(documentId); + if (documentEntity == null) { + throw new IllegalArgumentException("documentId is not found"); + } + documentEntity.parentId = parentId; + database.documentDao().update(documentEntity); + return null; + }); + } + @Override public CompletableFuture updateDocument(DocumentDetail detail) { return CompletableFuture.supplyAsync(() -> { From 6b444356565efb118da89655899fb24fe615dd41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 15:03:12 +0900 Subject: [PATCH 49/53] =?UTF-8?q?=E3=82=A4=E3=83=B3=E3=82=BF=E3=83=95?= =?UTF-8?q?=E3=82=A7=E3=83=BC=E3=82=B9=E3=83=AA=E3=83=8D=E3=83=BC=E3=83=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lacerta/component/common/LacertaSelectDirDialog.java | 7 +------ ...va => LacertaSelectDirDialogInternalEventListener.java} | 2 +- .../component/common/SelectDirDialogItemAdapter.java | 7 ++----- 3 files changed, 4 insertions(+), 12 deletions(-) rename component/common/src/main/java/one/nem/lacerta/component/common/{LacertaSelectDirDialogEventListener.java => LacertaSelectDirDialogInternalEventListener.java} (68%) diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java index 50b32166..a43e2724 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java @@ -5,17 +5,12 @@ import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; -import android.widget.Toast; -import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.DialogFragment; -import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.google.android.material.dialog.MaterialAlertDialogBuilder; -import org.w3c.dom.Text; - import javax.inject.Inject; import dagger.hilt.android.AndroidEntryPoint; @@ -54,7 +49,7 @@ public class LacertaSelectDirDialog extends DialogFragment { 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 LacertaSelectDirDialogEventListener() { + this.adapter = new SelectDirDialogItemAdapter(new LacertaSelectDirDialogInternalEventListener() { @Override public void onDirSelected(String name, String itemId) { showRecyclerViewItem(itemId); diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialogEventListener.java b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialogInternalEventListener.java similarity index 68% rename from component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialogEventListener.java rename to component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialogInternalEventListener.java index 31954b32..b27b7b6d 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialogEventListener.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialogInternalEventListener.java @@ -1,6 +1,6 @@ package one.nem.lacerta.component.common; -public interface LacertaSelectDirDialogEventListener { +public interface LacertaSelectDirDialogInternalEventListener { void onDirSelected(String name, String itemId); void onBackSelected(String parentId); } diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java b/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java index f6fd1a06..439cb717 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java @@ -1,6 +1,5 @@ package one.nem.lacerta.component.common; -import android.media.Image; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -10,8 +9,6 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; -import java.util.ArrayList; - import one.nem.lacerta.model.LibraryItemPage; import one.nem.lacerta.model.ListItem; import one.nem.lacerta.model.ListItemType; @@ -20,9 +17,9 @@ public class SelectDirDialogItemAdapter extends RecyclerView.Adapter Date: Thu, 25 Jan 2024 15:04:23 +0900 Subject: [PATCH 50/53] =?UTF-8?q?=E3=83=AA=E3=82=B9=E3=83=8A=E5=AE=9F?= =?UTF-8?q?=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/common/LacertaSelectDirDialogListener.java | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialogListener.java diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialogListener.java b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialogListener.java new file mode 100644 index 00000000..96deb48a --- /dev/null +++ b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialogListener.java @@ -0,0 +1,7 @@ +package one.nem.lacerta.component.common; + +public interface LacertaSelectDirDialogListener { + + void onDirSelected(String name, String itemId); + void onCanceled(); +} From 74ee492b49e8d5e1db70380087a422b50cd61fb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 25 Jan 2024 15:10:42 +0900 Subject: [PATCH 51/53] =?UTF-8?q?=E3=82=BF=E3=82=A4=E3=83=88=E3=83=AB,=20?= =?UTF-8?q?=E3=83=A1=E3=83=83=E3=82=BB=E3=83=BC=E3=82=B8,=20=E9=81=B8?= =?UTF-8?q?=E6=8A=9E=E8=82=A2=E3=81=AE=E3=83=86=E3=82=AD=E3=82=B9=E3=83=88?= =?UTF-8?q?=E3=82=92=E6=8C=87=E5=AE=9A=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB,=20=E6=B1=BA=E5=AE=9A=E3=81=95=E3=82=8C?= =?UTF-8?q?=E3=81=9F=E3=82=89=E3=82=A4=E3=83=99=E3=83=B3=E3=83=88=E3=82=92?= =?UTF-8?q?=E5=91=BC=E3=81=B6=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/LacertaSelectDirDialog.java | 55 +++++++++++++++++-- .../common/SelectDirDialogItemAdapter.java | 12 ++++ 2 files changed, 63 insertions(+), 4 deletions(-) diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java index a43e2724..7d3d4b81 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/LacertaSelectDirDialog.java @@ -27,12 +27,49 @@ public class LacertaSelectDirDialog extends DialogFragment { @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) { @@ -66,10 +103,20 @@ public class LacertaSelectDirDialog extends DialogFragment { showRecyclerViewItem(null); // get root folder - builder.setTitle("Select Directory"); - builder.setMessage("Please select a directory."); - builder.setPositiveButton("OK", null); - builder.setNegativeButton("Cancel", null); + 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(); } diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java b/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java index 439cb717..31884e01 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java @@ -67,6 +67,18 @@ public class SelectDirDialogItemAdapter extends RecyclerView.Adapter Date: Thu, 25 Jan 2024 15:11:01 +0900 Subject: [PATCH 52/53] Fix typo --- .../lacerta/component/common/SelectDirDialogItemAdapter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java b/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java index 31884e01..f27f16a9 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/SelectDirDialogItemAdapter.java @@ -74,7 +74,7 @@ public class SelectDirDialogItemAdapter extends RecyclerView.Adapter Date: Thu, 25 Jan 2024 15:24:22 +0900 Subject: [PATCH 53/53] =?UTF-8?q?=E6=96=B0=E3=81=97=E3=81=84=E5=AE=9F?= =?UTF-8?q?=E8=A3=85=E3=81=AB=E3=81=82=E3=82=8F=E3=81=9B=E3=81=A6=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/viewer/ViewerListFragment.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerListFragment.java b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerListFragment.java index be566e6a..7a35379a 100644 --- a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerListFragment.java +++ b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerListFragment.java @@ -20,6 +20,7 @@ import javax.inject.Inject; import dagger.hilt.android.AndroidEntryPoint; import one.nem.lacerta.component.common.LacertaSelectDirDialog; +import one.nem.lacerta.component.common.LacertaSelectDirDialogListener; import one.nem.lacerta.data.Document; import one.nem.lacerta.model.document.page.Page; import one.nem.lacerta.utils.FeatureSwitch; @@ -206,7 +207,28 @@ public class ViewerListFragment extends Fragment { } else if (item.getItemId() == R.id.action_move) { // Toast.makeText(getContext(), "Work in progress", Toast.LENGTH_SHORT).show(); LacertaSelectDirDialog lacertaSelectDirDialog = new LacertaSelectDirDialog(); - lacertaSelectDirDialog.show(getParentFragmentManager(), "LacertaSelectDirDialog"); + lacertaSelectDirDialog.setListener(new LacertaSelectDirDialogListener() { + @Override + public void onDirSelected(String name, String itemId) { + logger.debug(TAG, "Selected dir: " + name + ", " + itemId); + document.moveDocument(documentId, itemId).thenAccept(aVoid -> { + getActivity().runOnUiThread(() -> { + // Stop Activity + getActivity().finish(); // TODO-rca: ファイル移動後に終了するべきかは検討 + }); + }); + } + + @Override + public void onCanceled() { + logger.debug(TAG, "Canceled"); + } + }); + lacertaSelectDirDialog.setTitle("ファイルの移動") + .setMessage("ファイルを移動するフォルダを選択してください。") + .setPositiveButtonText("移動") + .setNegativeButtonText("キャンセル"); + lacertaSelectDirDialog.show(getParentFragmentManager(), "select_dir_dialog"); return true; } else { return false;