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-04-21 19:01:55 +0300
committerNiedermann IT-Dienstleistungen <stefan-niedermann@users.noreply.github.com>2020-04-21 21:18:28 +0300
commit415e8143e9c98f3f02ee655b247b7ff99956e6a1 (patch)
treef59e2996b32418ed7440c8be32a360dd462be25f /app/src/main
parent47f79909944ffd2e0fa8b47deeb4a62d21f4c1e4 (diff)
Use ViewModel for EditActivity
Also use ViewModel for comments and activities
Diffstat (limited to 'app/src/main')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardTabAdapter.java6
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/EditActivity.java15
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityFragment.java35
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsFragment.java63
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CommentAddedListener.java7
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CommentDeletedListener.java2
-rw-r--r--app/src/main/res/layout/fragment_card_edit_tab_activities.xml4
-rw-r--r--app/src/main/res/layout/item_activity.xml1
8 files changed, 41 insertions, 92 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardTabAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardTabAdapter.java
index 0c384837f..fa3e8ff94 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardTabAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardTabAdapter.java
@@ -45,11 +45,11 @@ public class CardTabAdapter extends FragmentStateAdapter {
return CardAttachmentsFragment.newInstance(accountId, localId, boardId, canEdit);
case 2:
return hasCommentsAbility
- ? CardCommentsFragment.newInstance(accountId, localId, canEdit)
- : CardActivityFragment.newInstance(accountId, localId, boardId);
+ ? CardCommentsFragment.newInstance()
+ : CardActivityFragment.newInstance();
case 3:
if (hasCommentsAbility) {
- return CardActivityFragment.newInstance(accountId, localId, boardId);
+ return CardActivityFragment.newInstance();
}
default:
throw new IllegalArgumentException("position " + position + " is not available");
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/EditActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/EditActivity.java
index cbfd5047b..a288a6d57 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/EditActivity.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/EditActivity.java
@@ -18,13 +18,10 @@ import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.ActivityEditBinding;
import it.niedermann.nextcloud.deck.model.Attachment;
import it.niedermann.nextcloud.deck.model.ocs.Version;
-import it.niedermann.nextcloud.deck.model.ocs.comment.DeckComment;
import it.niedermann.nextcloud.deck.persistence.sync.SyncManager;
import it.niedermann.nextcloud.deck.ui.branding.BrandedActivity;
import it.niedermann.nextcloud.deck.ui.branding.BrandedAlertDialogBuilder;
import it.niedermann.nextcloud.deck.ui.card.attachments.NewCardAttachmentHandler;
-import it.niedermann.nextcloud.deck.ui.card.comments.CommentAddedListener;
-import it.niedermann.nextcloud.deck.ui.card.comments.CommentDeletedListener;
import it.niedermann.nextcloud.deck.ui.exception.ExceptionHandler;
import it.niedermann.nextcloud.deck.util.CardUtil;
@@ -35,7 +32,7 @@ import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_LOCAL_
import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_STACK_ID;
import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.NO_LOCAL_ID;
-public class EditActivity extends BrandedActivity implements CommentAddedListener, CommentDeletedListener, NewCardAttachmentHandler {
+public class EditActivity extends BrandedActivity implements NewCardAttachmentHandler {
private ActivityEditBinding binding;
private SyncManager syncManager;
@@ -266,11 +263,6 @@ public class EditActivity extends BrandedActivity implements CommentAddedListene
}
@Override
- public void onCommentAdded(DeckComment comment) {
- syncManager.addCommentToCard(accountId, boardId, localId, comment);
- }
-
- @Override
public void attachmentAdded(Attachment attachment) {
viewModel.getFullCard().getAttachments().add(attachment);
}
@@ -281,11 +273,6 @@ public class EditActivity extends BrandedActivity implements CommentAddedListene
}
@Override
- public void onCommentDeleted(Long localCommentId) {
- syncManager.deleteComment(this.accountId, this.localId, localCommentId);
- }
-
- @Override
public void applyBrand(int mainColor, int textColor) {
applyBrandToPrimaryToolbar(mainColor, textColor, binding.toolbar);
applyBrandToPrimaryTabLayout(mainColor, textColor, binding.tabLayout);
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityFragment.java
index 146678034..429face3c 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityFragment.java
@@ -7,47 +7,33 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
+import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.RecyclerView;
import it.niedermann.nextcloud.deck.databinding.FragmentCardEditTabActivitiesBinding;
import it.niedermann.nextcloud.deck.persistence.sync.SyncManager;
-
-import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_ACCOUNT_ID;
-import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_BOARD_ID;
-import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_LOCAL_ID;
+import it.niedermann.nextcloud.deck.ui.card.EditCardViewModel;
public class CardActivityFragment extends Fragment {
private FragmentCardEditTabActivitiesBinding binding;
- public CardActivityFragment() {
- }
-
- public static CardActivityFragment newInstance(long accountId, long localId, long boardId) {
- Bundle bundle = new Bundle();
- bundle.putLong(BUNDLE_KEY_ACCOUNT_ID, accountId);
- bundle.putLong(BUNDLE_KEY_BOARD_ID, boardId);
- bundle.putLong(BUNDLE_KEY_LOCAL_ID, localId);
-
- CardActivityFragment fragment = new CardActivityFragment();
- fragment.setArguments(bundle);
-
- return fragment;
+ public static Fragment newInstance() {
+ return new CardActivityFragment();
}
@Override
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
+
binding = FragmentCardEditTabActivitiesBinding.inflate(inflater, container, false);
+ final EditCardViewModel viewModel = new ViewModelProvider(requireActivity()).get(EditCardViewModel.class);
- Bundle args = getArguments();
- if (args != null) {
- long accountId = args.getLong(BUNDLE_KEY_ACCOUNT_ID);
- long localId = args.getLong(BUNDLE_KEY_LOCAL_ID);
+ if (!viewModel.isCreateMode()) {
+ final SyncManager syncManager = new SyncManager(requireActivity());
- SyncManager syncManager = new SyncManager(requireActivity());
- syncManager.getCardByLocalId(accountId, localId).observe(getViewLifecycleOwner(), (fullCard) -> {
+ syncManager.getCardByLocalId(viewModel.getAccountId(), viewModel.getFullCard().getLocalId()).observe(getViewLifecycleOwner(), (fullCard) -> {
syncManager.syncActivitiesForCard(fullCard.getCard()).observe(getViewLifecycleOwner(), (activities -> {
if (activities == null || activities.size() == 0) {
binding.emptyContentView.setVisibility(View.VISIBLE);
@@ -60,6 +46,9 @@ public class CardActivityFragment extends Fragment {
}
}));
});
+ } else {
+ binding.emptyContentView.setVisibility(View.VISIBLE);
+ binding.activitiesList.setVisibility(View.GONE);
}
return binding.getRoot();
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsFragment.java
index 3a8541543..1524d4b4c 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsFragment.java
@@ -1,6 +1,5 @@
package it.niedermann.nextcloud.deck.ui.card.comments;
-import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
@@ -9,6 +8,8 @@ import android.view.WindowManager;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.lifecycle.ViewModelProvider;
import java.util.Date;
@@ -16,50 +17,22 @@ import it.niedermann.nextcloud.deck.databinding.FragmentCardEditTabCommentsBindi
import it.niedermann.nextcloud.deck.model.ocs.comment.DeckComment;
import it.niedermann.nextcloud.deck.persistence.sync.SyncManager;
import it.niedermann.nextcloud.deck.ui.branding.BrandedFragment;
+import it.niedermann.nextcloud.deck.ui.card.EditCardViewModel;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
import static it.niedermann.nextcloud.deck.ui.branding.BrandedActivity.applyBrandToEditText;
import static it.niedermann.nextcloud.deck.ui.branding.BrandedActivity.applyBrandToFAB;
-import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_ACCOUNT_ID;
-import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_CAN_EDIT;
-import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_LOCAL_ID;
-public class CardCommentsFragment extends BrandedFragment implements CommentEditedListener {
+public class CardCommentsFragment extends BrandedFragment implements CommentEditedListener, CommentDeletedListener {
private FragmentCardEditTabCommentsBinding binding;
+ private EditCardViewModel viewModel;
private SyncManager syncManager;
private CardCommentsAdapter adapter;
- private Long accountId;
- private long localId;
- private boolean canEdit = false;
-
- public static CardCommentsFragment newInstance(long accountId, long localId, boolean canEdit) {
- Bundle bundle = new Bundle();
- bundle.putLong(BUNDLE_KEY_ACCOUNT_ID, accountId);
- bundle.putLong(BUNDLE_KEY_LOCAL_ID, localId);
- bundle.putBoolean(BUNDLE_KEY_CAN_EDIT, canEdit);
-
- CardCommentsFragment fragment = new CardCommentsFragment();
- fragment.setArguments(bundle);
-
- return fragment;
- }
-
- @Override
- public void onAttach(@NonNull Context context) {
- super.onAttach(context);
- if (!(requireActivity() instanceof CommentDeletedListener)) {
- throw new IllegalArgumentException("Caller must implement \"" + CommentDeletedListener.class.getCanonicalName() + "\"");
- }
- Bundle args = getArguments();
- if (args == null || !args.containsKey(BUNDLE_KEY_ACCOUNT_ID) || !args.containsKey(BUNDLE_KEY_LOCAL_ID)) {
- throw new IllegalArgumentException("Arguments must at least contain an account and the local card id");
- }
- this.accountId = args.getLong(BUNDLE_KEY_ACCOUNT_ID);
- this.localId = args.getLong(BUNDLE_KEY_LOCAL_ID);
- this.canEdit = args.getBoolean(BUNDLE_KEY_CAN_EDIT, false);
+ public static Fragment newInstance() {
+ return new CardCommentsFragment();
}
@Override
@@ -68,11 +41,12 @@ public class CardCommentsFragment extends BrandedFragment implements CommentEdit
Bundle savedInstanceState) {
binding = FragmentCardEditTabCommentsBinding.inflate(inflater, container, false);
+ viewModel = new ViewModelProvider(requireActivity()).get(EditCardViewModel.class);
syncManager = new SyncManager(requireActivity());
- syncManager.readAccount(accountId).observe(requireActivity(), (account -> {
- adapter = new CardCommentsAdapter(requireContext(), account, requireActivity().getMenuInflater(), (CommentDeletedListener) requireActivity(), getChildFragmentManager());
+ syncManager.readAccount(viewModel.getAccountId()).observe(requireActivity(), (account -> {
+ adapter = new CardCommentsAdapter(requireContext(), account, requireActivity().getMenuInflater(), this, getChildFragmentManager());
binding.comments.setAdapter(adapter);
- syncManager.getCommentsForLocalCardId(localId).observe(requireActivity(),
+ syncManager.getCommentsForLocalCardId(viewModel.getFullCard().getLocalId()).observe(requireActivity(),
(comments) -> {
if (comments != null && comments.size() > 0) {
binding.emptyContentView.setVisibility(GONE);
@@ -83,15 +57,15 @@ public class CardCommentsFragment extends BrandedFragment implements CommentEdit
binding.comments.setVisibility(GONE);
}
});
- if (canEdit && getActivity() instanceof CommentAddedListener) {
+ if (viewModel.canEdit()) {
binding.addCommentLayout.setVisibility(VISIBLE);
binding.fab.setOnClickListener(v -> {
binding.emptyContentView.setVisibility(GONE);
binding.comments.setVisibility(VISIBLE);
- DeckComment comment = new DeckComment(binding.message.getText().toString());
+ final DeckComment comment = new DeckComment(binding.message.getText().toString());
comment.setActorDisplayName(account.getUserName());
comment.setCreationDateTime(new Date());
- ((CommentAddedListener) getActivity()).onCommentAdded(comment);
+ syncManager.addCommentToCard(viewModel.getAccountId(), viewModel.getBoardId(), viewModel.getFullCard().getLocalId(), comment);
binding.message.setText(null);
});
binding.message.setOnEditorActionListener((v, actionId, event) -> binding.fab.performClick());
@@ -105,7 +79,7 @@ public class CardCommentsFragment extends BrandedFragment implements CommentEdit
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
- if (canEdit) {
+ if (viewModel.canEdit()) {
binding.message.requestFocus();
requireActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
}
@@ -113,7 +87,12 @@ public class CardCommentsFragment extends BrandedFragment implements CommentEdit
@Override
public void onCommentEdited(Long id, String comment) {
- syncManager.updateComment(accountId, localId, id, comment);
+ syncManager.updateComment(viewModel.getAccountId(), viewModel.getFullCard().getLocalId(), id, comment);
+ }
+
+ @Override
+ public void onCommentDeleted(Long localId) {
+ syncManager.deleteComment(viewModel.getAccountId(), viewModel.getFullCard().getLocalId(), localId);
}
@Override
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CommentAddedListener.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CommentAddedListener.java
deleted file mode 100644
index f86742a6e..000000000
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CommentAddedListener.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package it.niedermann.nextcloud.deck.ui.card.comments;
-
-import it.niedermann.nextcloud.deck.model.ocs.comment.DeckComment;
-
-public interface CommentAddedListener {
- void onCommentAdded(DeckComment comment);
-}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CommentDeletedListener.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CommentDeletedListener.java
index 45a0a4740..f00c4537a 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CommentDeletedListener.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CommentDeletedListener.java
@@ -1,5 +1,5 @@
package it.niedermann.nextcloud.deck.ui.card.comments;
public interface CommentDeletedListener {
- void onCommentDeleted(Long localId);
+ void onCommentDeleted(Long commentLocalId);
}
diff --git a/app/src/main/res/layout/fragment_card_edit_tab_activities.xml b/app/src/main/res/layout/fragment_card_edit_tab_activities.xml
index a78e6ba39..0cebd3471 100644
--- a/app/src/main/res/layout/fragment_card_edit_tab_activities.xml
+++ b/app/src/main/res/layout/fragment_card_edit_tab_activities.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/coordinatorLayout"
@@ -23,4 +23,4 @@
app:description="@string/no_activities"
app:image="@drawable/ic_activity_light_grey"
app:title="@string/activity" />
-</androidx.coordinatorlayout.widget.CoordinatorLayout> \ No newline at end of file
+</FrameLayout> \ No newline at end of file
diff --git a/app/src/main/res/layout/item_activity.xml b/app/src/main/res/layout/item_activity.xml
index 486e808a0..b1d467720 100644
--- a/app/src/main/res/layout/item_activity.xml
+++ b/app/src/main/res/layout/item_activity.xml
@@ -34,6 +34,7 @@
android:id="@+id/subject"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ tools:maxLength="150"
tools:text="@tools:sample/lorem/random" />
</LinearLayout>
</LinearLayout> \ No newline at end of file