Add persistent sent media quality setting.

fork-5.53.8
Cody Henthorne 2021-10-01 14:18:14 -04:00 zatwierdzone przez Greyson Parrelli
rodzic d9e8480a12
commit 82c637ef4b
7 zmienionych plików z 65 dodań i 8 usunięć

Wyświetl plik

@ -9,6 +9,7 @@ import org.thoughtcrime.securesms.components.settings.DSLSettingsAdapter
import org.thoughtcrime.securesms.components.settings.DSLSettingsFragment
import org.thoughtcrime.securesms.components.settings.DSLSettingsText
import org.thoughtcrime.securesms.components.settings.configure
import org.thoughtcrime.securesms.mms.SentMediaQuality
import org.thoughtcrime.securesms.util.Util
import org.thoughtcrime.securesms.webrtc.CallBandwidthMode
import kotlin.math.abs
@ -18,6 +19,8 @@ class DataAndStorageSettingsFragment : DSLSettingsFragment(R.string.preferences_
private val autoDownloadValues by lazy { resources.getStringArray(R.array.pref_media_download_entries) }
private val autoDownloadLabels by lazy { resources.getStringArray(R.array.pref_media_download_values) }
private val sentMediaQualityLabels by lazy { SentMediaQuality.getLabels(requireContext()) }
private val callBandwidthLabels by lazy { resources.getStringArray(R.array.pref_data_and_storage_call_bandwidth_values) }
private lateinit var viewModel: DataAndStorageSettingsViewModel
@ -84,6 +87,21 @@ class DataAndStorageSettingsFragment : DSLSettingsFragment(R.string.preferences_
dividerPref()
sectionHeaderPref(R.string.DataAndStorageSettingsFragment__media_quality)
radioListPref(
title = DSLSettingsText.from(R.string.DataAndStorageSettingsFragment__sent_media_quality),
listItems = sentMediaQualityLabels,
selected = SentMediaQuality.values().indexOf(state.sentMediaQuality),
onSelected = { viewModel.setSentMediaQuality(SentMediaQuality.values()[it]) }
)
textPref(
summary = DSLSettingsText.from(R.string.DataAndStorageSettingsFragment__sending_high_quality_media_will_use_more_data)
)
dividerPref()
sectionHeaderPref(R.string.DataAndStorageSettingsFragment__calls)
radioListPref(

Wyświetl plik

@ -1,5 +1,6 @@
package org.thoughtcrime.securesms.components.settings.app.data
import org.thoughtcrime.securesms.mms.SentMediaQuality
import org.thoughtcrime.securesms.webrtc.CallBandwidthMode
data class DataAndStorageSettingsState(
@ -8,5 +9,6 @@ data class DataAndStorageSettingsState(
val wifiAutoDownloadValues: Set<String>,
val roamingAutoDownloadValues: Set<String>,
val callBandwidthMode: CallBandwidthMode,
val isProxyEnabled: Boolean
val isProxyEnabled: Boolean,
val sentMediaQuality: SentMediaQuality
)

Wyświetl plik

@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.mms.SentMediaQuality
import org.thoughtcrime.securesms.util.TextSecurePreferences
import org.thoughtcrime.securesms.util.livedata.Store
import org.thoughtcrime.securesms.webrtc.CallBandwidthMode
@ -46,6 +47,11 @@ class DataAndStorageSettingsViewModel(
getStateAndCopyStorageUsage()
}
fun setSentMediaQuality(sentMediaQuality: SentMediaQuality) {
SignalStore.settings().sentMediaQuality = sentMediaQuality
getStateAndCopyStorageUsage()
}
private fun getStateAndCopyStorageUsage() {
store.update { getState().copy(totalStorageUse = it.totalStorageUse) }
}
@ -62,7 +68,8 @@ class DataAndStorageSettingsViewModel(
ApplicationDependencies.getApplication()
),
callBandwidthMode = SignalStore.settings().callBandwidthMode,
isProxyEnabled = SignalStore.proxy().isProxyEnabled
isProxyEnabled = SignalStore.proxy().isProxyEnabled,
sentMediaQuality = SignalStore.settings().sentMediaQuality
)
class Factory(

Wyświetl plik

@ -12,6 +12,7 @@ import androidx.lifecycle.LiveData;
import org.signal.core.util.concurrent.SignalExecutors;
import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.mms.SentMediaQuality;
import org.thoughtcrime.securesms.preferences.widgets.NotificationPrivacyPreference;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.storage.StorageSyncHelper;
@ -64,6 +65,7 @@ public final class SettingsValues extends SignalStoreValues {
public static final String NOTIFY_WHEN_CONTACT_JOINS_SIGNAL = "settings.notify.when.contact.joins.signal";
private static final String DEFAULT_SMS = "settings.default_sms";
private static final String UNIVERSAL_EXPIRE_TIMER = "settings.universal.expire.timer";
private static final String SENT_MEDIA_QUALITY = "settings.sentMediaQuality";
private final SingleLiveEvent<String> onConfigurationSettingChanged = new SingleLiveEvent<>();
@ -106,7 +108,8 @@ public final class SettingsValues extends SignalStoreValues {
CALL_RINGTONE,
CALL_VIBRATE_ENABLED,
NOTIFY_WHEN_CONTACT_JOINS_SIGNAL,
UNIVERSAL_EXPIRE_TIMER);
UNIVERSAL_EXPIRE_TIMER,
SENT_MEDIA_QUALITY);
}
public @NonNull LiveData<String> getOnConfigurationSettingChanged() {
@ -384,6 +387,14 @@ public final class SettingsValues extends SignalStoreValues {
return getInteger(UNIVERSAL_EXPIRE_TIMER, 0);
}
public void setSentMediaQuality(@NonNull SentMediaQuality sentMediaQuality) {
putInteger(SENT_MEDIA_QUALITY, sentMediaQuality.getCode());
}
public @NonNull SentMediaQuality getSentMediaQuality() {
return SentMediaQuality.fromCode(getInteger(SENT_MEDIA_QUALITY, SentMediaQuality.STANDARD.getCode()));
}
private @Nullable Uri getUri(@NonNull String key) {
String uri = getString(key, "");

Wyświetl plik

@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.mediasend.v2
import android.net.Uri
import org.thoughtcrime.securesms.TransportOption
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.mediasend.Media
import org.thoughtcrime.securesms.mediasend.MediaSendConstants
import org.thoughtcrime.securesms.mms.SentMediaQuality
@ -12,7 +13,7 @@ data class MediaSelectionState(
val selectedMedia: List<Media> = listOf(),
val focusedMedia: Media? = null,
val recipient: Recipient? = null,
val quality: SentMediaQuality = SentMediaQuality.STANDARD,
val quality: SentMediaQuality = SignalStore.settings().sentMediaQuality,
val message: CharSequence? = null,
val viewOnceToggleState: ViewOnceToggleState = ViewOnceToggleState.INFINITE,
val isTouchEnabled: Boolean = true,

Wyświetl plik

@ -1,19 +1,28 @@
package org.thoughtcrime.securesms.mms;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.annotation.StringRes;
import org.thoughtcrime.securesms.R;
import java.util.Arrays;
/**
* Quality levels to send media at.
*/
public enum SentMediaQuality {
STANDARD(0),
HIGH(1);
STANDARD(0, R.string.DataAndStorageSettingsFragment__standard),
HIGH(1, R.string.DataAndStorageSettingsFragment__high);
private final int code;
private final int label;
SentMediaQuality(int code) {
this.code = code;
SentMediaQuality(int code, @StringRes int label) {
this.code = code;
this.label = label;
}
public static @NonNull SentMediaQuality fromCode(int code) {
@ -23,6 +32,10 @@ public enum SentMediaQuality {
return STANDARD;
}
public static @NonNull String[] getLabels(@NonNull Context context) {
return Arrays.stream(values()).map(q -> context.getString(q.label)).toArray(String[]::new);
}
public int getCode() {
return code;
}

Wyświetl plik

@ -3610,6 +3610,11 @@
<string name="HelpFragment__licenced_under_the_gplv3">Licensed under the GPLv3</string>
<!-- DataAndStorageSettingsFragment -->
<string name="DataAndStorageSettingsFragment__media_quality">Media quality</string>
<string name="DataAndStorageSettingsFragment__sent_media_quality">Sent media quality</string>
<string name="DataAndStorageSettingsFragment__sending_high_quality_media_will_use_more_data">Sending high quality media will use more data.</string>
<string name="DataAndStorageSettingsFragment__high">High</string>
<string name="DataAndStorageSettingsFragment__standard">Standard</string>
<string name="DataAndStorageSettingsFragment__calls">Calls</string>
<!-- ChatColorSelectionFragment -->