From 96e53163759110d2bea394274e3570ecc2e0d38e Mon Sep 17 00:00:00 2001 From: Shinokuni Date: Sat, 19 Oct 2019 22:05:25 +0200 Subject: [PATCH] Add preference for reloading feeds colors --- .../readrops/app/database/dao/FeedDao.java | 5 +++- .../fragments/settings/SettingsFragment.java | 26 +++++++++++++++++++ .../app/repositories/LocalFeedRepository.java | 2 +- .../app/utils/feedscolors/FeedColors.kt | 2 +- app/src/main/res/values-fr-rFR/strings.xml | 2 ++ app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/preferences.xml | 6 +++++ 7 files changed, 42 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/readrops/app/database/dao/FeedDao.java b/app/src/main/java/com/readrops/app/database/dao/FeedDao.java index c52ad1ab..b8bc931b 100644 --- a/app/src/main/java/com/readrops/app/database/dao/FeedDao.java +++ b/app/src/main/java/com/readrops/app/database/dao/FeedDao.java @@ -19,7 +19,10 @@ import io.reactivex.Single; public abstract class FeedDao implements BaseDao { @Query("Select * from Feed Where account_id = :accountId order by name ASC") - public abstract List getAllFeeds(int accountId); + public abstract List getFeeds(int accountId); + + @Query("Select * from Feed Order By name ASC") + public abstract LiveData> getAllFeeds(); @Query("Select case When :feedUrl In (Select url from Feed Where account_id = :accountId) Then 1 else 0 end") public abstract boolean feedExists(String feedUrl, int accountId); diff --git a/app/src/main/java/com/readrops/app/fragments/settings/SettingsFragment.java b/app/src/main/java/com/readrops/app/fragments/settings/SettingsFragment.java index b8b57383..0e6d8530 100644 --- a/app/src/main/java/com/readrops/app/fragments/settings/SettingsFragment.java +++ b/app/src/main/java/com/readrops/app/fragments/settings/SettingsFragment.java @@ -1,15 +1,41 @@ package com.readrops.app.fragments.settings; +import android.content.Intent; import android.os.Bundle; +import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; import com.readrops.app.R; +import com.readrops.app.database.Database; +import com.readrops.app.utils.feedscolors.FeedsColorsIntentService; + +import java.util.ArrayList; +import java.util.concurrent.atomic.AtomicBoolean; public class SettingsFragment extends PreferenceFragmentCompat { @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { addPreferencesFromResource(R.xml.preferences); + + AtomicBoolean serviceStarted = new AtomicBoolean(false); + Preference feedsColorsPreference = findPreference("reload_feeds_colors"); + + feedsColorsPreference.setOnPreferenceClickListener(preference -> { + Database database = Database.getInstance(getContext()); + + database.feedDao().getAllFeeds().observe(getActivity(), feeds -> { + if (!serviceStarted.get()) { + Intent intent = new Intent(getContext(), FeedsColorsIntentService.class); + intent.putParcelableArrayListExtra(FeedsColorsIntentService.FEEDS, new ArrayList<>(feeds)); + + getContext().startService(intent); + serviceStarted.set(true); + } + }); + + return true; + }); } } diff --git a/app/src/main/java/com/readrops/app/repositories/LocalFeedRepository.java b/app/src/main/java/com/readrops/app/repositories/LocalFeedRepository.java index 3c16339e..f2d41476 100644 --- a/app/src/main/java/com/readrops/app/repositories/LocalFeedRepository.java +++ b/app/src/main/java/com/readrops/app/repositories/LocalFeedRepository.java @@ -62,7 +62,7 @@ public class LocalFeedRepository extends ARepository { List feedList; if (feeds == null || feeds.size() == 0) - feedList = database.feedDao().getAllFeeds(account.getId()); + feedList = database.feedDao().getFeeds(account.getId()); else feedList = new ArrayList<>(feeds); diff --git a/app/src/main/java/com/readrops/app/utils/feedscolors/FeedColors.kt b/app/src/main/java/com/readrops/app/utils/feedscolors/FeedColors.kt index c9bd4861..6c6d83ac 100644 --- a/app/src/main/java/com/readrops/app/utils/feedscolors/FeedColors.kt +++ b/app/src/main/java/com/readrops/app/utils/feedscolors/FeedColors.kt @@ -9,7 +9,7 @@ fun setFeedColors(feed: Feed) { getFaviconLink(feed) if (feed.iconUrl != null) { - val bitmap = Utils.getImageFromUrl(feed.iconUrl) + val bitmap = Utils.getImageFromUrl(feed.iconUrl) ?: return val palette = Palette.from(bitmap).generate() val dominantSwatch = palette.dominantSwatch diff --git a/app/src/main/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr-rFR/strings.xml index 17199013..973bff13 100644 --- a/app/src/main/res/values-fr-rFR/strings.xml +++ b/app/src/main/res/values-fr-rFR/strings.xml @@ -86,5 +86,7 @@ Erreur pour le flux %1$s Récupération des couleurs des flux Couleurs des flux + Général + Recharger les couleurs des flux \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3640c122..5c9e6c1a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -94,4 +94,6 @@ Error for feed %1$s Get feeds colors Feeds Colors + Global + Reload feeds colors diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 73e0ffc3..d53be3a0 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -10,4 +10,10 @@ android:title="@string/number_items_to_parse" /> + + + + \ No newline at end of file