kopia lustrzana https://github.com/ryukoposting/Signal-Android
Add persistent sent media quality setting.
rodzic
d9e8480a12
commit
82c637ef4b
|
@ -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(
|
||||
|
|
|
@ -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
|
||||
)
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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, "");
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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 -->
|
||||
|
|
Ładowanie…
Reference in New Issue