Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstefan-niedermann <info@niedermann.it>2020-02-24 12:54:19 +0300
committerstefan-niedermann <info@niedermann.it>2020-02-24 12:54:19 +0300
commit8dbc3d6e53175a672d05a11cdebe7db9c8ba48f7 (patch)
tree749a3104056c03a5bc43c74b862fb35dd17534c3
parent01ac949fa62dde68d5491db475f1fae32c0e6358 (diff)
Basic image viewer implementation
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/board/AccessControlDialogFragment.java2
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/board/EditBoardDialogFragment.java2
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AttachmentAdapter.java14
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AttachmentDialogFragment.java78
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardActivityFragment.java2
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAttachmentsFragment.java7
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardDetailsFragment.java2
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CommentDialogFragment.java2
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/EditStackDialogFragment.java2
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/StackFragment.java2
-rw-r--r--app/src/main/res/layout/dialog_attachment.xml17
11 files changed, 114 insertions, 16 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/AccessControlDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/AccessControlDialogFragment.java
index fd302c323..34c289772 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/AccessControlDialogFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/AccessControlDialogFragment.java
@@ -53,7 +53,7 @@ public class AccessControlDialogFragment extends DialogFragment implements
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- Activity activity = Objects.requireNonNull(getActivity());
+ Activity activity = requireActivity();
View view = activity.getLayoutInflater().inflate(R.layout.dialog_board_share, null);
ButterKnife.bind(this, view);
boardId = Objects.requireNonNull(getArguments()).getLong(KEY_BOARD_ID);
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/EditBoardDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/EditBoardDialogFragment.java
index 56754ee64..f529ced63 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/EditBoardDialogFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/EditBoardDialogFragment.java
@@ -60,7 +60,7 @@ public class EditBoardDialogFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- Activity activity = Objects.requireNonNull(getActivity());
+ Activity activity = requireActivity();
View view = activity.getLayoutInflater().inflate(R.layout.dialog_board_create, null);
ButterKnife.bind(this, view);
Long boardId = Objects.requireNonNull(getArguments()).getLong(KEY_BOARD_ID);
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AttachmentAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AttachmentAdapter.java
index 279ecd5f9..74a00677e 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AttachmentAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AttachmentAdapter.java
@@ -11,6 +11,7 @@ import android.widget.ImageButton;
import android.widget.TextView;
import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.AppCompatImageView;
import androidx.recyclerview.widget.RecyclerView;
@@ -57,6 +58,13 @@ public class AttachmentAdapter extends RecyclerView.Adapter<AttachmentAdapter.At
public void onBindViewHolder(@NonNull AttachmentViewHolder holder, int position) {
Attachment attachment = attachments.get(position);
holder.notSyncedYet.setVisibility(attachment.getStatusEnum() == DBStatus.UP_TO_DATE ? View.GONE : View.VISIBLE);
+
+ holder.filename.getRootView().setOnClickListener((event) -> {
+ Intent openURL = new Intent(android.content.Intent.ACTION_VIEW);
+ openURL.setData(Uri.parse(account.getUrl() + "/index.php/apps/deck/cards/" + cardRemoteId + "/attachment/" + attachment.getId()));
+ context.startActivity(openURL);
+ });
+
if (attachment.getMimetype() != null) {
if (attachment.getMimetype().startsWith("image")) {
// TODO Glide is currently not yet able to use SSO and fails on authentication
@@ -66,6 +74,7 @@ public class AttachmentAdapter extends RecyclerView.Adapter<AttachmentAdapter.At
.error(R.drawable.ic_image_grey600_24dp)
.into(holder.filetype);
holder.filetype.setImageResource(R.drawable.ic_image_grey600_24dp);
+ holder.filename.getRootView().setOnClickListener((v) -> AttachmentDialogFragment.newInstance(uri, attachment.getBasename()).show(((AppCompatActivity) context).getSupportFragmentManager(), "asdf"));
} else if (attachment.getMimetype().startsWith("audio")) {
holder.filetype.setImageResource(R.drawable.ic_music_note_grey600_24dp);
} else if (attachment.getMimetype().startsWith("video")) {
@@ -83,11 +92,6 @@ public class AttachmentAdapter extends RecyclerView.Adapter<AttachmentAdapter.At
} else {
holder.modified.setVisibility(View.GONE);
}
- holder.filename.getRootView().setOnClickListener((event) -> {
- Intent openURL = new Intent(android.content.Intent.ACTION_VIEW);
- openURL.setData(Uri.parse(account.getUrl() + "/index.php/apps/deck/cards/" + cardRemoteId + "/attachment/" + attachment.getId()));
- context.startActivity(openURL);
- });
holder.deleteButton.setOnClickListener((v) -> {
new DeleteDialogBuilder(context)
.setTitle(context.getString(R.string.delete_something, attachment.getFilename()))
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AttachmentDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AttachmentDialogFragment.java
new file mode 100644
index 000000000..6aab64f9b
--- /dev/null
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AttachmentDialogFragment.java
@@ -0,0 +1,78 @@
+package it.niedermann.nextcloud.deck.ui.card;
+
+import android.app.Dialog;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.ImageView;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AlertDialog;
+import androidx.fragment.app.DialogFragment;
+
+import com.bumptech.glide.Glide;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import it.niedermann.nextcloud.deck.Application;
+import it.niedermann.nextcloud.deck.R;
+
+public class AttachmentDialogFragment extends DialogFragment {
+
+ private static final String BUNDLE_KEY_URL = "url";
+ private static final String BUNDLE_KEY_ALT = "alt";
+
+ @BindView(R.id.image)
+ ImageView image;
+
+// @BindView(R.id.progressBar)
+// ProgressBar progressBar;
+
+ /**
+ * Use newInstance()-Method
+ */
+ public AttachmentDialogFragment() {
+ }
+
+ @NonNull
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ View view = requireActivity().getLayoutInflater().inflate(R.layout.dialog_attachment, null);
+ ButterKnife.bind(this, view);
+
+ Glide.with(this)
+// .addDefaultRequestListener(new RequestListener<Object>() {
+// @Override
+// public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Object> target, boolean isFirstResource) {
+// image.setVisibility(View.VISIBLE);
+// progressBar.setVisibility(View.GONE);
+// return false;
+// }
+//
+// @Override
+// public boolean onResourceReady(Object resource, Object model, Target<Object> target, DataSource dataSource, boolean isFirstResource) {
+// progressBar.setVisibility(View.GONE);
+// image.setVisibility(View.VISIBLE);
+// return false;
+// }
+// })
+ .load(requireArguments().getString(BUNDLE_KEY_URL))
+ .into(image);
+ image.setContentDescription(requireArguments().getString(BUNDLE_KEY_ALT));
+ image.getRootView().setOnClickListener((v) -> dismiss());
+
+ return new AlertDialog.Builder(requireActivity(), Application.getAppTheme(getContext()) ? R.style.DialogDarkTheme : R.style.ThemeOverlay_AppCompat_Dialog_Alert)
+ .setView(view)
+ .create();
+ }
+
+ public static AttachmentDialogFragment newInstance(@NonNull String url, @NonNull String alt) {
+ Bundle bundle = new Bundle();
+ bundle.putString(BUNDLE_KEY_URL, url);
+ bundle.putString(BUNDLE_KEY_ALT, alt);
+
+ AttachmentDialogFragment fragment = new AttachmentDialogFragment();
+ fragment.setArguments(bundle);
+
+ return fragment;
+ }
+}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardActivityFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardActivityFragment.java
index cadaa33f1..9b1412be9 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardActivityFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardActivityFragment.java
@@ -81,7 +81,7 @@ public class CardActivityFragment extends Fragment {
long localId = args.getLong(BUNDLE_KEY_LOCAL_ID);
boolean canEdit = args.getBoolean(BUNDLE_KEY_CAN_EDIT);
- SyncManager syncManager = new SyncManager(Objects.requireNonNull(getActivity()));
+ SyncManager syncManager = new SyncManager(requireActivity());
syncManager.getCardByLocalId(accountId, localId).observe(CardActivityFragment.this, (fullCard) -> {
syncManager.syncActivitiesForCard(fullCard.getCard()).observe(CardActivityFragment.this, (activities -> {
if (activities == null || activities.size() == 0) {
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAttachmentsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAttachmentsFragment.java
index e4b427709..a26bac420 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAttachmentsFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAttachmentsFragment.java
@@ -21,7 +21,6 @@ import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import java.io.File;
-import java.util.Objects;
import butterknife.BindView;
import butterknife.ButterKnife;
@@ -73,15 +72,15 @@ public class CardAttachmentsFragment extends Fragment implements AttachmentAdapt
cardId = args.getLong(BUNDLE_KEY_LOCAL_ID);
boolean canEdit = args.getBoolean(BUNDLE_KEY_CAN_EDIT);
- syncManager = new SyncManager(Objects.requireNonNull(getActivity()));
- syncManager.getCardByLocalId(accountId, cardId).observe(CardAttachmentsFragment.this, (fullCard) -> {
+ syncManager = new SyncManager(requireActivity());
+ syncManager.getCardByLocalId(accountId, cardId).observe(getViewLifecycleOwner(), (fullCard) -> {
if (fullCard.getAttachments().size() == 0) {
this.emptyContentView.setVisibility(View.VISIBLE);
this.attachmentsList.setVisibility(View.GONE);
} else {
this.emptyContentView.setVisibility(View.GONE);
this.attachmentsList.setVisibility(View.VISIBLE);
- syncManager.readAccount(accountId).observe(CardAttachmentsFragment.this, (Account account) -> {
+ syncManager.readAccount(accountId).observe(getViewLifecycleOwner(), (Account account) -> {
RecyclerView.Adapter adapter = new AttachmentAdapter(this, account, fullCard.getCard().getId(), fullCard.getAttachments());
attachmentsList.setAdapter(adapter);
});
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardDetailsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardDetailsFragment.java
index 6f9dd467f..5aa940e7c 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardDetailsFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardDetailsFragment.java
@@ -166,7 +166,7 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
}
}
- avatarSize = DimensionUtil.getAvatarDimension(Objects.requireNonNull(getContext()));
+ avatarSize = DimensionUtil.getAvatarDimension(requireContext());
avatarLayoutParams = new LinearLayout.LayoutParams(avatarSize, avatarSize);
avatarLayoutParams.setMargins(0, 0, getContext().getResources().getDimensionPixelSize(R.dimen.standard_half_padding), 0);
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CommentDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CommentDialogFragment.java
index af2239ab9..f67863a84 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CommentDialogFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CommentDialogFragment.java
@@ -46,7 +46,7 @@ public class CommentDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
- View view = Objects.requireNonNull(getActivity()).getLayoutInflater().inflate(R.layout.dialog_add_comment, null);
+ View view = requireActivity().getLayoutInflater().inflate(R.layout.dialog_add_comment, null);
ButterKnife.bind(this, view);
return new AlertDialog.Builder(getActivity(), Application.getAppTheme(getContext()) ? R.style.DialogDarkTheme : R.style.ThemeOverlay_AppCompat_Dialog_Alert)
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/EditStackDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/EditStackDialogFragment.java
index a8d4c5f17..908137005 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/EditStackDialogFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/EditStackDialogFragment.java
@@ -50,7 +50,7 @@ public class EditStackDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
- View view = Objects.requireNonNull(getActivity()).getLayoutInflater().inflate(R.layout.dialog_stack_create, null);
+ View view = requireActivity().getLayoutInflater().inflate(R.layout.dialog_stack_create, null);
ButterKnife.bind(this, view);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), Application.getAppTheme(getContext()) ? R.style.DialogDarkTheme : R.style.ThemeOverlay_AppCompat_Dialog_Alert)
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/StackFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/StackFragment.java
index ba44e5b8d..69e716bfa 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/StackFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/StackFragment.java
@@ -85,7 +85,7 @@ public class StackFragment extends Fragment {
account = (Account) getArguments().getSerializable(KEY_ACCOUNT);
canEdit = getArguments().getBoolean(KEY_HAS_EDIT_PERMISSION);
- activity = Objects.requireNonNull(getActivity());
+ activity = requireActivity();
syncManager = new SyncManager(activity);
diff --git a/app/src/main/res/layout/dialog_attachment.xml b/app/src/main/res/layout/dialog_attachment.xml
new file mode 100644
index 000000000..46ef65bed
--- /dev/null
+++ b/app/src/main/res/layout/dialog_attachment.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content">
+
+ <ImageView
+ android:id="@+id/image"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:contentDescription="@null" />
+
+<!-- <ProgressBar-->
+<!-- android:id="@+id/progressBar"-->
+<!-- android:visibility="visible"-->
+<!-- android:layout_width="wrap_content"-->
+<!-- android:layout_height="wrap_content" />-->
+</FrameLayout> \ No newline at end of file