202 lines
9.7 KiB
Java
202 lines
9.7 KiB
Java
package app.revanced.integrations.settingsmenu;
|
|
|
|
import static app.revanced.integrations.sponsorblock.StringRef.str;
|
|
|
|
import android.app.Activity;
|
|
import android.content.Intent;
|
|
import android.net.Uri;
|
|
import android.os.Bundle;
|
|
import android.preference.Preference;
|
|
import android.preference.PreferenceCategory;
|
|
import android.preference.PreferenceFragment;
|
|
import android.preference.PreferenceScreen;
|
|
import android.preference.SwitchPreference;
|
|
|
|
import app.revanced.integrations.returnyoutubedislike.ReturnYouTubeDislike;
|
|
import app.revanced.integrations.returnyoutubedislike.requests.ReturnYouTubeDislikeApi;
|
|
import app.revanced.integrations.settings.SettingsEnum;
|
|
import app.revanced.integrations.utils.SharedPrefHelper;
|
|
|
|
public class ReturnYouTubeDislikeSettingsFragment extends PreferenceFragment {
|
|
|
|
/**
|
|
* If ReturnYouTubeDislike is enabled
|
|
*/
|
|
private SwitchPreference enabledPreference;
|
|
|
|
/**
|
|
* If dislikes are shown as percentage
|
|
*/
|
|
private SwitchPreference percentagePreference;
|
|
|
|
/**
|
|
* If segmented like/dislike button uses smaller compact layout
|
|
*/
|
|
private SwitchPreference compactLayoutPreference;
|
|
|
|
private void updateUIState() {
|
|
final boolean rydIsEnabled = SettingsEnum.RYD_ENABLED.getBoolean();
|
|
|
|
enabledPreference.setSummary(rydIsEnabled
|
|
? str("revanced_ryd_enable_summary_on")
|
|
: str("revanced_ryd_enable_summary_off"));
|
|
|
|
percentagePreference.setSummary(SettingsEnum.RYD_SHOW_DISLIKE_PERCENTAGE.getBoolean()
|
|
? str("revanced_ryd_dislike_percentage_summary_on")
|
|
: str("revanced_ryd_dislike_percentage_summary_off"));
|
|
percentagePreference.setEnabled(rydIsEnabled);
|
|
|
|
compactLayoutPreference.setSummary(SettingsEnum.RYD_USE_COMPACT_LAYOUT.getBoolean()
|
|
? str("revanced_ryd_compact_layout_summary_on")
|
|
: str("revanced_ryd_compact_layout_summary_off"));
|
|
compactLayoutPreference.setEnabled(rydIsEnabled);
|
|
}
|
|
|
|
@Override
|
|
public void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
getPreferenceManager().setSharedPreferencesName(SharedPrefHelper.SharedPrefNames.RYD.getName());
|
|
|
|
Activity context = this.getActivity();
|
|
PreferenceScreen preferenceScreen = getPreferenceManager().createPreferenceScreen(context);
|
|
setPreferenceScreen(preferenceScreen);
|
|
|
|
enabledPreference = new SwitchPreference(context);
|
|
enabledPreference.setChecked(SettingsEnum.RYD_ENABLED.getBoolean());
|
|
enabledPreference.setTitle(str("revanced_ryd_enable_title"));
|
|
enabledPreference.setOnPreferenceChangeListener((pref, newValue) -> {
|
|
final boolean rydIsEnabled = (Boolean) newValue;
|
|
SettingsEnum.RYD_ENABLED.saveValue(rydIsEnabled);
|
|
ReturnYouTubeDislike.onEnabledChange(rydIsEnabled);
|
|
|
|
updateUIState();
|
|
return true;
|
|
});
|
|
preferenceScreen.addPreference(enabledPreference);
|
|
|
|
percentagePreference = new SwitchPreference(context);
|
|
percentagePreference.setChecked(SettingsEnum.RYD_SHOW_DISLIKE_PERCENTAGE.getBoolean());
|
|
percentagePreference.setTitle(str("revanced_ryd_dislike_percentage_title"));
|
|
percentagePreference.setOnPreferenceChangeListener((pref, newValue) -> {
|
|
SettingsEnum.RYD_SHOW_DISLIKE_PERCENTAGE.saveValue((Boolean)newValue);
|
|
|
|
updateUIState();
|
|
return true;
|
|
});
|
|
preferenceScreen.addPreference(percentagePreference);
|
|
|
|
compactLayoutPreference = new SwitchPreference(context);
|
|
compactLayoutPreference.setChecked(SettingsEnum.RYD_USE_COMPACT_LAYOUT.getBoolean());
|
|
compactLayoutPreference.setTitle(str("revanced_ryd_compact_layout_title"));
|
|
compactLayoutPreference.setOnPreferenceChangeListener((pref, newValue) -> {
|
|
SettingsEnum.RYD_USE_COMPACT_LAYOUT.saveValue((Boolean)newValue);
|
|
|
|
updateUIState();
|
|
return true;
|
|
});
|
|
preferenceScreen.addPreference(compactLayoutPreference);
|
|
|
|
updateUIState();
|
|
|
|
|
|
// About category
|
|
|
|
PreferenceCategory aboutCategory = new PreferenceCategory(context);
|
|
aboutCategory.setTitle(str("about"));
|
|
preferenceScreen.addPreference(aboutCategory);
|
|
|
|
// ReturnYouTubeDislike Website
|
|
|
|
Preference aboutWebsitePreference = new Preference(context);
|
|
aboutWebsitePreference.setTitle(str("revanced_ryd_attribution_title"));
|
|
aboutWebsitePreference.setSummary(str("revanced_ryd_attribution_summary"));
|
|
aboutWebsitePreference.setOnPreferenceClickListener(pref -> {
|
|
Intent i = new Intent(Intent.ACTION_VIEW);
|
|
i.setData(Uri.parse("https://returnyoutubedislike.com"));
|
|
pref.getContext().startActivity(i);
|
|
return false;
|
|
});
|
|
preferenceScreen.addPreference(aboutWebsitePreference);
|
|
|
|
// RYD API connection statistics
|
|
|
|
if (SettingsEnum.DEBUG.getBoolean()) {
|
|
PreferenceCategory emptyCategory = new PreferenceCategory(context); // vertical padding
|
|
preferenceScreen.addPreference(emptyCategory);
|
|
|
|
PreferenceCategory statisticsCategory = new PreferenceCategory(context);
|
|
statisticsCategory.setTitle(str("revanced_ryd_statistics_category_title"));
|
|
preferenceScreen.addPreference(statisticsCategory);
|
|
|
|
Preference statisticPreference;
|
|
|
|
statisticPreference = new Preference(context);
|
|
statisticPreference.setSelectable(false);
|
|
statisticPreference.setTitle(str("revanced_ryd_statistics_getFetchCallResponseTimeAverage_title"));
|
|
statisticPreference.setSummary(createMillisecondStringFromNumber(ReturnYouTubeDislikeApi.getFetchCallResponseTimeAverage()));
|
|
preferenceScreen.addPreference(statisticPreference);
|
|
|
|
statisticPreference = new Preference(context);
|
|
statisticPreference.setSelectable(false);
|
|
statisticPreference.setTitle(str("revanced_ryd_statistics_getFetchCallResponseTimeMin_title"));
|
|
statisticPreference.setSummary(createMillisecondStringFromNumber(ReturnYouTubeDislikeApi.getFetchCallResponseTimeMin()));
|
|
preferenceScreen.addPreference(statisticPreference);
|
|
|
|
statisticPreference = new Preference(context);
|
|
statisticPreference.setSelectable(false);
|
|
statisticPreference.setTitle(str("revanced_ryd_statistics_getFetchCallResponseTimeMax_title"));
|
|
statisticPreference.setSummary(createMillisecondStringFromNumber(ReturnYouTubeDislikeApi.getFetchCallResponseTimeMax()));
|
|
preferenceScreen.addPreference(statisticPreference);
|
|
|
|
String fetchCallTimeWaitingLastSummary;
|
|
final long fetchCallTimeWaitingLast = ReturnYouTubeDislikeApi.getFetchCallResponseTimeLast();
|
|
if (fetchCallTimeWaitingLast == ReturnYouTubeDislikeApi.FETCH_CALL_RESPONSE_TIME_VALUE_RATE_LIMIT) {
|
|
fetchCallTimeWaitingLastSummary = str("revanced_ryd_statistics_getFetchCallResponseTimeLast_rate_limit_summary");
|
|
} else {
|
|
fetchCallTimeWaitingLastSummary = createMillisecondStringFromNumber(fetchCallTimeWaitingLast);
|
|
}
|
|
statisticPreference = new Preference(context);
|
|
statisticPreference.setSelectable(false);
|
|
statisticPreference.setTitle(str("revanced_ryd_statistics_getFetchCallResponseTimeLast_title"));
|
|
statisticPreference.setSummary(fetchCallTimeWaitingLastSummary);
|
|
preferenceScreen.addPreference(statisticPreference);
|
|
|
|
statisticPreference = new Preference(context);
|
|
statisticPreference.setSelectable(false);
|
|
statisticPreference.setTitle(str("revanced_ryd_statistics_getFetchCallCount_title"));
|
|
statisticPreference.setSummary(createSummaryText(ReturnYouTubeDislikeApi.getFetchCallCount(),
|
|
"revanced_ryd_statistics_getFetchCallCount_zero_summary",
|
|
"revanced_ryd_statistics_getFetchCallCount_non_zero_summary"));
|
|
preferenceScreen.addPreference(statisticPreference);
|
|
|
|
statisticPreference = new Preference(context);
|
|
statisticPreference.setSelectable(false);
|
|
statisticPreference.setTitle(str("revanced_ryd_statistics_getFetchCallNumberOfFailures_title"));
|
|
statisticPreference.setSummary(createSummaryText(ReturnYouTubeDislikeApi.getFetchCallNumberOfFailures(),
|
|
"revanced_ryd_statistics_getFetchCallNumberOfFailures_zero_summary",
|
|
"revanced_ryd_statistics_getFetchCallNumberOfFailures_non_zero_summary"));
|
|
preferenceScreen.addPreference(statisticPreference);
|
|
|
|
statisticPreference = new Preference(context);
|
|
statisticPreference.setSelectable(false);
|
|
statisticPreference.setTitle(str("revanced_ryd_statistics_getNumberOfRateLimitRequestsEncountered_title"));
|
|
statisticPreference.setSummary(createSummaryText(ReturnYouTubeDislikeApi.getNumberOfRateLimitRequestsEncountered(),
|
|
"revanced_ryd_statistics_getNumberOfRateLimitRequestsEncountered_zero_summary",
|
|
"revanced_ryd_statistics_getNumberOfRateLimitRequestsEncountered_non_zero_summary"));
|
|
preferenceScreen.addPreference(statisticPreference);
|
|
}
|
|
}
|
|
|
|
private String createSummaryText(int value, String summaryStringZeroKey, String summaryStringOneOrMoreKey) {
|
|
if (value == 0) {
|
|
return str(summaryStringZeroKey);
|
|
}
|
|
return String.format(str(summaryStringOneOrMoreKey), value);
|
|
}
|
|
|
|
private static String createMillisecondStringFromNumber(long number) {
|
|
return String.format(str("revanced_ryd_statistics_millisecond_text"), number);
|
|
}
|
|
|
|
}
|