From d3f79b94feae6bc8e2f726a2acbb116017ca673d Mon Sep 17 00:00:00 2001 From: PhotonQyv Date: Mon, 7 Aug 2017 00:53:33 +0100 Subject: [PATCH] First pass at user-configurable NSFW Timeout. --- .../mastodon/drawers/StatusListAdapter.java | 27 +++++++++------- .../mastodon/fragments/SettingsFragment.java | 31 +++++++++++++++++-- .../gouv/etalab/mastodon/helper/Helper.java | 5 ++- app/src/main/res/layout/fragment_settings.xml | 23 ++++++++++++++ app/src/main/res/values-fr/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 6 files changed, 71 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java index 162fd80a2..dd9be1b92 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java @@ -509,24 +509,27 @@ public class StatusListAdapter extends BaseAdapter implements OnPostActionInterf /* Added a Countdown Timer, so that Sensitive (NSFW) - images only get displayed for 5 seconds, giving - the user time to click on them to expand them, if - they want. Images are then hidden again. + images only get displayed for user set time, + giving the user time to click on them to expand them, + if they want. Images are then hidden again. */ - final int timeout = 5; + final int timeout = sharedpreferences.getInt(Helper.SET_NSFW_TIMEOUT, 0); - new CountDownTimer((timeout * 1000), 1000){ + if (timeout > 0) { - public void onTick(long millisUntilFinished) { } + new CountDownTimer((timeout * 1000), 1000) { - public void onFinish(){ + public void onTick(long millisUntilFinished) { + } - status.setAttachmentShown(false); - holder.status_show_more.setVisibility(View.VISIBLE); + public void onFinish() { + status.setAttachmentShown(false); + holder.status_show_more.setVisibility(View.VISIBLE); - statusListAdapter.notifyDataSetChanged(); - } - }.start(); + statusListAdapter.notifyDataSetChanged(); + } + }.start(); + } } }); diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/SettingsFragment.java b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/SettingsFragment.java index 658980742..26da5ad9a 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/SettingsFragment.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/SettingsFragment.java @@ -13,6 +13,7 @@ package fr.gouv.etalab.mastodon.fragments; * * You should have received a copy of the GNU General Public License along with Mastalab; if not, * see . */ + import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.content.ContentUris; @@ -28,13 +29,13 @@ import android.provider.DocumentsContract; import android.provider.MediaStore; import android.support.v4.app.Fragment; import android.support.v7.widget.SwitchCompat; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.LinearLayout; +import android.widget.SeekBar; import android.widget.TextView; import fr.gouv.etalab.mastodon.activities.MainActivity; @@ -43,7 +44,6 @@ import mastodon.etalab.gouv.fr.mastodon.R; import static android.app.Activity.RESULT_OK; import static fr.gouv.etalab.mastodon.helper.Helper.CHANGE_THEME_INTENT; -import static fr.gouv.etalab.mastodon.helper.Helper.HOME_TIMELINE_INTENT; import static fr.gouv.etalab.mastodon.helper.Helper.INTENT_ACTION; @@ -213,6 +213,33 @@ public class SettingsFragment extends Fragment { } }); + // NSFW Timeout + SeekBar nsfwTimeoutSeekBar = (SeekBar) rootView.findViewById(R.id.set_nsfw_timeout); + final TextView set_nsfw_timeout_value = (TextView) rootView.findViewById(R.id.set_nsfw_timeout_value); + + nsfwTimeoutSeekBar.setMax(30); + + int nsfwTimeout = sharedpreferences.getInt(Helper.SET_NSFW_TIMEOUT, 5); + + nsfwTimeoutSeekBar.setProgress(nsfwTimeout); + set_nsfw_timeout_value.setText(String.valueOf(nsfwTimeout)); + + nsfwTimeoutSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { + @Override + public void onStopTrackingTouch(SeekBar seekBar) {} + @Override + public void onStartTrackingTouch(SeekBar seekBar) {} + @Override + public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { + + set_nsfw_timeout_value.setText(String.valueOf(progress)); + + SharedPreferences.Editor editor = sharedpreferences.edit(); + editor.putInt(Helper.SET_NSFW_TIMEOUT, progress); + editor.apply(); + } + }); + return rootView; } diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java index a33df921a..dd52bd547 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java @@ -52,8 +52,6 @@ import android.text.Html; import android.text.SpannableString; import android.text.Spanned; import android.text.TextPaint; -import android.text.method.ArrowKeyMovementMethod; -import android.text.method.LinkMovementMethod; import android.text.style.ClickableSpan; import android.util.DisplayMetrics; import android.util.Patterns; @@ -115,6 +113,7 @@ import fr.gouv.etalab.mastodon.activities.ShowAccountActivity; import fr.gouv.etalab.mastodon.activities.TootActivity; import fr.gouv.etalab.mastodon.activities.WebviewActivity; import fr.gouv.etalab.mastodon.asynctasks.RemoveAccountAsyncTask; +import fr.gouv.etalab.mastodon.client.API; import fr.gouv.etalab.mastodon.client.Entities.Account; import fr.gouv.etalab.mastodon.client.Entities.Mention; import fr.gouv.etalab.mastodon.client.Entities.Status; @@ -122,7 +121,6 @@ import fr.gouv.etalab.mastodon.client.PatchBaseImageDownloader; import fr.gouv.etalab.mastodon.sqlite.AccountDAO; import fr.gouv.etalab.mastodon.sqlite.Sqlite; import mastodon.etalab.gouv.fr.mastodon.R; -import fr.gouv.etalab.mastodon.client.API; import static android.app.Notification.DEFAULT_SOUND; import static android.app.Notification.DEFAULT_VIBRATE; @@ -185,6 +183,7 @@ public class Helper { public static final String SET_TIME_TO = "set_time_to"; public static final String SET_AUTO_STORE = "set_auto_store"; public static final String SET_POPUP_PUSH = "set_popup_push"; + public static final String SET_NSFW_TIMEOUT = "set_nsfw_timeout"; public static final int ATTACHMENT_ALWAYS = 1; public static final int ATTACHMENT_WIFI = 2; public static final int ATTACHMENT_ASK = 3; diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index f46e45231..20d88aab1 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -166,6 +166,29 @@ android:layout_height="wrap_content" /> + + + + + + + diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index e3bae4398..66dc21042 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -279,6 +279,7 @@ Notifier en WIFI seulement Utiliser le vibreur Mode nuit + NSFW view timeout (seconds, 0 means off) Modifier le profil Présentation… Enregistrer les modifications diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 920f3573f..027cadf9f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -285,6 +285,7 @@ Notify in WIFI only Silent Notifications Night mode + NSFW view timeout (seconds, 0 means off) Edit profile Bio… Save changes