diff options
author | Stefan Niedermann <info@niedermann.it> | 2021-04-09 20:11:42 +0300 |
---|---|---|
committer | Niedermann IT-Dienstleistungen <stefan-niedermann@users.noreply.github.com> | 2021-04-10 14:38:50 +0300 |
commit | 72c80acffec9e6322e3a995a73489658b02a23cb (patch) | |
tree | 235eb0be10e0aba4c769716fa7cb9c7cb234173e /app/src/main/java | |
parent | 796a5554a94fc184d49f46c9829fe6dc9c657ce5 (diff) |
Fix arturs shit
Signed-off-by: Stefan Niedermann <info@niedermann.it>
Diffstat (limited to 'app/src/main/java')
6 files changed, 125 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; } } |