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-05-05 00:16:07 +0300
committerStefan Niedermann <info@niedermann.it>2020-05-05 00:16:07 +0300
commit960935ebd07e717158c89ab5ccaa9180020665bc (patch)
tree9a792d4a0b5da02ffc924d6648a6753b692e8738 /app/src/main/java/it/niedermann/nextcloud/deck/ui/filter
parentb5978199e6cfda0986d7b11d97ed0e5f05e498f5 (diff)
Display active filters in filter tabs
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/ui/filter')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterAssigneesFragment.java9
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java40
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDuedateFragment.java9
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterLabelsFragment.java9
4 files changed, 54 insertions, 13 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterAssigneesFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterAssigneesFragment.java
index 1d29ff034..f26c51f99 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterAssigneesFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterAssigneesFragment.java
@@ -8,6 +8,7 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
+import androidx.lifecycle.LiveData;
import androidx.lifecycle.ViewModelProvider;
import it.niedermann.nextcloud.deck.R;
@@ -22,7 +23,7 @@ import static it.niedermann.nextcloud.deck.util.DimensionUtil.dpToPx;
public class FilterAssigneesFragment extends Fragment implements SelectionListener<User> {
- private FilterInformation filterInformationDraft;
+ private LiveData<FilterInformation> filterInformationDraft;
private DialogFilterAssigneesBinding binding;
private MainViewModel mainViewModel;
private UserFilterAdapter userAdapter;
@@ -37,7 +38,7 @@ public class FilterAssigneesFragment extends Fragment implements SelectionListen
this.filterInformationDraft = mainViewModel.getFilterInformationDraft();
observeOnce(syncManager.findProposalsForUsersToAssign(mainViewModel.getCurrentAccount().getId(), mainViewModel.getCurrentBoardLocalId()), requireActivity(), (users) -> {
- userAdapter = new UserFilterAdapter(dpToPx(requireContext(), R.dimen.avatar_size), mainViewModel.getCurrentAccount(), users, this.filterInformationDraft.getUsers(), this);
+ userAdapter = new UserFilterAdapter(dpToPx(requireContext(), R.dimen.avatar_size), mainViewModel.getCurrentAccount(), users, this.filterInformationDraft.getValue().getUsers(), this);
binding.users.setNestedScrollingEnabled(false);
binding.users.setAdapter(userAdapter);
});
@@ -47,11 +48,11 @@ public class FilterAssigneesFragment extends Fragment implements SelectionListen
@Override
public void onItemSelected(User item) {
- filterInformationDraft.addUser(item);
+ mainViewModel.addFilterInformationUser(item);
}
@Override
public void onItemDeselected(User item) {
- filterInformationDraft.removeUser(item);
+ mainViewModel.removeFilterInformationUser(item);
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java
index 326f914a1..ef6280c1c 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java
@@ -9,6 +9,7 @@ import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.lifecycle.Lifecycle;
+import androidx.lifecycle.LiveData;
import androidx.lifecycle.ViewModelProvider;
import androidx.viewpager2.adapter.FragmentStateAdapter;
@@ -16,6 +17,8 @@ import com.google.android.material.tabs.TabLayoutMediator;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.DialogFilterBinding;
+import it.niedermann.nextcloud.deck.model.enums.EDueType;
+import it.niedermann.nextcloud.deck.model.internal.FilterInformation;
import it.niedermann.nextcloud.deck.ui.MainViewModel;
import it.niedermann.nextcloud.deck.ui.branding.BrandedActivity;
import it.niedermann.nextcloud.deck.ui.branding.BrandedAlertDialogBuilder;
@@ -44,7 +47,42 @@ public class FilterDialogFragment extends BrandedDialogFragment {
binding = DialogFilterBinding.inflate(requireActivity().getLayoutInflater());
binding.viewPager.setAdapter(new TabsPagerAdapter(getChildFragmentManager(), getLifecycle()));
binding.viewPager.setOffscreenPageLimit(tabTitles.length);
- new TabLayoutMediator(binding.tabLayout, binding.viewPager, (tab, position) -> tab.setText(tabTitles[position])).attach();
+
+ LiveData<FilterInformation> filterInformationDraft = mainViewModel.getFilterInformationDraft();
+ new TabLayoutMediator(binding.tabLayout, binding.viewPager, (tab, position) -> {
+ switch (position) {
+ case 0:
+ filterInformationDraft.observe(this, (draft) -> {
+ if (draft.getLabels().size() > 0) {
+ tab.setIcon(R.drawable.circle_alpha_colorize_36dp);
+ } else {
+ tab.setIcon(null);
+ }
+ });
+ break;
+ case 1:
+ filterInformationDraft.observe(this, (draft) -> {
+ if (draft.getUsers().size() > 0) {
+ tab.setIcon(R.drawable.circle_alpha_colorize_36dp);
+ } else {
+ tab.setIcon(null);
+ }
+ });
+ break;
+ case 2:
+ filterInformationDraft.observe(this, (draft) -> {
+ if (draft.getDueType() != EDueType.NO_FILTER) {
+ tab.setIcon(R.drawable.circle_alpha_colorize_36dp);
+ } else {
+ tab.setIcon(null);
+ }
+ });
+ break;
+ default:
+ throw new IllegalStateException("position must be between 0 and 2");
+ }
+ tab.setText(tabTitles[position]);
+ }).attach();
mainViewModel.createFilterInformationDraft();
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDuedateFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDuedateFragment.java
index ac9514773..43b399139 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDuedateFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDuedateFragment.java
@@ -9,6 +9,7 @@ import android.widget.AdapterView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
+import androidx.lifecycle.LiveData;
import androidx.lifecycle.ViewModelProvider;
import it.niedermann.nextcloud.deck.databinding.DialogFilterDuedateBinding;
@@ -18,7 +19,7 @@ import it.niedermann.nextcloud.deck.ui.MainViewModel;
public class FilterDuedateFragment extends Fragment implements AdapterView.OnItemSelectedListener {
- private FilterInformation filterInformationDraft;
+ private LiveData<FilterInformation> filterInformationDraft;
private DialogFilterDuedateBinding binding;
private MainViewModel mainViewModel;
private OverdueFilterAdapter overdueAdapter;
@@ -31,18 +32,18 @@ public class FilterDuedateFragment extends Fragment implements AdapterView.OnIte
overdueAdapter = new OverdueFilterAdapter(requireContext());
binding.overdue.setAdapter(overdueAdapter);
this.filterInformationDraft = mainViewModel.getFilterInformationDraft();
- binding.overdue.setSelection(overdueAdapter.getPosition(this.filterInformationDraft.getDueType()));
+ binding.overdue.setSelection(overdueAdapter.getPosition(this.filterInformationDraft.getValue().getDueType()));
binding.overdue.setOnItemSelectedListener(this);
return binding.getRoot();
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
- filterInformationDraft.setDueType(overdueAdapter.getItem(position));
+ mainViewModel.setFilterInformationDraftDueType(overdueAdapter.getItem(position));
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
- filterInformationDraft.setDueType(EDueType.NO_FILTER);
+ mainViewModel.setFilterInformationDraftDueType(EDueType.NO_FILTER);
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterLabelsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterLabelsFragment.java
index cf20f0d06..b2e5e5c58 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterLabelsFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterLabelsFragment.java
@@ -8,6 +8,7 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
+import androidx.lifecycle.LiveData;
import androidx.lifecycle.ViewModelProvider;
import it.niedermann.nextcloud.deck.databinding.DialogFilterLabelsBinding;
@@ -20,7 +21,7 @@ import static it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.Liv
public class FilterLabelsFragment extends Fragment implements SelectionListener<Label> {
- private FilterInformation filterInformationDraft;
+ private LiveData<FilterInformation> filterInformationDraft;
private DialogFilterLabelsBinding binding;
private MainViewModel mainViewModel;
private LabelFilterAdapter labelAdapter;
@@ -34,7 +35,7 @@ public class FilterLabelsFragment extends Fragment implements SelectionListener<
this.filterInformationDraft = mainViewModel.getFilterInformationDraft();
observeOnce(syncManager.findProposalsForLabelsToAssign(mainViewModel.getCurrentAccount().getId(), mainViewModel.getCurrentBoardLocalId()), requireActivity(), (labels) -> {
- labelAdapter = new LabelFilterAdapter(labels, this.filterInformationDraft.getLabels(), this);
+ labelAdapter = new LabelFilterAdapter(labels, this.filterInformationDraft.getValue().getLabels(), this);
binding.labels.setNestedScrollingEnabled(false);
binding.labels.setAdapter(labelAdapter);
});
@@ -43,11 +44,11 @@ public class FilterLabelsFragment extends Fragment implements SelectionListener<
@Override
public void onItemSelected(Label item) {
- filterInformationDraft.addLabel(item);
+ mainViewModel.addFilterInformationDraftLabel(item);
}
@Override
public void onItemDeselected(Label item) {
- filterInformationDraft.removeLabel(item);
+ mainViewModel.removeFilterInformationLabel(item);
}
}