107 lines
3.6 KiB
Java
107 lines
3.6 KiB
Java
package org.thoughtcrime.securesms.preferences;
|
|
|
|
import android.content.DialogInterface;
|
|
import android.os.Bundle;
|
|
|
|
import androidx.annotation.NonNull;
|
|
import androidx.annotation.Nullable;
|
|
import androidx.appcompat.app.AlertDialog;
|
|
import androidx.preference.EditTextPreference;
|
|
import androidx.preference.Preference;
|
|
|
|
import org.session.libsession.utilities.TextSecurePreferences;
|
|
import org.session.libsignal.utilities.Log;
|
|
import org.thoughtcrime.securesms.permissions.Permissions;
|
|
import org.thoughtcrime.securesms.util.Trimmer;
|
|
|
|
import network.loki.messenger.R;
|
|
|
|
public class ChatsPreferenceFragment extends ListSummaryPreferenceFragment {
|
|
private static final String TAG = ChatsPreferenceFragment.class.getSimpleName();
|
|
|
|
@Override
|
|
public void onCreate(Bundle paramBundle) {
|
|
super.onCreate(paramBundle);
|
|
|
|
findPreference(TextSecurePreferences.THREAD_TRIM_NOW)
|
|
.setOnPreferenceClickListener(new TrimNowClickListener());
|
|
findPreference(TextSecurePreferences.THREAD_TRIM_LENGTH)
|
|
.setOnPreferenceChangeListener(new TrimLengthValidationListener());
|
|
|
|
}
|
|
|
|
@Override
|
|
public void onCreatePreferences(@Nullable Bundle savedInstanceState, String rootKey) {
|
|
addPreferencesFromResource(R.xml.preferences_chats);
|
|
}
|
|
|
|
@Override
|
|
public void onResume() {
|
|
super.onResume();
|
|
}
|
|
|
|
@Override
|
|
public void onDestroy() {
|
|
super.onDestroy();
|
|
}
|
|
|
|
@Override
|
|
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
|
Permissions.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
|
|
}
|
|
|
|
private class TrimNowClickListener implements Preference.OnPreferenceClickListener {
|
|
@Override
|
|
public boolean onPreferenceClick(Preference preference) {
|
|
final int threadLengthLimit = TextSecurePreferences.getThreadTrimLength(getActivity());
|
|
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
|
builder.setTitle(R.string.ApplicationPreferencesActivity_delete_all_old_messages_now);
|
|
builder.setMessage(getResources().getQuantityString(R.plurals.ApplicationPreferencesActivity_this_will_immediately_trim_all_conversations_to_the_d_most_recent_messages,
|
|
threadLengthLimit, threadLengthLimit));
|
|
builder.setPositiveButton(R.string.ApplicationPreferencesActivity_delete,
|
|
new DialogInterface.OnClickListener() {
|
|
@Override
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
Trimmer.trimAllThreads(getActivity(), threadLengthLimit);
|
|
}
|
|
});
|
|
|
|
builder.setNegativeButton(android.R.string.cancel, null);
|
|
builder.show();
|
|
|
|
return true;
|
|
}
|
|
}
|
|
|
|
private class TrimLengthValidationListener implements Preference.OnPreferenceChangeListener {
|
|
|
|
public TrimLengthValidationListener() {
|
|
EditTextPreference preference = findPreference(TextSecurePreferences.THREAD_TRIM_LENGTH);
|
|
onPreferenceChange(preference, preference.getText());
|
|
}
|
|
|
|
@Override
|
|
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
|
if (newValue == null || ((String)newValue).trim().length() == 0) {
|
|
return false;
|
|
}
|
|
|
|
int value;
|
|
try {
|
|
value = Integer.parseInt((String)newValue);
|
|
} catch (NumberFormatException nfe) {
|
|
Log.w(TAG, nfe);
|
|
return false;
|
|
}
|
|
|
|
if (value < 1) {
|
|
return false;
|
|
}
|
|
|
|
preference.setSummary(getResources().getQuantityString(R.plurals.ApplicationPreferencesActivity_messages_per_conversation, value, value));
|
|
return true;
|
|
}
|
|
}
|
|
|
|
}
|