From 21da69eb7fcb04368d089f72e46e44f32eded1de Mon Sep 17 00:00:00 2001 From: tom79 Date: Tue, 4 Jul 2017 21:15:11 +0200 Subject: [PATCH] Dark theme by default + voice input for toots --- .../mastodon/activities/AboutActivity.java | 2 +- .../mastodon/activities/HashTagActivity.java | 2 +- .../mastodon/activities/InstanceActivity.java | 2 +- .../mastodon/activities/LoginActivity.java | 2 +- .../mastodon/activities/MainActivity.java | 2 +- .../mastodon/activities/MediaActivity.java | 2 +- .../mastodon/activities/PrivacyActivity.java | 2 +- .../activities/SearchResultActivity.java | 2 +- .../activities/ShowAccountActivity.java | 4 +- .../activities/ShowConversationActivity.java | 2 +- .../mastodon/activities/TootActivity.java | 35 +- .../mastodon/activities/WebviewActivity.java | 2 +- .../activities/WebviewConnectActivity.java | 2 +- .../drawers/NotificationsListAdapter.java | 2 +- .../mastodon/drawers/StatusListAdapter.java | 25 +- .../fragments/DisplayAccountsFragment.java | 2 +- .../DisplayFollowRequestSentFragment.java | 2 +- .../DisplayNotificationsFragment.java | 2 +- .../fragments/DisplayStatusFragment.java | 2 +- .../mastodon/fragments/SettingsFragment.java | 2 +- .../gouv/etalab/mastodon/helper/Helper.java | 3 +- .../main/res/drawable-hdpi/ic_action_mic.png | Bin 0 -> 461 bytes .../main/res/drawable-ldpi/ic_action_mic.png | Bin 0 -> 279 bytes .../main/res/drawable-mdpi/ic_action_mic.png | Bin 0 -> 341 bytes .../main/res/drawable-xhdpi/ic_action_mic.png | Bin 0 -> 495 bytes .../res/drawable-xxhdpi/ic_action_mic.png | Bin 0 -> 880 bytes .../res/drawable-xxxhdpi/ic_action_mic.png | Bin 0 -> 2653 bytes app/src/main/res/layout/activity_login.xml | 14 +- .../main/res/layout/activity_show_account.xml | 2 +- app/src/main/res/layout/drawer_account.xml | 2 +- .../res/layout/drawer_account_main_search.xml | 6 +- app/src/main/res/layout/drawer_status.xml | 25 +- .../res/layout/drawer_status_main_search.xml | 6 +- app/src/main/res/layout/drawer_tag.xml | 4 +- app/src/main/res/layout/nav_header_main.xml | 2 +- .../main/res/menu/activity_main_drawer.xml | 4 +- app/src/main/res/menu/main_media.xml | 2 +- app/src/main/res/menu/main_toot.xml | 9 + app/src/main/res/values-fr/strings.xml | 308 ++++++++++++ app/src/main/res/values/strings.xml | 453 +++++++++--------- 40 files changed, 660 insertions(+), 278 deletions(-) create mode 100644 app/src/main/res/drawable-hdpi/ic_action_mic.png create mode 100644 app/src/main/res/drawable-ldpi/ic_action_mic.png create mode 100644 app/src/main/res/drawable-mdpi/ic_action_mic.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_action_mic.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_action_mic.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_action_mic.png create mode 100644 app/src/main/res/menu/main_toot.xml create mode 100644 app/src/main/res/values-fr/strings.xml diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/AboutActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/AboutActivity.java index 084748df6..1837c6abe 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/AboutActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/AboutActivity.java @@ -51,7 +51,7 @@ public class AboutActivity extends AppCompatActivity implements OnRetrieveSearcA protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE); - int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_LIGHT); + int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); if( theme == Helper.THEME_LIGHT){ setTheme(R.style.AppTheme); }else { diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/HashTagActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/HashTagActivity.java index d17917398..091df16d6 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/HashTagActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/HashTagActivity.java @@ -66,7 +66,7 @@ public class HashTagActivity extends AppCompatActivity implements OnRetrieveFeed SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE); - int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_LIGHT); + int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); if( theme == Helper.THEME_LIGHT){ setTheme(R.style.AppTheme); }else { diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/InstanceActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/InstanceActivity.java index 498b7f501..a964d10d4 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/InstanceActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/InstanceActivity.java @@ -57,7 +57,7 @@ public class InstanceActivity extends AppCompatActivity implements OnRetrieveIns protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE); - int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_LIGHT); + int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); if( theme == Helper.THEME_LIGHT){ setTheme(R.style.AppTheme); }else { 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 3e03806aa..aef1c780b 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 @@ -70,7 +70,7 @@ public class LoginActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE); - int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_LIGHT); + int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); if( theme == Helper.THEME_LIGHT){ setTheme(R.style.AppTheme); }else { diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainActivity.java index 70f811182..0bad0f44e 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainActivity.java @@ -105,7 +105,7 @@ public class MainActivity extends AppCompatActivity SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE); - int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_LIGHT); + int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); if( theme == Helper.THEME_LIGHT){ setTheme(R.style.AppTheme_NoActionBar); }else { diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/MediaActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/MediaActivity.java index 77ac52e86..0274125f1 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/MediaActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/MediaActivity.java @@ -107,7 +107,7 @@ public class MediaActivity extends AppCompatActivity { super.onCreate(savedInstanceState); SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE); - int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_LIGHT); + int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); if( theme == Helper.THEME_LIGHT){ setTheme(R.style.AppTheme); }else { diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/PrivacyActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/PrivacyActivity.java index 2339299f0..ea0d71a90 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/PrivacyActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/PrivacyActivity.java @@ -35,7 +35,7 @@ public class PrivacyActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE); - int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_LIGHT); + int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); if( theme == Helper.THEME_LIGHT){ setTheme(R.style.AppTheme); }else { diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/SearchResultActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/SearchResultActivity.java index 6cfa31864..df5a83384 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/SearchResultActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/SearchResultActivity.java @@ -53,7 +53,7 @@ public class SearchResultActivity extends AppCompatActivity implements OnRetriev protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE); - int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_LIGHT); + int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); if( theme == Helper.THEME_LIGHT){ setTheme(R.style.AppTheme); }else { diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowAccountActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowAccountActivity.java index b6173a3fd..db601bc55 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowAccountActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowAccountActivity.java @@ -106,7 +106,7 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE); - int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_LIGHT); + int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); if( theme == Helper.THEME_LIGHT){ setTheme(R.style.AppTheme); }else { @@ -140,7 +140,7 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi tabLayout = (TabLayout) findViewById(R.id.account_tabLayout); - tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.status))); + tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.toots))); tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.following))); tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.followers))); diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowConversationActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowConversationActivity.java index 990c92f8a..631864d42 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowConversationActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowConversationActivity.java @@ -64,7 +64,7 @@ public class ShowConversationActivity extends AppCompatActivity implements OnRet super.onCreate(savedInstanceState); SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE); - int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_LIGHT); + int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); if( theme == Helper.THEME_LIGHT){ setTheme(R.style.AppTheme); }else { 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 c187cfdbc..763b3ca2b 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 @@ -16,6 +16,7 @@ package fr.gouv.etalab.mastodon.activities; import android.app.Activity; import android.app.AlertDialog; +import android.content.ActivityNotFoundException; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; @@ -26,12 +27,14 @@ import android.database.sqlite.SQLiteDatabase; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; +import android.speech.RecognizerIntent; import android.support.design.widget.FloatingActionButton; import android.support.v4.content.LocalBroadcastManager; import android.support.v7.app.AppCompatActivity; import android.text.Editable; import android.text.Html; import android.text.TextWatcher; +import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; @@ -58,6 +61,7 @@ import java.io.FileNotFoundException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -119,7 +123,7 @@ public class TootActivity extends AppCompatActivity implements OnRetrieveSearcAc protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE); - int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_LIGHT); + int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); if( theme == Helper.THEME_LIGHT){ setTheme(R.style.AppTheme); }else { @@ -477,6 +481,14 @@ public class TootActivity extends AppCompatActivity implements OnRetrieveSearcAc toot_picture.setEnabled(true); e.printStackTrace(); } + }else if(requestCode == Helper.REQ_CODE_SPEECH_INPUT && resultCode == Activity.RESULT_OK){ + if (null != data) { + + ArrayList result = data + .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); + toot_content.setText(result.get(0)); + toot_content.setSelection(toot_content.getText().length()); + } } } @@ -486,11 +498,32 @@ public class TootActivity extends AppCompatActivity implements OnRetrieveSearcAc case android.R.id.home: finish(); return true; + case R.id.action_microphone: + Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); + intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, + RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); + intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault()); + intent.putExtra(RecognizerIntent.EXTRA_PROMPT, + getString(R.string.speech_prompt)); + try { + startActivityForResult(intent, Helper.REQ_CODE_SPEECH_INPUT); + } catch (ActivityNotFoundException a) { + Toast.makeText(getApplicationContext(), + getString(R.string.speech_not_supported), + Toast.LENGTH_SHORT).show(); + } + return true; default: return super.onOptionsItemSelected(item); } } + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.main_toot, menu); + return true; + } + @Override public void onDestroy(){ super.onDestroy(); 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 8d7127919..45d417111 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 @@ -56,7 +56,7 @@ public class WebviewActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE); - int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_LIGHT); + int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); if( theme == Helper.THEME_LIGHT){ setTheme(R.style.AppTheme); }else { diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/WebviewConnectActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/WebviewConnectActivity.java index f50691469..f04620d97 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/WebviewConnectActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/WebviewConnectActivity.java @@ -59,7 +59,7 @@ public class WebviewConnectActivity extends AppCompatActivity { { super.onCreate(savedInstanceState); SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE); - int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_LIGHT); + int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); if( theme == Helper.THEME_LIGHT){ setTheme(R.style.AppTheme); }else { 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 0790d836e..d51eddfb4 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 @@ -162,7 +162,7 @@ public class NotificationsListAdapter extends BaseAdapter { //Manages theme for icon colors final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); - int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_LIGHT); + int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); if( theme == Helper.THEME_DARK){ changeDrawableColor(context, R.drawable.ic_reply,R.color.dark_text); changeDrawableColor(context, R.drawable.ic_action_more,R.color.dark_text); 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 4b2f2ec2e..ae6a5c854 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 @@ -22,11 +22,13 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.drawable.Drawable; +import android.net.Uri; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; import android.support.v4.content.ContextCompat; import android.text.Html; +import android.text.method.LinkMovementMethod; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -160,11 +162,13 @@ public class StatusListAdapter extends BaseAdapter implements OnPostActionInterf holder.status_reply = (ImageView) convertView.findViewById(R.id.status_reply); holder.status_privacy = (ImageView) convertView.findViewById(R.id.status_privacy); holder.status_translate = (ImageView) convertView.findViewById(R.id.status_translate); + holder.status_content_translated_container = (LinearLayout) convertView.findViewById(R.id.status_content_translated_container); holder.main_container = (LinearLayout) convertView.findViewById(R.id.main_container); holder.status_spoiler_container = (LinearLayout) convertView.findViewById(R.id.status_spoiler_container); holder.status_content_container = (LinearLayout) convertView.findViewById(R.id.status_content_container); holder.status_spoiler = (TextView) convertView.findViewById(R.id.status_spoiler); holder.status_spoiler_button = (Button) convertView.findViewById(R.id.status_spoiler_button); + holder.yandex_translate = (TextView) convertView.findViewById(R.id.yandex_translate); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); @@ -205,21 +209,30 @@ public class StatusListAdapter extends BaseAdapter implements OnPostActionInterf try { if( !status.isTranslated() ){ new YandexQuery(StatusListAdapter.this).getYandexTextview(position, status.getContent(), currentLocale); + }else { + status.setTranslationShown(!status.isTranslationShown()); + statusListAdapter.notifyDataSetChanged(); } - status.setTranslationShown(!status.isTranslationShown()); - statusListAdapter.notifyDataSetChanged(); } catch (JSONException e) { Toast.makeText(context, R.string.toast_error_translate, Toast.LENGTH_LONG).show(); } } }); + + holder.yandex_translate.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://translate.yandex.com/")); + context.startActivity(browserIntent); + } + }); //Toot was translated and user asked to see it if( status.isTranslationShown()){ holder.status_content.setVisibility(View.GONE); - holder.status_content_translated.setVisibility(View.VISIBLE); + holder.status_content_translated_container.setVisibility(View.VISIBLE); }else { //Toot is not translated holder.status_content.setVisibility(View.VISIBLE); - holder.status_content_translated.setVisibility(View.GONE); + holder.status_content_translated_container.setVisibility(View.GONE); } //Hides action bottom bar action when looking to status trough accounts @@ -228,7 +241,7 @@ public class StatusListAdapter extends BaseAdapter implements OnPostActionInterf } //Manages theme for icon colors final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); - int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_LIGHT); + int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); if( theme == Helper.THEME_DARK){ changeDrawableColor(context, R.drawable.ic_reply,R.color.dark_text); changeDrawableColor(context, R.drawable.ic_action_more,R.color.dark_text); @@ -655,6 +668,7 @@ public class StatusListAdapter extends BaseAdapter implements OnPostActionInterf TextView status_content; TextView status_content_translated; + LinearLayout status_content_translated_container; TextView status_account_username; TextView status_account_displayname; ImageView status_account_profile; @@ -682,6 +696,7 @@ public class StatusListAdapter extends BaseAdapter implements OnPostActionInterf LinearLayout status_container2; LinearLayout status_container3; LinearLayout main_container; + TextView yandex_translate; } diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayAccountsFragment.java b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayAccountsFragment.java index 4161fd412..814423f31 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayAccountsFragment.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayAccountsFragment.java @@ -188,7 +188,7 @@ public class DisplayAccountsFragment extends Fragment implements OnRetrieveAccou asyncTask = new RetrieveAccountsAsyncTask(context, type, targetedId, max_id, DisplayAccountsFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } }); - int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_LIGHT); + int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); if( theme == Helper.THEME_LIGHT) { swipeRefreshLayout.setColorSchemeResources(R.color.colorAccent, R.color.colorPrimary, diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayFollowRequestSentFragment.java b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayFollowRequestSentFragment.java index 19a508406..caa73821d 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayFollowRequestSentFragment.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayFollowRequestSentFragment.java @@ -116,7 +116,7 @@ public class DisplayFollowRequestSentFragment extends Fragment implements OnRetr asyncTask = new RetrieveFollowRequestSentAsyncTask(context, max_id, DisplayFollowRequestSentFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } }); - int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_LIGHT); + int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); if( theme == Helper.THEME_LIGHT) { swipeRefreshLayout.setColorSchemeResources(R.color.colorAccent, R.color.colorPrimary, diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayNotificationsFragment.java b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayNotificationsFragment.java index 9e264fb2e..61281d4bd 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayNotificationsFragment.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayNotificationsFragment.java @@ -118,7 +118,7 @@ public class DisplayNotificationsFragment extends Fragment implements OnRetrieve asyncTask = new RetrieveNotificationsAsyncTask(context, null, null, max_id, null, null, DisplayNotificationsFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } }); - int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_LIGHT); + int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); if( theme == Helper.THEME_LIGHT) { swipeRefreshLayout.setColorSchemeResources(R.color.colorAccent, R.color.colorPrimary, diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java index 0b403a626..0b97e366a 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java @@ -203,7 +203,7 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn asyncTask = new RetrieveFeedsAsyncTask(context, type, max_id, DisplayStatusFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } }); - int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_LIGHT); + int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); if( theme == Helper.THEME_LIGHT) { swipeRefreshLayout.setColorSchemeResources(R.color.colorAccent, R.color.colorPrimary, 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 39d103174..8b1e27c35 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 @@ -173,7 +173,7 @@ public class SettingsFragment extends Fragment { file_chooser.setVisibility(View.GONE); } - int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_LIGHT); + int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); final SwitchCompat set_night_mode = (SwitchCompat) rootView.findViewById(R.id.set_night_mode); set_night_mode.setChecked(theme == Helper.THEME_DARK); set_night_mode.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 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 8e3b20d38..d7b690b23 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 @@ -140,6 +140,7 @@ public class Helper { public static final String REDIRECT_CONTENT = "urn:ietf:wg:oauth:2.0:oob"; public static final String REDIRECT_CONTENT_WEB = "mastalab://backtomastalab"; public static final int EXTERNAL_STORAGE_REQUEST_CODE = 84; + public static final int REQ_CODE_SPEECH_INPUT = 132; //Some definitions public static final String CLIENT_NAME = "client_name"; @@ -699,7 +700,7 @@ public class Helper { MenuItem nav_main_com = navigationView.getMenu().findItem(R.id.nav_main_com); MenuItem nav_main_opt= navigationView.getMenu().findItem(R.id.nav_main_opt); final SharedPreferences sharedpreferences = activity.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); - int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_LIGHT); + int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); if( theme == Helper.THEME_DARK){ changeDrawableColor(activity, R.drawable.ic_person_add,R.color.dark_text); changeDrawableColor(activity, R.drawable.ic_person,R.color.dark_text); diff --git a/app/src/main/res/drawable-hdpi/ic_action_mic.png b/app/src/main/res/drawable-hdpi/ic_action_mic.png new file mode 100644 index 0000000000000000000000000000000000000000..4f40d05be438c700b98cec17dba1b0ad417185e3 GIT binary patch literal 461 zcmV;;0W$uHP)-u!qMFh4!ZXNM7nly6~UoMH_^dG#UMI#3lzNl zNq>Pu=$~Avx3_Q(d_zvoy*Zz`F(C z74SmZBEPg0Sc3G34(na0-DMcfq!or4SJZ@}n>=0~gxIBqWXbzKQui+4Wz=!ktMpb8$q zkQe5V+g0vQYdd0&g!4N48*OBM*+)>!Ikw1p84cI>fpf6PH1P^*;1-0L`jGh=>trlA zpYt2p{*+I@SnF?K%q2AD_Gd9Ybm{!oo%j;;&0*2!_&_74V67bpVamEh)qt00000NkvXXu0mjf DmO{>> literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-ldpi/ic_action_mic.png b/app/src/main/res/drawable-ldpi/ic_action_mic.png new file mode 100644 index 0000000000000000000000000000000000000000..aebc267e9530d823adf3ea9a609b42486e487c5b GIT binary patch literal 279 zcmV+y0qFjTP)l`gszx9+`558$Fl={2N-^blP;7cA%|ICUt_qKmks|L_-DX-XprI2ibN z`rb1igkU11l)@%rE&>tzQ?LQv zp8}8lT7n12_?#;QIqMnwwFGA{fHjB|f{68j{aS*UlO+7Hh2R1j#*q1heX*{<0XKep z0>P*rFfZBXOxZS*9L(r*9DAET?G!@=*)Np zo;A&%oEKa#S>H*(t~B(RTY?KHm@gPFIqy}3Y!yGkBR9MQ9}JiufhnJYd7tYf>y(^= z8AvOyIs#kZ@G9mojw)+X)+sxN%Ts1nfXw(>Uk+ME9+@Jm>CPbC>zv nuI2MLfqCEG1xCPp8!F)iHzdf4eXwn!00000NkvXXu0mjf(A0+LQ3yh8>eY#$UZ zuIpe9`N9yp;>d-K<_QVOjyh*r&-t9$uxUfdBeqzHDyF;x5h`kJN{UD1zlYWaT@2=8 zz5RCc@5o=%j+DKLcky_na%{#Edv!*j6)C zU1|-JB<^UdJ}*esI9~g1`Xsdm?^7;31uqJ63p8H&{Ft%oAKPio$tx`*WY;bI5`C>o zUg1CQJ&n-rf2;1ae_p*`zd`zx+S4A}U@rA9!4J$f<@}IX^`6C=z3#UE6t$=GCf(1T z{5;op-RHYo7YUzQ`$0K1{mxX`?~+$GJG5>pG5D$aUG&M}3$m$MhCemG3x2u$fOY=C z{_b1f*eBmBy34h__m%cWZLi-4p4^U6|Mi~b|C5{Y5YINOKZ+CrcAxp~?o4}}v_YX1 OB<<U^e%3aSW-r^>)sF@9030hURTr ztxnug-ESXgZAn|({b)+PLO?-~_;Cf%Tdr?HCRmBZ#JXrLeW2uL#i?gi@-l@*P^Xbc zXw8DFw}ma7FI4BpJ=$$p`IE24+v5B6pH2Jj9N(*%?87C;*VVwl!oVcJz~R84z`zLR z?D@hindtW;=HQ&Vd;JYRBt`adFIS72ll4!5>7D!X4~`b*UyttG_TI(et&R9MUz?5V z|0*tEyXL!RV_(AypP2@RtqrgChV><^xQ80uP=| zED()2Ftx9lf!lVO;l*YK7NFHY2QUc$?I)HQ73mQ7BRO%8Crgj@v+4d_4a)9{o2K1K zdhkeGH#tpqr@N=%hUXCp=O*ozj5x3?^~@aQa(zuEGa2rfEl>1V#5N>I7GIpWd!h)V zcOUD!h$7=g))bxOcNRs{Cn+5Wy;AQqe`mEtwRynD^0RlHZ`WG&uh}!R&g=;?h-U)L# z7raLJvHejyr5cfIE%y(7UHk3&ub;D?^-BED{3ComrpWUyca@Te4flUl9+x+(qbtH3 z%a4>XTlHykS)D(UcPw@FpPL%*5B9K1Rr~z@?z&C3%sG6O$ikW#zgAz6zFe{QR{U1y z2ik8p$^N~v*)d%5>22SA9L}YE#!KEVzO%1r$>*%u-x>2){juL6+kVJAF|0zrhwHtT z#MSfZrtdej?c=tZzpYyF^ENk5#YGD~XWTYV;@5oW*nQt;y-GaiZC<^9+xkvhCoXmV zp%TNU_h)I}<%8ap)`t)IKU8~m=zhlj!)LeLOWU_?)1L6p%4~w>xBPcWUcbq8U2MO| zvah$LznUGL^vplIdYxWh=eiE2T~VpNYt?Y_IeF4 PCoy=s`njxgN@xNA3GZ{| literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_action_mic.png b/app/src/main/res/drawable-xxxhdpi/ic_action_mic.png new file mode 100644 index 0000000000000000000000000000000000000000..1a5c4440c337da68fdc69382b88a78bc210a41e9 GIT binary patch literal 2653 zcmb_eX*3iH8y;pcwgy>7LKNa!vSi8945LZPq=ae|$u7opF|rNGM4~2htt}Tt$sWcP zX0lbbTSSamT>CadOb9byo%8*>-_P%yXZiKKzut46C+(~YT3TYC1ONb#b~=eV_tS~L z2!;IAb~~RQ06^l96AI}@7+dy=eL(Tu9~S;4tfB1rT+zK3(l>5n$w6dta|$Y_uY&BH zVa(Mw({+P8`eK8jx+$7>#_x+OR9v<j#U6XR+4=EOzYZ#>lgz1JLAu;hkDmQBhHe?vTS|4u#^Elapfsk)*fKXAHSObMTt0 zp@(Lf`iTKil_YRyXQx@1N_WJqWCvOe$5N>Z;7m_AJfb{ZFwv^*ZI@d-Hr_4;1J3-Z z)tG8bO4>_9dymi3Iyq?0sg;{b9!WiP3%Zi4KpZDQ(0VecI#4WAd!adqJL6Lp3V#hv zT?9I?qzr+Hz{X?-y^X#A;8vS3XcBw7fCSb7n?~T1Dz3);?M*EFm4TFbVFi3V5W-Yl z0$CJ9Q$+@NsT)(ypdd)YX?Q98M80@}v|xJ3a84lsqBLP!%83WR;;$RqF$KsY{e%^< zo70g=P)~4w*R~5SR^`?A!FIky9W=qufVy)Xg}@vE^KPJ5KS)eK;-x3Zm=xqp^5w!I zqUJVeKUmhx!$#&x&p`6(WxC8D{ftX6UAEJjkO=EiuRRGB<-AtQ_*(@_79HV@DC~4p zlG51h$!)|BT`DMq%oE1O+c+Pl97AEfh!@Da} zZo?T{{dOi%?^1yFY2w<*7JB% z%x>_4p<|wgnuUtB{;dptosX)bZC=;+4jrq_w)Ti+<8C3GaktYP_KmuIS_yG*pAuy? zbuw|v`ttXj!#53D?w|o+>acoTkJE0%YNqn)In*};=7|yuS|h)nH@0uqA|A*}$2%%N z#=X;9gu8VW53{#_CQToIQ1_)we+1nER1V>|1snvE6fn_ra5PHv^b@*?Wo_xdDb8XWVYHJot7m+VXMtmqE!G z(1UJqH3&&0c|6&~)WEi482I{g?&kb$Vi-|&!}*U93r4^ts-#W^jUTC>eCi%6&)jgp zH!i(K`TUnlaWZL>w!^ro$;==VFF-~YzLF3YT>mr3$0fiL?O(@oqM>k@h(&h1l zejoFym3**Iv$ajh-CT#Xj)Qrsy^G(y zlGJscpBPJVk0dHxydSPIr%?SC@jDh{grn>|GkZn#Z_S`=r;LUcgHO}0mhvH4_)_Cb zV(PUI-zjOQ>Z!Zuie2kk9aTIpRiE&3|yWO%PdfDZ-M?9UGc?S*`Ln{MTx)lc$7j!_3 zT;#!-zsv*8(%Wr*%kkat>)dkT`Uc*PhM7(ZDF-q+MSmaMf9yw$0sUx+uP{tfSHbD@ zdz?bVzOVPZpxnNfJ;ROn#_Br@ zdQZev^!Qcp3aa~^pt{WQIb)eZznb@%hmt>HR=qrGnjfr&nCnkv=GPulx@EciaeejX z+0jXAD=h#QI2SqJ1+mNU>WPX}8E^C;1}HFg>_{=ZyxGybsn;5$cro2JT;E$ns7GH3 zu|+hY;>JDkB%%eXd;J(|VJ5A9bC2%+rW7^Du(L5c!StvP-dm`p-4jw3)3%^CP{reb3@=BqX-< zwV~~U`30e^*Fe#m!6ZzusDnfj<3m<;SwfNlJq$z7e0I0=`Ef zC`$k9xVM@=W%N#v3c-@ zc8$2NY}5AoI;18Zuv0$ivM#~NYp@OskENzPj@Xm2yK4HWsoKPk`B1=y!mIBKBmi6`<5zwDw?+SDcMlRT${}{; z5HEM@c~K1G{U|lzk3-y$S7YU3)$zb?dRbPj-(ZW_gOR7Gtxs6)h2`a~3U<6^j1M{V s)MUWAE{lH#^zto6288?{u + android:textColor="?attr/colorAccent" + android:text="@string/other_instance" /> + android:textColor="?attr/colorAccent" + android:text="@string/two_factor_authentification" /> + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_show_account.xml b/app/src/main/res/layout/activity_show_account.xml index 5ff4a1c18..44e4f4ed9 100644 --- a/app/src/main/res/layout/activity_show_account.xml +++ b/app/src/main/res/layout/activity_show_account.xml @@ -69,7 +69,7 @@ android:id="@+id/account_followed_by" android:layout_gravity="center" android:gravity="center" - android:textColor="@color/colorPrimary" + android:textColor="?attr/colorAccent" android:text="@string/followed_by" android:maxLines="1" android:layout_width="match_parent" diff --git a/app/src/main/res/layout/drawer_account.xml b/app/src/main/res/layout/drawer_account.xml index 8b643f705..2b0a7edd6 100644 --- a/app/src/main/res/layout/drawer_account.xml +++ b/app/src/main/res/layout/drawer_account.xml @@ -109,7 +109,7 @@ android:orientation="vertical" android:layout_height="wrap_content"> diff --git a/app/src/main/res/layout/drawer_account_main_search.xml b/app/src/main/res/layout/drawer_account_main_search.xml index 9e458d4ea..f35fa7386 100644 --- a/app/src/main/res/layout/drawer_account_main_search.xml +++ b/app/src/main/res/layout/drawer_account_main_search.xml @@ -34,7 +34,7 @@ android:id="@+id/account_search_title" android:visibility="gone" android:textSize="18sp" - android:background="@color/blue_light" + android:background="?attr/colorAccent" android:paddingBottom="10dp" android:paddingTop="10dp" android:layout_marginTop="5dp" @@ -43,7 +43,7 @@ android:layout_gravity="center" android:gravity="center" android:text="@string/accounts" - android:textColor="@color/colorPrimary" + android:textColor="?attr/colorPrimary" android:layout_width="match_parent" android:layout_height="wrap_content"/> diff --git a/app/src/main/res/layout/drawer_status.xml b/app/src/main/res/layout/drawer_status.xml index 876883cd6..f74800d10 100644 --- a/app/src/main/res/layout/drawer_status.xml +++ b/app/src/main/res/layout/drawer_status.xml @@ -146,13 +146,28 @@ android:autoLink="web" android:layout_width="match_parent" android:layout_height="wrap_content" /> - + android:layout_height="wrap_content" + android:orientation="vertical"> + + + + + android:title="@string/accounts"> @@ -45,7 +45,7 @@ + android:title="@string/settings" /> diff --git a/app/src/main/res/menu/main_toot.xml b/app/src/main/res/menu/main_toot.xml new file mode 100644 index 000000000..5668905d5 --- /dev/null +++ b/app/src/main/res/menu/main_toot.xml @@ -0,0 +1,9 @@ + + + + diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml new file mode 100644 index 000000000..19b9dac39 --- /dev/null +++ b/app/src/main/res/values-fr/strings.xml @@ -0,0 +1,308 @@ + + + Ouvrir le menu + Fermer le menu + + A propos + A propos de l\'instance + Confidentialité + Cache + Déconnexion + Connexion + + + Fermer + Oui + Non + Annuler + Télécharger + Télécharger %1$s + Téléchargement terminé + Enregistrer %1$s + Enregistrement terminé + Fichier : %1$s + Mot de passe + Email + Comptes + Pouets + Tags + Jeton + Sauvegarder + Authentification en deux étapes ? + Autre instance que mastodon.etalab.gouv.fr ? + Aucun résultat ! + Instance + Utilisation du compte %1$s + Ajouter un compte + Le contenu du pouet a été copié dans le presse-papier + Changer + Changer l\'image… + Nettoyer + Microphone + Veuillez dire quelque chose + Désolé ! Votre appareil ne supporte pas la commande vocale ! + + Accueil + Fil public local + Fil public global + Options + Favoris + Communication + Utilisateurs muets + Utilisateurs bloqués + Notifications + Demandes d\'abonnements + Optimisation + Paramètres + Profil + Que souhaitez-vous faire ? + Supprimer un compte + Supprimer le compte %1$s de l\'application ? + Envoyer un email + Veuillez sélectionner un fichier + Aucun explorateur de fichiers trouvé ! + Cliquer sur le chemin pour changer + + Aucun pouet à afficher ! + Pouet ajouté aux favoris ! + Pouet supprimé des favoris ! + Pouet partagé ! + Pouet supprimé du partage ! + Partagé par %1$s + + Ajouter ce pouet aux favoris ? + Supprimer ce pouet des favoris ? + Partager ce pouet ? + Supprimer ce pouet des partages ? + + Masquer + Bloquer + Signaler + Copier + + + Supprimer + Copier + + + + Masquer ce compte ? + Bloquer ce compte ? + Signaler ce pouet ? + null + + + + + Afficher de nouveau ce compte ? + Débloquer ce compte ? + + + + Supprimer ce pouet ? + null + + + + Il y a %d seconde + Il y a %d secondes + + + Il y a %d minute + Il y a %d minutes + + + Il y a %d heure + Il y a %d heures + + Hier + Avant-hier + Il y a %d jours + + Il y a %d mois + Il y a %d mois + + + Il y a %d an + Il y a %d ans + + + + Avertissement + Qu\'avez-vous en tête ? + POUET ! + cw + Ecrire un pouet + Répondre à un pouet + Vous avez atteint les 500 caractères autorisés ! + Sélectionnez un média + Une erreur s\'est produite lors de la sélection du média ! + Supprimer le média ? + Votre pouet est vide ! + Visibilité du pouet + Le pouet a été envoyé ! + Vous répondez à ce pouet : + Contenu sensible ? + + Afficher dans les fils publics + Ne pas afficher dans les fils publics + N\'afficher que pour vos abonné(e)s + N\'afficher que pour les personnes mentionnées + + + + Aucune description ! + + + Version %1$s + Développeur : + \@tschneider + Licence : + GNU GPL V3 + Code source : + bitbucket + + Conversation + + + Aucun compte à afficher + Aucune demande d\'abonnement + Pouets \n %d + Abonnements \n %d + Abonnés \n %d + Autoriser + Rejeter + + + Aucune notification à afficher + a mentionné votre pouet + a partagé votre pouet + a ajouté votre pouet à ses favoris + vous a suivi + Nouveau pouet de %1$s + + et %d autre notification + et %d autres notifications + + + et %d autre pouet à découvrir + et %d autres pouets à découvrir + + + Abonnements + Abonnés + + Impossible d\'obtenir l\'id du client ! + Aucune connexion Internet ! + Le compte a été bloqué ! + Le compte n\'est plus bloqué ! + Le compte a été masqué ! + Le compte n\'est plus masqué ! + Le compte a été suivi ! + Le compte n\'est plus suivi ! + Le pouet a été partagé ! + Le pouet a été supprimé des partages ! + Le pouet a été ajouté aux favoris ! + Le pouet a été supprimé des favoris ! + Le pouet a été signalé ! + Le pouet a été supprimé ! + Oups ! Une erreur s\'est produite ! + Une erreur s\'est produite en chargeant le compte ! + Une erreur s\'est produite lors de la recherche ! + Impossible de vous connecter ! + Les données du profil ont été sauvegardées ! + Aucune action ne peut être réalisée + Le média a été enregistré ! + Une erreur est survenue lors de la traduction ! + + Optimisation du chargement + Nombre de pouets par chargement + Nombre de comptes par chargement + Nombre de notifications par chargement + Toujours + WIFI + Demander + Charger les médias + Charger les images + Afficher le contenu ? + Charger les images sensibles + Afficher le message précédent lors d\'une réponse + Destination : + + Gestion des notifications + Notifier lorsque quelqu’un me suit + Notifier lorsque quelqu\'un demande à me suivre + Notifier lorsque quelqu\'un partage mes pouets + Notifier lorsque quelqu’un ajoute mes pouets à ses favoris + Notifier lorsque quelqu’un me mentionne + Confirmer avant de partager + Options avancées + Notifier en WIFI seulement + Utiliser le vibreur + Mode nuit + Modifier le profil + Présentation… + Enregistrer les modifications + Choisissez une image d\'entête + Vous avez atteint les 160 caractères autorisés ! + Vous avez atteint les 30 caractères autorisés ! + + Utiliser le navigateur intégré + Activer Javascript + Autoriser les cookies tiers + + Actualités + Notifier lors de nouveaux pouets sur la page d\'accueil + Afficher les messages d\'erreur + Suivre + Se désabonners + Bloquer + Débloquer + Masquer + Aucune action + Afficher + Demande envoyée + Vous suit + + Recherche + + + Nettoyage du cache + Il y a %1$s de données en cache.\n\nSouhaitez-vous les supprimer ? + Le cache a été nettoyé ! %1$s ont été libérés + + + Données enregistrées + + Seules les informations de base des comptes connectés sont enregistrées sur l\'appareil. + Ces données sont strictement confidentielles et ne sont utilisables que par l\'application. La suppression de l\'application entraîne immédiatement la suppression de ces données.\n + ⚠ Les identifiants et les mots de passe ne sont jamais enregistrés, ils ne sont utilisés que lors de l\'authentification sécurisée (SSL) vers l\'instance. + + + Autorisations de l\'application + + - ACCESS_NETWORK_STATE : Utilisée pour savoir si l\'appareil est connecté au WIFI.\n + - INTERNET : Utilisée pour les requêtes vers l\'instance.\n + - WRITE_EXTERNAL_STORAGE : Utilisée pour télécharger les médias / déplacer sur la carte SD.\n + - READ_EXTERNAL_STORAGE : Utilisée pour ajouter des médias aux pouets.\n + - BOOT_COMPLETED : Utilisée pour lancer le service de notifications quand l\'appareil démarre.\n + - WAKE_LOCK : Utilisée lors du service de notifications. + + + Autorisations de l\'API + + - Read : Lire les données du compte.\n + - Write : Envoyer des messages et attacher des médias aux messages.\n + - Follow : S\'abonner, se désabonner, bloquer, débloquer.\n\n + ⚠ Ces actions ne sont réalisées qu\'à la demande de l\'utilisateur. + + Suivi et bibliothèques + + L\'application n\'utilise aucun outil de suivi (mesure d\'audience, rapport d\'erreurs, etc.) et elle ne comporte aucune publicité.\n\n + L\'utilisation de bibliothèques est réduite au strict minimum :\n + - Android Asynchronous Http Client : Pour la gestion des requêtes\n + - Universal Image Loader : Pour la gestion des médias\n + - Android-Job : Pour la gestion des services\n + - PhotoView : Pour la gestion des images + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 42e7ca80e..c6df2a9bd 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,314 +1,313 @@ - Mastalab + Mastalab - Ouvrir le menu - Fermer le menu + Open the menu + Close the menu - Paramètres - A propos - A propos de l\'instance - Confidentialité + About + About the instance + Privacy Cache - Déconnexion - Télécharger - Connexion + Logout + Login - Fermer - Oui - Non - Annuler - Télécharger - Télécharger %1$s - Téléchargement terminé - Enregistrer %1$s - Enregistrement terminé - Fichier : %1$s - Mot de passe + Close + Yes + No + Cancel + Download + Download %1$s + Download complete + Save %1$s + Media saved + File: %1$s + Password Email - Comptes - Pouets + Accounts + Toots Tags - Jeton - Sauvegarder - Authentification en deux étapes ? - Autre instance que mastodon.etalab.gouv.fr ? - Aucun résultat ! + Token + Save + Two-step authentication? + Other instance than mastodon.etalab.gouv.fr? + No results! Instance - Utilisation du compte %1$s - Ajouter un compte - Le contenu du pouet a été copié dans le presse-papier - Changer - Changer l\'image… - Nettoyer + Now works with the account %1$s + Add an account + The content of the toot has been copied to the clipboard + Change + Select a picture… + Clean + Microphone + Please, say something + Sorry! Your device does not support the voice input! - Accueil - Accueil - Fil public local - Fil public global - Fil public + Home + Local timeline + Federated timeline Options - Préférences - Favoris + Favourites Communication - Utilisateurs muets - Utilisateurs bloqués - Comptes + Muted users + Blocked users Notifications - Demandes d\'abonnements - Optimisation - Paramètres - Profil - Que souhaitez-vous faire ? - Supprimer un compte - Supprimer le compte %1$s de l\'application ? - Envoyer un email - Veuillez sélectionner un fichier - Aucun explorateur de fichiers trouvé ! - Cliquer sur le chemin pour changer + Follow requests + Optimization + Settings + Profile + What do you want to do? + Delete an account + Delete the account %1$s from the application? + Send an email + Please select a file + No file explorer found! + Click on the path to change it - Aucun pouet à afficher ! - Pouet ajouté aux favoris ! - Pouet supprimé des favoris ! - Pouet partagé ! - Pouet supprimé du partage ! - Partagé par %1$s + No toot to display + The toot was added to favourites + The toot was removed from favourites! + The toot was boosted! + The toot is no longer boosted! + Shared via %1$s - Ajouter ce pouet aux favoris ? - Supprimer ce pouet des favoris ? - Partager ce pouet ? - Supprimer ce pouet des partages ? + Add this toot to your favourites? + Remove this toot from your favourites? + Boost this toot? + Unboost this toot? - Masquer - Bloquer - Signaler - Copier + Mute + Block + Report + Copy - Supprimer - Copier + Remove + Copy - Masquer ce compte ? - Bloquer ce compte ? - Signaler ce pouet ? + Mute this account? + Block this account? + Report this toot? null - Afficher de nouveau ce compte ? - Débloquer ce compte ? + Unmute this account? + Unblock this account? - Supprimer ce pouet ? + Remove this toot? null - Il y a %d seconde - Il y a %d secondes + %d second ago + %d seconds ago - Il y a %d minute - Il y a %d minutes + %d minute ago + %d minutes ago - Il y a %d heure - Il y a %d heures + %d hour ago + %d hours ago - Hier - Avant-hier - Il y a %d jours + Yesterday + Before yesterday + %d days ago - Il y a %d mois - Il y a %d mois + %d month ago + %d months ago - Il y a un an - Il y a %d ans + One year ago + %d years ago - Avertissement - Qu\'avez-vous en tête ? - POUET ! + Warning + What is on your mind? + TOOT! cw - Ecrire un pouet - Répondre à un pouet - Vous avez atteint les 500 caractères autorisés ! - Sélectionnez un média - Une erreur s\'est produite lors de la sélection du média ! - Supprimer le média ? - Votre pouet est vide ! - Visibilité du pouet - Le pouet a été envoyé ! - Vous répondez à ce pouet : - Contenu sensible ? + Write a toot + Reply to a toot + You have reached the 500 characters allowed! + Select a media + An error occurred while selecting the media! + Delete this media? + Your toot is empty! + Visibility of the toot + The toot has been sent! + You are replying to this toot: + Sensitive content? - Afficher dans les fils publics - Ne pas afficher dans les fils publics - N\'afficher que pour vos abonné(e)s - N\'afficher que pour les personnes mentionnées + Post to public timelines + Do not post to public timelines + Post to followers only + Post to mentioned users only - Aucune description ! + No description available! - Version %1$s - Développeur : + Release %1$s + Developer: \@tschneider - Licence : + License: GNU GPL V3 - Code source : - bitbucket + Source code: + Bitbucket Conversation - Aucun compte à afficher - Aucune demande d\'abonnement - Pouets \n %d - Abonnements \n %d - Abonnés \n %d - Autoriser - Rejeter + No account to display + No follow request + Toots \n %d + Following \n %d + Followers \n %d + Authorize + Reject - Aucune notification à afficher - a mentionné votre pouet - a partagé votre pouet - a ajouté votre pouet à ses favoris - vous a suivi - Nouveau pouet de %1$s + No notification to display + mentioned your status + boosted your status + favourited your status + followed you + New toot from %1$s - et %d autre notification - et %d autres notifications + and another notification + and %d other notifications - et un autre pouet à découvrir - et %d autres pouets à découvrir + and another toot to discover + and %d other toots to discover - Pouets - Abonnements - Abonnés + Following + Followers - Impossible d\'obtenir l\'id du client ! - Aucune connexion Internet ! - Le compte a été bloqué ! - Le compte n\'est plus bloqué ! - Le compte a été masqué ! - Le compte n\'est plus masqué ! - Le compte a été suivi ! - Le compte n\'est plus suivi ! - Le pouet a été partagé ! - Le pouet a été supprimé des partages ! - Le pouet a été ajouté aux favoris ! - Le pouet a été supprimé des favoris ! - Le pouet a été signalé ! - Le pouet a été supprimé ! - Oups ! Une erreur s\'est produite ! - Une erreur s\'est produite en chargeant le compte ! - Une erreur s\'est produite lors de la recherche ! - Impossible de vous connecter ! - Les données du profil ont été sauvegardées ! - Aucune action ne peut être réalisée - Le média a été enregistré ! - Une erreur est survenue lors de la traduction ! + Unable to get client id! + No Internet connection! + The account was blocked! + The account is no longer blocked! + The account was muted! + The account is no longer muted! + The account was followed! + The account is no longer followed! + The toot was boosted! + The toot is no longer boosted! + The toot was added to your favourites! + The toot was removed from your favourites! + The toot was reported! + The toot was deleted! + Oops ! An error occurred! + An error occurred while switching between accounts! + An error occurred while searching! + Can not log in! + The profile data have been saved! + No action can be taken + The media has been saved! + An error occurred while translating! - Optimisation du chargement - Nombre de pouets par chargement - Nombre de comptes par chargement - Nombre de notifications par chargement - Toujours + Optimisation of loading + Number of toots per load + Number of accounts per load + Number of notifications per load + Always WIFI - Demander - Charger les médias - Charger les images - Afficher le contenu ? - Charger les images sensibles - Afficher le message précédent lors d\'une réponse - Destination : + Ask + Load the media + Load the pictures + Show more… + Sensitive content + Display previous message in responses + Path: - Gestion des notifications - Notifier lorsque quelqu’un me suit - Notifier lorsque quelqu\'un demande à me suivre - Notifier lorsque quelqu\'un partage mes pouets - Notifier lorsque quelqu’un ajoute mes pouets à ses favoris - Notifier lorsque quelqu’un me mentionne - Confirmer avant de partager - Options avancées - Notifier en WIFI seulement - Utiliser le vibreur - Mode nuit - Modifier le profil - Présentation… - Enregistrer les modifications - Choisissez une image d\'entête - Vous avez atteint les 160 caractères autorisés ! - Vous avez atteint les 30 caractères autorisés ! + Manage notifications + Notify when someone follows you + Notify when someone requests to follow you + Notify when someone boosts your status + Notify when someone favourites your status + Notify when someone mentions you + Show confirmation dialog before boosting + Advanced settings + Notify in WIFI only + Silent Notifications + Night mode + Edit profile + Bio… + Save changes + Choose a header picture + You have reached the 160 characters allowed! + You have reached the 30 characters allowed! - Utiliser le navigateur intégré - Activer Javascript - Autoriser les cookies tiers + Use the built-in browser + Enable Javascript + Allow third-party cookies - Actualités - Notifier lors de nouveaux pouets sur la page d\'accueil - Afficher les messages d\'erreur - Suivre - Se désabonners - Bloquer - Débloquer - Masquer - Aucune action - Afficher - Demande envoyée - Vous suit + News + Notify for new toots on the home timeline + Display error messages + Follow + Unfollows + Block + Unblock + Mute + No action + Unmute + Request sent + Follows you - Recherche + Search - Nettoyage du cache - Il y a %1$s de données en cache.\n\nSouhaitez-vous les supprimer ? - Le cache a été nettoyé ! %1$s ont été libérés + Clear cache + There are %1$s data in cache.\n\nWould you like to delete them? + Cache was cleared! %1$s were released - Données enregistrées + Recorded data - Seules les informations de base des comptes connectés sont enregistrées sur l\'appareil. - Ces données sont strictement confidentielles et ne sont utilisables que par l\'application. La suppression de l\'application entraîne immédiatement la suppression de ces données.\n - ⚠ Les identifiants et les mots de passe ne sont jamais enregistrés, ils ne sont utilisés que lors de l\'authentification sécurisée (SSL) vers l\'instance. + Only basic information from accounts are stored on the device. + These data are strictly confidential and can only be used by the application. + Deleting the application immediately removes these data.\n + ⚠ Login and passwords are never stored. They are only used during a secure authentication (SSL) with an instance. - Autorisations de l\'application + Permissions: - - ACCESS_NETWORK_STATE : Utilisée pour savoir si l\'appareil est connecté au WIFI.\n - - INTERNET : Utilisée pour les requêtes vers l\'instance.\n - - WRITE_EXTERNAL_STORAGE : Utilisée pour télécharger les médias / déplacer sur la carte SD.\n - - READ_EXTERNAL_STORAGE : Utilisée pour ajouter des médias aux pouets.\n - - BOOT_COMPLETED : Utilisée pour lancer le service de notifications quand l\'appareil démarre.\n - - WAKE_LOCK : Utilisée lors du service de notifications. + - ACCESS_NETWORK_STATE: Used to detect if the device is connected to a WIFI network.\n + - INTERNET: Used for queries to an instance.\n + - WRITE_EXTERNAL_STORAGE: Used to store media or to move the app on a SD card.\n + - READ_EXTERNAL_STORAGE: Used to add media to toots.\n + - BOOT_COMPLETED: Used to start the notification service.\n + - WAKE_LOCK: Used during the notification service. - Autorisations de l\'API + API permissions: - - Read : Lire les données du compte.\n - - Write : Envoyer des messages et attacher des médias aux messages.\n - - Follow : S\'abonner, se désabonner, bloquer, débloquer.\n\n - ⚠ Ces actions ne sont réalisées qu\'à la demande de l\'utilisateur. + - Read: Read data.\n + - Write: Post statuses and upload media for statuses.\n + - Follow: Follow, unfollow, block, unblock.\n\n + ⚠ These actions are carried out only when user requests them. - Suivi et bibliothèques + Tracking and Libraries - L\'application n\'utilise aucun outil de suivi (mesure d\'audience, rapport d\'erreurs, etc.) et elle ne comporte aucune publicité.\n\n - L\'utilisation de bibliothèques est réduite au strict minimum :\n - - Android Asynchronous Http Client : Pour la gestion des requêtes\n - - Universal Image Loader : Pour la gestion des médias\n - - Android-Job : Pour la gestion des services\n - - PhotoView : Pour la gestion des images + The application does not use tracking tools (audience measurement, error reporting, etc.) and does not contain any advertising.\n\n + The use of libraries is minimized: \n + - Android Asynchronous Http Client: To manage queries\n + - Universal Image Loader: To manage media\n + - Android-Job: To manage services\n + - PhotoView: To manage images + + <a hreh="http://translate.yandex.com/">Powered by Yandex.Translate</a>