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 000000000..4f40d05be Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_action_mic.png differ 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 000000000..aebc267e9 Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_action_mic.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_action_mic.png b/app/src/main/res/drawable-mdpi/ic_action_mic.png new file mode 100644 index 000000000..04d0307f7 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_action_mic.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_action_mic.png b/app/src/main/res/drawable-xhdpi/ic_action_mic.png new file mode 100644 index 000000000..eafd88c40 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_action_mic.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_action_mic.png b/app/src/main/res/drawable-xxhdpi/ic_action_mic.png new file mode 100644 index 000000000..e0f629c42 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_action_mic.png differ 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 000000000..1a5c4440c Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_action_mic.png differ diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 172f8258c..15c4bf863 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -82,19 +82,20 @@ android:textSize="20sp" android:text="@string/login" /> + 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>