2017-06-24 11:38:18 +02:00
|
|
|
package fr.gouv.etalab.mastodon.fragments;
|
|
|
|
/* Copyright 2017 Thomas Schneider
|
|
|
|
*
|
2017-07-10 10:33:24 +02:00
|
|
|
* This file is a part of Mastalab
|
2017-06-24 11:38:18 +02:00
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or modify it under the terms of the
|
|
|
|
* GNU General Public License as published by the Free Software Foundation; either version 3 of the
|
|
|
|
* License, or (at your option) any later version.
|
|
|
|
*
|
2017-07-10 10:33:24 +02:00
|
|
|
* Mastalab is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
2017-06-24 11:38:18 +02:00
|
|
|
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
|
|
|
* Public License for more details.
|
|
|
|
*
|
2017-08-04 11:11:27 +02:00
|
|
|
* You should have received a copy of the GNU General Public License along with Mastalab; if not,
|
2017-06-24 11:38:18 +02:00
|
|
|
* see <http://www.gnu.org/licenses>. */
|
2017-08-07 01:53:33 +02:00
|
|
|
|
2017-06-27 19:18:46 +02:00
|
|
|
import android.annotation.SuppressLint;
|
|
|
|
import android.annotation.TargetApi;
|
|
|
|
import android.content.ContentUris;
|
2017-06-24 11:38:18 +02:00
|
|
|
import android.content.Context;
|
2017-08-07 10:20:44 +02:00
|
|
|
import android.content.DialogInterface;
|
2017-06-27 19:18:46 +02:00
|
|
|
import android.content.Intent;
|
2017-06-24 11:38:18 +02:00
|
|
|
import android.content.SharedPreferences;
|
2017-06-27 19:18:46 +02:00
|
|
|
import android.database.Cursor;
|
2017-08-07 10:20:44 +02:00
|
|
|
import android.database.sqlite.SQLiteDatabase;
|
2017-06-27 19:18:46 +02:00
|
|
|
import android.net.Uri;
|
2019-02-14 17:46:38 +01:00
|
|
|
import android.os.AsyncTask;
|
2017-06-24 11:38:18 +02:00
|
|
|
import android.os.Build;
|
|
|
|
import android.os.Bundle;
|
2017-06-27 19:18:46 +02:00
|
|
|
import android.os.Environment;
|
2019-02-14 17:46:38 +01:00
|
|
|
import android.os.Handler;
|
2017-06-27 19:18:46 +02:00
|
|
|
import android.provider.DocumentsContract;
|
|
|
|
import android.provider.MediaStore;
|
2018-11-10 10:07:44 +01:00
|
|
|
import android.support.annotation.NonNull;
|
2017-06-24 11:38:18 +02:00
|
|
|
import android.support.v4.app.Fragment;
|
2018-11-10 10:07:44 +01:00
|
|
|
import android.support.v7.app.AlertDialog;
|
2017-06-24 11:38:18 +02:00
|
|
|
import android.support.v7.widget.SwitchCompat;
|
2018-08-14 16:20:53 +02:00
|
|
|
import android.text.Editable;
|
|
|
|
import android.text.TextWatcher;
|
2017-06-24 11:38:18 +02:00
|
|
|
import android.view.LayoutInflater;
|
|
|
|
import android.view.View;
|
|
|
|
import android.view.ViewGroup;
|
2017-08-12 09:53:07 +02:00
|
|
|
import android.widget.AdapterView;
|
2017-08-07 10:20:44 +02:00
|
|
|
import android.widget.ArrayAdapter;
|
2019-02-14 17:46:38 +01:00
|
|
|
import android.widget.Button;
|
2017-06-24 11:38:18 +02:00
|
|
|
import android.widget.CheckBox;
|
|
|
|
import android.widget.CompoundButton;
|
2018-08-14 16:20:53 +02:00
|
|
|
import android.widget.EditText;
|
2017-08-07 10:20:44 +02:00
|
|
|
import android.widget.ImageView;
|
2017-06-24 11:38:18 +02:00
|
|
|
import android.widget.LinearLayout;
|
2019-02-02 11:01:24 +01:00
|
|
|
import android.widget.RadioGroup;
|
2017-08-07 01:53:33 +02:00
|
|
|
import android.widget.SeekBar;
|
2017-08-12 09:53:07 +02:00
|
|
|
import android.widget.Spinner;
|
2017-06-27 19:18:46 +02:00
|
|
|
import android.widget.TextView;
|
2017-08-07 10:20:44 +02:00
|
|
|
import android.widget.Toast;
|
2017-07-23 17:09:23 +02:00
|
|
|
|
2019-02-27 19:17:39 +01:00
|
|
|
import com.google.common.collect.ImmutableSet;
|
2019-02-14 17:46:38 +01:00
|
|
|
import com.tonyodev.fetch2.Download;
|
|
|
|
import com.tonyodev.fetch2.Error;
|
|
|
|
import com.tonyodev.fetch2.Fetch;
|
|
|
|
import com.tonyodev.fetch2.FetchConfiguration;
|
|
|
|
import com.tonyodev.fetch2.FetchListener;
|
|
|
|
import com.tonyodev.fetch2.NetworkType;
|
|
|
|
import com.tonyodev.fetch2.Priority;
|
|
|
|
import com.tonyodev.fetch2.Request;
|
|
|
|
import com.tonyodev.fetch2core.DownloadBlock;
|
|
|
|
|
|
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
import org.jetbrains.annotations.Nullable;
|
|
|
|
|
|
|
|
import java.io.BufferedReader;
|
|
|
|
import java.io.File;
|
|
|
|
import java.io.FileReader;
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.util.ArrayList;
|
2019-02-27 19:17:39 +01:00
|
|
|
import java.util.Collection;
|
2019-02-14 17:46:38 +01:00
|
|
|
import java.util.List;
|
2019-02-27 19:17:39 +01:00
|
|
|
import java.util.Set;
|
2019-02-14 17:46:38 +01:00
|
|
|
|
2018-11-25 10:45:16 +01:00
|
|
|
import es.dmoral.toasty.Toasty;
|
2018-11-10 10:07:44 +01:00
|
|
|
import fr.gouv.etalab.mastodon.R;
|
2017-07-23 17:09:23 +02:00
|
|
|
import fr.gouv.etalab.mastodon.activities.MainActivity;
|
2019-02-27 19:17:39 +01:00
|
|
|
import fr.gouv.etalab.mastodon.asynctasks.UpdateAccountInfoAsyncTask;
|
2017-08-07 10:20:44 +02:00
|
|
|
import fr.gouv.etalab.mastodon.client.Entities.Account;
|
2017-06-24 11:38:18 +02:00
|
|
|
import fr.gouv.etalab.mastodon.helper.Helper;
|
2017-08-07 10:20:44 +02:00
|
|
|
import fr.gouv.etalab.mastodon.sqlite.AccountDAO;
|
2019-02-14 17:46:38 +01:00
|
|
|
import fr.gouv.etalab.mastodon.sqlite.DomainBlockDAO;
|
2017-08-07 10:20:44 +02:00
|
|
|
import fr.gouv.etalab.mastodon.sqlite.Sqlite;
|
2019-02-27 19:17:39 +01:00
|
|
|
import mabbas007.tagsedittext.TagsEditText;
|
2017-06-24 11:38:18 +02:00
|
|
|
|
2017-06-27 19:18:46 +02:00
|
|
|
import static android.app.Activity.RESULT_OK;
|
2018-12-16 15:11:58 +01:00
|
|
|
import static fr.gouv.etalab.mastodon.helper.Helper.BACK_TO_SETTINGS;
|
2017-07-23 17:09:23 +02:00
|
|
|
import static fr.gouv.etalab.mastodon.helper.Helper.INTENT_ACTION;
|
2018-08-14 16:20:53 +02:00
|
|
|
import static fr.gouv.etalab.mastodon.helper.Helper.SET_YANDEX_API_KEY;
|
2017-08-07 10:20:44 +02:00
|
|
|
import static fr.gouv.etalab.mastodon.helper.Helper.changeDrawableColor;
|
2017-06-27 19:18:46 +02:00
|
|
|
|
2017-06-24 11:38:18 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Created by Thomas on 24/06/2017.
|
|
|
|
* Fragment for settings, yes I didn't use PreferenceFragment :)
|
|
|
|
*/
|
|
|
|
public class SettingsFragment extends Fragment {
|
|
|
|
|
|
|
|
|
|
|
|
private Context context;
|
2017-06-27 19:18:46 +02:00
|
|
|
private static final int ACTIVITY_CHOOSE_FILE = 411;
|
|
|
|
private TextView set_folder;
|
2018-08-14 16:20:53 +02:00
|
|
|
private EditText your_api_key;
|
2019-02-23 18:13:41 +01:00
|
|
|
private int count1, count2, count3, count4, count5;
|
2018-08-14 16:20:53 +02:00
|
|
|
|
2017-06-24 11:38:18 +02:00
|
|
|
|
|
|
|
@Override
|
2017-11-11 10:05:37 +01:00
|
|
|
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
2017-06-24 11:38:18 +02:00
|
|
|
|
2017-08-07 10:20:44 +02:00
|
|
|
final View rootView = inflater.inflate(R.layout.fragment_settings, container, false);
|
2017-06-24 11:38:18 +02:00
|
|
|
context = getContext();
|
2017-11-11 10:05:37 +01:00
|
|
|
assert context != null;
|
2017-06-24 11:38:18 +02:00
|
|
|
final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
|
|
|
|
2017-08-13 11:30:28 +02:00
|
|
|
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
|
2017-08-08 18:15:37 +02:00
|
|
|
boolean auto_store = sharedpreferences.getBoolean(Helper.SET_AUTO_STORE, true);
|
2017-06-24 11:38:18 +02:00
|
|
|
|
2017-10-28 11:02:37 +02:00
|
|
|
final CheckBox set_auto_store = rootView.findViewById(R.id.set_auto_store);
|
2017-07-15 14:59:09 +02:00
|
|
|
set_auto_store.setChecked(auto_store);
|
|
|
|
set_auto_store.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_AUTO_STORE, set_auto_store.isChecked());
|
|
|
|
editor.apply();
|
|
|
|
}
|
|
|
|
});
|
2019-01-22 16:31:54 +01:00
|
|
|
|
|
|
|
boolean display_content_after_fetch_more = sharedpreferences.getBoolean(Helper.SET_DISPLAY_CONTENT_AFTER_FM, true);
|
|
|
|
final CheckBox set_display_content_after_fetch_more = rootView.findViewById(R.id.set_display_content_after_fetch_more);
|
|
|
|
set_display_content_after_fetch_more.setChecked(display_content_after_fetch_more);
|
|
|
|
set_display_content_after_fetch_more.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_DISPLAY_CONTENT_AFTER_FM, set_display_content_after_fetch_more.isChecked());
|
|
|
|
editor.apply();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2018-11-29 07:37:41 +01:00
|
|
|
count1 = 0;
|
|
|
|
count2 = 0;
|
|
|
|
count3 = 0;
|
|
|
|
count4 = 0;
|
2019-02-23 18:13:41 +01:00
|
|
|
count5 = 0;
|
2019-02-02 11:01:24 +01:00
|
|
|
|
|
|
|
final Spinner battery_layout_spinner = rootView.findViewById(R.id.battery_layout_spinner);
|
|
|
|
ArrayAdapter<CharSequence> adapterBattery = ArrayAdapter.createFromResource(getContext(),
|
|
|
|
R.array.battery_profiles, android.R.layout.simple_spinner_item);
|
|
|
|
battery_layout_spinner.setAdapter(adapterBattery);
|
|
|
|
int positionSpinner = sharedpreferences.getInt(Helper.SET_BATTERY_PROFILE, Helper.BATTERY_PROFILE_NORMAL) -1;
|
|
|
|
battery_layout_spinner.setSelection(positionSpinner);
|
|
|
|
battery_layout_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
|
|
|
@Override
|
|
|
|
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
|
|
|
if( count2 > 0){
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
switch (position){
|
|
|
|
case 0:
|
|
|
|
editor.putInt(Helper.SET_BATTERY_PROFILE, Helper.BATTERY_PROFILE_NORMAL);
|
|
|
|
editor.apply();
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
editor.putInt(Helper.SET_BATTERY_PROFILE, Helper.BATTERY_PROFILE_MEDIUM);
|
|
|
|
editor.apply();
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
editor.putInt(Helper.SET_BATTERY_PROFILE, Helper.BATTERY_PROFILE_LOW);
|
|
|
|
editor.apply();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
Helper.changeBatteryProfile(context);
|
|
|
|
if( position < 2 ){
|
|
|
|
try {
|
|
|
|
((MainActivity) context).startSreaming();
|
|
|
|
}catch (Exception ignored){ignored.printStackTrace();}
|
|
|
|
}else{
|
|
|
|
context.sendBroadcast(new Intent("StopLiveNotificationService"));
|
|
|
|
}
|
|
|
|
}else {
|
|
|
|
count2++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@Override
|
|
|
|
public void onNothingSelected(AdapterView<?> parent) {
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2019-02-27 19:17:39 +01:00
|
|
|
TagsEditText set_featured_tags = rootView.findViewById(R.id.set_featured_tags);
|
|
|
|
if (MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON){
|
|
|
|
Set<String> featuredTagsSet = sharedpreferences.getStringSet(Helper.SET_FEATURED_TAGS, null);
|
|
|
|
|
|
|
|
|
|
|
|
List<String> tags = new ArrayList<>();
|
|
|
|
if( featuredTagsSet != null){
|
|
|
|
tags = new ArrayList<>(featuredTagsSet);
|
|
|
|
}
|
|
|
|
String[] tagsString = tags.toArray(new String[tags.size()]);
|
|
|
|
set_featured_tags.setTags(tagsString);
|
|
|
|
|
|
|
|
set_featured_tags.setTagsListener(new TagsEditText.TagsEditListener() {
|
|
|
|
@Override
|
|
|
|
public void onTagsChanged(Collection<String> collection) {
|
|
|
|
Set<String> set = ImmutableSet.copyOf(collection);
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putStringSet(Helper.SET_FEATURED_TAGS, set);
|
|
|
|
editor.apply();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onEditingFinished() {
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}else{
|
|
|
|
set_featured_tags.setVisibility(View.GONE);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2019-02-14 17:46:38 +01:00
|
|
|
Button update_tracking_domains = rootView.findViewById(R.id.update_tracking_domains);
|
|
|
|
update_tracking_domains.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
FetchConfiguration fetchConfiguration = new FetchConfiguration.Builder(context)
|
|
|
|
.setDownloadConcurrentLimit(1)
|
|
|
|
.build();
|
|
|
|
|
|
|
|
update_tracking_domains.setEnabled(false);
|
|
|
|
Fetch fetch = Fetch.Impl.getInstance(fetchConfiguration);
|
|
|
|
|
|
|
|
String url = "https://sebsauvage.net/hosts/hosts";
|
|
|
|
File dir = context.getCacheDir();
|
|
|
|
String file = dir + "/tracking.txt";
|
|
|
|
FetchListener fetchListener = new FetchListener() {
|
|
|
|
@Override
|
|
|
|
public void onWaitingNetwork(@NotNull Download download) {
|
|
|
|
}
|
|
|
|
@Override
|
|
|
|
public void onStarted(@NotNull Download download, @NotNull List<? extends DownloadBlock> list, int i) {
|
|
|
|
}
|
|
|
|
@Override
|
|
|
|
public void onResumed(@NotNull Download download) {
|
|
|
|
}
|
|
|
|
@Override
|
|
|
|
public void onRemoved(@NotNull Download download) {
|
|
|
|
}
|
|
|
|
@Override
|
|
|
|
public void onQueued(@NotNull Download download, boolean b) {
|
|
|
|
}
|
|
|
|
@Override
|
|
|
|
public void onProgress(@NotNull Download download, long l, long l1) {
|
|
|
|
}
|
|
|
|
@Override
|
|
|
|
public void onPaused(@NotNull Download download) {
|
|
|
|
}
|
|
|
|
@Override
|
|
|
|
public void onError(@NotNull Download download, @NotNull Error error, @Nullable Throwable throwable) {
|
|
|
|
Toasty.error(context, context.getString(R.string.toast_error),Toast.LENGTH_LONG).show();
|
|
|
|
update_tracking_domains.setEnabled(true);
|
|
|
|
}
|
|
|
|
@Override
|
|
|
|
public void onDownloadBlockUpdated(@NotNull Download download, @NotNull DownloadBlock downloadBlock, int i) {
|
|
|
|
}
|
|
|
|
@Override
|
|
|
|
public void onDeleted(@NotNull Download download) {
|
|
|
|
}
|
|
|
|
@Override
|
|
|
|
public void onCompleted(@NotNull Download download) {
|
|
|
|
boolean canRecord = false;
|
|
|
|
if( download.getFileUri().getPath() != null) {
|
|
|
|
File file = new File(download.getFileUri().getPath());
|
|
|
|
try {
|
|
|
|
BufferedReader br = new BufferedReader(new FileReader(file));
|
|
|
|
String line;
|
|
|
|
ArrayList<String> domains = new ArrayList<>();
|
|
|
|
while ((line = br.readLine()) != null) {
|
|
|
|
if(!canRecord && line.contains("# Blocked domains"))
|
|
|
|
canRecord = true;
|
|
|
|
if( canRecord) {
|
|
|
|
String domain = line.replaceAll("0.0.0.0 ","").trim();
|
|
|
|
domains.add(domain);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
br.close();
|
|
|
|
AsyncTask.execute(new Runnable() {
|
|
|
|
@Override
|
|
|
|
public void run() {
|
|
|
|
SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
|
|
|
|
new DomainBlockDAO(context, db).insertAll(domains);
|
|
|
|
// Get a handler that can be used to post to the main thread
|
|
|
|
Handler mainHandler = new Handler(context.getMainLooper());
|
|
|
|
|
|
|
|
Runnable myRunnable = new Runnable() {
|
|
|
|
@Override
|
|
|
|
public void run() {
|
|
|
|
Toasty.success(context, context.getString(R.string.tracking_db_updated), Toast.LENGTH_LONG).show();
|
|
|
|
}
|
|
|
|
};
|
|
|
|
mainHandler.post(myRunnable);
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
catch (IOException e) {
|
|
|
|
//You'll need to add proper error handling here
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@Override
|
|
|
|
public void onCancelled(@NotNull Download download) {
|
|
|
|
}
|
|
|
|
@Override
|
|
|
|
public void onAdded(@NotNull Download download) {
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
fetch.addListener(fetchListener);
|
|
|
|
final Request request = new Request(url, file);
|
|
|
|
request.setPriority(Priority.HIGH);
|
|
|
|
request.setNetworkType(NetworkType.ALL);
|
|
|
|
fetch.enqueue(request, updatedRequest -> {
|
|
|
|
//Request was successfully enqueued for download.
|
|
|
|
}, error -> {
|
|
|
|
//An error occurred enqueuing the request.
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2019-02-02 11:01:24 +01:00
|
|
|
//Manage download of attachments
|
|
|
|
RadioGroup radioGroup = rootView.findViewById(R.id.set_attachment_group);
|
|
|
|
int attachmentAction = sharedpreferences.getInt(Helper.SET_ATTACHMENT_ACTION, Helper.ATTACHMENT_ALWAYS);
|
|
|
|
switch (attachmentAction){
|
|
|
|
case Helper.ATTACHMENT_ALWAYS:
|
|
|
|
radioGroup.check(R.id.set_attachment_always);
|
|
|
|
break;
|
|
|
|
case Helper.ATTACHMENT_WIFI:
|
|
|
|
radioGroup.check(R.id.set_attachment_wifi);
|
|
|
|
break;
|
|
|
|
case Helper.ATTACHMENT_ASK:
|
|
|
|
radioGroup.check(R.id.set_attachment_ask);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
|
|
|
|
@Override
|
|
|
|
public void onCheckedChanged(RadioGroup group, int checkedId) {
|
|
|
|
switch(checkedId) {
|
|
|
|
case R.id.set_attachment_always:
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putInt(Helper.SET_ATTACHMENT_ACTION, Helper.ATTACHMENT_ALWAYS);
|
|
|
|
editor.apply();
|
|
|
|
break;
|
|
|
|
case R.id.set_attachment_wifi:
|
|
|
|
editor = sharedpreferences.edit();
|
|
|
|
editor.putInt(Helper.SET_ATTACHMENT_ACTION, Helper.ATTACHMENT_WIFI);
|
|
|
|
editor.apply();
|
|
|
|
break;
|
|
|
|
case R.id.set_attachment_ask:
|
|
|
|
editor = sharedpreferences.edit();
|
|
|
|
editor.putInt(Helper.SET_ATTACHMENT_ACTION, Helper.ATTACHMENT_ASK);
|
|
|
|
editor.apply();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
boolean optimize_loading = sharedpreferences.getBoolean(Helper.SET_OPTIMIZE_LOADING, false);
|
|
|
|
final CheckBox set_optimize_loading = rootView.findViewById(R.id.set_optimize_loading);
|
|
|
|
set_optimize_loading.setChecked(optimize_loading);
|
|
|
|
|
|
|
|
set_optimize_loading.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_OPTIMIZE_LOADING, set_optimize_loading.isChecked());
|
|
|
|
if( set_optimize_loading.isChecked()){
|
|
|
|
editor.putInt(Helper.SET_ACCOUNTS_PER_PAGE, 10);
|
|
|
|
editor.putInt(Helper.SET_TOOTS_PER_PAGE, 10);
|
|
|
|
editor.putInt(Helper.SET_NOTIFICATIONS_PER_PAGE, 10);
|
|
|
|
}else {
|
|
|
|
editor.putInt(Helper.SET_ACCOUNTS_PER_PAGE, 40);
|
|
|
|
editor.putInt(Helper.SET_TOOTS_PER_PAGE, 40);
|
|
|
|
editor.putInt(Helper.SET_NOTIFICATIONS_PER_PAGE, 15);
|
|
|
|
}
|
|
|
|
editor.apply();
|
|
|
|
}
|
2019-02-23 18:13:41 +01:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
int videoMode = sharedpreferences.getInt(Helper.SET_VIDEO_MODE, Helper.VIDEO_MODE_DIRECT);
|
|
|
|
|
|
|
|
|
|
|
|
//Video mode
|
|
|
|
final Spinner video_mode_spinner = rootView.findViewById(R.id.set_video_mode);
|
|
|
|
ArrayAdapter<CharSequence> video_mode_spinnerAdapter = ArrayAdapter.createFromResource(getContext(),
|
|
|
|
R.array.settings_video_mode, android.R.layout.simple_spinner_item);
|
|
|
|
video_mode_spinner.setAdapter(video_mode_spinnerAdapter);
|
|
|
|
if (videoMode == Helper.VIDEO_MODE_TORRENT)
|
|
|
|
videoMode = Helper.VIDEO_MODE_DIRECT;
|
|
|
|
int positionVideoMode = 0;
|
|
|
|
if( videoMode == Helper.VIDEO_MODE_DIRECT)
|
|
|
|
positionVideoMode = 1;
|
|
|
|
video_mode_spinner.setSelection(positionVideoMode);
|
|
|
|
video_mode_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
|
|
|
@Override
|
|
|
|
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
|
|
|
if( count5 > 0 ) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
switch (position) {
|
|
|
|
/*case 0:
|
|
|
|
editor.putInt(Helper.SET_VIDEO_MODE, Helper.VIDEO_MODE_TORRENT);
|
|
|
|
editor.apply();
|
|
|
|
break;*/
|
|
|
|
case 0:
|
|
|
|
editor.putInt(Helper.SET_VIDEO_MODE, Helper.VIDEO_MODE_WEBVIEW);
|
|
|
|
editor.apply();
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
editor.putInt(Helper.SET_VIDEO_MODE, Helper.VIDEO_MODE_DIRECT);
|
|
|
|
editor.apply();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
count5++;
|
|
|
|
}
|
|
|
|
@Override
|
|
|
|
public void onNothingSelected(AdapterView<?> parent) {
|
|
|
|
|
|
|
|
}
|
2019-02-02 11:01:24 +01:00
|
|
|
});
|
|
|
|
|
2019-02-14 10:06:18 +01:00
|
|
|
boolean patch_provider = sharedpreferences.getBoolean(Helper.SET_SECURITY_PROVIDER, true);
|
|
|
|
final CheckBox set_security_provider = rootView.findViewById(R.id.set_security_provider);
|
|
|
|
set_security_provider.setChecked(patch_provider);
|
|
|
|
|
|
|
|
set_security_provider.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_SECURITY_PROVIDER, set_security_provider.isChecked());
|
|
|
|
editor.apply();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2019-02-02 11:01:24 +01:00
|
|
|
|
2018-11-07 18:09:21 +01:00
|
|
|
boolean display_card = sharedpreferences.getBoolean(Helper.SET_DISPLAY_CARD, false);
|
2018-11-07 08:07:45 +01:00
|
|
|
|
|
|
|
final CheckBox set_display_card = rootView.findViewById(R.id.set_display_card);
|
|
|
|
set_display_card.setChecked(display_card);
|
|
|
|
set_display_card.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_DISPLAY_CARD, set_display_card.isChecked());
|
|
|
|
editor.apply();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2017-10-04 16:12:04 +02:00
|
|
|
|
2018-09-09 13:58:29 +02:00
|
|
|
boolean show_media_urls = sharedpreferences.getBoolean(Helper.SET_MEDIA_URLS, false);
|
2017-10-28 11:02:37 +02:00
|
|
|
final CheckBox set_auto_add_media_url = rootView.findViewById(R.id.set_auto_add_media_url);
|
2017-08-15 09:02:46 +02:00
|
|
|
set_auto_add_media_url.setChecked(show_media_urls);
|
|
|
|
|
|
|
|
set_auto_add_media_url.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_MEDIA_URLS, set_auto_add_media_url.isChecked());
|
|
|
|
editor.apply();
|
|
|
|
}
|
|
|
|
});
|
2017-06-24 11:38:18 +02:00
|
|
|
|
2018-11-14 15:42:26 +01:00
|
|
|
boolean display_video_preview = sharedpreferences.getBoolean(Helper.SET_DISPLAY_VIDEO_PREVIEWS, true);
|
|
|
|
final CheckBox set_display_video_preview = rootView.findViewById(R.id.set_display_video_preview);
|
|
|
|
set_display_video_preview.setChecked(display_video_preview);
|
|
|
|
|
|
|
|
set_display_video_preview.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_DISPLAY_VIDEO_PREVIEWS, set_display_video_preview.isChecked());
|
|
|
|
editor.apply();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2018-08-30 18:46:40 +02:00
|
|
|
|
2017-06-24 11:38:18 +02:00
|
|
|
boolean notif_validation = sharedpreferences.getBoolean(Helper.SET_NOTIF_VALIDATION, true);
|
2017-10-28 11:02:37 +02:00
|
|
|
final CheckBox set_share_validation = rootView.findViewById(R.id.set_share_validation);
|
2017-06-24 11:38:18 +02:00
|
|
|
set_share_validation.setChecked(notif_validation);
|
|
|
|
|
|
|
|
set_share_validation.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_NOTIF_VALIDATION, set_share_validation.isChecked());
|
|
|
|
editor.apply();
|
|
|
|
}
|
|
|
|
});
|
2018-08-14 16:20:53 +02:00
|
|
|
your_api_key = rootView.findViewById(R.id.translation_key);
|
|
|
|
|
|
|
|
your_api_key.addTextChangedListener(new TextWatcher() {
|
|
|
|
@Override
|
|
|
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void afterTextChanged(Editable s) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
int translatore = sharedpreferences.getInt(Helper.SET_TRANSLATOR, Helper.TRANS_YANDEX);
|
|
|
|
String store = null;
|
|
|
|
if( translatore == Helper.TRANS_YANDEX)
|
|
|
|
store = Helper.SET_YANDEX_API_KEY;
|
|
|
|
else if( translatore == Helper.TRANS_DEEPL)
|
|
|
|
store = Helper.SET_DEEPL_API_KEY;
|
|
|
|
if( store != null)
|
|
|
|
if( s != null && s.length() > 0)
|
|
|
|
editor.putString(store, s.toString().trim());
|
|
|
|
else
|
|
|
|
editor.putString(store, null);
|
|
|
|
editor.apply();
|
|
|
|
}
|
|
|
|
});
|
2017-06-24 11:38:18 +02:00
|
|
|
|
2017-09-10 09:48:05 +02:00
|
|
|
boolean notif_validation_fav = sharedpreferences.getBoolean(Helper.SET_NOTIF_VALIDATION_FAV, false);
|
2017-10-28 11:02:37 +02:00
|
|
|
final CheckBox set_share_validation_fav = rootView.findViewById(R.id.set_share_validation_fav);
|
2017-09-10 09:48:05 +02:00
|
|
|
set_share_validation_fav.setChecked(notif_validation_fav);
|
|
|
|
|
|
|
|
set_share_validation_fav.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_NOTIF_VALIDATION_FAV, set_share_validation_fav.isChecked());
|
|
|
|
editor.apply();
|
|
|
|
}
|
|
|
|
});
|
2017-06-24 11:38:18 +02:00
|
|
|
|
2017-10-04 16:12:04 +02:00
|
|
|
|
2018-02-09 17:39:09 +01:00
|
|
|
boolean expand_cw = sharedpreferences.getBoolean(Helper.SET_EXPAND_CW, false);
|
|
|
|
final CheckBox set_expand_cw = rootView.findViewById(R.id.set_expand_cw);
|
|
|
|
set_expand_cw.setChecked(expand_cw);
|
|
|
|
|
|
|
|
set_expand_cw.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_EXPAND_CW, set_expand_cw.isChecked());
|
|
|
|
editor.apply();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2018-10-28 11:32:23 +01:00
|
|
|
boolean display_emoji = sharedpreferences.getBoolean(Helper.SET_DISPLAY_EMOJI, true);
|
|
|
|
final CheckBox set_display_emoji = rootView.findViewById(R.id.set_display_emoji);
|
|
|
|
set_display_emoji.setChecked(display_emoji);
|
|
|
|
|
|
|
|
set_display_emoji.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_DISPLAY_EMOJI, set_display_emoji.isChecked());
|
|
|
|
editor.apply();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2018-09-15 09:33:53 +02:00
|
|
|
boolean expand_media = sharedpreferences.getBoolean(Helper.SET_EXPAND_MEDIA, false);
|
|
|
|
final CheckBox set_expand_media = rootView.findViewById(R.id.set_expand_image);
|
|
|
|
set_expand_media.setChecked(expand_media);
|
|
|
|
|
|
|
|
set_expand_media.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_EXPAND_MEDIA, set_expand_media.isChecked());
|
|
|
|
editor.apply();
|
|
|
|
}
|
|
|
|
});
|
2018-02-09 17:39:09 +01:00
|
|
|
|
2018-11-10 10:07:44 +01:00
|
|
|
boolean old_direct_timeline = sharedpreferences.getBoolean(Helper.SET_OLD_DIRECT_TIMELINE, false);
|
|
|
|
final CheckBox set_old_direct_timeline = rootView.findViewById(R.id.set_old_direct_timeline);
|
|
|
|
set_old_direct_timeline.setChecked(old_direct_timeline);
|
|
|
|
|
|
|
|
set_old_direct_timeline.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_OLD_DIRECT_TIMELINE, set_old_direct_timeline.isChecked());
|
|
|
|
editor.apply();
|
|
|
|
if( getActivity() != null)
|
|
|
|
getActivity().recreate();
|
|
|
|
Intent intent = new Intent(context, MainActivity.class);
|
|
|
|
if(getActivity() != null)
|
|
|
|
getActivity().finish();
|
|
|
|
startActivity(intent);
|
|
|
|
}
|
|
|
|
});
|
2018-09-15 09:53:13 +02:00
|
|
|
|
2018-11-28 11:24:59 +01:00
|
|
|
int truncate_toots_size = sharedpreferences.getInt(Helper.SET_TRUNCATE_TOOTS_SIZE, 0);
|
|
|
|
SeekBar set_truncate_size = rootView.findViewById(R.id.set_truncate_size);
|
|
|
|
set_truncate_size.setMax(20);
|
|
|
|
set_truncate_size.setProgress(truncate_toots_size);
|
|
|
|
TextView set_truncate_toots = rootView.findViewById(R.id.set_truncate_toots);
|
|
|
|
set_truncate_toots.setText(String.valueOf(truncate_toots_size));
|
|
|
|
set_truncate_size.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
|
2018-11-28 09:44:19 +01:00
|
|
|
@Override
|
2018-11-28 11:24:59 +01:00
|
|
|
public void onStopTrackingTouch(SeekBar seekBar) {}
|
|
|
|
@Override
|
|
|
|
public void onStartTrackingTouch(SeekBar seekBar) {}
|
|
|
|
@Override
|
|
|
|
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
|
|
|
set_truncate_toots.setText(String.valueOf(progress));
|
2018-11-28 09:44:19 +01:00
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
2018-11-28 11:24:59 +01:00
|
|
|
editor.putInt(Helper.SET_TRUNCATE_TOOTS_SIZE, progress);
|
2018-11-28 09:44:19 +01:00
|
|
|
editor.apply();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
|
2018-09-15 09:53:13 +02:00
|
|
|
boolean follow_instance = sharedpreferences.getBoolean(Helper.SET_DISPLAY_FOLLOW_INSTANCE, true);
|
|
|
|
final CheckBox set_follow_instance = rootView.findViewById(R.id.set_display_follow_instance);
|
|
|
|
set_follow_instance.setChecked(follow_instance);
|
|
|
|
|
|
|
|
set_follow_instance.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_DISPLAY_FOLLOW_INSTANCE, set_follow_instance.isChecked());
|
|
|
|
editor.apply();
|
|
|
|
((MainActivity) context).refreshButton();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2018-11-01 15:52:22 +01:00
|
|
|
boolean display_bookmark = sharedpreferences.getBoolean(Helper.SET_SHOW_BOOKMARK, false);
|
2018-03-25 11:39:53 +02:00
|
|
|
final CheckBox set_display_bookmark = rootView.findViewById(R.id.set_display_bookmarks);
|
|
|
|
set_display_bookmark.setChecked(display_bookmark);
|
|
|
|
|
|
|
|
set_display_bookmark.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_SHOW_BOOKMARK, set_display_bookmark.isChecked());
|
|
|
|
editor.apply();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2018-04-28 12:27:49 +02:00
|
|
|
boolean fit_preview = sharedpreferences.getBoolean(Helper.SET_FULL_PREVIEW, false);
|
|
|
|
final CheckBox set_fit_preview = rootView.findViewById(R.id.set_fit_preview);
|
|
|
|
set_fit_preview.setChecked(fit_preview);
|
|
|
|
|
|
|
|
set_fit_preview.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_FULL_PREVIEW, set_fit_preview.isChecked());
|
|
|
|
editor.apply();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2018-11-10 16:49:21 +01:00
|
|
|
boolean compact_mode = sharedpreferences.getBoolean(Helper.SET_COMPACT_MODE, false);
|
2019-02-13 18:36:29 +01:00
|
|
|
boolean console_mode = sharedpreferences.getBoolean(Helper.SET_CONSOLE_MODE, false);
|
|
|
|
RadioGroup set_mode = rootView.findViewById(R.id.set_mode);
|
|
|
|
if( compact_mode){
|
|
|
|
set_mode.check(R.id.set_compact_mode);
|
|
|
|
}else if(console_mode){
|
|
|
|
set_mode.check(R.id.set_console_mode);
|
|
|
|
}else {
|
|
|
|
set_mode.check(R.id.set_normal_mode);
|
|
|
|
}
|
|
|
|
set_mode.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
|
2018-05-12 09:41:47 +02:00
|
|
|
@Override
|
2019-02-13 18:36:29 +01:00
|
|
|
public void onCheckedChanged(RadioGroup group, int checkedId) {
|
|
|
|
switch(checkedId) {
|
|
|
|
case R.id.set_compact_mode:
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_COMPACT_MODE, true);
|
|
|
|
editor.putBoolean(Helper.SET_CONSOLE_MODE, false);
|
|
|
|
editor.apply();
|
|
|
|
break;
|
|
|
|
case R.id.set_console_mode:
|
|
|
|
editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_COMPACT_MODE, false);
|
|
|
|
editor.putBoolean(Helper.SET_CONSOLE_MODE, true);
|
|
|
|
editor.apply();
|
|
|
|
break;
|
|
|
|
case R.id.set_normal_mode:
|
|
|
|
editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_COMPACT_MODE, false);
|
|
|
|
editor.putBoolean(Helper.SET_CONSOLE_MODE, false);
|
|
|
|
editor.apply();
|
|
|
|
break;
|
|
|
|
}
|
2018-05-12 09:41:47 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2018-05-12 11:11:17 +02:00
|
|
|
boolean share_details = sharedpreferences.getBoolean(Helper.SET_SHARE_DETAILS, true);
|
|
|
|
final CheckBox set_share_details = rootView.findViewById(R.id.set_share_details);
|
|
|
|
set_share_details.setChecked(share_details);
|
|
|
|
|
|
|
|
set_share_details.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_SHARE_DETAILS, set_share_details.isChecked());
|
|
|
|
editor.apply();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2019-02-13 21:31:08 +01:00
|
|
|
// Custom Sharing
|
2019-02-15 19:39:17 +01:00
|
|
|
final EditText edit_custom_sharing_url = rootView.findViewById(R.id.custom_sharing_url);
|
|
|
|
boolean custom_sharing = sharedpreferences.getBoolean(Helper.SET_CUSTOM_SHARING, false);
|
2019-02-13 21:31:08 +01:00
|
|
|
final CheckBox set_custom_sharing = rootView.findViewById(R.id.set_custom_sharing);
|
|
|
|
set_custom_sharing.setChecked(custom_sharing);
|
2019-02-15 19:39:17 +01:00
|
|
|
if( custom_sharing)
|
|
|
|
edit_custom_sharing_url.setVisibility(View.VISIBLE);
|
|
|
|
else
|
|
|
|
edit_custom_sharing_url.setVisibility(View.GONE);
|
2019-02-13 21:31:08 +01:00
|
|
|
set_custom_sharing.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_CUSTOM_SHARING, set_custom_sharing.isChecked());
|
|
|
|
editor.apply();
|
2019-02-15 19:39:17 +01:00
|
|
|
if( set_custom_sharing.isChecked())
|
|
|
|
edit_custom_sharing_url.setVisibility(View.VISIBLE);
|
|
|
|
else
|
|
|
|
edit_custom_sharing_url.setVisibility(View.GONE);
|
2019-02-13 21:31:08 +01:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2019-02-14 03:31:28 +01:00
|
|
|
String custom_sharing_url = sharedpreferences.getString(Helper.SET_CUSTOM_SHARING_URL,"");
|
2019-02-13 21:31:08 +01:00
|
|
|
if (custom_sharing_url.equals("")) {
|
2019-02-26 02:51:27 +01:00
|
|
|
custom_sharing_url = "http://cs.example.net/add?token=umVe1zurZk47ihElSOQcBG05KUSA2v-GSet4_fFnJ4M&url=${url}&title=${title}&source=${source}&id=${id}&description=${description}&keywords=${keywords}&creator=${creator}&thumbnailurl=${thumbnailurl}";
|
2019-02-13 21:31:08 +01:00
|
|
|
}
|
|
|
|
edit_custom_sharing_url.setText(custom_sharing_url);
|
|
|
|
|
2019-02-14 03:31:28 +01:00
|
|
|
|
|
|
|
edit_custom_sharing_url.addTextChangedListener(new TextWatcher() {
|
|
|
|
@Override
|
|
|
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void afterTextChanged(Editable s) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putString(Helper.SET_CUSTOM_SHARING_URL, s.toString().trim());
|
|
|
|
editor.apply();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2019-02-15 19:39:17 +01:00
|
|
|
|
2018-10-10 11:03:51 +02:00
|
|
|
boolean display_direct = sharedpreferences.getBoolean(Helper.SET_DISPLAY_DIRECT, true);
|
|
|
|
final CheckBox set_display_direct = rootView.findViewById(R.id.set_display_direct);
|
|
|
|
set_display_direct.setChecked(display_direct);
|
|
|
|
|
|
|
|
set_display_direct.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_DISPLAY_DIRECT, set_display_direct.isChecked());
|
|
|
|
editor.apply();
|
|
|
|
if( getActivity() != null)
|
|
|
|
getActivity().recreate();
|
|
|
|
Intent intent = new Intent(context, MainActivity.class);
|
|
|
|
if(getActivity() != null)
|
|
|
|
getActivity().finish();
|
|
|
|
startActivity(intent);
|
|
|
|
}
|
|
|
|
});
|
2017-10-04 16:12:04 +02:00
|
|
|
|
2017-09-01 17:17:22 +02:00
|
|
|
boolean display_local = sharedpreferences.getBoolean(Helper.SET_DISPLAY_LOCAL, true);
|
2017-10-28 11:02:37 +02:00
|
|
|
final CheckBox set_display_local = rootView.findViewById(R.id.set_display_local);
|
2017-09-01 17:17:22 +02:00
|
|
|
set_display_local.setChecked(display_local);
|
|
|
|
|
|
|
|
set_display_local.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_DISPLAY_LOCAL, set_display_local.isChecked());
|
|
|
|
editor.apply();
|
2017-11-11 10:05:37 +01:00
|
|
|
if( getActivity() != null)
|
|
|
|
getActivity().recreate();
|
|
|
|
Intent intent = new Intent(context, MainActivity.class);
|
2018-10-10 11:03:51 +02:00
|
|
|
if(getActivity() != null)
|
|
|
|
getActivity().finish();
|
|
|
|
startActivity(intent);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
boolean display_global = sharedpreferences.getBoolean(Helper.SET_DISPLAY_GLOBAL, true);
|
|
|
|
final CheckBox set_display_global = rootView.findViewById(R.id.set_display_global);
|
|
|
|
set_display_global.setChecked(display_global);
|
|
|
|
|
|
|
|
set_display_global.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_DISPLAY_GLOBAL, set_display_global.isChecked());
|
|
|
|
editor.apply();
|
|
|
|
if( getActivity() != null)
|
|
|
|
getActivity().recreate();
|
|
|
|
Intent intent = new Intent(context, MainActivity.class);
|
2018-12-16 15:11:58 +01:00
|
|
|
intent.putExtra(INTENT_ACTION, BACK_TO_SETTINGS);
|
2018-10-10 11:03:51 +02:00
|
|
|
if(getActivity() != null)
|
|
|
|
getActivity().finish();
|
2018-12-05 17:51:28 +01:00
|
|
|
startActivity(intent);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
boolean display_art = sharedpreferences.getBoolean(Helper.SET_DISPLAY_ART, true);
|
|
|
|
final CheckBox set_display_art = rootView.findViewById(R.id.set_display_art);
|
|
|
|
set_display_art.setChecked(display_art);
|
|
|
|
|
|
|
|
set_display_art.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_DISPLAY_ART, set_display_art.isChecked());
|
|
|
|
editor.apply();
|
|
|
|
if( getActivity() != null)
|
|
|
|
getActivity().recreate();
|
|
|
|
Intent intent = new Intent(context, MainActivity.class);
|
2018-12-16 15:11:58 +01:00
|
|
|
intent.putExtra(INTENT_ACTION, BACK_TO_SETTINGS);
|
2018-12-05 17:51:28 +01:00
|
|
|
if(getActivity() != null)
|
|
|
|
getActivity().finish();
|
2017-11-11 10:05:37 +01:00
|
|
|
startActivity(intent);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2017-12-10 08:33:26 +01:00
|
|
|
boolean disableGif = sharedpreferences.getBoolean(Helper.SET_DISABLE_GIF, false);
|
|
|
|
final CheckBox set_disable_gif = rootView.findViewById(R.id.set_disable_gif);
|
|
|
|
set_disable_gif.setChecked(disableGif);
|
|
|
|
set_disable_gif.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_DISABLE_GIF, set_disable_gif.isChecked());
|
|
|
|
editor.apply();
|
2017-12-22 07:00:02 +01:00
|
|
|
if( getActivity() != null)
|
|
|
|
getActivity().recreate();
|
2017-12-10 08:33:26 +01:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
|
2017-11-11 10:05:37 +01:00
|
|
|
boolean livenotif = sharedpreferences.getBoolean(Helper.SET_LIVE_NOTIFICATIONS, true);
|
|
|
|
final CheckBox set_live_notif = rootView.findViewById(R.id.set_live_notify);
|
|
|
|
set_live_notif.setChecked(livenotif);
|
|
|
|
set_live_notif.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_LIVE_NOTIFICATIONS, set_live_notif.isChecked());
|
2017-11-11 14:39:33 +01:00
|
|
|
editor.putBoolean(Helper.SHOULD_CONTINUE_STREAMING, set_live_notif.isChecked());
|
2017-11-11 10:05:37 +01:00
|
|
|
editor.apply();
|
2017-11-11 14:39:33 +01:00
|
|
|
if( set_live_notif.isChecked() ){
|
|
|
|
try {
|
2018-01-03 15:25:35 +01:00
|
|
|
((MainActivity) context).startSreaming();
|
2017-11-11 18:49:59 +01:00
|
|
|
}catch (Exception ignored){ignored.printStackTrace();}
|
2018-01-03 15:25:35 +01:00
|
|
|
}else{
|
|
|
|
context.sendBroadcast(new Intent("StopLiveNotificationService"));
|
2017-11-11 14:39:33 +01:00
|
|
|
}
|
2017-09-01 17:17:22 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2018-10-14 10:06:48 +02:00
|
|
|
boolean keep_background_process = sharedpreferences.getBoolean(Helper.SET_KEEP_BACKGROUND_PROCESS, true);
|
|
|
|
final CheckBox set_keep_background_process = rootView.findViewById(R.id.set_keep_background_process);
|
|
|
|
set_keep_background_process.setChecked(keep_background_process);
|
|
|
|
set_keep_background_process.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_KEEP_BACKGROUND_PROCESS, set_keep_background_process.isChecked());
|
|
|
|
editor.apply();
|
|
|
|
}
|
|
|
|
});
|
2017-12-10 08:33:26 +01:00
|
|
|
|
2018-01-06 08:19:26 +01:00
|
|
|
|
|
|
|
boolean capitalize = sharedpreferences.getBoolean(Helper.SET_CAPITALIZE, true);
|
|
|
|
final CheckBox set_capitalize = rootView.findViewById(R.id.set_capitalize);
|
|
|
|
set_capitalize.setChecked(capitalize);
|
|
|
|
|
|
|
|
set_capitalize.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_CAPITALIZE, set_capitalize.isChecked());
|
|
|
|
editor.apply();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
|
2017-10-28 11:02:37 +02:00
|
|
|
final CheckBox set_embedded_browser = rootView.findViewById(R.id.set_embedded_browser);
|
|
|
|
final LinearLayout set_javascript_container = rootView.findViewById(R.id.set_javascript_container);
|
2018-02-09 17:01:13 +01:00
|
|
|
final CheckBox set_custom_tabs = rootView.findViewById(R.id.set_custom_tabs);
|
2017-10-28 11:02:37 +02:00
|
|
|
final SwitchCompat set_javascript = rootView.findViewById(R.id.set_javascript);
|
2017-06-24 11:38:18 +02:00
|
|
|
boolean javascript = sharedpreferences.getBoolean(Helper.SET_JAVASCRIPT, true);
|
|
|
|
boolean embedded_browser = sharedpreferences.getBoolean(Helper.SET_EMBEDDED_BROWSER, true);
|
2018-02-09 17:01:13 +01:00
|
|
|
boolean custom_tabs = sharedpreferences.getBoolean(Helper.SET_CUSTOM_TABS, true);
|
2017-06-24 11:38:18 +02:00
|
|
|
if( !embedded_browser){
|
|
|
|
set_javascript_container.setVisibility(View.GONE);
|
2018-02-09 17:01:13 +01:00
|
|
|
set_custom_tabs.setVisibility(View.VISIBLE);
|
2017-06-24 11:38:18 +02:00
|
|
|
}else{
|
|
|
|
set_javascript_container.setVisibility(View.VISIBLE);
|
2018-02-09 17:01:13 +01:00
|
|
|
set_custom_tabs.setVisibility(View.GONE);
|
2017-06-24 11:38:18 +02:00
|
|
|
}
|
|
|
|
set_embedded_browser.setChecked(embedded_browser);
|
|
|
|
set_embedded_browser.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_EMBEDDED_BROWSER, set_embedded_browser.isChecked());
|
|
|
|
editor.apply();
|
|
|
|
if( !set_embedded_browser.isChecked()){
|
|
|
|
set_javascript_container.setVisibility(View.GONE);
|
2018-02-09 17:01:13 +01:00
|
|
|
set_custom_tabs.setVisibility(View.VISIBLE);
|
2017-06-24 11:38:18 +02:00
|
|
|
}else{
|
|
|
|
set_javascript_container.setVisibility(View.VISIBLE);
|
2018-02-09 17:01:13 +01:00
|
|
|
set_custom_tabs.setVisibility(View.GONE);
|
2017-06-24 11:38:18 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
set_javascript.setChecked(javascript);
|
|
|
|
set_javascript.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
|
|
|
@Override
|
|
|
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_JAVASCRIPT, isChecked);
|
|
|
|
editor.apply();
|
2018-02-09 17:01:13 +01:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
set_custom_tabs.setChecked(custom_tabs);
|
|
|
|
set_custom_tabs.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
|
|
|
@Override
|
|
|
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_CUSTOM_TABS, isChecked);
|
|
|
|
editor.apply();
|
2017-06-24 11:38:18 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2017-10-28 11:02:37 +02:00
|
|
|
final LinearLayout set_cookies_container = rootView.findViewById(R.id.set_cookies_container);
|
|
|
|
final SwitchCompat set_cookies = rootView.findViewById(R.id.set_cookies);
|
2017-06-24 11:38:18 +02:00
|
|
|
boolean cookies = sharedpreferences.getBoolean(Helper.SET_COOKIES, false);
|
|
|
|
|
|
|
|
set_cookies.setChecked(cookies);
|
|
|
|
set_cookies.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
|
|
|
@Override
|
|
|
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_COOKIES, isChecked);
|
|
|
|
editor.apply();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
|
|
|
set_cookies_container.setVisibility(View.VISIBLE);
|
|
|
|
}else {
|
|
|
|
set_cookies_container.setVisibility(View.GONE);
|
|
|
|
}
|
2017-07-17 15:22:59 +02:00
|
|
|
final String targeted_folder = sharedpreferences.getString(Helper.SET_FOLDER_RECORD, Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath());
|
2017-06-27 19:18:46 +02:00
|
|
|
|
2017-10-28 11:02:37 +02:00
|
|
|
set_folder = rootView.findViewById(R.id.set_folder);
|
2017-06-27 19:18:46 +02:00
|
|
|
set_folder.setText(targeted_folder);
|
|
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
|
|
|
set_folder.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
|
|
|
|
@SuppressLint("InlinedApi") Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
|
|
|
|
startActivityForResult(intent, ACTIVITY_CHOOSE_FILE);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}else {
|
2017-10-28 11:02:37 +02:00
|
|
|
LinearLayout file_chooser = rootView.findViewById(R.id.file_chooser);
|
2017-06-27 19:18:46 +02:00
|
|
|
file_chooser.setVisibility(View.GONE);
|
|
|
|
}
|
2017-06-24 11:38:18 +02:00
|
|
|
|
2018-05-11 10:40:58 +02:00
|
|
|
final Spinner set_night_mode = rootView.findViewById(R.id.set_night_mode);
|
|
|
|
ArrayAdapter<CharSequence> adapterTheme = ArrayAdapter.createFromResource(getContext(),
|
|
|
|
R.array.settings_theme, android.R.layout.simple_spinner_item);
|
|
|
|
set_night_mode.setAdapter(adapterTheme);
|
|
|
|
|
|
|
|
int positionSpinnerTheme;
|
|
|
|
switch (sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK)){
|
|
|
|
case Helper.THEME_DARK:
|
|
|
|
positionSpinnerTheme = 0;
|
|
|
|
break;
|
|
|
|
case Helper.THEME_LIGHT:
|
|
|
|
positionSpinnerTheme = 1;
|
|
|
|
break;
|
|
|
|
case Helper.THEME_BLACK:
|
|
|
|
positionSpinnerTheme = 2;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
positionSpinnerTheme = 0;
|
|
|
|
}
|
2018-11-30 17:41:43 +01:00
|
|
|
set_night_mode.setSelection(positionSpinnerTheme);
|
2018-05-11 10:40:58 +02:00
|
|
|
set_night_mode.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
2017-06-30 17:09:07 +02:00
|
|
|
@Override
|
2018-05-11 10:40:58 +02:00
|
|
|
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
2018-11-29 07:37:41 +01:00
|
|
|
if( count1 > 0 ) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
|
|
|
|
switch (position) {
|
|
|
|
case 0:
|
|
|
|
editor.putInt(Helper.SET_THEME, Helper.THEME_DARK);
|
|
|
|
editor.apply();
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
editor.putInt(Helper.SET_THEME, Helper.THEME_LIGHT);
|
|
|
|
editor.apply();
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
editor.putInt(Helper.SET_THEME, Helper.THEME_BLACK);
|
|
|
|
editor.apply();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
if (getActivity() != null)
|
|
|
|
getActivity().recreate();
|
|
|
|
Intent intent = new Intent(context, MainActivity.class);
|
2018-12-16 15:11:58 +01:00
|
|
|
intent.putExtra(INTENT_ACTION, BACK_TO_SETTINGS);
|
2018-11-29 07:37:41 +01:00
|
|
|
startActivity(intent);
|
2017-06-30 17:09:07 +02:00
|
|
|
}
|
2018-11-29 07:37:41 +01:00
|
|
|
count1++;
|
2018-05-11 10:40:58 +02:00
|
|
|
}
|
|
|
|
@Override
|
|
|
|
public void onNothingSelected(AdapterView<?> parent) {
|
2017-07-23 17:09:23 +02:00
|
|
|
|
2017-06-30 17:09:07 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2018-11-24 18:56:12 +01:00
|
|
|
|
|
|
|
|
2017-08-07 01:53:33 +02:00
|
|
|
// NSFW Timeout
|
2017-10-28 11:02:37 +02:00
|
|
|
SeekBar nsfwTimeoutSeekBar = rootView.findViewById(R.id.set_nsfw_timeout);
|
|
|
|
final TextView set_nsfw_timeout_value = rootView.findViewById(R.id.set_nsfw_timeout_value);
|
2017-08-07 01:53:33 +02:00
|
|
|
|
|
|
|
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();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2017-08-07 10:20:44 +02:00
|
|
|
|
2018-09-19 10:13:28 +02:00
|
|
|
|
2018-09-16 19:05:54 +02:00
|
|
|
|
2017-08-07 10:20:44 +02:00
|
|
|
|
2017-10-28 11:02:37 +02:00
|
|
|
LinearLayout toot_visibility_container = rootView.findViewById(R.id.toot_visibility_container);
|
2017-08-07 10:20:44 +02:00
|
|
|
SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
|
2019-02-08 15:07:46 +01:00
|
|
|
String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null);
|
|
|
|
String instance = sharedpreferences.getString(Helper.PREF_INSTANCE, Helper.getLiveInstance(context));
|
|
|
|
final Account account = new AccountDAO(context, db).getUniqAccount(userId, instance);
|
2017-10-28 11:02:37 +02:00
|
|
|
final ImageView set_toot_visibility = rootView.findViewById(R.id.set_toot_visibility);
|
2017-11-02 14:27:43 +01:00
|
|
|
if( theme == Helper.THEME_DARK){
|
|
|
|
changeDrawableColor(context, set_toot_visibility, R.color.dark_text);
|
|
|
|
}else {
|
|
|
|
changeDrawableColor(context, set_toot_visibility, R.color.white);
|
|
|
|
}
|
2017-08-07 10:20:44 +02:00
|
|
|
//Only displayed for non locked accounts
|
2018-02-09 08:39:54 +01:00
|
|
|
if (account != null ) {
|
|
|
|
String defaultVisibility = account.isLocked()?"private":"public";
|
|
|
|
String tootVisibility = sharedpreferences.getString(Helper.SET_TOOT_VISIBILITY + "@" + account.getAcct() + "@" + account.getInstance(), defaultVisibility);
|
2017-08-07 10:20:44 +02:00
|
|
|
switch (tootVisibility) {
|
|
|
|
case "public":
|
2017-10-28 14:32:18 +02:00
|
|
|
set_toot_visibility.setImageResource(R.drawable.ic_public);
|
2017-08-07 10:20:44 +02:00
|
|
|
break;
|
|
|
|
case "unlisted":
|
2017-10-28 14:54:28 +02:00
|
|
|
set_toot_visibility.setImageResource(R.drawable.ic_lock_open);
|
2017-08-07 10:20:44 +02:00
|
|
|
break;
|
|
|
|
case "private":
|
2017-10-28 14:32:18 +02:00
|
|
|
set_toot_visibility.setImageResource(R.drawable.ic_lock_outline);
|
2017-08-07 10:20:44 +02:00
|
|
|
break;
|
|
|
|
case "direct":
|
2017-10-11 14:16:56 +02:00
|
|
|
set_toot_visibility.setImageResource(R.drawable.ic_mail_outline);
|
2017-08-07 10:20:44 +02:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}else {
|
|
|
|
toot_visibility_container.setVisibility(View.GONE);
|
|
|
|
}
|
|
|
|
|
|
|
|
set_toot_visibility.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
2018-11-03 14:45:55 +01:00
|
|
|
final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
|
|
|
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
|
|
|
|
int style;
|
|
|
|
if (theme == Helper.THEME_DARK) {
|
|
|
|
style = R.style.DialogDark;
|
|
|
|
} else if (theme == Helper.THEME_BLACK){
|
|
|
|
style = R.style.DialogBlack;
|
|
|
|
}else {
|
|
|
|
style = R.style.Dialog;
|
|
|
|
}
|
|
|
|
AlertDialog.Builder dialog = new AlertDialog.Builder(context, style);
|
2017-08-07 10:20:44 +02:00
|
|
|
dialog.setTitle(R.string.toot_visibility_tilte);
|
|
|
|
final String[] stringArray = getResources().getStringArray(R.array.toot_visibility);
|
|
|
|
final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(context, android.R.layout.simple_list_item_1, stringArray);
|
|
|
|
dialog.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(DialogInterface dialog, int position) {
|
|
|
|
dialog.dismiss();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
dialog.setAdapter(arrayAdapter, new DialogInterface.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(DialogInterface dialog, int position) {
|
|
|
|
String visibility = "public";
|
|
|
|
|
|
|
|
switch (position){
|
|
|
|
case 0:
|
|
|
|
visibility = "public";
|
2017-10-28 14:32:18 +02:00
|
|
|
set_toot_visibility.setImageResource(R.drawable.ic_public);
|
2017-08-07 10:20:44 +02:00
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
visibility = "unlisted";
|
2017-10-28 14:54:28 +02:00
|
|
|
set_toot_visibility.setImageResource(R.drawable.ic_lock_open);
|
2017-08-07 10:20:44 +02:00
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
visibility = "private";
|
2017-10-28 14:32:18 +02:00
|
|
|
set_toot_visibility.setImageResource(R.drawable.ic_lock_outline);
|
2017-08-07 10:20:44 +02:00
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
visibility = "direct";
|
2017-10-11 14:16:56 +02:00
|
|
|
set_toot_visibility.setImageResource(R.drawable.ic_mail_outline);
|
2017-08-07 10:20:44 +02:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
if( account != null) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putString(Helper.SET_TOOT_VISIBILITY + "@" + account.getAcct() + "@" + account.getInstance(), visibility);
|
|
|
|
editor.apply();
|
2018-11-25 10:45:16 +01:00
|
|
|
Toasty.info(context, context.getString(R.string.toast_visibility_changed, "@" + account.getAcct() + "@" + account.getInstance()), Toast.LENGTH_SHORT).show();
|
2017-08-07 10:20:44 +02:00
|
|
|
}else {
|
2018-11-25 10:45:16 +01:00
|
|
|
Toasty.error(context, context.getString(R.string.toast_error),Toast.LENGTH_LONG).show();
|
2017-08-07 10:20:44 +02:00
|
|
|
}
|
2017-10-28 19:48:19 +02:00
|
|
|
|
2017-08-07 10:20:44 +02:00
|
|
|
dialog.dismiss();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
dialog.show();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2017-08-12 13:48:06 +02:00
|
|
|
|
2017-11-03 15:00:53 +01:00
|
|
|
boolean trans_forced = sharedpreferences.getBoolean(Helper.SET_TRANS_FORCED, false);
|
|
|
|
final CheckBox set_trans_forced = rootView.findViewById(R.id.set_trans_forced);
|
|
|
|
set_trans_forced.setChecked(trans_forced);
|
|
|
|
set_trans_forced.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_TRANS_FORCED, set_trans_forced.isChecked());
|
|
|
|
editor.apply();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2018-08-15 11:24:57 +02:00
|
|
|
|
|
|
|
boolean split_toot = sharedpreferences.getBoolean(Helper.SET_AUTOMATICALLY_SPLIT_TOOTS, false);
|
|
|
|
final CheckBox set_split_toot = rootView.findViewById(R.id.set_automatically_split_toot);
|
|
|
|
set_split_toot.setChecked(split_toot);
|
|
|
|
set_split_toot.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putBoolean(Helper.SET_AUTOMATICALLY_SPLIT_TOOTS, set_split_toot.isChecked());
|
|
|
|
editor.apply();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2018-01-24 11:15:45 +01:00
|
|
|
//Translators
|
2017-10-28 11:02:37 +02:00
|
|
|
final Spinner translation_layout_spinner = rootView.findViewById(R.id.translation_layout_spinner);
|
2017-11-11 10:05:37 +01:00
|
|
|
ArrayAdapter<CharSequence> adapterTrans = ArrayAdapter.createFromResource(getContext(),
|
2017-08-25 15:53:04 +02:00
|
|
|
R.array.settings_translation, android.R.layout.simple_spinner_item);
|
|
|
|
translation_layout_spinner.setAdapter(adapterTrans);
|
|
|
|
|
2017-11-03 15:00:53 +01:00
|
|
|
int positionSpinnerTrans;
|
|
|
|
switch (sharedpreferences.getInt(Helper.SET_TRANSLATOR, Helper.TRANS_YANDEX)){
|
|
|
|
case Helper.TRANS_YANDEX:
|
2018-11-28 16:34:51 +01:00
|
|
|
positionSpinnerTrans = 0;
|
2018-08-14 16:20:53 +02:00
|
|
|
your_api_key.setVisibility(View.VISIBLE);
|
|
|
|
your_api_key.setText(sharedpreferences.getString(Helper.SET_YANDEX_API_KEY, ""));
|
2017-11-03 15:00:53 +01:00
|
|
|
break;
|
2018-08-14 16:20:53 +02:00
|
|
|
case Helper.TRANS_DEEPL:
|
2017-11-03 15:00:53 +01:00
|
|
|
positionSpinnerTrans = 1;
|
2018-08-14 16:20:53 +02:00
|
|
|
your_api_key.setVisibility(View.VISIBLE);
|
|
|
|
your_api_key.setText(sharedpreferences.getString(Helper.SET_DEEPL_API_KEY, ""));
|
|
|
|
break;
|
|
|
|
case Helper.TRANS_NONE:
|
|
|
|
positionSpinnerTrans = 2;
|
|
|
|
your_api_key.setVisibility(View.GONE);
|
2017-11-03 15:00:53 +01:00
|
|
|
break;
|
|
|
|
default:
|
2018-08-14 16:20:53 +02:00
|
|
|
your_api_key.setVisibility(View.VISIBLE);
|
2017-11-03 15:00:53 +01:00
|
|
|
positionSpinnerTrans = 0;
|
|
|
|
}
|
2018-11-30 17:41:43 +01:00
|
|
|
translation_layout_spinner.setSelection(positionSpinnerTrans);
|
2017-08-25 15:53:04 +02:00
|
|
|
translation_layout_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
|
|
|
@Override
|
|
|
|
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
2018-11-29 07:37:41 +01:00
|
|
|
if( count3 > 0 ) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
switch (position) {
|
|
|
|
case 0:
|
|
|
|
your_api_key.setVisibility(View.VISIBLE);
|
|
|
|
editor.putInt(Helper.SET_TRANSLATOR, Helper.TRANS_YANDEX);
|
|
|
|
editor.apply();
|
|
|
|
if (sharedpreferences.getString(Helper.SET_DEEPL_API_KEY, null) != null)
|
|
|
|
your_api_key.setText(sharedpreferences.getString(Helper.SET_DEEPL_API_KEY, ""));
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
your_api_key.setVisibility(View.VISIBLE);
|
|
|
|
editor.putInt(Helper.SET_TRANSLATOR, Helper.TRANS_DEEPL);
|
|
|
|
editor.apply();
|
|
|
|
if (sharedpreferences.getString(SET_YANDEX_API_KEY, null) != null)
|
|
|
|
your_api_key.setText(sharedpreferences.getString(SET_YANDEX_API_KEY, null));
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
your_api_key.setVisibility(View.GONE);
|
|
|
|
set_trans_forced.isChecked();
|
|
|
|
editor.putBoolean(Helper.SET_TRANS_FORCED, false);
|
|
|
|
editor.putInt(Helper.SET_TRANSLATOR, Helper.TRANS_NONE);
|
|
|
|
editor.apply();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
if( getActivity() != null)
|
|
|
|
getActivity().recreate();
|
|
|
|
Intent intent = new Intent(context, MainActivity.class);
|
2018-12-16 15:11:58 +01:00
|
|
|
intent.putExtra(INTENT_ACTION, BACK_TO_SETTINGS);
|
2018-11-29 07:37:41 +01:00
|
|
|
startActivity(intent);
|
2017-08-25 15:53:04 +02:00
|
|
|
}
|
2018-11-29 07:37:41 +01:00
|
|
|
count3++;
|
2017-08-25 15:53:04 +02:00
|
|
|
}
|
|
|
|
@Override
|
|
|
|
public void onNothingSelected(AdapterView<?> parent) {
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2018-01-24 11:15:45 +01:00
|
|
|
//Resize
|
|
|
|
final Spinner resize_layout_spinner = rootView.findViewById(R.id.set_resize_picture);
|
|
|
|
ArrayAdapter<CharSequence> adapterResize = ArrayAdapter.createFromResource(getContext(),
|
|
|
|
R.array.settings_resize_picture, android.R.layout.simple_spinner_item);
|
|
|
|
resize_layout_spinner.setAdapter(adapterResize);
|
2019-01-27 14:32:34 +01:00
|
|
|
int positionSpinnerResize = sharedpreferences.getInt(Helper.SET_PICTURE_RESIZE, Helper.S_NO);
|
2018-11-30 17:41:43 +01:00
|
|
|
resize_layout_spinner.setSelection(positionSpinnerResize);
|
2018-01-24 11:15:45 +01:00
|
|
|
resize_layout_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
|
|
|
@Override
|
|
|
|
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
2018-11-29 07:37:41 +01:00
|
|
|
if( count4 > 0) {
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putInt(Helper.SET_PICTURE_RESIZE, position);
|
|
|
|
editor.apply();
|
|
|
|
}
|
|
|
|
count4++;
|
2018-01-24 11:15:45 +01:00
|
|
|
}
|
|
|
|
@Override
|
|
|
|
public void onNothingSelected(AdapterView<?> parent) {
|
|
|
|
}
|
|
|
|
});
|
2017-06-24 11:38:18 +02:00
|
|
|
return rootView;
|
|
|
|
}
|
|
|
|
|
2017-08-07 10:20:44 +02:00
|
|
|
|
2018-09-19 10:13:28 +02:00
|
|
|
|
2017-06-27 19:18:46 +02:00
|
|
|
@Override
|
|
|
|
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
|
|
if (resultCode != RESULT_OK) return;
|
2018-09-16 19:05:54 +02:00
|
|
|
|
2017-06-27 19:18:46 +02:00
|
|
|
if(requestCode == ACTIVITY_CHOOSE_FILE) {
|
|
|
|
Uri treeUri = data.getData();
|
2018-09-19 10:13:28 +02:00
|
|
|
Uri docUri = null;
|
|
|
|
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
|
|
|
|
docUri = DocumentsContract.buildDocumentUriUsingTree(treeUri,
|
|
|
|
DocumentsContract.getTreeDocumentId(treeUri));
|
|
|
|
}
|
2018-09-16 19:05:54 +02:00
|
|
|
try{
|
|
|
|
String path = getPath(context, docUri);
|
|
|
|
if( path == null )
|
|
|
|
path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath();
|
|
|
|
final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
editor.putString(Helper.SET_FOLDER_RECORD, path);
|
|
|
|
editor.apply();
|
|
|
|
set_folder.setText(path);
|
|
|
|
}catch (Exception e){
|
2018-11-25 10:45:16 +01:00
|
|
|
Toasty.error(context, context.getString(R.string.toast_error),Toast.LENGTH_LONG).show();
|
2018-09-16 19:05:54 +02:00
|
|
|
}
|
|
|
|
|
2017-06-27 19:18:46 +02:00
|
|
|
}
|
|
|
|
}
|
2017-06-24 11:38:18 +02:00
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onCreate(Bundle saveInstance) {
|
|
|
|
super.onCreate(saveInstance);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onAttach(Context context) {
|
|
|
|
super.onAttach(context);
|
|
|
|
this.context = context;
|
|
|
|
}
|
|
|
|
|
2017-06-27 19:18:46 +02:00
|
|
|
//From: https://gist.github.com/asifmujteba/d89ba9074bc941de1eaa#file-asfurihelper
|
|
|
|
@TargetApi(Build.VERSION_CODES.KITKAT)
|
|
|
|
public static String getPath(final Context context, final Uri uri) {
|
|
|
|
final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
|
|
|
|
// DocumentProvider
|
|
|
|
if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {
|
|
|
|
// ExternalStorageProvider
|
|
|
|
if (isExternalStorageDocument(uri)) {
|
|
|
|
final String docId = DocumentsContract.getDocumentId(uri);
|
|
|
|
final String[] split = docId.split(":");
|
|
|
|
final String type = split[0];
|
|
|
|
|
|
|
|
if ("primary".equalsIgnoreCase(type)) {
|
|
|
|
return Environment.getExternalStorageDirectory() + "/" + split[1];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// DownloadsProvider
|
|
|
|
else if (isDownloadsDocument(uri)) {
|
|
|
|
|
|
|
|
final String id = DocumentsContract.getDocumentId(uri);
|
|
|
|
final Uri contentUri = ContentUris.withAppendedId(
|
|
|
|
Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));
|
|
|
|
|
|
|
|
return getDataColumn(context, contentUri, null, null);
|
|
|
|
}
|
|
|
|
// MediaProvider
|
|
|
|
else if (isMediaDocument(uri)) {
|
|
|
|
final String docId = DocumentsContract.getDocumentId(uri);
|
|
|
|
final String[] split = docId.split(":");
|
|
|
|
final String type = split[0];
|
|
|
|
|
|
|
|
Uri contentUri = null;
|
|
|
|
if ("image".equals(type)) {
|
|
|
|
contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
|
|
|
|
} else if ("video".equals(type)) {
|
|
|
|
contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
|
|
|
|
} else if ("audio".equals(type)) {
|
|
|
|
contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
|
|
|
|
}
|
|
|
|
|
|
|
|
final String selection = "_id=?";
|
|
|
|
final String[] selectionArgs = new String[] {
|
|
|
|
split[1]
|
|
|
|
};
|
|
|
|
return getDataColumn(context, contentUri, selection, selectionArgs);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// MediaStore (and general)
|
|
|
|
else if ("content".equalsIgnoreCase(uri.getScheme())) {
|
|
|
|
|
|
|
|
// Return the remote address
|
|
|
|
if (isGooglePhotosUri(uri))
|
|
|
|
return uri.getLastPathSegment();
|
|
|
|
|
|
|
|
return getDataColumn(context, uri, null, null);
|
|
|
|
}
|
|
|
|
// File
|
|
|
|
else if ("file".equalsIgnoreCase(uri.getScheme())) {
|
|
|
|
return uri.getPath();
|
|
|
|
}
|
|
|
|
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
public static String getDataColumn(Context context, Uri uri, String selection,
|
|
|
|
String[] selectionArgs) {
|
|
|
|
|
|
|
|
Cursor cursor = null;
|
|
|
|
final String column = "_data";
|
|
|
|
final String[] projection = {
|
|
|
|
column
|
|
|
|
};
|
|
|
|
|
|
|
|
try {
|
|
|
|
cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs,
|
|
|
|
null);
|
|
|
|
if (cursor != null && cursor.moveToFirst()) {
|
|
|
|
final int index = cursor.getColumnIndexOrThrow(column);
|
|
|
|
return cursor.getString(index);
|
|
|
|
}
|
|
|
|
} finally {
|
|
|
|
if (cursor != null)
|
|
|
|
cursor.close();
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param uri The Uri to check.
|
|
|
|
* @return Whether the Uri authority is ExternalStorageProvider.
|
|
|
|
*/
|
|
|
|
public static boolean isExternalStorageDocument(Uri uri) {
|
|
|
|
return "com.android.externalstorage.documents".equals(uri.getAuthority());
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param uri The Uri to check.
|
|
|
|
* @return Whether the Uri authority is DownloadsProvider.
|
|
|
|
*/
|
|
|
|
public static boolean isDownloadsDocument(Uri uri) {
|
|
|
|
return "com.android.providers.downloads.documents".equals(uri.getAuthority());
|
|
|
|
}
|
2017-06-24 11:38:18 +02:00
|
|
|
|
2017-06-27 19:18:46 +02:00
|
|
|
/**
|
|
|
|
* @param uri The Uri to check.
|
|
|
|
* @return Whether the Uri authority is MediaProvider.
|
|
|
|
*/
|
|
|
|
public static boolean isMediaDocument(Uri uri) {
|
|
|
|
return "com.android.providers.media.documents".equals(uri.getAuthority());
|
|
|
|
}
|
2017-06-24 11:38:18 +02:00
|
|
|
|
2017-06-27 19:18:46 +02:00
|
|
|
/**
|
|
|
|
* @param uri The Uri to check.
|
|
|
|
* @return Whether the Uri authority is Google Photos.
|
|
|
|
*/
|
|
|
|
public static boolean isGooglePhotosUri(Uri uri) {
|
|
|
|
return "com.google.android.apps.photos.content".equals(uri.getAuthority());
|
|
|
|
}
|
2017-06-24 11:38:18 +02:00
|
|
|
|
|
|
|
}
|