diff options
author | Stefan Niedermann <info@niedermann.it> | 2020-05-05 00:16:07 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2020-05-05 00:16:07 +0300 |
commit | 960935ebd07e717158c89ab5ccaa9180020665bc (patch) | |
tree | 9a792d4a0b5da02ffc924d6648a6753b692e8738 /app/src/main/java/it/niedermann/nextcloud/deck/ui/filter | |
parent | b5978199e6cfda0986d7b11d97ed0e5f05e498f5 (diff) |
Display active filters in filter tabs
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/ui/filter')
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); } } |