From 98e0ea6f85e02bda8af82abd8d66831df46ff708 Mon Sep 17 00:00:00 2001 From: r-ca Date: Sun, 28 Jan 2024 11:14:31 +0900 Subject: [PATCH 1/6] =?UTF-8?q?=E3=82=AF=E3=83=A9=E3=82=B9=E4=BD=9C?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/common/picker/LacertaFilePickerDialog.java | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 component/common/src/main/java/one/nem/lacerta/component/common/picker/LacertaFilePickerDialog.java diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/picker/LacertaFilePickerDialog.java b/component/common/src/main/java/one/nem/lacerta/component/common/picker/LacertaFilePickerDialog.java new file mode 100644 index 00000000..29dc3936 --- /dev/null +++ b/component/common/src/main/java/one/nem/lacerta/component/common/picker/LacertaFilePickerDialog.java @@ -0,0 +1,4 @@ +package one.nem.lacerta.component.common.picker; + +public class LacertaFilePickerDialog { +} From f3afb68b189faa2ec1e7d69cf9bd160161f288ee Mon Sep 17 00:00:00 2001 From: r-ca Date: Sun, 28 Jan 2024 11:24:36 +0900 Subject: [PATCH 2/6] =?UTF-8?q?=E7=B6=99=E6=89=BF=E5=85=88=E3=81=A7?= =?UTF-8?q?=E4=BD=BF=E3=81=84=E3=81=9F=E3=81=84=E3=81=AE=E3=81=A7Protected?= =?UTF-8?q?=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/picker/base/LacertaFilePickerAdapterBase.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/picker/base/LacertaFilePickerAdapterBase.java b/component/common/src/main/java/one/nem/lacerta/component/common/picker/base/LacertaFilePickerAdapterBase.java index e21b7c17..190a64cc 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/picker/base/LacertaFilePickerAdapterBase.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/picker/base/LacertaFilePickerAdapterBase.java @@ -21,9 +21,9 @@ public class LacertaFilePickerAdapterBase extends RecyclerView.Adapter Date: Sun, 28 Jan 2024 11:27:25 +0900 Subject: [PATCH 3/6] =?UTF-8?q?Base=E3=82=92=E7=B6=99=E6=89=BF=E3=81=97?= =?UTF-8?q?=E3=81=9F=E3=82=A2=E3=83=80=E3=83=97=E3=82=BF=E3=82=92=E4=BD=9C?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../picker/LacertaFilePickerAdapter.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 component/common/src/main/java/one/nem/lacerta/component/common/picker/LacertaFilePickerAdapter.java diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/picker/LacertaFilePickerAdapter.java b/component/common/src/main/java/one/nem/lacerta/component/common/picker/LacertaFilePickerAdapter.java new file mode 100644 index 00000000..fa0163d2 --- /dev/null +++ b/component/common/src/main/java/one/nem/lacerta/component/common/picker/LacertaFilePickerAdapter.java @@ -0,0 +1,33 @@ +package one.nem.lacerta.component.common.picker; + +import one.nem.lacerta.component.common.picker.base.LacertaFilePickerAdapterBase; +import one.nem.lacerta.model.ListItem; +import one.nem.lacerta.model.ListItemType; + +public class LacertaFilePickerAdapter extends LacertaFilePickerAdapterBase { + + // Listener + public interface LacertaFilePickerAdapterListener extends LacertaFilePickerAdapterBase.LacertaFilePickerAdapterListener { + void onDocumentSelected(String documentId); + } + + // Variables + LacertaFilePickerAdapterListener listener; + + // Setter + public LacertaFilePickerAdapter setListener(LacertaFilePickerAdapterListener listener) { + this.listener = listener; + return this; + } + + @Override + public void onBindViewHolder(LacertaFilePickerViewHolder holder, int position) { + super.onBindViewHolder(holder, position); + if (libraryItemPage.getListItems().get(position).getItemType() == ListItemType.ITEM_TYPE_DOCUMENT) { + holder.itemView.setOnClickListener(v -> { + ListItem listItem = libraryItemPage.getListItems().get(position); + listener.onDocumentSelected(listItem.getItemId()); + }); + } + } +} From b29df41b5eedc7411335ef8631095f62790b3c16 Mon Sep 17 00:00:00 2001 From: r-ca Date: Sun, 28 Jan 2024 11:28:48 +0900 Subject: [PATCH 4/6] =?UTF-8?q?=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB?= =?UTF-8?q?=E3=83=94=E3=83=83=E3=82=AB=E3=83=BC=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../picker/LacertaFilePickerDialog.java | 114 +++++++++++++++++- 1 file changed, 113 insertions(+), 1 deletion(-) diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/picker/LacertaFilePickerDialog.java b/component/common/src/main/java/one/nem/lacerta/component/common/picker/LacertaFilePickerDialog.java index 29dc3936..d0c465de 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/picker/LacertaFilePickerDialog.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/picker/LacertaFilePickerDialog.java @@ -1,4 +1,116 @@ package one.nem.lacerta.component.common.picker; -public class LacertaFilePickerDialog { +import android.app.Dialog; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.TextView; + +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +import javax.inject.Inject; + +import dagger.hilt.android.AndroidEntryPoint; +import one.nem.lacerta.component.common.R; +import one.nem.lacerta.component.common.picker.base.LacertaFilePickerAdapterBase; +import one.nem.lacerta.component.common.picker.base.LacertaFilePickerDialogBase; +import one.nem.lacerta.data.LacertaLibrary; +import one.nem.lacerta.model.ListItemType; + +@AndroidEntryPoint +public class LacertaFilePickerDialog extends LacertaFilePickerDialogBase { + + @Inject + LacertaLibrary lacertaLibrary; + + // Listener + public interface LacertaFilePickerDialogListener { + void onFileSelected(String name, String fileId); + } + + // Variables + LacertaFilePickerDialogListener listener; + + // Setter + public LacertaFilePickerDialog setListener(LacertaFilePickerDialogListener listener) { + this.listener = listener; + return this; + } + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + super.onCreateDialog(savedInstanceState); + + MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getActivity()); + + View view = LayoutInflater.from(getActivity()).inflate(R.layout.lacerta_dialog_select_dir, null); + + // 高さを画面の40%にする + int height = (int) (getResources().getDisplayMetrics().heightPixels * 0.4); + view.setMinimumHeight(height); + + RecyclerView recyclerView = view.findViewById(R.id.select_dir_recycler_view); + TextView currentDirTextView = view.findViewById(R.id.current_dir_text_view); + + LacertaFilePickerAdapter adapter = new LacertaFilePickerAdapter(); + adapter.setListener(new LacertaFilePickerAdapter.LacertaFilePickerAdapterListener() { + @Override + public void onItemSelected(String dirId) { + updateList(adapter, dirId); + updatePublicPath(currentDirTextView, dirId); + } + + @Override + public void onBackSelected(String dirId) { + updateList(adapter, dirId); + updatePublicPath(currentDirTextView, dirId); + } + + @Override + public void onDocumentSelected(String documentId) { + if (listener != null) { + dismiss(); + listener.onFileSelected(documentId, documentId); + } + } + }); + + recyclerView.setAdapter(adapter); + recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); + + this.updateList(adapter, null); // ルートディレクトリのリストを表示 + + // Init dialog + builder.setTitle(this.title == null ? "ファイルを選択" : this.title); + builder.setMessage(this.message == null ? "ファイルを選択してください" : this.message); + builder.setView(view); + builder.setNegativeButton(this.negativeButtonText == null ? "キャンセル" : this.negativeButtonText, (dialog, which) -> { + if (listener != null) { + dismiss(); + } + }); + + return builder.create(); + } + + private void updatePublicPath(TextView currentDirTextView, String folderId) { + lacertaLibrary.getPublicPath(folderId, ListItemType.ITEM_TYPE_FOLDER).thenAccept(publicPath -> { + this.updatePathTextView(currentDirTextView, publicPath, ListItemType.ITEM_TYPE_FOLDER); + }); + } + + private void updateList(LacertaFilePickerAdapterBase adapter, String folderId) { + lacertaLibrary.getFolderList(folderId).thenAccept(libraryItemPage -> { + int currentCount = adapter.getItemCount(); + String currentId = adapter.getCurrentId(); +// adapter.setListItems(libraryItemPage); + getActivity().runOnUiThread(() -> { + this.updateListView(adapter, libraryItemPage, currentCount, currentId); + }); + }); + } + } From 8ec4e51eb0ad5960ebf7b5b9e897a49e7a98e435 Mon Sep 17 00:00:00 2001 From: r-ca Date: Sun, 28 Jan 2024 11:29:24 +0900 Subject: [PATCH 5/6] =?UTF-8?q?=E4=B8=8D=E8=A6=81=E3=81=AA=E3=83=81?= =?UTF-8?q?=E3=82=A7=E3=83=83=E3=82=AF=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/common/picker/LacertaFilePickerDialog.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/picker/LacertaFilePickerDialog.java b/component/common/src/main/java/one/nem/lacerta/component/common/picker/LacertaFilePickerDialog.java index d0c465de..b85cfab1 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/picker/LacertaFilePickerDialog.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/picker/LacertaFilePickerDialog.java @@ -88,9 +88,7 @@ public class LacertaFilePickerDialog extends LacertaFilePickerDialogBase { builder.setMessage(this.message == null ? "ファイルを選択してください" : this.message); builder.setView(view); builder.setNegativeButton(this.negativeButtonText == null ? "キャンセル" : this.negativeButtonText, (dialog, which) -> { - if (listener != null) { - dismiss(); - } + dismiss(); }); return builder.create(); From 63f1dff6f03c64e4ccf57dcc9111505bb60573ea Mon Sep 17 00:00:00 2001 From: r-ca Date: Sun, 28 Jan 2024 11:31:55 +0900 Subject: [PATCH 6/6] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=BF=98=E3=82=8C?= =?UTF-8?q?=E5=AF=BE=E5=87=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/common/picker/LacertaFilePickerDialog.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component/common/src/main/java/one/nem/lacerta/component/common/picker/LacertaFilePickerDialog.java b/component/common/src/main/java/one/nem/lacerta/component/common/picker/LacertaFilePickerDialog.java index b85cfab1..5a082b74 100644 --- a/component/common/src/main/java/one/nem/lacerta/component/common/picker/LacertaFilePickerDialog.java +++ b/component/common/src/main/java/one/nem/lacerta/component/common/picker/LacertaFilePickerDialog.java @@ -101,7 +101,7 @@ public class LacertaFilePickerDialog extends LacertaFilePickerDialogBase { } private void updateList(LacertaFilePickerAdapterBase adapter, String folderId) { - lacertaLibrary.getFolderList(folderId).thenAccept(libraryItemPage -> { + lacertaLibrary.getLibraryPage(folderId, 100).thenAccept(libraryItemPage -> { // TODO-rca: 100 is a magic number int currentCount = adapter.getItemCount(); String currentId = adapter.getCurrentId(); // adapter.setListItems(libraryItemPage);