diff --git a/.idea/misc.xml b/.idea/misc.xml
index 63f7e50d3..ffcdac057 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -55,7 +55,7 @@
-
+
diff --git a/.idea/modules.xml b/.idea/modules.xml
index 36eb0b784..944643c67 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -2,8 +2,8 @@
-
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index 830674470..35eb1ddfb 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -2,6 +2,5 @@
-
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index ea6654ec3..a346f2fe7 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -7,8 +7,8 @@ android {
applicationId "fr.gouv.etalab.mastodon"
minSdkVersion 15
targetSdkVersion 25
- versionCode 43
- versionName "1.4.3"
+ versionCode 44
+ versionName "1.4.4"
}
buildTypes {
release {
diff --git a/app/mastodon-etalab-v1.4.4.apk b/app/mastodon-etalab-v1.4.4.apk
new file mode 100644
index 000000000..968d2ccec
Binary files /dev/null and b/app/mastodon-etalab-v1.4.4.apk differ
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/LoginActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/LoginActivity.java
index 494c2893e..1df184dc8 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/LoginActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/LoginActivity.java
@@ -23,7 +23,6 @@ import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.TextWatcher;
-import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
@@ -74,6 +73,7 @@ public class LoginActivity extends AppCompatActivity {
private static boolean client_id_for_webview = false;
private String instance;
private AutoCompleteTextView login_instance;
+ boolean isLoadingInstance = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -105,16 +105,17 @@ public class LoginActivity extends AppCompatActivity {
}
@Override
public void afterTextChanged(Editable s) {
- if( s.length() > 2 ){
- if( s.toString().trim().startsWith("mas") && (!s.toString().trim().contains(".") || s.toString().trim().equals("mastodon.")) )
- return;
+ if( s.length() > 2 && !isLoadingInstance){
String action = "/instances/search";
RequestParams parameters = new RequestParams();
parameters.add("q", s.toString().trim());
parameters.add("count", String.valueOf(5));
+ parameters.add("name", String.valueOf(true));
+ isLoadingInstance = true;
new KinrarClient().get(action, parameters, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
+ isLoadingInstance = false;
String response = new String(responseBody);
String[] instances;
try {
@@ -132,12 +133,14 @@ public class LoginActivity extends AppCompatActivity {
ArrayAdapter adapter =
new ArrayAdapter<>(LoginActivity.this, android.R.layout.simple_list_item_1, instances);
login_instance.setAdapter(adapter);
- login_instance.showDropDown();
+ if( login_instance.hasFocus())
+ login_instance.showDropDown();
- } catch (JSONException ignored) {}
+ } catch (JSONException ignored) {isLoadingInstance = false;}
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
+ isLoadingInstance = false;
}
});
}
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java
index 07be785da..17bc2d870 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java
@@ -39,6 +39,7 @@ import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.Html;
import android.text.TextWatcher;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
@@ -103,8 +104,8 @@ import fr.gouv.etalab.mastodon.interfaces.OnRetrieveAttachmentInterface;
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveSearcAccountshInterface;
import fr.gouv.etalab.mastodon.jobs.ScheduledTootsSyncJob;
import fr.gouv.etalab.mastodon.sqlite.AccountDAO;
-import fr.gouv.etalab.mastodon.sqlite.StatusStoredDAO;
import fr.gouv.etalab.mastodon.sqlite.Sqlite;
+import fr.gouv.etalab.mastodon.sqlite.StatusStoredDAO;
import mastodon.etalab.gouv.fr.mastodon.R;
import static fr.gouv.etalab.mastodon.helper.Helper.HOME_TIMELINE_INTENT;
@@ -336,8 +337,21 @@ public class TootActivity extends AppCompatActivity implements OnRetrieveSearcAc
toot_visibility.setImageResource(R.drawable.ic_action_lock_closed);
}else {
if( tootReply == null){
- visibility = "public";
- toot_visibility.setImageResource(R.drawable.ic_action_globe);
+ visibility = sharedpreferences.getString(Helper.SET_TOOT_VISIBILITY + "@" + account.getAcct() + "@" + account.getInstance(), "public");
+ switch (visibility) {
+ case "public":
+ toot_visibility.setImageResource(R.drawable.ic_action_globe);
+ break;
+ case "unlisted":
+ toot_visibility.setImageResource(R.drawable.ic_action_lock_open);
+ break;
+ case "private":
+ toot_visibility.setImageResource(R.drawable.ic_action_lock_closed);
+ break;
+ case "direct":
+ toot_visibility.setImageResource(R.drawable.ic_local_post_office);
+ break;
+ }
}
}
@@ -967,7 +981,19 @@ public class TootActivity extends AppCompatActivity implements OnRetrieveSearcAc
//Retrieves attachments
restored = id;
attachments = status.getMedia_attachments();
- toot_picture_container.removeAllViews();
+ int childCount = toot_picture_container.getChildCount();
+ ArrayList toRemove = new ArrayList<>();
+ if( childCount > 0 ){
+ for(int i = 0 ; i < childCount ; i++){
+ if( toot_picture_container.getChildAt(i) instanceof ImageView)
+ toRemove.add((ImageView) toot_picture_container.getChildAt(i));
+ }
+ if( toRemove.size() > 0){
+ for(ImageView imageView: toRemove)
+ toot_picture_container.removeView(imageView);
+ }
+ toRemove.clear();
+ }
loading_picture.setVisibility(View.GONE);
if( attachments != null && attachments.size() > 0){
toot_picture_container.setVisibility(View.VISIBLE);
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/WebviewActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/WebviewActivity.java
index bc48f72c9..7e11c7cff 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/WebviewActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/WebviewActivity.java
@@ -52,7 +52,7 @@ import static fr.gouv.etalab.mastodon.helper.Helper.manageDownloads;
public class WebviewActivity extends AppCompatActivity {
private String url;
-
+ private WebView webView;
@Override
@@ -74,7 +74,7 @@ public class WebviewActivity extends AppCompatActivity {
if( getSupportActionBar() != null)
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
- WebView webView = Helper.initializeWebview(WebviewActivity.this, R.id.webview);
+ webView = Helper.initializeWebview(WebviewActivity.this, R.id.webview);
setTitle("");
FrameLayout webview_container = (FrameLayout) findViewById(R.id.webview_container);
@@ -146,6 +146,15 @@ public class WebviewActivity extends AppCompatActivity {
this.url = newUrl;
}
+ @Override
+ public void onBackPressed() {
+ if (webView.canGoBack()){
+ webView.goBack();
+ } else {
+ super.onBackPressed();
+ }
+ }
+
@Override
public void onDestroy(){
super.onDestroy();
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java
index bf43022ee..c0fa02b24 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java
@@ -1065,7 +1065,7 @@ public class API {
RequestParams params = new RequestParams();
params.put("file", inputStream);
- post("/media", 120000, params, new JsonHttpResponseHandler() {
+ post("/media", 240000, params, new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/KinrarClient.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/KinrarClient.java
index 1b28eb44f..7b6b3a166 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/client/KinrarClient.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/KinrarClient.java
@@ -54,7 +54,7 @@ public class KinrarClient {
private String getAbsoluteUrl(String action) {
- return "https://instances.social/api/1.0/" + action;
+ return "https://instances.social/api/1.0" + action;
}
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/NotificationsListAdapter.java b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/NotificationsListAdapter.java
index 658255b44..a0a8c34b4 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/NotificationsListAdapter.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/NotificationsListAdapter.java
@@ -365,6 +365,8 @@ public class NotificationsListAdapter extends BaseAdapter implements OnPostActio
}else {
holder.notification_status_container.setVisibility(View.GONE);
+ holder.notification_account_username.setCompoundDrawables( null, null, null, null);
+ holder.card_status_container.setOnClickListener(null);
}
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 e6d4e24dc..0f5b28840 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
@@ -26,12 +26,12 @@ import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
+import android.os.CountDownTimer;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.CardView;
import android.text.Html;
import android.text.SpannableString;
import android.text.method.LinkMovementMethod;
-import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -63,21 +63,22 @@ import java.util.ArrayList;
import java.util.List;
import fr.gouv.etalab.mastodon.activities.MediaActivity;
+import fr.gouv.etalab.mastodon.activities.ShowAccountActivity;
import fr.gouv.etalab.mastodon.activities.ShowConversationActivity;
import fr.gouv.etalab.mastodon.activities.TootActivity;
-import fr.gouv.etalab.mastodon.client.Entities.Error;
-import fr.gouv.etalab.mastodon.client.PatchBaseImageDownloader;
-import fr.gouv.etalab.mastodon.helper.Helper;
-import fr.gouv.etalab.mastodon.interfaces.OnTranslatedInterface;
-import fr.gouv.etalab.mastodon.translation.YandexQuery;
-import mastodon.etalab.gouv.fr.mastodon.R;
-import fr.gouv.etalab.mastodon.activities.ShowAccountActivity;
import fr.gouv.etalab.mastodon.asynctasks.PostActionAsyncTask;
import fr.gouv.etalab.mastodon.asynctasks.RetrieveFeedsAsyncTask;
import fr.gouv.etalab.mastodon.client.API;
import fr.gouv.etalab.mastodon.client.Entities.Attachment;
+import fr.gouv.etalab.mastodon.client.Entities.Error;
import fr.gouv.etalab.mastodon.client.Entities.Status;
+import fr.gouv.etalab.mastodon.client.PatchBaseImageDownloader;
+import fr.gouv.etalab.mastodon.helper.Helper;
import fr.gouv.etalab.mastodon.interfaces.OnPostActionInterface;
+import fr.gouv.etalab.mastodon.interfaces.OnTranslatedInterface;
+import fr.gouv.etalab.mastodon.translation.YandexQuery;
+import mastodon.etalab.gouv.fr.mastodon.R;
+
import static fr.gouv.etalab.mastodon.activities.MainActivity.currentLocale;
import static fr.gouv.etalab.mastodon.helper.Helper.changeDrawableColor;
@@ -505,6 +506,31 @@ public class StatusListAdapter extends BaseAdapter implements OnPostActionInterf
holder.status_show_more.setVisibility(View.GONE);
status.setAttachmentShown(true);
statusListAdapter.notifyDataSetChanged();
+
+ /*
+ Added a Countdown Timer, so that Sensitive (NSFW)
+ 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.
+ -> Default value is set to 5 seconds
+ */
+ final int timeout = sharedpreferences.getInt(Helper.SET_NSFW_TIMEOUT, 5);
+
+ if (timeout > 0) {
+
+ new CountDownTimer((timeout * 1000), 1000) {
+
+ public void onTick(long millisUntilFinished) {
+ }
+
+ public void onFinish() {
+ status.setAttachmentShown(false);
+ holder.status_show_more.setVisibility(View.VISIBLE);
+
+ 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..0804bdc89 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,13 +13,17 @@ 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.app.AlertDialog;
import android.content.ContentUris;
import android.content.Context;
+import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
@@ -28,23 +32,32 @@ 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.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
+import android.widget.ImageView;
import android.widget.LinearLayout;
+import android.widget.SeekBar;
import android.widget.TextView;
+import android.widget.Toast;
import fr.gouv.etalab.mastodon.activities.MainActivity;
+import fr.gouv.etalab.mastodon.activities.TootActivity;
+import fr.gouv.etalab.mastodon.client.Entities.Account;
import fr.gouv.etalab.mastodon.helper.Helper;
+import fr.gouv.etalab.mastodon.sqlite.AccountDAO;
+import fr.gouv.etalab.mastodon.sqlite.Sqlite;
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;
+import static fr.gouv.etalab.mastodon.helper.Helper.changeDrawableColor;
+import static fr.gouv.etalab.mastodon.helper.Helper.loadPPInActionBar;
+import static fr.gouv.etalab.mastodon.helper.Helper.updateHeaderAccountInfo;
/**
@@ -61,7 +74,7 @@ public class SettingsFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- View rootView = inflater.inflate(R.layout.fragment_settings, container, false);
+ final View rootView = inflater.inflate(R.layout.fragment_settings, container, false);
context = getContext();
final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
@@ -213,9 +226,135 @@ 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();
+ }
+ });
+
+
+
+ LinearLayout toot_visibility_container = (LinearLayout) rootView.findViewById(R.id.toot_visibility_container);
+ String prefKeyOauthTokenT = sharedpreferences.getString(Helper.PREF_KEY_OAUTH_TOKEN, null);
+ SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
+ final Account account = new AccountDAO(context, db).getAccountByToken(prefKeyOauthTokenT);
+ final ImageView set_toot_visibility = (ImageView) rootView.findViewById(R.id.set_toot_visibility);
+ //Only displayed for non locked accounts
+ if (account != null && !account.isLocked()) {
+ String tootVisibility = sharedpreferences.getString(Helper.SET_TOOT_VISIBILITY + "@" + account.getAcct() + "@" + account.getInstance(), "public");
+ switch (tootVisibility) {
+ case "public":
+ set_toot_visibility.setImageResource(R.drawable.ic_action_globe);
+ break;
+ case "unlisted":
+ set_toot_visibility.setImageResource(R.drawable.ic_action_lock_open);
+ break;
+ case "private":
+ set_toot_visibility.setImageResource(R.drawable.ic_action_lock_closed);
+ break;
+ case "direct":
+ set_toot_visibility.setImageResource(R.drawable.ic_local_post_office);
+ break;
+ }
+ changeColor();
+ }else {
+ toot_visibility_container.setVisibility(View.GONE);
+ }
+
+ set_toot_visibility.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ AlertDialog.Builder dialog = new AlertDialog.Builder(context);
+ dialog.setTitle(R.string.toot_visibility_tilte);
+ final String[] stringArray = getResources().getStringArray(R.array.toot_visibility);
+ final ArrayAdapter 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";
+ set_toot_visibility.setImageResource(R.drawable.ic_action_globe);
+ break;
+ case 1:
+ visibility = "unlisted";
+ set_toot_visibility.setImageResource(R.drawable.ic_action_lock_open);
+ break;
+ case 2:
+ visibility = "private";
+ set_toot_visibility.setImageResource(R.drawable.ic_action_lock_closed);
+ break;
+ case 3:
+ visibility = "direct";
+ set_toot_visibility.setImageResource(R.drawable.ic_local_post_office);
+ break;
+ }
+ if( account != null) {
+ SharedPreferences.Editor editor = sharedpreferences.edit();
+ editor.putString(Helper.SET_TOOT_VISIBILITY + "@" + account.getAcct() + "@" + account.getInstance(), visibility);
+ editor.apply();
+ Toast.makeText(context, context.getString(R.string.toast_visibility_changed, "@" + account.getAcct() + "@" + account.getInstance()), Toast.LENGTH_SHORT).show();
+ }else {
+ Toast.makeText(context, R.string.toast_error,Toast.LENGTH_SHORT).show();
+ }
+ changeColor();
+ dialog.dismiss();
+ }
+ });
+ dialog.show();
+ }
+ });
+
return rootView;
}
+
+ private void changeColor(){
+ SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE);
+ int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
+ if( theme == Helper.THEME_DARK){
+ changeDrawableColor(context, R.drawable.ic_action_globe,R.color.dark_text);
+ changeDrawableColor(context, R.drawable.ic_action_lock_open,R.color.dark_text);
+ changeDrawableColor(context, R.drawable.ic_action_lock_closed,R.color.dark_text);
+ changeDrawableColor(context, R.drawable.ic_local_post_office,R.color.dark_text);
+ }else {
+ changeDrawableColor(context, R.drawable.ic_action_globe,R.color.black);
+ changeDrawableColor(context, R.drawable.ic_action_lock_open,R.color.black);
+ changeDrawableColor(context, R.drawable.ic_action_lock_closed,R.color.black);
+ changeDrawableColor(context, R.drawable.ic_local_post_office,R.color.black);
+ }
+
+ }
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
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..a7b8f3f91 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;
@@ -206,6 +205,7 @@ public class Helper {
public static final String SET_JAVASCRIPT = "set_javascript";
public static final String SET_COOKIES = "set_cookies";
public static final String SET_FOLDER_RECORD = "set_folder_record";
+ public static final String SET_TOOT_VISIBILITY = "set_toot_visibility";
//End points
public static final String EP_AUTHORIZE = "/oauth/authorize";
diff --git a/app/src/main/res/layout-sw600dp/activity_hashtag.xml b/app/src/main/res/layout-sw600dp/activity_hashtag.xml
new file mode 100644
index 000000000..695e724bf
--- /dev/null
+++ b/app/src/main/res/layout-sw600dp/activity_hashtag.xml
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-sw600dp/activity_main.xml b/app/src/main/res/layout-sw600dp/activity_main.xml
new file mode 100644
index 000000000..cacd3ce97
--- /dev/null
+++ b/app/src/main/res/layout-sw600dp/activity_main.xml
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-sw600dp/activity_search_result.xml b/app/src/main/res/layout-sw600dp/activity_search_result.xml
new file mode 100644
index 000000000..807168967
--- /dev/null
+++ b/app/src/main/res/layout-sw600dp/activity_search_result.xml
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-sw600dp/activity_show_conversation.xml b/app/src/main/res/layout-sw600dp/activity_show_conversation.xml
new file mode 100644
index 000000000..40197cbf3
--- /dev/null
+++ b/app/src/main/res/layout-sw600dp/activity_show_conversation.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-sw600dp/activity_toot.xml b/app/src/main/res/layout-sw600dp/activity_toot.xml
new file mode 100644
index 000000000..0271fc06e
--- /dev/null
+++ b/app/src/main/res/layout-sw600dp/activity_toot.xml
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout-sw600dp/fragment_accounts.xml b/app/src/main/res/layout-sw600dp/fragment_accounts.xml
new file mode 100644
index 000000000..977406ff7
--- /dev/null
+++ b/app/src/main/res/layout-sw600dp/fragment_accounts.xml
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout-sw600dp/fragment_notifications.xml b/app/src/main/res/layout-sw600dp/fragment_notifications.xml
new file mode 100644
index 000000000..d1dd13d21
--- /dev/null
+++ b/app/src/main/res/layout-sw600dp/fragment_notifications.xml
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout-sw600dp/fragment_settings.xml b/app/src/main/res/layout-sw600dp/fragment_settings.xml
new file mode 100644
index 000000000..ed1e601d7
--- /dev/null
+++ b/app/src/main/res/layout-sw600dp/fragment_settings.xml
@@ -0,0 +1,219 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout-sw600dp/fragment_settings_optimization.xml b/app/src/main/res/layout-sw600dp/fragment_settings_optimization.xml
new file mode 100644
index 000000000..81ae780b5
--- /dev/null
+++ b/app/src/main/res/layout-sw600dp/fragment_settings_optimization.xml
@@ -0,0 +1,158 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout-sw600dp/fragment_status.xml b/app/src/main/res/layout-sw600dp/fragment_status.xml
new file mode 100644
index 000000000..9810aa916
--- /dev/null
+++ b/app/src/main/res/layout-sw600dp/fragment_status.xml
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout-sw600dp/tablayout_settings.xml b/app/src/main/res/layout-sw600dp/tablayout_settings.xml
new file mode 100644
index 000000000..96626c558
--- /dev/null
+++ b/app/src/main/res/layout-sw600dp/tablayout_settings.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_media.xml b/app/src/main/res/layout/activity_media.xml
index b81eb23bc..9a7bbe537 100644
--- a/app/src/main/res/layout/activity_media.xml
+++ b/app/src/main/res/layout/activity_media.xml
@@ -32,7 +32,7 @@
android:layout_centerInParent="true"
android:visibility="gone"
android:id="@+id/media_video"
- android:layout_width="match_parent"
+ android:layout_width="wrap_content"
android:layout_height="wrap_content" />
diff --git a/app/src/main/res/layout/drawer_notification.xml b/app/src/main/res/layout/drawer_notification.xml
index a8d6d3187..ccca664bf 100644
--- a/app/src/main/res/layout/drawer_notification.xml
+++ b/app/src/main/res/layout/drawer_notification.xml
@@ -32,14 +32,15 @@
android:id="@+id/main_container"
android:orientation="horizontal">
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index e3bae4398..e20faefeb 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -157,6 +157,7 @@
Supprimer le média ?
Votre pouet est vide !
Visibilité du pouet
+ Visibilité des pouets par défaut :
Le pouet a été envoyé !
Vous répondez à ce pouet :
Contenu sensible ?
@@ -252,6 +253,7 @@
Le média a été enregistré !
Une erreur est survenue lors de la traduction !
Brouillon enregistré !
+ La visibilité des pouets a été changée pour le compte %1$s
Optimisation du chargement
Nombre de pouets par chargement
@@ -279,6 +281,7 @@
Notifier en WIFI seulement
Utiliser le vibreur
Mode nuit
+ Délai d\'affichage NSFW (en secondes, 0 signifie aucun délai)
Modifier le profil
Présentation…
Enregistrer les modifications
diff --git a/app/src/main/res/values-sw600dp/dimens.xml b/app/src/main/res/values-sw600dp/dimens.xml
index 357ee5d34..9063b56fb 100644
--- a/app/src/main/res/values-sw600dp/dimens.xml
+++ b/app/src/main/res/values-sw600dp/dimens.xml
@@ -1,8 +1,8 @@
- 5dp
- 200dp
- 100dp
- 20dp
- 15dp
+ 20dp
+ 20dp
+ 20dp
+ 30dp
+ 16dp
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 920f3573f..345349bf2 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -160,6 +160,7 @@
Delete this media?
Your toot is empty!
Visibility of the toot
+ Visibility of the toots by default:
The toot has been sent!
You are replying to this toot:
Sensitive content?
@@ -258,7 +259,7 @@
The media has been saved!
An error occurred while translating!
Draft saved!
-
+ Visibility of the toots has been changed for the account %1$s
Optimisation of loading
Number of toots per load
@@ -285,6 +286,7 @@
Notify in WIFI only
Silent Notifications
Night mode
+ NSFW view timeout (seconds, 0 means off)
Edit profile
Bio…
Save changes