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 @@ + + + + + + + + + + + + + + + + + + + + +