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>2021-04-09 20:11:42 +0300
committerNiedermann IT-Dienstleistungen <stefan-niedermann@users.noreply.github.com>2021-04-10 14:38:50 +0300
commit72c80acffec9e6322e3a995a73489658b02a23cb (patch)
tree235eb0be10e0aba4c769716fa7cb9c7cb234173e
parent796a5554a94fc184d49f46c9829fe6dc9c657ce5 (diff)
Fix arturs shit
Signed-off-by: Stefan Niedermann <info@niedermann.it>
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java5
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/upcomingcards/UpcomingCardsActvitiy.java2
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/upcomingcards/UpcomingCardsAdapter.java84
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/upcomingcards/UpcomingCardsAdapterSectionItem.java18
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/upcomingcards/UpcomingCardsSectionViewHolder.java21
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/upcomingcards/UpcomingCardsViewModel.java53
-rw-r--r--app/src/main/res/layout/item_section.xml7
7 files changed, 132 insertions, 58 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java
index cd7eebbbb..84f282f4b 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java
@@ -82,6 +82,7 @@ import it.niedermann.nextcloud.deck.persistence.sync.helpers.providers.LabelData
import it.niedermann.nextcloud.deck.persistence.sync.helpers.providers.StackDataProvider;
import it.niedermann.nextcloud.deck.persistence.sync.helpers.providers.partial.BoardWithAclDownSyncDataProvider;
import it.niedermann.nextcloud.deck.persistence.sync.helpers.providers.partial.BoardWithStacksAndLabelsUpSyncDataProvider;
+import it.niedermann.nextcloud.deck.ui.upcomingcards.UpcomingCardsAdapterItem;
import static it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.LiveDataHelper.wrapInLiveData;
import static java.net.HttpURLConnection.HTTP_NOT_MODIFIED;
@@ -1896,8 +1897,8 @@ public class SyncManager {
}
@WorkerThread
- public List<FilterWidgetCard> getCardsForFilterWidget(@NonNull FilterWidget filterWidget) {
- return dataBaseAdapter.getCardsForFilterWidget(filterWidget);
+ public LiveData<List<UpcomingCardsAdapterItem>> getCardsForFilterWidget(@NonNull FilterWidget filterWidget) {
+ return dataBaseAdapter.getCardsForUpcomingCard();
}
// # single card widget
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/upcomingcards/UpcomingCardsActvitiy.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/upcomingcards/UpcomingCardsActvitiy.java
index eeef0c9c4..8663f3013 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/upcomingcards/UpcomingCardsActvitiy.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/upcomingcards/UpcomingCardsActvitiy.java
@@ -30,7 +30,7 @@ public class UpcomingCardsActvitiy extends AppCompatActivity {
final UpcomingCardsAdapter adapter = new UpcomingCardsAdapter(this, getSupportFragmentManager());
binding.recyclerView.setAdapter(adapter);
viewModel = new ViewModelProvider(this).get(UpcomingCardsViewModel.class);
- viewModel.getUpcomingCards().observe(this, adapter::setCardList);
+ viewModel.getUpcomingCards().observe(this, adapter::setItems);
}
@NonNull
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/upcomingcards/UpcomingCardsAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/upcomingcards/UpcomingCardsAdapter.java
index 67c435073..d6d6f9674 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/upcomingcards/UpcomingCardsAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/upcomingcards/UpcomingCardsAdapter.java
@@ -12,11 +12,13 @@ import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;
+import java.util.stream.Collectors;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.ItemCardCompactBinding;
import it.niedermann.nextcloud.deck.databinding.ItemCardDefaultBinding;
import it.niedermann.nextcloud.deck.databinding.ItemCardDefaultOnlyTitleBinding;
+import it.niedermann.nextcloud.deck.databinding.ItemSectionBinding;
import it.niedermann.nextcloud.deck.model.full.FullCard;
import it.niedermann.nextcloud.deck.ui.card.AbstractCardViewHolder;
import it.niedermann.nextcloud.deck.ui.card.CompactCardViewHolder;
@@ -26,7 +28,7 @@ import it.niedermann.nextcloud.deck.ui.card.EditActivity;
import static androidx.preference.PreferenceManager.getDefaultSharedPreferences;
-public class UpcomingCardsAdapter extends RecyclerView.Adapter<AbstractCardViewHolder> {
+public class UpcomingCardsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private final boolean compactMode;
@NonNull
@@ -34,7 +36,7 @@ public class UpcomingCardsAdapter extends RecyclerView.Adapter<AbstractCardViewH
@NonNull
protected final Activity activity;
@NonNull
- protected List<UpcomingCardsAdapterItem> cardList = new ArrayList<>();
+ protected List<Object> items = new ArrayList<>();
@NonNull
protected String counterMaxValue;
@ColorInt
@@ -51,13 +53,26 @@ public class UpcomingCardsAdapter extends RecyclerView.Adapter<AbstractCardViewH
@Override
public long getItemId(int position) {
- return cardList.get(position).getFullCard().getLocalId();
+ final Object item = items.get(position);
+ if (item.getClass() == UpcomingCardsAdapterSectionItem.class || item instanceof UpcomingCardsAdapterSectionItem) {
+ return items
+ .stream()
+ .filter(i -> (i.getClass() == UpcomingCardsAdapterSectionItem.class || i instanceof UpcomingCardsAdapterSectionItem))
+ .collect(Collectors.toList())
+ .indexOf(item) * -1;
+ } else if (item.getClass() == UpcomingCardsAdapterItem.class || item instanceof UpcomingCardsAdapterItem) {
+ return ((UpcomingCardsAdapterItem) item).getFullCard().getLocalId();
+ } else {
+ throw new IllegalStateException(item.getClass().getSimpleName() + " must be a " + UpcomingCardsAdapterSectionItem.class.getSimpleName() + " or " + UpcomingCardsAdapterItem.class.getSimpleName());
+ }
}
@NonNull
@Override
- public AbstractCardViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
- if (viewType == R.layout.item_card_compact) {
+ public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
+ if (viewType == 0) {
+ return new UpcomingCardsSectionViewHolder(ItemSectionBinding.inflate(LayoutInflater.from(viewGroup.getContext()), viewGroup, false));
+ } else if (viewType == R.layout.item_card_compact) {
return new CompactCardViewHolder(ItemCardCompactBinding.inflate(LayoutInflater.from(viewGroup.getContext()), viewGroup, false));
} else if (viewType == R.layout.item_card_default_only_title) {
return new DefaultCardOnlyTitleViewHolder(ItemCardDefaultOnlyTitleBinding.inflate(LayoutInflater.from(viewGroup.getContext()), viewGroup, false));
@@ -67,36 +82,57 @@ public class UpcomingCardsAdapter extends RecyclerView.Adapter<AbstractCardViewH
@Override
public int getItemViewType(int position) {
- if (compactMode) {
- return R.layout.item_card_compact;
- } else {
- final FullCard fullCard = cardList.get(position).getFullCard();
- if (fullCard.getAttachments().size() == 0
- && fullCard.getAssignedUsers().size() == 0
- && fullCard.getLabels().size() == 0
- && fullCard.getCommentCount() == 0
- && fullCard.getCard().getTaskStatus().taskCount == 0) {
- return R.layout.item_card_default_only_title;
+ final Object item = items.get(position);
+ if (item.getClass() == UpcomingCardsAdapterSectionItem.class || item instanceof UpcomingCardsAdapterSectionItem) {
+ return R.layout.item_section;
+ } else if (item.getClass() == UpcomingCardsAdapterItem.class || item instanceof UpcomingCardsAdapterItem) {
+ if (compactMode) {
+ return R.layout.item_card_compact;
+ } else {
+ final FullCard fullCard = ((UpcomingCardsAdapterItem) item).getFullCard();
+ if (fullCard.getAttachments().size() == 0
+ && fullCard.getAssignedUsers().size() == 0
+ && fullCard.getLabels().size() == 0
+ && fullCard.getCommentCount() == 0
+ && fullCard.getCard().getTaskStatus().taskCount == 0) {
+ return R.layout.item_card_default_only_title;
+ }
+ return R.layout.item_card_default;
}
- return R.layout.item_card_default;
+ } else {
+ throw new IllegalStateException(item.getClass().getSimpleName() + " must be a " + UpcomingCardsAdapterSectionItem.class.getSimpleName() + " or " + UpcomingCardsAdapterItem.class.getSimpleName());
}
}
@Override
- public void onBindViewHolder(@NonNull AbstractCardViewHolder viewHolder, int position) {
- UpcomingCardsAdapterItem item = cardList.get(position);
- viewHolder.bind(item.getFullCard(), item.getAccount(), item.getCurrentBoardRemoteId(), false, R.menu.card_menu, (a, b) -> true, counterMaxValue, mainColor);
- viewHolder.bindCardClickListener((v) -> activity.startActivity(EditActivity.createEditCardIntent(activity, item.getAccount(), item.getCurrentBoardLocalId(), item.getFullCard().getLocalId())));
+ public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int position) {
+ final Object item = items.get(position);
+ if (item.getClass() == UpcomingCardsAdapterSectionItem.class || item instanceof UpcomingCardsAdapterSectionItem) {
+ final UpcomingCardsAdapterSectionItem cardItem = (UpcomingCardsAdapterSectionItem) item;
+ if (viewHolder.getClass() == UpcomingCardsSectionViewHolder.class || viewHolder instanceof UpcomingCardsSectionViewHolder) {
+ ((UpcomingCardsSectionViewHolder) viewHolder).bind(cardItem.getTitle());
+ } else {
+ throw new IllegalStateException("Item at position " + position + " is a " + item.getClass().getSimpleName() + " but viewHolder is no " + UpcomingCardsSectionViewHolder.class.getSimpleName());
+ }
+ } else if (item.getClass() == UpcomingCardsAdapterItem.class || item instanceof UpcomingCardsAdapterItem) {
+ final UpcomingCardsAdapterItem cardItem = (UpcomingCardsAdapterItem) item;
+ AbstractCardViewHolder cardViewHolder = ((AbstractCardViewHolder) viewHolder);
+ cardViewHolder.bind(cardItem.getFullCard(), cardItem.getAccount(), cardItem.getCurrentBoardRemoteId(), false, R.menu.card_menu, (a, b) -> true, counterMaxValue, mainColor);
+ cardViewHolder.bindCardClickListener((v) -> activity.startActivity(EditActivity.createEditCardIntent(activity, cardItem.getAccount(), cardItem.getCurrentBoardLocalId(), cardItem.getFullCard().getLocalId())));
+ } else {
+ throw new IllegalStateException(item.getClass().getSimpleName() + " must be a " + UpcomingCardsAdapterSectionItem.class.getSimpleName() + " or " + UpcomingCardsAdapterItem.class.getSimpleName());
+ }
}
@Override
public int getItemCount() {
- return cardList.size();
+ return items.size();
}
- public void setCardList(@NonNull List<UpcomingCardsAdapterItem> cardList) {
- this.cardList.clear();
- this.cardList.addAll(cardList);
+ public void setItems(@NonNull List<UpcomingCardsAdapterItem> items) {
+ this.items.clear();
+ this.items.add(new UpcomingCardsAdapterSectionItem("Hello there"));
+ this.items.addAll(items);
notifyDataSetChanged();
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/upcomingcards/UpcomingCardsAdapterSectionItem.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/upcomingcards/UpcomingCardsAdapterSectionItem.java
new file mode 100644
index 000000000..11f29e9d0
--- /dev/null
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/upcomingcards/UpcomingCardsAdapterSectionItem.java
@@ -0,0 +1,18 @@
+package it.niedermann.nextcloud.deck.ui.upcomingcards;
+
+import androidx.annotation.NonNull;
+
+public class UpcomingCardsAdapterSectionItem {
+
+ @NonNull
+ private final String title;
+
+ public UpcomingCardsAdapterSectionItem(@NonNull String title) {
+ this.title = title;
+ }
+
+ @NonNull
+ public String getTitle() {
+ return title;
+ }
+} \ No newline at end of file
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/upcomingcards/UpcomingCardsSectionViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/upcomingcards/UpcomingCardsSectionViewHolder.java
new file mode 100644
index 000000000..60b6a4b90
--- /dev/null
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/upcomingcards/UpcomingCardsSectionViewHolder.java
@@ -0,0 +1,21 @@
+package it.niedermann.nextcloud.deck.ui.upcomingcards;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import it.niedermann.nextcloud.deck.databinding.ItemSectionBinding;
+
+public class UpcomingCardsSectionViewHolder extends RecyclerView.ViewHolder {
+
+ @NonNull
+ private final ItemSectionBinding binding;
+
+ public UpcomingCardsSectionViewHolder(@NonNull ItemSectionBinding binding) {
+ super(binding.getRoot());
+ this.binding = binding;
+ }
+
+ public void bind(@NonNull String sectionTitle) {
+ this.binding.sectionTitle.setText(sectionTitle);
+ }
+}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/upcomingcards/UpcomingCardsViewModel.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/upcomingcards/UpcomingCardsViewModel.java
index f8ab3b345..6b589b36e 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/upcomingcards/UpcomingCardsViewModel.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/upcomingcards/UpcomingCardsViewModel.java
@@ -5,20 +5,10 @@ import android.app.Application;
import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
-import androidx.lifecycle.MutableLiveData;
import java.util.List;
-import java.util.stream.Collectors;
-import it.niedermann.nextcloud.deck.model.Account;
-import it.niedermann.nextcloud.deck.model.Board;
-import it.niedermann.nextcloud.deck.model.enums.ESortCriteria;
-import it.niedermann.nextcloud.deck.model.widget.filter.EWidgetType;
import it.niedermann.nextcloud.deck.model.widget.filter.FilterWidget;
-import it.niedermann.nextcloud.deck.model.widget.filter.FilterWidgetAccount;
-import it.niedermann.nextcloud.deck.model.widget.filter.FilterWidgetSort;
-import it.niedermann.nextcloud.deck.model.widget.filter.FilterWidgetUser;
-import it.niedermann.nextcloud.deck.model.widget.filter.dto.FilterWidgetCard;
import it.niedermann.nextcloud.deck.persistence.sync.SyncManager;
@SuppressWarnings("WeakerAccess")
@@ -32,26 +22,27 @@ public class UpcomingCardsViewModel extends AndroidViewModel {
}
public LiveData<List<UpcomingCardsAdapterItem>> getUpcomingCards() {
- final MutableLiveData<List<UpcomingCardsAdapterItem>> ret = new MutableLiveData<>();
- new Thread(() -> {
- List<Account> accounts = syncManager.readAccountsDirectly();
-
- final FilterWidget config = new FilterWidget();
- config.setWidgetType(EWidgetType.UPCOMING_WIDGET);
- config.setSorts(new FilterWidgetSort(ESortCriteria.DUE_DATE, true));
- config.setAccounts(accounts.stream().map(account -> {
- final FilterWidgetAccount fwa = new FilterWidgetAccount(account.getId(), false);
- fwa.setUsers(new FilterWidgetUser(syncManager.getUserByUidDirectly(account.getId(), account.getUserName()).getLocalId()));
- return fwa;
- }).collect(Collectors.toList()));
- List<FilterWidgetCard> filterWidgetCards = this.syncManager.getCardsForFilterWidget(new FilterWidget());
- ret.postValue(filterWidgetCards.stream().map((filterWidgetCard -> {
- final Board board = syncManager.getBoardById(
- syncManager.getBoardLocalIdByLocalCardIdDirectly(filterWidgetCard.getCard().getLocalId())
- );
- return new UpcomingCardsAdapterItem(filterWidgetCard.getCard(), new Account(), board.getId(), board.getLocalId(), board.isPermissionEdit());
- })).collect(Collectors.toList()));
- }).start();
- return ret;
+ return this.syncManager.getCardsForFilterWidget(new FilterWidget());
+// final MutableLiveData<List<UpcomingCardsAdapterItem>> ret = new MutableLiveData<>();
+// new Thread(() -> {
+// List<Account> accounts = syncManager.readAccountsDirectly();
+//
+// final FilterWidget config = new FilterWidget();
+// config.setWidgetType(EWidgetType.UPCOMING_WIDGET);
+// config.setSorts(new FilterWidgetSort(ESortCriteria.DUE_DATE, true));
+// config.setAccounts(accounts.stream().map(account -> {
+// final FilterWidgetAccount fwa = new FilterWidgetAccount(account.getId(), false);
+// fwa.setUsers(new FilterWidgetUser(syncManager.getUserByUidDirectly(account.getId(), account.getUserName()).getLocalId()));
+// return fwa;
+// }).collect(Collectors.toList()));
+// List<FilterWidgetCard> filterWidgetCards = this.syncManager.getCardsForFilterWidget(new FilterWidget());
+// ret.postValue(filterWidgetCards.stream().map((filterWidgetCard -> {
+// final Board board = syncManager.getBoardById(
+// syncManager.getBoardLocalIdByLocalCardIdDirectly(filterWidgetCard.getCard().getLocalId())
+// );
+// return new UpcomingCardsAdapterItem(filterWidgetCard.getCard(), new Account(), board.getId(), board.getLocalId(), board.isPermissionEdit());
+// })).collect(Collectors.toList()));
+// }).start();
+// return ret;
}
}
diff --git a/app/src/main/res/layout/item_section.xml b/app/src/main/res/layout/item_section.xml
new file mode 100644
index 000000000..cdb8946c6
--- /dev/null
+++ b/app/src/main/res/layout/item_section.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:id="@+id/sectionTitle"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ tools:text="@tools:sample/lorem" /> \ No newline at end of file