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:
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityAdapter.java19
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityFragment.java27
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityViewHolder.java56
3 files changed, 65 insertions, 37 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityAdapter.java
index a64cf3a44..adcc21dc0 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityAdapter.java
@@ -5,24 +5,28 @@ import android.view.MenuInflater;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
+import java.util.ArrayList;
import java.util.List;
import it.niedermann.nextcloud.deck.databinding.ItemActivityBinding;
import it.niedermann.nextcloud.deck.model.ocs.Activity;
+import it.niedermann.nextcloud.deck.ui.theme.ThemeUtils;
public class CardActivityAdapter extends RecyclerView.Adapter<CardActivityViewHolder> {
@NonNull
- private final List<Activity> activities;
+ private final List<Activity> activities = new ArrayList<>();
+ @Nullable
+ private ThemeUtils utils;
@NonNull
private final MenuInflater menuInflater;
@SuppressWarnings("WeakerAccess")
- public CardActivityAdapter(@NonNull List<Activity> activities, @NonNull MenuInflater menuInflater) {
+ public CardActivityAdapter(@NonNull MenuInflater menuInflater) {
super();
- this.activities = activities;
this.menuInflater = menuInflater;
}
@@ -34,9 +38,16 @@ public class CardActivityAdapter extends RecyclerView.Adapter<CardActivityViewHo
return new CardActivityViewHolder(binding);
}
+ public void setData(@NonNull List<Activity> activities, @NonNull ThemeUtils utils) {
+ this.activities.clear();
+ this.activities.addAll(activities);
+ this.utils = utils;
+ this.notifyDataSetChanged();
+ }
+
@Override
public void onBindViewHolder(@NonNull CardActivityViewHolder holder, int position) {
- holder.bind(activities.get(position), menuInflater);
+ holder.bind(activities.get(position), menuInflater, utils);
}
@Override
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 d301968c4..41d4d0963 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
@@ -9,6 +9,7 @@ import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
+import it.niedermann.android.reactivelivedata.ReactiveLiveData;
import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.databinding.FragmentCardEditTabActivitiesBinding;
import it.niedermann.nextcloud.deck.ui.card.EditCardViewModel;
@@ -38,18 +39,22 @@ public class CardActivityFragment extends Fragment implements Themed {
return binding.getRoot();
}
- viewModel.getBoardColor().observe(getViewLifecycleOwner(), this::applyTheme);
+ final var adapter = new CardActivityAdapter(requireActivity().getMenuInflater());
+ binding.activitiesList.setAdapter(adapter);
- viewModel.syncActivitiesForCard(viewModel.getFullCard().getCard()).observe(getViewLifecycleOwner(), (activities -> {
- if (activities == null || activities.size() == 0) {
- binding.emptyContentView.setVisibility(View.VISIBLE);
- binding.activitiesList.setVisibility(View.GONE);
- } else {
- binding.emptyContentView.setVisibility(View.GONE);
- binding.activitiesList.setVisibility(View.VISIBLE);
- binding.activitiesList.setAdapter(new CardActivityAdapter(activities, requireActivity().getMenuInflater()));
- }
- }));
+ new ReactiveLiveData<>(viewModel.syncActivitiesForCard(viewModel.getFullCard().getCard()))
+ .combineWith(viewModel::getBoardColor)
+ .observe(getViewLifecycleOwner(), data -> {
+ applyTheme(data.second);
+ if (data.first == null || data.first.size() == 0) {
+ binding.emptyContentView.setVisibility(View.VISIBLE);
+ binding.activitiesList.setVisibility(View.GONE);
+ } else {
+ binding.emptyContentView.setVisibility(View.GONE);
+ binding.activitiesList.setVisibility(View.VISIBLE);
+ }
+ adapter.setData(data.first, ThemeUtils.of(data.second, requireContext()));
+ });
return binding.getRoot();
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityViewHolder.java
index 677c68e9b..b9f4ca436 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityViewHolder.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityViewHolder.java
@@ -1,19 +1,25 @@
package it.niedermann.nextcloud.deck.ui.card.activities;
import android.content.Context;
+import android.content.res.ColorStateList;
import android.view.MenuInflater;
import android.view.View;
-import android.widget.ImageView;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.RecyclerView;
+import com.nextcloud.android.common.ui.theme.utils.ColorRole;
+
+import java.util.function.Function;
+
import it.niedermann.android.util.ClipboardUtil;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.ItemActivityBinding;
import it.niedermann.nextcloud.deck.model.enums.ActivityType;
import it.niedermann.nextcloud.deck.model.ocs.Activity;
-import it.niedermann.nextcloud.deck.ui.theme.DeckViewThemeUtils;
+import it.niedermann.nextcloud.deck.ui.theme.ThemeUtils;
import it.niedermann.nextcloud.deck.util.DateUtil;
public class CardActivityViewHolder extends RecyclerView.ViewHolder {
@@ -25,7 +31,7 @@ public class CardActivityViewHolder extends RecyclerView.ViewHolder {
this.binding = binding;
}
- public void bind(@NonNull Activity activity, @NonNull MenuInflater inflater) {
+ public void bind(@NonNull Activity activity, @NonNull MenuInflater inflater, @Nullable ThemeUtils utils) {
final var context = itemView.getContext();
binding.date.setText(DateUtil.getRelativeDateTimeString(context, activity.getLastModified().toEpochMilli()));
binding.subject.setText(activity.getSubject());
@@ -34,33 +40,39 @@ public class CardActivityViewHolder extends RecyclerView.ViewHolder {
inflater.inflate(R.menu.activity_menu, menu);
menu.findItem(android.R.id.copy).setOnMenuItemClickListener(item -> ClipboardUtil.copyToClipboard(context, activity.getSubject()));
});
+
final var type = ActivityType.findById(activity.getType());
- setImageResource(binding.type, type);
- setImageColor(context, binding.type, type);
+ bindImageResource(type);
+ if (utils != null) {
+ applyTheme(context, utils, type);
+ }
}
- private static void setImageResource(@NonNull ImageView imageView, @NonNull ActivityType type) {
+ private void bindImageResource(@NonNull ActivityType type) {
switch (type) {
- case CHANGE -> imageView.setImageResource(R.drawable.type_change_36dp);
- case ADD -> imageView.setImageResource(R.drawable.type_add_color_36dp);
- case DELETE -> imageView.setImageResource(R.drawable.type_delete_color_36dp);
- case ARCHIVE -> imageView.setImageResource(R.drawable.type_archive_grey600_36dp);
- case TAGGED_WITH_LABEL ->
- imageView.setImageResource(R.drawable.type_label_grey600_36dp);
- case COMMENT -> imageView.setImageResource(R.drawable.type_comment_grey600_36dp);
- case FILES -> imageView.setImageResource(R.drawable.type_file_36dp);
- case HISTORY -> imageView.setImageResource(R.drawable.type_history_36dp);
- default -> imageView.setImageResource(R.drawable.ic_app_logo);
+ case CHANGE -> binding.type.setImageResource(R.drawable.type_change_36dp);
+ case ADD -> binding.type.setImageResource(R.drawable.type_add_color_36dp);
+ case DELETE -> binding.type.setImageResource(R.drawable.type_delete_color_36dp);
+ case ARCHIVE -> binding.type.setImageResource(R.drawable.type_archive_36dp);
+ case TAGGED_WITH_LABEL -> binding.type.setImageResource(R.drawable.type_label_36dp);
+ case COMMENT -> binding.type.setImageResource(R.drawable.type_comment_36dp);
+ case FILES -> binding.type.setImageResource(R.drawable.type_file_36dp);
+ case HISTORY -> binding.type.setImageResource(R.drawable.type_history_36dp);
+ default -> binding.type.setImageResource(R.drawable.ic_app_logo);
}
}
- private static void setImageColor(@NonNull Context context, @NonNull ImageView imageView, @NonNull ActivityType type) {
+ private void applyTheme(@NonNull Context context, @NonNull ThemeUtils utils, @NonNull ActivityType type) {
+ utils.platform.colorTextView(binding.subject, ColorRole.ON_SURFACE);
+ utils.platform.colorTextView(binding.date, ColorRole.ON_SURFACE_VARIANT);
+
+ final Function<Integer, ColorStateList> getColor = color ->
+ ColorStateList.valueOf(ContextCompat.getColor(context, color));
+
switch (type) {
- case ADD ->
- DeckViewThemeUtils.setImageColor(context, imageView, R.color.activity_create);
- case DELETE ->
- DeckViewThemeUtils.setImageColor(context, imageView, R.color.activity_delete);
- default -> DeckViewThemeUtils.setImageColor(context, imageView, R.color.grey600);
+ case ADD -> binding.type.setImageTintList(getColor.apply(R.color.activity_create));
+ case DELETE -> binding.type.setImageTintList(getColor.apply(R.color.activity_delete));
+ default -> utils.platform.colorImageView(binding.type, ColorRole.ON_SURFACE_VARIANT);
}
}
} \ No newline at end of file