Merge branch 'develop'
This commit is contained in:
commit
d21e07a231
Binary file not shown.
Binary file not shown.
|
@ -1666,8 +1666,7 @@ public abstract class BaseMainActivity extends BaseActivity
|
|||
public void startSreaming(){
|
||||
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE);
|
||||
boolean liveNotifications = sharedpreferences.getBoolean(Helper.SET_LIVE_NOTIFICATIONS, true);
|
||||
boolean notify = sharedpreferences.getBoolean(Helper.SET_NOTIFY, true);
|
||||
if( notify && liveNotifications) {
|
||||
if( liveNotifications) {
|
||||
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
|
||||
assert manager != null;
|
||||
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
|
||||
|
|
|
@ -138,7 +138,7 @@ public class EditProfileActivity extends BaseActivity implements OnRetrieveAccou
|
|||
Account account = new AccountDAO(getApplicationContext(),db).getAccountByID(userId);
|
||||
String url = account.getAvatar();
|
||||
if( url.startsWith("/") ){
|
||||
url = "https://" + Helper.getLiveInstance(getApplicationContext()) + account.getAvatar();
|
||||
url = Helper.getLiveInstanceWithProtocol(getApplicationContext()) + account.getAvatar();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -252,7 +252,7 @@ public class LoginActivity extends BaseActivity {
|
|||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
final String response = new HttpsConnection(LoginActivity.this).post("https://" + instance + action, 30, parameters, null );
|
||||
final String response = new HttpsConnection(LoginActivity.this).post(Helper.instanceWithProtocol(instance) + action, 30, parameters, null );
|
||||
runOnUiThread(new Runnable() {
|
||||
public void run() {
|
||||
JSONObject resobj;
|
||||
|
@ -274,11 +274,12 @@ public class LoginActivity extends BaseActivity {
|
|||
i.putExtra("instance", instance);
|
||||
startActivity(i);
|
||||
}
|
||||
} catch (JSONException ignored) {}
|
||||
} catch (JSONException ignored) {ignored.printStackTrace();}
|
||||
}
|
||||
});
|
||||
|
||||
} catch (final Exception e) {
|
||||
e.printStackTrace();
|
||||
runOnUiThread(new Runnable() {
|
||||
public void run() {
|
||||
String message;
|
||||
|
@ -326,7 +327,7 @@ public class LoginActivity extends BaseActivity {
|
|||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
final String response = new HttpsConnection(LoginActivity.this).post("https://" + instance + "/oauth/token", 30, parameters, null );
|
||||
final String response = new HttpsConnection(LoginActivity.this).post(Helper.instanceWithProtocol(instance) + "/oauth/token", 30, parameters, null );
|
||||
runOnUiThread(new Runnable() {
|
||||
public void run() {
|
||||
JSONObject resobj;
|
||||
|
@ -339,10 +340,11 @@ public class LoginActivity extends BaseActivity {
|
|||
editor.apply();
|
||||
//Update the account with the token;
|
||||
new UpdateAccountInfoAsyncTask(LoginActivity.this, token, instance).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
} catch (JSONException ignored) {}
|
||||
} catch (JSONException ignored) {ignored.printStackTrace();}
|
||||
}
|
||||
});
|
||||
}catch (final Exception e) {
|
||||
e.printStackTrace();
|
||||
runOnUiThread(new Runnable() {
|
||||
public void run() {
|
||||
connectionButton.setEnabled(true);
|
||||
|
|
|
@ -144,7 +144,7 @@ public class RemoteFollowActivity extends BaseActivity implements OnRetrieveRemo
|
|||
Account account = new AccountDAO(getApplicationContext(),db).getAccountByID(userId);
|
||||
String url = account.getAvatar();
|
||||
if( url.startsWith("/") ){
|
||||
url = "https://" + Helper.getLiveInstance(getApplicationContext()) + account.getAvatar();
|
||||
url = Helper.getLiveInstanceWithProtocol(getApplicationContext()) + account.getAvatar();
|
||||
}
|
||||
Glide.with(getApplicationContext())
|
||||
.asBitmap()
|
||||
|
|
|
@ -412,7 +412,7 @@ public class ShowAccountActivity extends BaseActivity implements OnPostActionInt
|
|||
}
|
||||
String urlHeader = account.getHeader();
|
||||
if (urlHeader.startsWith("/")) {
|
||||
urlHeader = "https://" + Helper.getLiveInstance(ShowAccountActivity.this) + account.getHeader();
|
||||
urlHeader = Helper.getLiveInstanceWithProtocol(ShowAccountActivity.this) + account.getHeader();
|
||||
}
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN && !urlHeader.contains("missing.png")) {
|
||||
|
||||
|
@ -451,7 +451,7 @@ public class ShowAccountActivity extends BaseActivity implements OnPostActionInt
|
|||
pp_actionBar = findViewById(R.id.pp_actionBar);
|
||||
String url = account.getAvatar();
|
||||
if( url.startsWith("/") ){
|
||||
url = "https://" + Helper.getLiveInstance(getApplicationContext()) + account.getAvatar();
|
||||
url = Helper.getLiveInstanceWithProtocol(getApplicationContext()) + account.getAvatar();
|
||||
}
|
||||
Glide.with(getApplicationContext())
|
||||
.asBitmap()
|
||||
|
|
|
@ -151,7 +151,7 @@ public class ShowConversationActivity extends BaseActivity implements OnRetrieve
|
|||
Account account = new AccountDAO(getApplicationContext(),db).getAccountByID(userId);
|
||||
String url = account.getAvatar();
|
||||
if( url.startsWith("/") ){
|
||||
url = "https://" + Helper.getLiveInstance(getApplicationContext()) + account.getAvatar();
|
||||
url = Helper.getLiveInstanceWithProtocol(getApplicationContext()) + account.getAvatar();
|
||||
}
|
||||
Glide.with(getApplicationContext())
|
||||
.asBitmap()
|
||||
|
|
|
@ -89,8 +89,10 @@ import java.io.ByteArrayInputStream;
|
|||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
|
@ -347,7 +349,7 @@ public class TootActivity extends BaseActivity implements OnRetrieveSearcAccount
|
|||
|
||||
String url = account.getAvatar();
|
||||
if( url.startsWith("/") ){
|
||||
url = "https://" + Helper.getLiveInstance(getApplicationContext()) + account.getAvatar();
|
||||
url = Helper.getLiveInstanceWithProtocol(getApplicationContext()) + account.getAvatar();
|
||||
}
|
||||
Glide.with(getApplicationContext())
|
||||
.asBitmap()
|
||||
|
@ -672,11 +674,22 @@ public class TootActivity extends BaseActivity implements OnRetrieveSearcAccount
|
|||
}
|
||||
picture_scrollview.setVisibility(View.VISIBLE);
|
||||
try {
|
||||
File photoFiletmp = createImageFile(false);
|
||||
InputStream inputStream = getContentResolver().openInputStream(fileUri);
|
||||
toot_picture_container.setVisibility(View.VISIBLE);
|
||||
picture_scrollview.setVisibility(View.VISIBLE);
|
||||
toot_picture.setEnabled(false);
|
||||
new HttpsConnection(TootActivity.this).upload(inputStream, TootActivity.this);
|
||||
OutputStream output = new FileOutputStream(photoFile);
|
||||
try {
|
||||
byte[] buffer = new byte[4 * 1024]; // or other buffer size
|
||||
int read;
|
||||
|
||||
assert inputStream != null;
|
||||
while ((read = inputStream.read(buffer)) != -1) {
|
||||
output.write(buffer, 0, read);
|
||||
}
|
||||
output.flush();
|
||||
} finally {
|
||||
output.close();
|
||||
}
|
||||
new asyncPicture(TootActivity.this, photoFiletmp).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
count++;
|
||||
} catch (Exception e) {
|
||||
Toast.makeText(getApplicationContext(), R.string.toot_select_image_error, Toast.LENGTH_LONG).show();
|
||||
|
@ -699,7 +712,7 @@ public class TootActivity extends BaseActivity implements OnRetrieveSearcAccount
|
|||
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
|
||||
// Create the File where the photo should go
|
||||
try {
|
||||
photoFile = createImageFile();
|
||||
photoFile = createImageFile(true);
|
||||
} catch (IOException ignored) {Toast.makeText(getApplicationContext(),R.string.toot_select_image_error,Toast.LENGTH_LONG).show();}
|
||||
// Continue only if the File was successfully created
|
||||
if (photoFile != null) {
|
||||
|
@ -713,11 +726,11 @@ public class TootActivity extends BaseActivity implements OnRetrieveSearcAccount
|
|||
}
|
||||
|
||||
|
||||
private File createImageFile() throws IOException {
|
||||
private File createImageFile(boolean external) throws IOException {
|
||||
// Create an image file name
|
||||
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.ENGLISH).format(new Date());
|
||||
String imageFileName = "JPEG_" + timeStamp + "_";
|
||||
File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
|
||||
File storageDir = external?getExternalFilesDir(Environment.DIRECTORY_PICTURES):getCacheDir();
|
||||
File image = File.createTempFile(
|
||||
imageFileName, /* prefix */
|
||||
".jpg", /* suffix */
|
||||
|
@ -741,9 +754,26 @@ public class TootActivity extends BaseActivity implements OnRetrieveSearcAccount
|
|||
try {
|
||||
//noinspection ConstantConditions
|
||||
InputStream inputStream = getContentResolver().openInputStream(data.getData());
|
||||
toot_picture_container.setVisibility(View.VISIBLE);
|
||||
toot_picture.setEnabled(false);
|
||||
new HttpsConnection(TootActivity.this).upload(inputStream, TootActivity.this);
|
||||
File photoFiletmp;
|
||||
try {
|
||||
photoFiletmp = createImageFile(false);
|
||||
OutputStream output = new FileOutputStream(photoFiletmp);
|
||||
try {
|
||||
byte[] buffer = new byte[4 * 1024]; // or other buffer size
|
||||
int read;
|
||||
|
||||
assert inputStream != null;
|
||||
while ((read = inputStream.read(buffer)) != -1) {
|
||||
output.write(buffer, 0, read);
|
||||
}
|
||||
output.flush();
|
||||
new asyncPicture(TootActivity.this, photoFiletmp).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
} finally {
|
||||
output.close();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
} catch (FileNotFoundException e) {
|
||||
Toast.makeText(getApplicationContext(),R.string.toot_select_image_error,Toast.LENGTH_LONG).show();
|
||||
toot_picture.setEnabled(true);
|
||||
|
@ -756,9 +786,7 @@ public class TootActivity extends BaseActivity implements OnRetrieveSearcAccount
|
|||
toot_content.setSelection(toot_content.getText().length());
|
||||
}
|
||||
}else if (requestCode == TAKE_PHOTO && resultCode == RESULT_OK) {
|
||||
|
||||
new asyncPicture(TootActivity.this, photoFile).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -778,8 +806,17 @@ public class TootActivity extends BaseActivity implements OnRetrieveSearcAccount
|
|||
|
||||
Bitmap takenImage = BitmapFactory.decodeFile(String.valueOf(this.fileWeakReference.get()));
|
||||
int size = takenImage.getByteCount();
|
||||
//Resize image to 2 meg
|
||||
double resize = ((double)size)/((double)16777216);
|
||||
SharedPreferences sharedpreferences = this.activityWeakReference.get().getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE);
|
||||
int resizeSet = sharedpreferences.getInt(Helper.SET_PICTURE_RESIZE, Helper.S_1MO);
|
||||
double resizeby = 1;
|
||||
if( resizeSet == Helper.S_512KO){
|
||||
resizeby = 4194304;
|
||||
}else if(resizeSet == Helper.S_1MO){
|
||||
resizeby = 8388608;
|
||||
}else if(resizeSet == Helper.S_2MO){
|
||||
resizeby = 16777216;
|
||||
}
|
||||
double resize = ((double)size)/resizeby;
|
||||
Bitmap newBitmap;
|
||||
if( resize > 1 ){
|
||||
newBitmap = Bitmap.createScaledBitmap(takenImage, (int)(takenImage.getWidth()/resize),
|
||||
|
|
|
@ -119,7 +119,7 @@ public class WebviewConnectActivity extends BaseActivity {
|
|||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
final String response = new HttpsConnection(WebviewConnectActivity.this).post("https://" + instance + action, 30, parameters, null);
|
||||
final String response = new HttpsConnection(WebviewConnectActivity.this).post(Helper.instanceWithProtocol(instance) + action, 30, parameters, null);
|
||||
JSONObject resobj;
|
||||
try {
|
||||
resobj = new JSONObject(response);
|
||||
|
@ -160,7 +160,7 @@ public class WebviewConnectActivity extends BaseActivity {
|
|||
queryString += "&" + Helper.REDIRECT_URI + "="+ Uri.encode(Helper.REDIRECT_CONTENT_WEB);
|
||||
queryString += "&" + Helper.RESPONSE_TYPE +"=code";
|
||||
queryString += "&" + Helper.SCOPE +"=" + Helper.OAUTH_SCOPES;
|
||||
return "https://" + instance + Helper.EP_AUTHORIZE + "?" + queryString;
|
||||
return Helper.instanceWithProtocol(instance) + Helper.EP_AUTHORIZE + "?" + queryString;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ import android.os.AsyncTask;
|
|||
import java.lang.ref.WeakReference;
|
||||
import fr.gouv.etalab.mastodon.client.API;
|
||||
import fr.gouv.etalab.mastodon.client.Entities.Results;
|
||||
import fr.gouv.etalab.mastodon.helper.Helper;
|
||||
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveRemoteAccountInterface;
|
||||
|
||||
|
||||
|
@ -38,7 +39,7 @@ public class RetrieveRemoteDataAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||
|
||||
|
||||
public RetrieveRemoteDataAsyncTask(Context context, String username, String instance, OnRetrieveRemoteAccountInterface onRetrieveRemoteAccountInterface){
|
||||
this.url = "https://" + instance + "/@" + username;
|
||||
this.url = Helper.instanceWithProtocol(instance) + "/@" + username;
|
||||
this.listener = onRetrieveRemoteAccountInterface;
|
||||
this.contextReference = new WeakReference<>(context);
|
||||
}
|
||||
|
|
|
@ -55,7 +55,7 @@ public class UpdateAccountInfoAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||
try {
|
||||
//At the state the instance can be encoded
|
||||
instance = URLDecoder.decode(instance, "utf-8");
|
||||
} catch (UnsupportedEncodingException ignored) {}
|
||||
} catch (UnsupportedEncodingException ignored) {ignored.printStackTrace();}
|
||||
SharedPreferences sharedpreferences = this.contextReference.get().getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
||||
if( token == null) {
|
||||
token = sharedpreferences.getString(Helper.PREF_KEY_OAUTH_TOKEN, null);
|
||||
|
|
|
@ -189,8 +189,10 @@ public class API {
|
|||
account = parseAccountResponse(context, new JSONObject(response));
|
||||
} catch (HttpsConnection.HttpsConnectionException e) {
|
||||
setError(e.getStatusCode(), e);
|
||||
e.printStackTrace();
|
||||
}catch (Exception e) {
|
||||
setDefaultError(e);
|
||||
e.printStackTrace();
|
||||
}
|
||||
return account;
|
||||
}
|
||||
|
@ -2030,7 +2032,7 @@ public class API {
|
|||
|
||||
|
||||
private String getAbsoluteUrl(String action) {
|
||||
return "https://" + this.instance + "/api/v1" + action;
|
||||
return Helper.instanceWithProtocol(this.instance) + "/api/v1" + action;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -24,12 +24,14 @@ import android.os.Bundle;
|
|||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.text.Html;
|
||||
import android.text.Spannable;
|
||||
import android.text.SpannableString;
|
||||
import android.text.Spanned;
|
||||
import android.text.TextPaint;
|
||||
import android.text.style.ClickableSpan;
|
||||
import android.text.style.ForegroundColorSpan;
|
||||
import android.text.style.ImageSpan;
|
||||
import android.text.style.URLSpan;
|
||||
import android.util.Patterns;
|
||||
|
@ -48,6 +50,7 @@ import java.util.Date;
|
|||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import fr.gouv.etalab.mastodon.R;
|
||||
import fr.gouv.etalab.mastodon.activities.HashTagActivity;
|
||||
import fr.gouv.etalab.mastodon.activities.ShowAccountActivity;
|
||||
import fr.gouv.etalab.mastodon.activities.WebviewActivity;
|
||||
|
@ -92,7 +95,6 @@ public class Status implements Parcelable{
|
|||
private boolean isClickable = false;
|
||||
private boolean isTranslationShown = false;
|
||||
private boolean isNew = false;
|
||||
private boolean isTakingScreenShot = false;
|
||||
private boolean isVisible = true;
|
||||
private boolean fetchMore = false;
|
||||
private Status status;
|
||||
|
@ -408,14 +410,6 @@ public class Status implements Parcelable{
|
|||
isNew = aNew;
|
||||
}
|
||||
|
||||
public boolean isTakingScreenShot() {
|
||||
return isTakingScreenShot;
|
||||
}
|
||||
|
||||
public void setTakingScreenShot(boolean takingScreenShot) {
|
||||
isTakingScreenShot = takingScreenShot;
|
||||
}
|
||||
|
||||
public boolean isVisible() {
|
||||
return isVisible;
|
||||
}
|
||||
|
@ -444,7 +438,7 @@ public class Status implements Parcelable{
|
|||
|
||||
public void makeClickable(Context context){
|
||||
|
||||
if( ((Activity)context).isFinishing() )
|
||||
if( ((Activity)context).isFinishing() || status == null)
|
||||
return;
|
||||
SpannableString spannableStringContent, spannableStringCW;
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
|
||||
|
@ -466,7 +460,7 @@ public class Status implements Parcelable{
|
|||
|
||||
public void makeClickableTranslation(Context context){
|
||||
|
||||
if( ((Activity)context).isFinishing() )
|
||||
if( ((Activity)context).isFinishing() || status == null)
|
||||
return;
|
||||
SpannableString spannableStringTranslated;
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
|
||||
|
@ -621,7 +615,7 @@ public class Status implements Parcelable{
|
|||
spannableString.removeSpan(span);
|
||||
List<Mention> mentions = this.status.getReblog() != null ? this.status.getReblog().getMentions() : this.status.getMentions();
|
||||
SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE);
|
||||
|
||||
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
|
||||
|
||||
Matcher matcher;
|
||||
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT)
|
||||
|
@ -643,10 +637,13 @@ public class Status implements Parcelable{
|
|||
@Override
|
||||
public void updateDrawState(TextPaint ds) {
|
||||
super.updateDrawState(ds);
|
||||
ds.setUnderlineText(false);
|
||||
}
|
||||
},
|
||||
matchStart, matchEnd,
|
||||
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
||||
spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, theme==Helper.THEME_DARK?R.color.mastodonC2:R.color.mastodonC4)), matchStart, matchEnd,
|
||||
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
||||
}
|
||||
|
||||
//Deals with mention to make them clickable
|
||||
|
@ -671,10 +668,13 @@ public class Status implements Parcelable{
|
|||
@Override
|
||||
public void updateDrawState(TextPaint ds) {
|
||||
super.updateDrawState(ds);
|
||||
ds.setUnderlineText(false);
|
||||
}
|
||||
},
|
||||
startPosition, endPosition,
|
||||
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
||||
spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, theme==Helper.THEME_DARK?R.color.mastodonC2:R.color.mastodonC4)), startPosition, endPosition,
|
||||
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -697,8 +697,11 @@ public class Status implements Parcelable{
|
|||
@Override
|
||||
public void updateDrawState(TextPaint ds) {
|
||||
super.updateDrawState(ds);
|
||||
ds.setUnderlineText(false);
|
||||
}
|
||||
}, matchStart, matchEnd, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
||||
spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, theme==Helper.THEME_DARK?R.color.mastodonC2:R.color.mastodonC4)), matchStart, matchEnd,
|
||||
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
||||
}
|
||||
return spannableString;
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -17,7 +17,6 @@ package fr.gouv.etalab.mastodon.drawers;
|
|||
import android.content.ClipData;
|
||||
import android.content.ClipboardManager;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Typeface;
|
||||
import android.os.CountDownTimer;
|
||||
import android.os.Handler;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
|
@ -79,6 +78,7 @@ import fr.gouv.etalab.mastodon.helper.Helper;
|
|||
|
||||
import static fr.gouv.etalab.mastodon.helper.Helper.THEME_DARK;
|
||||
import static fr.gouv.etalab.mastodon.helper.Helper.changeDrawableColor;
|
||||
import static fr.gouv.etalab.mastodon.helper.Helper.getLiveInstance;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -245,8 +245,6 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On
|
|||
else
|
||||
holder.status_document_container.setVisibility(View.VISIBLE);
|
||||
|
||||
Typeface tf = Typeface.createFromAsset(context.getAssets(), "fonts/DroidSans-Regular.ttf");
|
||||
holder.notification_status_content.setTypeface(tf);
|
||||
holder.status_reply.setText("");
|
||||
if( !status.isClickable())
|
||||
status.makeClickable(context);
|
||||
|
@ -254,7 +252,7 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On
|
|||
status.makeEmojis(context, NotificationsListAdapter.this);
|
||||
holder.notification_status_content.setText(status.getContentSpan(), TextView.BufferType.SPANNABLE);
|
||||
holder.status_spoiler.setText(status.getContentSpanCW(), TextView.BufferType.SPANNABLE);
|
||||
|
||||
holder.status_spoiler.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
holder.notification_status_content.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
boolean displayBoost = sharedpreferences.getBoolean(Helper.SET_DISPLAY_BOOST_COUNT, true);
|
||||
if( displayBoost) {
|
||||
|
@ -291,190 +289,182 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On
|
|||
context.startActivity(intent);
|
||||
}
|
||||
});
|
||||
if( status.isTakingScreenShot()){
|
||||
holder.status_document_container.setVisibility(View.GONE);
|
||||
holder.notification_status_content.setVisibility(View.VISIBLE);
|
||||
holder.status_show_more.setVisibility(View.GONE);
|
||||
holder.status_action_container.setVisibility(View.INVISIBLE);
|
||||
holder.status_spoiler_button.setVisibility(View.GONE);
|
||||
holder.status_spoiler_mention_container.setVisibility(View.GONE);
|
||||
holder.status_action_container.setVisibility(View.VISIBLE);
|
||||
|
||||
|
||||
Drawable imgFav, imgReblog, imgReply;
|
||||
if( status.isFavourited() || (status.getReblog() != null && status.getReblog().isFavourited())) {
|
||||
changeDrawableColor(context, R.drawable.ic_star,R.color.marked_icon);
|
||||
imgFav = ContextCompat.getDrawable(context, R.drawable.ic_star);
|
||||
}else {
|
||||
holder.status_action_container.setVisibility(View.VISIBLE);
|
||||
|
||||
|
||||
Drawable imgFav, imgReblog, imgReply;
|
||||
if( status.isFavourited() || (status.getReblog() != null && status.getReblog().isFavourited())) {
|
||||
changeDrawableColor(context, R.drawable.ic_star,R.color.marked_icon);
|
||||
imgFav = ContextCompat.getDrawable(context, R.drawable.ic_star);
|
||||
}else {
|
||||
if( theme == THEME_DARK)
|
||||
changeDrawableColor(context, R.drawable.ic_star_border,R.color.dark_icon);
|
||||
else
|
||||
changeDrawableColor(context, R.drawable.ic_star_border,R.color.black);
|
||||
imgFav = ContextCompat.getDrawable(context, R.drawable.ic_star_border);
|
||||
}
|
||||
|
||||
if( status.isReblogged()|| (status.getReblog() != null && status.getReblog().isReblogged())) {
|
||||
changeDrawableColor(context, R.drawable.ic_repeat_boost,R.color.boost_icon);
|
||||
imgReblog = ContextCompat.getDrawable(context, R.drawable.ic_repeat_boost);
|
||||
}else {
|
||||
if( theme == THEME_DARK)
|
||||
changeDrawableColor(context, R.drawable.ic_repeat,R.color.dark_icon);
|
||||
else
|
||||
changeDrawableColor(context, R.drawable.ic_repeat,R.color.black);
|
||||
imgReblog = ContextCompat.getDrawable(context, R.drawable.ic_repeat);
|
||||
}
|
||||
if( theme == THEME_DARK)
|
||||
changeDrawableColor(context, R.drawable.ic_reply,R.color.dark_icon);
|
||||
changeDrawableColor(context, R.drawable.ic_star_border,R.color.dark_icon);
|
||||
else
|
||||
changeDrawableColor(context, R.drawable.ic_reply,R.color.black);
|
||||
imgReply = ContextCompat.getDrawable(context, R.drawable.ic_reply);
|
||||
changeDrawableColor(context, R.drawable.ic_star_border,R.color.black);
|
||||
imgFav = ContextCompat.getDrawable(context, R.drawable.ic_star_border);
|
||||
}
|
||||
|
||||
if( status.getReblog() == null) {
|
||||
if (status.getSpoiler_text() != null && status.getSpoiler_text().trim().length() > 0 ) {
|
||||
holder.status_spoiler_container.setVisibility(View.VISIBLE);
|
||||
if( !status.isSpoilerShown()) {
|
||||
holder.notification_status_container.setVisibility(View.GONE);
|
||||
holder.status_spoiler_mention_container.setVisibility(View.VISIBLE);
|
||||
holder.status_spoiler_button.setText(context.getString(R.string.load_attachment_spoiler));
|
||||
}else {
|
||||
holder.notification_status_container.setVisibility(View.VISIBLE);
|
||||
holder.status_spoiler_mention_container.setVisibility(View.GONE);
|
||||
holder.status_spoiler_button.setText(context.getString(R.string.load_attachment_spoiler_less));
|
||||
}
|
||||
} else {
|
||||
holder.status_spoiler_container.setVisibility(View.GONE);
|
||||
holder.status_spoiler_mention_container.setVisibility(View.GONE);
|
||||
if( status.isReblogged()|| (status.getReblog() != null && status.getReblog().isReblogged())) {
|
||||
changeDrawableColor(context, R.drawable.ic_repeat_boost,R.color.boost_icon);
|
||||
imgReblog = ContextCompat.getDrawable(context, R.drawable.ic_repeat_boost);
|
||||
}else {
|
||||
if( theme == THEME_DARK)
|
||||
changeDrawableColor(context, R.drawable.ic_repeat,R.color.dark_icon);
|
||||
else
|
||||
changeDrawableColor(context, R.drawable.ic_repeat,R.color.black);
|
||||
imgReblog = ContextCompat.getDrawable(context, R.drawable.ic_repeat);
|
||||
}
|
||||
if( theme == THEME_DARK)
|
||||
changeDrawableColor(context, R.drawable.ic_reply,R.color.dark_icon);
|
||||
else
|
||||
changeDrawableColor(context, R.drawable.ic_reply,R.color.black);
|
||||
imgReply = ContextCompat.getDrawable(context, R.drawable.ic_reply);
|
||||
|
||||
if( status.getReblog() == null) {
|
||||
if (status.getSpoiler_text() != null && status.getSpoiler_text().trim().length() > 0 ) {
|
||||
holder.status_spoiler_container.setVisibility(View.VISIBLE);
|
||||
if( !status.isSpoilerShown()) {
|
||||
holder.notification_status_container.setVisibility(View.GONE);
|
||||
holder.status_spoiler_mention_container.setVisibility(View.VISIBLE);
|
||||
holder.status_spoiler_button.setText(context.getString(R.string.load_attachment_spoiler));
|
||||
}else {
|
||||
holder.notification_status_container.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
}else {
|
||||
if (status.getReblog().getSpoiler_text() != null && status.getReblog().getSpoiler_text().trim().length() > 0) {
|
||||
holder.status_spoiler_container.setVisibility(View.VISIBLE);
|
||||
if( !status.isSpoilerShown()) {
|
||||
holder.notification_status_container.setVisibility(View.GONE);
|
||||
holder.status_spoiler_mention_container.setVisibility(View.VISIBLE);
|
||||
holder.status_spoiler_button.setText(context.getString(R.string.load_attachment_spoiler));
|
||||
}else {
|
||||
holder.notification_status_container.setVisibility(View.VISIBLE);
|
||||
holder.status_spoiler_mention_container.setVisibility(View.GONE);
|
||||
holder.status_spoiler_button.setText(context.getString(R.string.load_attachment_spoiler_less));
|
||||
}
|
||||
} else {
|
||||
holder.status_spoiler_container.setVisibility(View.GONE);
|
||||
holder.status_spoiler_mention_container.setVisibility(View.GONE);
|
||||
holder.status_spoiler_button.setText(context.getString(R.string.load_attachment_spoiler_less));
|
||||
}
|
||||
} else {
|
||||
holder.status_spoiler_container.setVisibility(View.GONE);
|
||||
holder.status_spoiler_mention_container.setVisibility(View.GONE);
|
||||
holder.notification_status_container.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
}else {
|
||||
if (status.getReblog().getSpoiler_text() != null && status.getReblog().getSpoiler_text().trim().length() > 0) {
|
||||
holder.status_spoiler_container.setVisibility(View.VISIBLE);
|
||||
if( !status.isSpoilerShown()) {
|
||||
holder.notification_status_container.setVisibility(View.GONE);
|
||||
holder.status_spoiler_mention_container.setVisibility(View.VISIBLE);
|
||||
holder.status_spoiler_button.setText(context.getString(R.string.load_attachment_spoiler));
|
||||
}else {
|
||||
holder.notification_status_container.setVisibility(View.VISIBLE);
|
||||
holder.status_spoiler_mention_container.setVisibility(View.GONE);
|
||||
holder.status_spoiler_button.setText(context.getString(R.string.load_attachment_spoiler_less));
|
||||
}
|
||||
}
|
||||
|
||||
assert imgFav != null;
|
||||
imgFav.setBounds(0,0,(int) (20 * iconSizePercent/100 * scale + 0.5f),(int) (20 * iconSizePercent/100 * scale + 0.5f));
|
||||
assert imgReblog != null;
|
||||
imgReblog.setBounds(0,0,(int) (20 * iconSizePercent/100 * scale + 0.5f),(int) (20 * iconSizePercent/100 * scale + 0.5f));
|
||||
assert imgReply != null;
|
||||
imgReply.setBounds(0,0,(int) (20 * iconSizePercent/100 * scale + 0.5f),(int) (20 * iconSizePercent/100 * scale + 0.5f));
|
||||
|
||||
holder.status_favorite_count.setCompoundDrawables(imgFav, null, null, null);
|
||||
holder.status_reblog_count.setCompoundDrawables(imgReblog, null, null, null);
|
||||
holder.status_reply.setCompoundDrawables(imgReply, null, null, null);
|
||||
|
||||
if( theme == THEME_DARK){
|
||||
holder.status_favorite_count.setTextColor(ContextCompat.getColor(context, R.color.dark_icon));
|
||||
holder.status_reblog_count.setTextColor(ContextCompat.getColor(context, R.color.dark_icon));
|
||||
holder.status_reply.setTextColor(ContextCompat.getColor(context, R.color.dark_icon));
|
||||
}else {
|
||||
holder.status_favorite_count.setTextColor(ContextCompat.getColor(context, R.color.black));
|
||||
holder.status_reblog_count.setTextColor(ContextCompat.getColor(context, R.color.black));
|
||||
holder.status_reply.setTextColor(ContextCompat.getColor(context, R.color.black));
|
||||
}
|
||||
if( type.equals("favourite") || type.equals("reblog")){
|
||||
holder.status_document_container.setVisibility(View.GONE);
|
||||
}else {
|
||||
if (status.getReblog() == null) {
|
||||
if (status.getMedia_attachments().size() < 1) {
|
||||
holder.status_document_container.setVisibility(View.GONE);
|
||||
holder.status_show_more.setVisibility(View.GONE);
|
||||
} else {
|
||||
//If medias are loaded without any conditions or if device is on wifi
|
||||
if (!status.isSensitive() && (behaviorWithAttachments == Helper.ATTACHMENT_ALWAYS || (behaviorWithAttachments == Helper.ATTACHMENT_WIFI && isOnWifi))) {
|
||||
loadAttachments(status, holder);
|
||||
holder.status_show_more.setVisibility(View.GONE);
|
||||
status.setAttachmentShown(true);
|
||||
} else {
|
||||
//Text depending if toots is sensitive or not
|
||||
String textShowMore = (status.isSensitive()) ? context.getString(R.string.load_sensitive_attachment) : context.getString(R.string.load_attachment);
|
||||
holder.status_show_more.setText(textShowMore);
|
||||
if (!status.isAttachmentShown()) {
|
||||
holder.status_show_more.setVisibility(View.VISIBLE);
|
||||
holder.status_document_container.setVisibility(View.GONE);
|
||||
} else {
|
||||
loadAttachments(status, holder);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else { //Attachments for reblogs
|
||||
if (status.getReblog().getMedia_attachments().size() < 1) {
|
||||
holder.status_document_container.setVisibility(View.GONE);
|
||||
holder.status_show_more.setVisibility(View.GONE);
|
||||
} else {
|
||||
//If medias are loaded without any conditions or if device is on wifi
|
||||
if (!status.getReblog().isSensitive() && (behaviorWithAttachments == Helper.ATTACHMENT_ALWAYS || (behaviorWithAttachments == Helper.ATTACHMENT_WIFI && isOnWifi))) {
|
||||
loadAttachments(status.getReblog(), holder);
|
||||
holder.status_show_more.setVisibility(View.GONE);
|
||||
status.getReblog().setAttachmentShown(true);
|
||||
} else {
|
||||
//Text depending if toots is sensitive or not
|
||||
String textShowMore = (status.getReblog().isSensitive()) ? context.getString(R.string.load_sensitive_attachment) : context.getString(R.string.load_attachment);
|
||||
holder.status_show_more.setText(textShowMore);
|
||||
if (!status.isAttachmentShown()) {
|
||||
holder.status_show_more.setVisibility(View.VISIBLE);
|
||||
holder.status_document_container.setVisibility(View.GONE);
|
||||
} else {
|
||||
loadAttachments(status.getReblog(), holder);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Spoiler opens
|
||||
holder.status_spoiler_button.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
notification.getStatus().setSpoilerShown(!status.isSpoilerShown());
|
||||
notifyNotificationChanged(notification);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
switch (status.getVisibility()){
|
||||
case "public":
|
||||
holder.status_privacy.setImageResource(R.drawable.ic_public);
|
||||
break;
|
||||
case "unlisted":
|
||||
holder.status_privacy.setImageResource(R.drawable.ic_lock_open);
|
||||
break;
|
||||
case "private":
|
||||
holder.status_privacy.setImageResource(R.drawable.ic_lock_outline);
|
||||
break;
|
||||
case "direct":
|
||||
holder.status_privacy.setImageResource(R.drawable.ic_mail_outline);
|
||||
break;
|
||||
}
|
||||
switch (status.getVisibility()){
|
||||
case "direct":
|
||||
case "private":
|
||||
holder.status_reblog_count.setVisibility(View.GONE);
|
||||
break;
|
||||
case "public":
|
||||
case "unlisted":
|
||||
holder.status_reblog_count.setVisibility(View.VISIBLE);
|
||||
break;
|
||||
default:
|
||||
holder.status_reblog_count.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
holder.status_spoiler_container.setVisibility(View.GONE);
|
||||
holder.status_spoiler_mention_container.setVisibility(View.GONE);
|
||||
holder.notification_status_container.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
assert imgFav != null;
|
||||
imgFav.setBounds(0,0,(int) (20 * iconSizePercent/100 * scale + 0.5f),(int) (20 * iconSizePercent/100 * scale + 0.5f));
|
||||
assert imgReblog != null;
|
||||
imgReblog.setBounds(0,0,(int) (20 * iconSizePercent/100 * scale + 0.5f),(int) (20 * iconSizePercent/100 * scale + 0.5f));
|
||||
assert imgReply != null;
|
||||
imgReply.setBounds(0,0,(int) (20 * iconSizePercent/100 * scale + 0.5f),(int) (20 * iconSizePercent/100 * scale + 0.5f));
|
||||
|
||||
holder.status_favorite_count.setCompoundDrawables(imgFav, null, null, null);
|
||||
holder.status_reblog_count.setCompoundDrawables(imgReblog, null, null, null);
|
||||
holder.status_reply.setCompoundDrawables(imgReply, null, null, null);
|
||||
|
||||
if( theme == THEME_DARK){
|
||||
holder.status_favorite_count.setTextColor(ContextCompat.getColor(context, R.color.dark_icon));
|
||||
holder.status_reblog_count.setTextColor(ContextCompat.getColor(context, R.color.dark_icon));
|
||||
holder.status_reply.setTextColor(ContextCompat.getColor(context, R.color.dark_icon));
|
||||
}else {
|
||||
holder.status_favorite_count.setTextColor(ContextCompat.getColor(context, R.color.black));
|
||||
holder.status_reblog_count.setTextColor(ContextCompat.getColor(context, R.color.black));
|
||||
holder.status_reply.setTextColor(ContextCompat.getColor(context, R.color.black));
|
||||
}
|
||||
if( type.equals("favourite") || type.equals("reblog")){
|
||||
holder.status_document_container.setVisibility(View.GONE);
|
||||
}else {
|
||||
if (status.getReblog() == null) {
|
||||
if (status.getMedia_attachments().size() < 1) {
|
||||
holder.status_document_container.setVisibility(View.GONE);
|
||||
holder.status_show_more.setVisibility(View.GONE);
|
||||
} else {
|
||||
//If medias are loaded without any conditions or if device is on wifi
|
||||
if (!status.isSensitive() && (behaviorWithAttachments == Helper.ATTACHMENT_ALWAYS || (behaviorWithAttachments == Helper.ATTACHMENT_WIFI && isOnWifi))) {
|
||||
loadAttachments(status, holder);
|
||||
holder.status_show_more.setVisibility(View.GONE);
|
||||
status.setAttachmentShown(true);
|
||||
} else {
|
||||
//Text depending if toots is sensitive or not
|
||||
String textShowMore = (status.isSensitive()) ? context.getString(R.string.load_sensitive_attachment) : context.getString(R.string.load_attachment);
|
||||
holder.status_show_more.setText(textShowMore);
|
||||
if (!status.isAttachmentShown()) {
|
||||
holder.status_show_more.setVisibility(View.VISIBLE);
|
||||
holder.status_document_container.setVisibility(View.GONE);
|
||||
} else {
|
||||
loadAttachments(status, holder);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else { //Attachments for reblogs
|
||||
if (status.getReblog().getMedia_attachments().size() < 1) {
|
||||
holder.status_document_container.setVisibility(View.GONE);
|
||||
holder.status_show_more.setVisibility(View.GONE);
|
||||
} else {
|
||||
//If medias are loaded without any conditions or if device is on wifi
|
||||
if (!status.getReblog().isSensitive() && (behaviorWithAttachments == Helper.ATTACHMENT_ALWAYS || (behaviorWithAttachments == Helper.ATTACHMENT_WIFI && isOnWifi))) {
|
||||
loadAttachments(status.getReblog(), holder);
|
||||
holder.status_show_more.setVisibility(View.GONE);
|
||||
status.getReblog().setAttachmentShown(true);
|
||||
} else {
|
||||
//Text depending if toots is sensitive or not
|
||||
String textShowMore = (status.getReblog().isSensitive()) ? context.getString(R.string.load_sensitive_attachment) : context.getString(R.string.load_attachment);
|
||||
holder.status_show_more.setText(textShowMore);
|
||||
if (!status.isAttachmentShown()) {
|
||||
holder.status_show_more.setVisibility(View.VISIBLE);
|
||||
holder.status_document_container.setVisibility(View.GONE);
|
||||
} else {
|
||||
loadAttachments(status.getReblog(), holder);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Spoiler opens
|
||||
holder.status_spoiler_button.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
notification.getStatus().setSpoilerShown(!status.isSpoilerShown());
|
||||
notifyNotificationChanged(notification);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
switch (status.getVisibility()){
|
||||
case "public":
|
||||
holder.status_privacy.setImageResource(R.drawable.ic_public);
|
||||
break;
|
||||
case "unlisted":
|
||||
holder.status_privacy.setImageResource(R.drawable.ic_lock_open);
|
||||
break;
|
||||
case "private":
|
||||
holder.status_privacy.setImageResource(R.drawable.ic_lock_outline);
|
||||
break;
|
||||
case "direct":
|
||||
holder.status_privacy.setImageResource(R.drawable.ic_mail_outline);
|
||||
break;
|
||||
}
|
||||
switch (status.getVisibility()){
|
||||
case "direct":
|
||||
case "private":
|
||||
holder.status_reblog_count.setVisibility(View.GONE);
|
||||
break;
|
||||
case "public":
|
||||
case "unlisted":
|
||||
holder.status_reblog_count.setVisibility(View.VISIBLE);
|
||||
break;
|
||||
default:
|
||||
holder.status_reblog_count.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
holder.status_show_more.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
|
@ -664,15 +654,14 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On
|
|||
context.startActivity(Intent.createChooser(sendIntent, context.getString(R.string.share_with)));
|
||||
return true;
|
||||
case R.id.action_mention:
|
||||
status.setTakingScreenShot(true);
|
||||
notifyNotificationChanged(notification);
|
||||
Handler handler = new Handler();
|
||||
handler.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Bitmap bitmap = Helper.convertTootIntoBitmap(context, holder.getView());
|
||||
status.setTakingScreenShot(false);
|
||||
notifyNotificationChanged(notification);
|
||||
String name = "@"+(status.getReblog()!=null?status.getReblog().getAccount().getAcct():status.getAccount().getAcct());
|
||||
if( name.split("@", -1).length - 1 == 1)
|
||||
name = name + "@" + getLiveInstance(context);
|
||||
Bitmap bitmap = Helper.convertTootIntoBitmap(context, name, holder.notification_status_content);
|
||||
Intent intent = new Intent(context, TootActivity.class);
|
||||
Bundle b = new Bundle();
|
||||
String fname = "tootmention_" + status.getId() +".jpg";
|
||||
|
@ -1018,6 +1007,17 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On
|
|||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewAttachedToWindow(RecyclerView.ViewHolder holder) {
|
||||
super.onViewAttachedToWindow(holder);
|
||||
final NotificationsListAdapter.ViewHolder viewHolder = (NotificationsListAdapter.ViewHolder) holder;
|
||||
// Bug workaround for losing text selection ability, see:
|
||||
// https://code.google.com/p/android/issues/detail?id=208169
|
||||
viewHolder.notification_status_content.setEnabled(false);
|
||||
viewHolder.notification_status_content.setEnabled(true);
|
||||
viewHolder.status_spoiler.setEnabled(false);
|
||||
viewHolder.status_spoiler.setEnabled(true);
|
||||
}
|
||||
|
||||
class ViewHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
|
|
|
@ -18,7 +18,6 @@ import android.annotation.SuppressLint;
|
|||
import android.app.Activity;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Typeface;
|
||||
import android.os.Handler;
|
||||
import android.support.design.widget.FloatingActionButton;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
|
@ -90,12 +89,14 @@ import fr.gouv.etalab.mastodon.activities.ShowAccountActivity;
|
|||
import fr.gouv.etalab.mastodon.activities.ShowConversationActivity;
|
||||
import fr.gouv.etalab.mastodon.activities.TootActivity;
|
||||
import fr.gouv.etalab.mastodon.asynctasks.PostActionAsyncTask;
|
||||
import fr.gouv.etalab.mastodon.asynctasks.RetrieveCardAsyncTask;
|
||||
import fr.gouv.etalab.mastodon.asynctasks.RetrieveFeedsAsyncTask;
|
||||
import fr.gouv.etalab.mastodon.asynctasks.RetrieveRepliesAsyncTask;
|
||||
import fr.gouv.etalab.mastodon.client.API;
|
||||
import fr.gouv.etalab.mastodon.client.APIResponse;
|
||||
import fr.gouv.etalab.mastodon.client.Entities.Account;
|
||||
import fr.gouv.etalab.mastodon.client.Entities.Attachment;
|
||||
import fr.gouv.etalab.mastodon.client.Entities.Card;
|
||||
import fr.gouv.etalab.mastodon.client.Entities.Emojis;
|
||||
import fr.gouv.etalab.mastodon.client.Entities.Error;
|
||||
import fr.gouv.etalab.mastodon.client.Entities.Status;
|
||||
|
@ -103,6 +104,7 @@ import fr.gouv.etalab.mastodon.fragments.DisplayStatusFragment;
|
|||
import fr.gouv.etalab.mastodon.helper.CrossActions;
|
||||
import fr.gouv.etalab.mastodon.helper.Helper;
|
||||
import fr.gouv.etalab.mastodon.interfaces.OnPostActionInterface;
|
||||
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveCardInterface;
|
||||
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveEmojiInterface;
|
||||
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveFeedsInterface;
|
||||
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveRepliesInterface;
|
||||
|
@ -113,13 +115,14 @@ import fr.gouv.etalab.mastodon.sqlite.TempMuteDAO;
|
|||
import static fr.gouv.etalab.mastodon.activities.MainActivity.currentLocale;
|
||||
import static fr.gouv.etalab.mastodon.helper.Helper.THEME_DARK;
|
||||
import static fr.gouv.etalab.mastodon.helper.Helper.changeDrawableColor;
|
||||
import static fr.gouv.etalab.mastodon.helper.Helper.getLiveInstance;
|
||||
|
||||
|
||||
/**
|
||||
* Created by Thomas on 24/04/2017.
|
||||
* Adapter for Status
|
||||
*/
|
||||
public class StatusListAdapter extends RecyclerView.Adapter implements OnPostActionInterface, OnRetrieveFeedsInterface, OnRetrieveEmojiInterface, OnRetrieveRepliesInterface {
|
||||
public class StatusListAdapter extends RecyclerView.Adapter implements OnPostActionInterface, OnRetrieveFeedsInterface, OnRetrieveEmojiInterface, OnRetrieveRepliesInterface, OnRetrieveCardInterface {
|
||||
|
||||
private Context context;
|
||||
private List<Status> statuses;
|
||||
|
@ -133,7 +136,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
|||
private final int DISPLAYED_STATUS = 1;
|
||||
private int conversationPosition;
|
||||
private List<String> timedMute;
|
||||
|
||||
private int oldPosition;
|
||||
|
||||
|
||||
|
||||
|
@ -213,6 +216,19 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewAttachedToWindow(RecyclerView.ViewHolder holder) {
|
||||
super.onViewAttachedToWindow(holder);
|
||||
final ViewHolder viewHolder = (ViewHolder) holder;
|
||||
// Bug workaround for losing text selection ability, see:
|
||||
// https://code.google.com/p/android/issues/detail?id=208169
|
||||
viewHolder.status_content.setEnabled(false);
|
||||
viewHolder.status_content.setEnabled(true);
|
||||
viewHolder.status_spoiler.setEnabled(false);
|
||||
viewHolder.status_spoiler.setEnabled(true);
|
||||
}
|
||||
|
||||
|
||||
class ViewHolder extends RecyclerView.ViewHolder{
|
||||
LinearLayout status_content_container;
|
||||
LinearLayout status_spoiler_container;
|
||||
|
@ -535,9 +551,8 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
|||
|
||||
holder.status_content.setText(status.getContentSpan(), TextView.BufferType.SPANNABLE);
|
||||
holder.status_spoiler.setText(status.getContentSpanCW(), TextView.BufferType.SPANNABLE);
|
||||
|
||||
holder.status_content.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
|
||||
holder.status_spoiler.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
//Manages translations
|
||||
final MyTransL myTransL = MyTransL.getInstance(MyTransL.translatorEngine.YANDEX);
|
||||
myTransL.setObfuscation(true);
|
||||
|
@ -673,217 +688,204 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
|||
holder.status_account_profile_boost_by.setVisibility(View.GONE);
|
||||
holder.status_account_profile.setVisibility(View.VISIBLE);
|
||||
}
|
||||
if( status.isTakingScreenShot()){
|
||||
holder.status_document_container.setVisibility(View.GONE);
|
||||
holder.status_content.setVisibility(View.VISIBLE);
|
||||
holder.status_content_translated_container.setVisibility(View.GONE);
|
||||
holder.status_spoiler_button.setVisibility(View.GONE);
|
||||
holder.status_spoiler_mention_container.setVisibility(View.GONE);
|
||||
holder.status_content_container.setVisibility(View.VISIBLE);
|
||||
holder.status_translate.setVisibility(View.GONE);
|
||||
holder.status_show_more.setVisibility(View.GONE);
|
||||
holder.status_action_container.setVisibility(View.INVISIBLE);
|
||||
holder.status_action_container.setVisibility(View.VISIBLE);
|
||||
if( trans_forced || (translator != Helper.TRANS_NONE && currentLocale != null && status.getLanguage() != null && !status.getLanguage().trim().equals(currentLocale))){
|
||||
holder.status_translate.setVisibility(View.VISIBLE);
|
||||
}else {
|
||||
holder.status_action_container.setVisibility(View.VISIBLE);
|
||||
if( trans_forced || (translator != Helper.TRANS_NONE && currentLocale != null && status.getLanguage() != null && !status.getLanguage().trim().equals(currentLocale))){
|
||||
holder.status_translate.setVisibility(View.VISIBLE);
|
||||
}else {
|
||||
holder.status_translate.setVisibility(View.GONE);
|
||||
}
|
||||
if( status.getReblog() == null) {
|
||||
if (status.getSpoiler_text() != null && status.getSpoiler_text().trim().length() > 0 ) {
|
||||
holder.status_spoiler_container.setVisibility(View.VISIBLE);
|
||||
if( !status.isSpoilerShown()) {
|
||||
holder.status_content_container.setVisibility(View.GONE);
|
||||
holder.status_spoiler_mention_container.setVisibility(View.VISIBLE);
|
||||
holder.status_spoiler_button.setText(context.getString(R.string.load_attachment_spoiler));
|
||||
}else {
|
||||
holder.status_content_container.setVisibility(View.VISIBLE);
|
||||
holder.status_spoiler_mention_container.setVisibility(View.GONE);
|
||||
holder.status_spoiler_button.setText(context.getString(R.string.load_attachment_spoiler_less));
|
||||
}
|
||||
} else {
|
||||
holder.status_spoiler_container.setVisibility(View.GONE);
|
||||
holder.status_spoiler_mention_container.setVisibility(View.GONE);
|
||||
holder.status_content_container.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}else {
|
||||
if (status.getReblog().getSpoiler_text() != null && status.getReblog().getSpoiler_text().trim().length() > 0) {
|
||||
holder.status_spoiler_container.setVisibility(View.VISIBLE);
|
||||
if( !status.isSpoilerShown()) {
|
||||
holder.status_content_container.setVisibility(View.GONE);
|
||||
holder.status_spoiler_mention_container.setVisibility(View.VISIBLE);
|
||||
holder.status_spoiler_button.setText(context.getString(R.string.load_attachment_spoiler));
|
||||
}else {
|
||||
holder.status_content_container.setVisibility(View.VISIBLE);
|
||||
holder.status_spoiler_mention_container.setVisibility(View.GONE);
|
||||
holder.status_spoiler_button.setText(context.getString(R.string.load_attachment_spoiler_less));
|
||||
}
|
||||
} else {
|
||||
holder.status_spoiler_container.setVisibility(View.GONE);
|
||||
holder.status_spoiler_mention_container.setVisibility(View.GONE);
|
||||
holder.status_content_container.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
if( status.getReblog() == null) {
|
||||
if (status.getMedia_attachments().size() < 1) {
|
||||
holder.status_document_container.setVisibility(View.GONE);
|
||||
holder.status_show_more.setVisibility(View.GONE);
|
||||
} else {
|
||||
//If medias are loaded without any conditions or if device is on wifi
|
||||
if (!status.isSensitive() && (behaviorWithAttachments == Helper.ATTACHMENT_ALWAYS || (behaviorWithAttachments == Helper.ATTACHMENT_WIFI && isOnWifi))) {
|
||||
loadAttachments(status, holder);
|
||||
holder.status_show_more.setVisibility(View.GONE);
|
||||
status.setAttachmentShown(true);
|
||||
} else {
|
||||
//Text depending if toots is sensitive or not
|
||||
String textShowMore = (status.isSensitive()) ? context.getString(R.string.load_sensitive_attachment) : context.getString(R.string.load_attachment);
|
||||
holder.status_show_more.setText(textShowMore);
|
||||
if (!status.isAttachmentShown()) {
|
||||
holder.status_show_more.setVisibility(View.VISIBLE);
|
||||
holder.status_document_container.setVisibility(View.GONE);
|
||||
} else {
|
||||
loadAttachments(status, holder);
|
||||
}
|
||||
}
|
||||
}
|
||||
}else { //Attachments for reblogs
|
||||
|
||||
if (status.getReblog().getMedia_attachments().size() < 1) {
|
||||
holder.status_document_container.setVisibility(View.GONE);
|
||||
holder.status_show_more.setVisibility(View.GONE);
|
||||
} else {
|
||||
//If medias are loaded without any conditions or if device is on wifi
|
||||
if (!status.getReblog().isSensitive() && (behaviorWithAttachments == Helper.ATTACHMENT_ALWAYS || (behaviorWithAttachments == Helper.ATTACHMENT_WIFI && isOnWifi))) {
|
||||
loadAttachments(status.getReblog(), holder);
|
||||
holder.status_show_more.setVisibility(View.GONE);
|
||||
status.getReblog().setAttachmentShown(true);
|
||||
} else {
|
||||
//Text depending if toots is sensitive or not
|
||||
String textShowMore = (status.getReblog().isSensitive()) ? context.getString(R.string.load_sensitive_attachment) : context.getString(R.string.load_attachment);
|
||||
holder.status_show_more.setText(textShowMore);
|
||||
if (!status.isAttachmentShown()) {
|
||||
holder.status_show_more.setVisibility(View.VISIBLE);
|
||||
holder.status_document_container.setVisibility(View.GONE);
|
||||
} else {
|
||||
loadAttachments(status.getReblog(), holder);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Typeface tf = Typeface.createFromAsset(context.getAssets(), "fonts/DroidSans-Regular.ttf");
|
||||
holder.status_content.setTypeface(tf);
|
||||
holder.status_content_translated.setTypeface(tf);
|
||||
//Toot was translated and user asked to see it
|
||||
|
||||
if( status.isTranslationShown() && status.getContentSpanTranslated() != null){
|
||||
holder.status_content_translated.setText(status.getContentSpanTranslated(), TextView.BufferType.SPANNABLE);
|
||||
holder.status_content.setVisibility(View.GONE);
|
||||
holder.status_content_translated_container.setVisibility(View.VISIBLE);
|
||||
}else { //Toot is not translated
|
||||
holder.status_content.setVisibility(View.VISIBLE);
|
||||
holder.status_content_translated_container.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
switch (status.getVisibility()){
|
||||
case "direct":
|
||||
case "private":
|
||||
holder.status_reblog_count.setVisibility(View.GONE);
|
||||
break;
|
||||
case "public":
|
||||
case "unlisted":
|
||||
holder.status_reblog_count.setVisibility(View.VISIBLE);
|
||||
break;
|
||||
default:
|
||||
holder.status_reblog_count.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
switch (status.getVisibility()){
|
||||
case "public":
|
||||
holder.status_privacy.setImageResource(R.drawable.ic_public);
|
||||
break;
|
||||
case "unlisted":
|
||||
holder.status_privacy.setImageResource(R.drawable.ic_lock_open);
|
||||
break;
|
||||
case "private":
|
||||
holder.status_privacy.setImageResource(R.drawable.ic_lock_outline);
|
||||
break;
|
||||
case "direct":
|
||||
holder.status_privacy.setImageResource(R.drawable.ic_mail_outline);
|
||||
break;
|
||||
}
|
||||
|
||||
Drawable imgFav, imgReblog, imgReply;
|
||||
if( status.isFavourited() || (status.getReblog() != null && status.getReblog().isFavourited())) {
|
||||
changeDrawableColor(context, R.drawable.ic_star,R.color.marked_icon);
|
||||
imgFav = ContextCompat.getDrawable(context, R.drawable.ic_star);
|
||||
}else {
|
||||
if( theme == THEME_DARK)
|
||||
changeDrawableColor(context, R.drawable.ic_star_border,R.color.dark_icon);
|
||||
else
|
||||
changeDrawableColor(context, R.drawable.ic_star_border,R.color.black);
|
||||
imgFav = ContextCompat.getDrawable(context, R.drawable.ic_star_border);
|
||||
}
|
||||
|
||||
if( status.isReblogged()|| (status.getReblog() != null && status.getReblog().isReblogged())) {
|
||||
changeDrawableColor(context, R.drawable.ic_repeat_boost,R.color.boost_icon);
|
||||
imgReblog = ContextCompat.getDrawable(context, R.drawable.ic_repeat_boost);
|
||||
}else {
|
||||
if( theme == THEME_DARK)
|
||||
changeDrawableColor(context, R.drawable.ic_repeat,R.color.dark_icon);
|
||||
else
|
||||
changeDrawableColor(context, R.drawable.ic_repeat,R.color.black);
|
||||
imgReblog = ContextCompat.getDrawable(context, R.drawable.ic_repeat);
|
||||
}
|
||||
|
||||
|
||||
if( theme == THEME_DARK)
|
||||
changeDrawableColor(context, R.drawable.ic_reply,R.color.dark_icon);
|
||||
else
|
||||
changeDrawableColor(context, R.drawable.ic_reply,R.color.black);
|
||||
imgReply = ContextCompat.getDrawable(context, R.drawable.ic_reply);
|
||||
|
||||
|
||||
assert imgFav != null;
|
||||
imgFav.setBounds(0,0,(int) (20 * iconSizePercent/100 * scale + 0.5f),(int) (20 * iconSizePercent/100 * scale + 0.5f));
|
||||
assert imgReblog != null;
|
||||
imgReblog.setBounds(0,0,(int) (20 * iconSizePercent/100 * scale + 0.5f),(int) (20 * iconSizePercent/100 * scale + 0.5f));
|
||||
assert imgReply != null;
|
||||
imgReply.setBounds(0,0,(int) (20 * iconSizePercent/100 * scale + 0.5f),(int) (20 * iconSizePercent/100 * scale + 0.5f));
|
||||
|
||||
holder.status_favorite_count.setCompoundDrawables(imgFav, null, null, null);
|
||||
holder.status_reblog_count.setCompoundDrawables(imgReblog, null, null, null);
|
||||
holder.status_reply.setCompoundDrawables(imgReply, null, null, null);
|
||||
|
||||
|
||||
boolean isOwner = status.getAccount().getId().equals(userId);
|
||||
|
||||
// Pinning toots is only available on Mastodon 1._6_.0 instances.
|
||||
if (isOwner && Helper.canPin && (status.getVisibility().equals("public") || status.getVisibility().equals("unlisted")) && status.getReblog() == null) {
|
||||
Drawable imgPin;
|
||||
if( status.isPinned()|| (status.getReblog() != null && status.getReblog().isPinned())) {
|
||||
changeDrawableColor(context, R.drawable.ic_pin_drop_p,R.color.marked_icon);
|
||||
imgPin = ContextCompat.getDrawable(context, R.drawable.ic_pin_drop_p);
|
||||
holder.status_translate.setVisibility(View.GONE);
|
||||
}
|
||||
if( status.getReblog() == null) {
|
||||
if (status.getSpoiler_text() != null && status.getSpoiler_text().trim().length() > 0 ) {
|
||||
holder.status_spoiler_container.setVisibility(View.VISIBLE);
|
||||
if( !status.isSpoilerShown()) {
|
||||
holder.status_content_container.setVisibility(View.GONE);
|
||||
holder.status_spoiler_mention_container.setVisibility(View.VISIBLE);
|
||||
holder.status_spoiler_button.setText(context.getString(R.string.load_attachment_spoiler));
|
||||
}else {
|
||||
if( theme == THEME_DARK)
|
||||
changeDrawableColor(context, R.drawable.ic_pin_drop,R.color.dark_icon);
|
||||
else
|
||||
changeDrawableColor(context, R.drawable.ic_pin_drop,R.color.black);
|
||||
imgPin = ContextCompat.getDrawable(context, R.drawable.ic_pin_drop);
|
||||
holder.status_content_container.setVisibility(View.VISIBLE);
|
||||
holder.status_spoiler_mention_container.setVisibility(View.GONE);
|
||||
holder.status_spoiler_button.setText(context.getString(R.string.load_attachment_spoiler_less));
|
||||
}
|
||||
assert imgPin != null;
|
||||
imgPin.setBounds(0,0,(int) (20 * iconSizePercent/100 * scale + 0.5f),(int) (20 * iconSizePercent/100 * scale + 0.5f));
|
||||
holder.status_pin.setImageDrawable(imgPin);
|
||||
|
||||
holder.status_pin.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
holder.status_spoiler_container.setVisibility(View.GONE);
|
||||
holder.status_spoiler_mention_container.setVisibility(View.GONE);
|
||||
holder.status_content_container.setVisibility(View.VISIBLE);
|
||||
}
|
||||
else {
|
||||
holder.status_pin.setVisibility(View.GONE);
|
||||
}else {
|
||||
if (status.getReblog().getSpoiler_text() != null && status.getReblog().getSpoiler_text().trim().length() > 0) {
|
||||
holder.status_spoiler_container.setVisibility(View.VISIBLE);
|
||||
if( !status.isSpoilerShown()) {
|
||||
holder.status_content_container.setVisibility(View.GONE);
|
||||
holder.status_spoiler_mention_container.setVisibility(View.VISIBLE);
|
||||
holder.status_spoiler_button.setText(context.getString(R.string.load_attachment_spoiler));
|
||||
}else {
|
||||
holder.status_content_container.setVisibility(View.VISIBLE);
|
||||
holder.status_spoiler_mention_container.setVisibility(View.GONE);
|
||||
holder.status_spoiler_button.setText(context.getString(R.string.load_attachment_spoiler_less));
|
||||
}
|
||||
} else {
|
||||
holder.status_spoiler_container.setVisibility(View.GONE);
|
||||
holder.status_spoiler_mention_container.setVisibility(View.GONE);
|
||||
holder.status_content_container.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
if( status.getReblog() == null) {
|
||||
if (status.getMedia_attachments().size() < 1) {
|
||||
holder.status_document_container.setVisibility(View.GONE);
|
||||
holder.status_show_more.setVisibility(View.GONE);
|
||||
} else {
|
||||
//If medias are loaded without any conditions or if device is on wifi
|
||||
if (!status.isSensitive() && (behaviorWithAttachments == Helper.ATTACHMENT_ALWAYS || (behaviorWithAttachments == Helper.ATTACHMENT_WIFI && isOnWifi))) {
|
||||
loadAttachments(status, holder);
|
||||
holder.status_show_more.setVisibility(View.GONE);
|
||||
status.setAttachmentShown(true);
|
||||
} else {
|
||||
//Text depending if toots is sensitive or not
|
||||
String textShowMore = (status.isSensitive()) ? context.getString(R.string.load_sensitive_attachment) : context.getString(R.string.load_attachment);
|
||||
holder.status_show_more.setText(textShowMore);
|
||||
if (!status.isAttachmentShown()) {
|
||||
holder.status_show_more.setVisibility(View.VISIBLE);
|
||||
holder.status_document_container.setVisibility(View.GONE);
|
||||
} else {
|
||||
loadAttachments(status, holder);
|
||||
}
|
||||
}
|
||||
}
|
||||
}else { //Attachments for reblogs
|
||||
|
||||
if (status.getReblog().getMedia_attachments().size() < 1) {
|
||||
holder.status_document_container.setVisibility(View.GONE);
|
||||
holder.status_show_more.setVisibility(View.GONE);
|
||||
} else {
|
||||
//If medias are loaded without any conditions or if device is on wifi
|
||||
if (!status.getReblog().isSensitive() && (behaviorWithAttachments == Helper.ATTACHMENT_ALWAYS || (behaviorWithAttachments == Helper.ATTACHMENT_WIFI && isOnWifi))) {
|
||||
loadAttachments(status.getReblog(), holder);
|
||||
holder.status_show_more.setVisibility(View.GONE);
|
||||
status.getReblog().setAttachmentShown(true);
|
||||
} else {
|
||||
//Text depending if toots is sensitive or not
|
||||
String textShowMore = (status.getReblog().isSensitive()) ? context.getString(R.string.load_sensitive_attachment) : context.getString(R.string.load_attachment);
|
||||
holder.status_show_more.setText(textShowMore);
|
||||
if (!status.isAttachmentShown()) {
|
||||
holder.status_show_more.setVisibility(View.VISIBLE);
|
||||
holder.status_document_container.setVisibility(View.GONE);
|
||||
} else {
|
||||
loadAttachments(status.getReblog(), holder);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Toot was translated and user asked to see it
|
||||
|
||||
if( status.isTranslationShown() && status.getContentSpanTranslated() != null){
|
||||
holder.status_content_translated.setText(status.getContentSpanTranslated(), TextView.BufferType.SPANNABLE);
|
||||
holder.status_content.setVisibility(View.GONE);
|
||||
holder.status_content_translated_container.setVisibility(View.VISIBLE);
|
||||
}else { //Toot is not translated
|
||||
holder.status_content.setVisibility(View.VISIBLE);
|
||||
holder.status_content_translated_container.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
switch (status.getVisibility()){
|
||||
case "direct":
|
||||
case "private":
|
||||
holder.status_reblog_count.setVisibility(View.GONE);
|
||||
break;
|
||||
case "public":
|
||||
case "unlisted":
|
||||
holder.status_reblog_count.setVisibility(View.VISIBLE);
|
||||
break;
|
||||
default:
|
||||
holder.status_reblog_count.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
switch (status.getVisibility()){
|
||||
case "public":
|
||||
holder.status_privacy.setImageResource(R.drawable.ic_public);
|
||||
break;
|
||||
case "unlisted":
|
||||
holder.status_privacy.setImageResource(R.drawable.ic_lock_open);
|
||||
break;
|
||||
case "private":
|
||||
holder.status_privacy.setImageResource(R.drawable.ic_lock_outline);
|
||||
break;
|
||||
case "direct":
|
||||
holder.status_privacy.setImageResource(R.drawable.ic_mail_outline);
|
||||
break;
|
||||
}
|
||||
|
||||
Drawable imgFav, imgReblog, imgReply;
|
||||
if( status.isFavourited() || (status.getReblog() != null && status.getReblog().isFavourited())) {
|
||||
changeDrawableColor(context, R.drawable.ic_star,R.color.marked_icon);
|
||||
imgFav = ContextCompat.getDrawable(context, R.drawable.ic_star);
|
||||
}else {
|
||||
if( theme == THEME_DARK)
|
||||
changeDrawableColor(context, R.drawable.ic_star_border,R.color.dark_icon);
|
||||
else
|
||||
changeDrawableColor(context, R.drawable.ic_star_border,R.color.black);
|
||||
imgFav = ContextCompat.getDrawable(context, R.drawable.ic_star_border);
|
||||
}
|
||||
|
||||
if( status.isReblogged()|| (status.getReblog() != null && status.getReblog().isReblogged())) {
|
||||
changeDrawableColor(context, R.drawable.ic_repeat_boost,R.color.boost_icon);
|
||||
imgReblog = ContextCompat.getDrawable(context, R.drawable.ic_repeat_boost);
|
||||
}else {
|
||||
if( theme == THEME_DARK)
|
||||
changeDrawableColor(context, R.drawable.ic_repeat,R.color.dark_icon);
|
||||
else
|
||||
changeDrawableColor(context, R.drawable.ic_repeat,R.color.black);
|
||||
imgReblog = ContextCompat.getDrawable(context, R.drawable.ic_repeat);
|
||||
}
|
||||
|
||||
|
||||
if( theme == THEME_DARK)
|
||||
changeDrawableColor(context, R.drawable.ic_reply,R.color.dark_icon);
|
||||
else
|
||||
changeDrawableColor(context, R.drawable.ic_reply,R.color.black);
|
||||
imgReply = ContextCompat.getDrawable(context, R.drawable.ic_reply);
|
||||
|
||||
|
||||
assert imgFav != null;
|
||||
imgFav.setBounds(0,0,(int) (20 * iconSizePercent/100 * scale + 0.5f),(int) (20 * iconSizePercent/100 * scale + 0.5f));
|
||||
assert imgReblog != null;
|
||||
imgReblog.setBounds(0,0,(int) (20 * iconSizePercent/100 * scale + 0.5f),(int) (20 * iconSizePercent/100 * scale + 0.5f));
|
||||
assert imgReply != null;
|
||||
imgReply.setBounds(0,0,(int) (20 * iconSizePercent/100 * scale + 0.5f),(int) (20 * iconSizePercent/100 * scale + 0.5f));
|
||||
|
||||
holder.status_favorite_count.setCompoundDrawables(imgFav, null, null, null);
|
||||
holder.status_reblog_count.setCompoundDrawables(imgReblog, null, null, null);
|
||||
holder.status_reply.setCompoundDrawables(imgReply, null, null, null);
|
||||
|
||||
|
||||
boolean isOwner = status.getAccount().getId().equals(userId);
|
||||
|
||||
// Pinning toots is only available on Mastodon 1._6_.0 instances.
|
||||
if (isOwner && Helper.canPin && (status.getVisibility().equals("public") || status.getVisibility().equals("unlisted")) && status.getReblog() == null) {
|
||||
Drawable imgPin;
|
||||
if( status.isPinned()|| (status.getReblog() != null && status.getReblog().isPinned())) {
|
||||
changeDrawableColor(context, R.drawable.ic_pin_drop_p,R.color.marked_icon);
|
||||
imgPin = ContextCompat.getDrawable(context, R.drawable.ic_pin_drop_p);
|
||||
}else {
|
||||
if( theme == THEME_DARK)
|
||||
changeDrawableColor(context, R.drawable.ic_pin_drop,R.color.dark_icon);
|
||||
else
|
||||
changeDrawableColor(context, R.drawable.ic_pin_drop,R.color.black);
|
||||
imgPin = ContextCompat.getDrawable(context, R.drawable.ic_pin_drop);
|
||||
}
|
||||
assert imgPin != null;
|
||||
imgPin.setBounds(0,0,(int) (20 * iconSizePercent/100 * scale + 0.5f),(int) (20 * iconSizePercent/100 * scale + 0.5f));
|
||||
holder.status_pin.setImageDrawable(imgPin);
|
||||
|
||||
holder.status_pin.setVisibility(View.VISIBLE);
|
||||
}
|
||||
else {
|
||||
holder.status_pin.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
|
||||
holder.status_content.setOnTouchListener(new View.OnTouchListener() {
|
||||
@Override
|
||||
public boolean onTouch(View view, MotionEvent motionEvent) {
|
||||
|
@ -931,16 +933,19 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
|||
holder.status_content.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
new RetrieveFeedsAsyncTask(context, RetrieveFeedsAsyncTask.Type.ONESTATUS, status.getId(),null, false,false, StatusListAdapter.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
oldPosition = conversationPosition;
|
||||
conversationPosition = holder.getAdapterPosition();
|
||||
new RetrieveCardAsyncTask(context, status.getId(), StatusListAdapter.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
}
|
||||
});
|
||||
holder.main_container.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
new RetrieveFeedsAsyncTask(context, RetrieveFeedsAsyncTask.Type.ONESTATUS, status.getId(),null, false,false, StatusListAdapter.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
oldPosition = conversationPosition;
|
||||
conversationPosition = holder.getAdapterPosition();
|
||||
new RetrieveCardAsyncTask(context, status.getId(), StatusListAdapter.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
}
|
||||
});
|
||||
|
||||
if( position == conversationPosition){
|
||||
if( theme == Helper.THEME_LIGHT)
|
||||
holder.main_container.setBackgroundResource(R.color.mastodonC3_);
|
||||
|
@ -993,6 +998,8 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
|||
}
|
||||
|
||||
}else {
|
||||
holder.status_cardview.setVisibility(View.GONE);
|
||||
holder.status_cardview_video.setVisibility(View.GONE);
|
||||
if( theme == Helper.THEME_LIGHT)
|
||||
holder.main_container.setBackgroundResource(R.color.mastodonC3__);
|
||||
else
|
||||
|
@ -1073,7 +1080,6 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
|||
@Override
|
||||
public void onClick(View v) {
|
||||
loadAttachments(status, holder);
|
||||
holder.status_show_more.setVisibility(View.GONE);
|
||||
status.setAttachmentShown(true);
|
||||
notifyStatusChanged(status);
|
||||
/*
|
||||
|
@ -1094,7 +1100,6 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
|||
|
||||
public void onFinish() {
|
||||
status.setAttachmentShown(false);
|
||||
holder.status_show_more.setVisibility(View.VISIBLE);
|
||||
notifyStatusChanged(status);
|
||||
}
|
||||
}.start();
|
||||
|
@ -1250,7 +1255,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
|||
break;
|
||||
case R.id.action_copy:
|
||||
ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
|
||||
String content;
|
||||
final String content;
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
|
||||
content = Html.fromHtml(status.getContent(), Html.FROM_HTML_MODE_LEGACY).toString();
|
||||
else
|
||||
|
@ -1283,16 +1288,15 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
|||
context.startActivity(Intent.createChooser(sendIntent, context.getString(R.string.share_with)));
|
||||
return true;
|
||||
case R.id.action_mention:
|
||||
status.setTakingScreenShot(true);
|
||||
notifyStatusChanged(status);
|
||||
// Get a handler that can be used to post to the main thread
|
||||
final Handler handler = new Handler();
|
||||
handler.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Bitmap bitmap = Helper.convertTootIntoBitmap(context, holder.getView());
|
||||
status.setTakingScreenShot(false);
|
||||
notifyStatusChanged(status);
|
||||
String name = "@"+(status.getReblog()!=null?status.getReblog().getAccount().getAcct():status.getAccount().getAcct());
|
||||
if( name.split("@", -1).length - 1 == 1)
|
||||
name = name + "@" + getLiveInstance(context);
|
||||
Bitmap bitmap = Helper.convertTootIntoBitmap(context, name, holder.status_content);
|
||||
Intent intent = new Intent(context, TootActivity.class);
|
||||
Bundle b = new Bundle();
|
||||
String fname = "tootmention_" + status.getId() +".jpg";
|
||||
|
@ -1488,31 +1492,22 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
|||
|
||||
@Override
|
||||
public void onRetrieveFeeds(APIResponse apiResponse) {
|
||||
if( apiResponse.getError() != null){
|
||||
final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE);
|
||||
boolean show_error_messages = sharedpreferences.getBoolean(Helper.SET_SHOW_ERROR_MESSAGES, true);
|
||||
if( show_error_messages)
|
||||
Toast.makeText(context, apiResponse.getError().getError(),Toast.LENGTH_LONG).show();
|
||||
return;
|
||||
}
|
||||
|
||||
if( type == RetrieveFeedsAsyncTask.Type.CONTEXT && apiResponse.getStatuses().size() == 1){
|
||||
int oldPosition = conversationPosition;
|
||||
int newPosition = 0;
|
||||
for(Status status: statuses){
|
||||
if(status.getId().equals(apiResponse.getStatuses().get(0).getId())){
|
||||
conversationPosition = newPosition;
|
||||
break;
|
||||
}
|
||||
newPosition++;
|
||||
}
|
||||
if( oldPosition < statuses.size())
|
||||
statusListAdapter.notifyItemChanged(oldPosition);
|
||||
if( conversationPosition < statuses.size())
|
||||
statusListAdapter.notifyItemChanged(conversationPosition);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void onRetrieveAccount(Card card) {
|
||||
if( conversationPosition < this.statuses.size() && card != null)
|
||||
this.statuses.get(conversationPosition).setCard(card);
|
||||
if( oldPosition < this.statuses.size())
|
||||
statusListAdapter.notifyItemChanged(oldPosition);
|
||||
if( conversationPosition < this.statuses.size())
|
||||
statusListAdapter.notifyItemChanged(conversationPosition);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onPostAction(int statusCode, API.StatusAction statusAction, String targetedId, Error error) {
|
||||
|
||||
|
|
|
@ -70,7 +70,7 @@ public class SettingsFragment extends Fragment {
|
|||
private Context context;
|
||||
private static final int ACTIVITY_CHOOSE_FILE = 411;
|
||||
private TextView set_folder;
|
||||
int count2 = 0;
|
||||
int count1, count2 = 0;
|
||||
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
|
@ -520,6 +520,7 @@ public class SettingsFragment extends Fragment {
|
|||
}
|
||||
});
|
||||
|
||||
//Translators
|
||||
final Spinner translation_layout_spinner = rootView.findViewById(R.id.translation_layout_spinner);
|
||||
ArrayAdapter<CharSequence> adapterTrans = ArrayAdapter.createFromResource(getContext(),
|
||||
R.array.settings_translation, android.R.layout.simple_spinner_item);
|
||||
|
@ -569,8 +570,28 @@ public class SettingsFragment extends Fragment {
|
|||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
//Resize
|
||||
final Spinner resize_layout_spinner = rootView.findViewById(R.id.set_resize_picture);
|
||||
ArrayAdapter<CharSequence> adapterResize = ArrayAdapter.createFromResource(getContext(),
|
||||
R.array.settings_resize_picture, android.R.layout.simple_spinner_item);
|
||||
resize_layout_spinner.setAdapter(adapterResize);
|
||||
int positionSpinnerResize = sharedpreferences.getInt(Helper.SET_PICTURE_RESIZE, Helper.S_1MO);
|
||||
resize_layout_spinner.setSelection(positionSpinnerResize);
|
||||
resize_layout_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
||||
if( count1 > 0){
|
||||
SharedPreferences.Editor editor = sharedpreferences.edit();
|
||||
editor.putInt(Helper.SET_PICTURE_RESIZE, position);
|
||||
editor.apply();
|
||||
}else {
|
||||
count1++;
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onNothingSelected(AdapterView<?> parent) {
|
||||
}
|
||||
});
|
||||
return rootView;
|
||||
}
|
||||
|
||||
|
|
|
@ -224,6 +224,11 @@ public class Helper {
|
|||
public static final String SET_LIVE_NOTIFICATIONS = "set_live_notifications";
|
||||
public static final String SET_DISABLE_GIF = "set_disable_gif";
|
||||
public static final String SET_CAPITALIZE = "set_capitalize";
|
||||
public static final String SET_PICTURE_RESIZE = "set_picture_resize";
|
||||
public static final int S_NONE = 0;
|
||||
public static final int S_512KO = 1;
|
||||
public static final int S_1MO = 2;
|
||||
public static final int S_2MO = 3;
|
||||
public static final int ATTACHMENT_ALWAYS = 1;
|
||||
public static final int ATTACHMENT_WIFI = 2;
|
||||
public static final int ATTACHMENT_ASK = 3;
|
||||
|
@ -895,6 +900,18 @@ public class Helper {
|
|||
return null;
|
||||
}
|
||||
|
||||
public static String getLiveInstanceWithProtocol(Context context) {
|
||||
return instanceWithProtocol(getLiveInstance(context));
|
||||
}
|
||||
|
||||
public static String instanceWithProtocol(String instance){
|
||||
if( instance == null)
|
||||
return null;
|
||||
if( instance.endsWith(".onion"))
|
||||
return "http://" + instance;
|
||||
else
|
||||
return "https://" + instance;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -958,7 +975,7 @@ public class Helper {
|
|||
item.setIcon(R.drawable.ic_person);
|
||||
String url = account.getAvatar();
|
||||
if( url.startsWith("/") ){
|
||||
url = "https://" + Helper.getLiveInstance(activity) + account.getAvatar();
|
||||
url = Helper.getLiveInstanceWithProtocol(activity) + account.getAvatar();
|
||||
}
|
||||
Glide.with(activity.getApplicationContext())
|
||||
.asBitmap()
|
||||
|
@ -1093,7 +1110,7 @@ public class Helper {
|
|||
*/
|
||||
public static void loadPictureIcon(final Activity activity, String url, final ImageView imageView){
|
||||
if( url.startsWith("/") ){
|
||||
url = "https://" + Helper.getLiveInstance(activity) + url;
|
||||
url = Helper.getLiveInstanceWithProtocol(activity) + url;
|
||||
}
|
||||
|
||||
Glide.with(activity.getApplicationContext())
|
||||
|
@ -1169,14 +1186,20 @@ public class Helper {
|
|||
displayedName.setText(account.getDisplay_name());
|
||||
String url = account.getAvatar();
|
||||
if( url.startsWith("/") ){
|
||||
url = "https://" + Helper.getLiveInstance(activity) + account.getAvatar();
|
||||
url = Helper.getLiveInstanceWithProtocol(activity) + account.getAvatar();
|
||||
}
|
||||
Glide.with(activity.getApplicationContext())
|
||||
.load(url)
|
||||
.into(profilePicture);
|
||||
String urlHeader = account.getHeader();
|
||||
if( urlHeader.startsWith("/") ){
|
||||
urlHeader = "https://" + Helper.getLiveInstance(activity) + account.getHeader();
|
||||
urlHeader = Helper.getLiveInstanceWithProtocol(activity) + account.getHeader();
|
||||
}
|
||||
LinearLayout main_header_container = headerLayout.findViewById(R.id.main_header_container);
|
||||
final SharedPreferences sharedpreferences = activity.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
||||
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
|
||||
if( theme == Helper.THEME_LIGHT){
|
||||
main_header_container.setBackgroundDrawable( activity.getResources().getDrawable(R.drawable.side_nav_bar_dark));
|
||||
}
|
||||
if (!urlHeader.contains("missing.png")) {
|
||||
Glide.with(activity.getApplicationContext())
|
||||
|
@ -1184,7 +1207,7 @@ public class Helper {
|
|||
.load(urlHeader)
|
||||
.into(new SimpleTarget<Bitmap>() {
|
||||
@Override
|
||||
public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) {
|
||||
public void onResourceReady(@NonNull Bitmap resource, Transition<? super Bitmap> transition) {
|
||||
ImageView backgroundImage = headerLayout.findViewById(R.id.back_ground_image);
|
||||
backgroundImage.setImageBitmap(resource);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
|
||||
|
@ -1194,15 +1217,6 @@ public class Helper {
|
|||
}
|
||||
}
|
||||
});
|
||||
}else {
|
||||
LinearLayout main_header_container = headerLayout.findViewById(R.id.main_header_container);
|
||||
final SharedPreferences sharedpreferences = activity.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
||||
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
|
||||
if( theme == Helper.THEME_DARK){
|
||||
main_header_container.setBackgroundDrawable( activity.getResources().getDrawable(R.drawable.side_nav_bar_dark));
|
||||
}else {
|
||||
main_header_container.setBackgroundDrawable( activity.getResources().getDrawable(R.drawable.side_nav_bar));
|
||||
}
|
||||
}
|
||||
}
|
||||
profilePicture.setOnClickListener(null);
|
||||
|
@ -1668,28 +1682,24 @@ public class Helper {
|
|||
* @param view The view to convert
|
||||
* @return Bitmap
|
||||
*/
|
||||
public static Bitmap convertTootIntoBitmap(Context context, View view) {
|
||||
public static Bitmap convertTootIntoBitmap(Context context, String name, View view) {
|
||||
|
||||
int new_element_v = View.VISIBLE, notification_delete_v = View.VISIBLE;
|
||||
//Removes some elements
|
||||
ImageView new_element = view.findViewById(R.id.new_element);
|
||||
if( new_element != null) {
|
||||
new_element_v = new_element.getVisibility();
|
||||
new_element.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
ImageView notification_delete = view.findViewById(R.id.notification_delete);
|
||||
if( notification_delete != null) {
|
||||
notification_delete_v = notification_delete.getVisibility();
|
||||
notification_delete.setVisibility(View.GONE);
|
||||
}
|
||||
Bitmap returnedBitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
|
||||
Bitmap returnedBitmap = Bitmap.createBitmap(view.getWidth()+10, view.getHeight(), Bitmap.Config.ARGB_8888);
|
||||
Canvas canvas = new Canvas(returnedBitmap);
|
||||
canvas.drawBitmap(returnedBitmap, 10, 0, null);
|
||||
Drawable bgDrawable =view.getBackground();
|
||||
if (bgDrawable!=null)
|
||||
bgDrawable.draw(canvas);
|
||||
else
|
||||
canvas.drawColor(Color.WHITE);
|
||||
else {
|
||||
final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
||||
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
|
||||
if (theme == Helper.THEME_DARK) {
|
||||
canvas.drawColor(ContextCompat.getColor(context, R.color.mastodonC1));
|
||||
}else {
|
||||
canvas.drawColor(Color.WHITE);
|
||||
}
|
||||
}
|
||||
|
||||
view.draw(canvas);
|
||||
Paint paint = new Paint();
|
||||
int mastodonC4 = ContextCompat.getColor(context, R.color.mastodonC4);
|
||||
|
@ -1697,12 +1707,8 @@ public class Helper {
|
|||
paint.setStrokeWidth(12);
|
||||
paint.setTextSize(30);
|
||||
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER));
|
||||
canvas.drawText("Via #Mastalab", view.getWidth()-230, view.getHeight() -50, paint);
|
||||
canvas.drawText(name +" - #Mastalab", 10, view.getHeight() -50, paint);
|
||||
|
||||
if( new_element != null)
|
||||
new_element.setVisibility(new_element_v);
|
||||
if( notification_delete != null)
|
||||
notification_delete.setVisibility(notification_delete_v);
|
||||
return returnedBitmap;
|
||||
}
|
||||
|
||||
|
|
|
@ -45,7 +45,11 @@ import java.io.BufferedReader;
|
|||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.Authenticator;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.PasswordAuthentication;
|
||||
import java.net.Proxy;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
@ -84,6 +88,8 @@ public class LiveNotificationService extends Service {
|
|||
protected Account account;
|
||||
private boolean stop = false;
|
||||
private static HashMap<String, Boolean> isRunning = new HashMap<>();
|
||||
private Proxy proxy;
|
||||
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
}
|
||||
|
@ -95,11 +101,34 @@ public class LiveNotificationService extends Service {
|
|||
@Override
|
||||
public int onStartCommand(Intent intent, int flags, int startId) {
|
||||
|
||||
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
||||
boolean proxyEnabled = sharedpreferences.getBoolean(Helper.SET_PROXY_ENABLED, false);
|
||||
int type = sharedpreferences.getInt(Helper.SET_PROXY_TYPE, 0);
|
||||
proxy = null;
|
||||
if( proxyEnabled ){
|
||||
String host = sharedpreferences.getString(Helper.SET_PROXY_HOST, "127.0.0.1");
|
||||
int port = sharedpreferences.getInt(Helper.SET_PROXY_PORT, 8118);
|
||||
if( type == 0 )
|
||||
proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(host, port));
|
||||
else
|
||||
proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress(host, port));
|
||||
final String login = sharedpreferences.getString(Helper.SET_PROXY_LOGIN, null);
|
||||
final String pwd = sharedpreferences.getString(Helper.SET_PROXY_PASSWORD, null);
|
||||
if( login != null) {
|
||||
Authenticator authenticator = new Authenticator() {
|
||||
public PasswordAuthentication getPasswordAuthentication() {
|
||||
assert pwd != null;
|
||||
return (new PasswordAuthentication(login,
|
||||
pwd.toCharArray()));
|
||||
}
|
||||
};
|
||||
Authenticator.setDefault(authenticator);
|
||||
}
|
||||
}
|
||||
if( intent == null || intent.getBooleanExtra("stop", false) ) {
|
||||
stop = true;
|
||||
stopSelf();
|
||||
}
|
||||
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
||||
boolean liveNotifications = sharedpreferences.getBoolean(Helper.SET_LIVE_NOTIFICATIONS, true);
|
||||
|
||||
String userId;
|
||||
|
@ -156,95 +185,191 @@ public class LiveNotificationService extends Service {
|
|||
private void taks(Account account){
|
||||
InputStream inputStream = null;
|
||||
HttpsURLConnection httpsURLConnection = null;
|
||||
HttpURLConnection httpURLConnection = null;
|
||||
BufferedReader reader = null;
|
||||
Helper.EventStreaming lastEvent = null;
|
||||
|
||||
if( account != null){
|
||||
isRunning.get(account.getAcct()+account.getInstance());
|
||||
if(!isRunning.containsKey(account.getAcct()+account.getInstance()) || ! isRunning.get(account.getAcct()+account.getInstance())) {
|
||||
try {
|
||||
URL url = new URL("https://" + account.getInstance() + "/api/v1/streaming/user");
|
||||
httpsURLConnection = (HttpsURLConnection) url.openConnection();
|
||||
httpsURLConnection.setRequestProperty("Content-Type", "application/json");
|
||||
httpsURLConnection.setRequestProperty("Authorization", "Bearer " + account.getToken());
|
||||
httpsURLConnection.setRequestProperty("Connection", "Keep-Alive");
|
||||
httpsURLConnection.setRequestProperty("Keep-Alive", "header");
|
||||
httpsURLConnection.setRequestProperty("Connection", "close");
|
||||
httpsURLConnection.setSSLSocketFactory(new TLSSocketFactory());
|
||||
httpsURLConnection.setRequestMethod("GET");
|
||||
if (httpsURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
|
||||
inputStream = new BufferedInputStream(httpsURLConnection.getInputStream());
|
||||
reader = new BufferedReader(new InputStreamReader(inputStream));
|
||||
String event;
|
||||
Helper.EventStreaming eventStreaming;
|
||||
while ((event = reader.readLine()) != null) {
|
||||
isRunning.put(account.getAcct()+account.getInstance(), true);
|
||||
if ((lastEvent == Helper.EventStreaming.NONE || lastEvent == null) && !event.startsWith("data: ")) {
|
||||
switch (event.trim()) {
|
||||
case "event: update":
|
||||
lastEvent = Helper.EventStreaming.UPDATE;
|
||||
break;
|
||||
case "event: notification":
|
||||
lastEvent = Helper.EventStreaming.NOTIFICATION;
|
||||
break;
|
||||
case "event: delete":
|
||||
lastEvent = Helper.EventStreaming.DELETE;
|
||||
break;
|
||||
default:
|
||||
lastEvent = Helper.EventStreaming.NONE;
|
||||
}
|
||||
} else {
|
||||
if (!event.startsWith("data: ")) {
|
||||
lastEvent = Helper.EventStreaming.NONE;
|
||||
continue;
|
||||
}
|
||||
event = event.substring(6);
|
||||
if (lastEvent == Helper.EventStreaming.UPDATE) {
|
||||
eventStreaming = Helper.EventStreaming.UPDATE;
|
||||
} else if (lastEvent == Helper.EventStreaming.NOTIFICATION) {
|
||||
eventStreaming = Helper.EventStreaming.NOTIFICATION;
|
||||
} else if (lastEvent == Helper.EventStreaming.DELETE) {
|
||||
eventStreaming = Helper.EventStreaming.DELETE;
|
||||
event = "{id:" + event + "}";
|
||||
if (Helper.instanceWithProtocol(account.getInstance()).startsWith("https")) {
|
||||
try {
|
||||
URL url = new URL("https://" + account.getInstance() + "/api/v1/streaming/user");
|
||||
if( proxy != null)
|
||||
httpsURLConnection = (HttpsURLConnection) url.openConnection(proxy);
|
||||
else
|
||||
httpsURLConnection = (HttpsURLConnection) url.openConnection();
|
||||
httpsURLConnection.setRequestProperty("Content-Type", "application/json");
|
||||
httpsURLConnection.setRequestProperty("Authorization", "Bearer " + account.getToken());
|
||||
httpsURLConnection.setRequestProperty("Connection", "Keep-Alive");
|
||||
httpsURLConnection.setRequestProperty("Keep-Alive", "header");
|
||||
httpsURLConnection.setRequestProperty("Connection", "close");
|
||||
httpsURLConnection.setSSLSocketFactory(new TLSSocketFactory());
|
||||
httpsURLConnection.setRequestMethod("GET");
|
||||
if (httpsURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
|
||||
inputStream = new BufferedInputStream(httpsURLConnection.getInputStream());
|
||||
reader = new BufferedReader(new InputStreamReader(inputStream));
|
||||
String event;
|
||||
Helper.EventStreaming eventStreaming;
|
||||
while ((event = reader.readLine()) != null) {
|
||||
isRunning.put(account.getAcct() + account.getInstance(), true);
|
||||
if ((lastEvent == Helper.EventStreaming.NONE || lastEvent == null) && !event.startsWith("data: ")) {
|
||||
switch (event.trim()) {
|
||||
case "event: update":
|
||||
lastEvent = Helper.EventStreaming.UPDATE;
|
||||
break;
|
||||
case "event: notification":
|
||||
lastEvent = Helper.EventStreaming.NOTIFICATION;
|
||||
break;
|
||||
case "event: delete":
|
||||
lastEvent = Helper.EventStreaming.DELETE;
|
||||
break;
|
||||
default:
|
||||
lastEvent = Helper.EventStreaming.NONE;
|
||||
}
|
||||
} else {
|
||||
eventStreaming = Helper.EventStreaming.UPDATE;
|
||||
}
|
||||
lastEvent = Helper.EventStreaming.NONE;
|
||||
try {
|
||||
JSONObject eventJson = new JSONObject(event);
|
||||
onRetrieveStreaming(eventStreaming, account, eventJson);
|
||||
} catch (JSONException ignored) { ignored.printStackTrace();
|
||||
if (!event.startsWith("data: ")) {
|
||||
lastEvent = Helper.EventStreaming.NONE;
|
||||
continue;
|
||||
}
|
||||
event = event.substring(6);
|
||||
if (lastEvent == Helper.EventStreaming.UPDATE) {
|
||||
eventStreaming = Helper.EventStreaming.UPDATE;
|
||||
} else if (lastEvent == Helper.EventStreaming.NOTIFICATION) {
|
||||
eventStreaming = Helper.EventStreaming.NOTIFICATION;
|
||||
} else if (lastEvent == Helper.EventStreaming.DELETE) {
|
||||
eventStreaming = Helper.EventStreaming.DELETE;
|
||||
event = "{id:" + event + "}";
|
||||
} else {
|
||||
eventStreaming = Helper.EventStreaming.UPDATE;
|
||||
}
|
||||
lastEvent = Helper.EventStreaming.NONE;
|
||||
try {
|
||||
JSONObject eventJson = new JSONObject(event);
|
||||
onRetrieveStreaming(eventStreaming, account, eventJson);
|
||||
} catch (JSONException ignored) {
|
||||
ignored.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
isRunning.put(account.getAcct() + account.getInstance(), false);
|
||||
}
|
||||
isRunning.put(account.getAcct() + account.getInstance(), false);
|
||||
}
|
||||
|
||||
} catch (Exception ignored) {
|
||||
isRunning.put(account.getAcct() + account.getInstance(), false);
|
||||
ignored.printStackTrace();
|
||||
} finally {
|
||||
if (reader != null) {
|
||||
try {
|
||||
reader.close();
|
||||
} catch (IOException ignored) {
|
||||
}
|
||||
}
|
||||
if (inputStream != null) {
|
||||
try {
|
||||
inputStream.close();
|
||||
} catch (IOException ignored) {
|
||||
}
|
||||
}
|
||||
if (inputStream != null) {
|
||||
httpsURLConnection.disconnect();
|
||||
}
|
||||
SystemClock.sleep(5000);
|
||||
Intent streamingIntent = new Intent(this, LiveNotificationService.class);
|
||||
streamingIntent.putExtra("userId", account.getId());
|
||||
try {
|
||||
startService(streamingIntent);
|
||||
} catch (Exception ignored) {
|
||||
isRunning.put(account.getAcct() + account.getInstance(), false);
|
||||
ignored.printStackTrace();
|
||||
} finally {
|
||||
if (reader != null) {
|
||||
try {
|
||||
reader.close();
|
||||
} catch (IOException ignored) {
|
||||
}
|
||||
}
|
||||
if (inputStream != null) {
|
||||
try {
|
||||
inputStream.close();
|
||||
} catch (IOException ignored) {
|
||||
}
|
||||
}
|
||||
if (inputStream != null) {
|
||||
httpsURLConnection.disconnect();
|
||||
}
|
||||
SystemClock.sleep(5000);
|
||||
Intent streamingIntent = new Intent(this, LiveNotificationService.class);
|
||||
streamingIntent.putExtra("userId", account.getId());
|
||||
try {
|
||||
startService(streamingIntent);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
}else {
|
||||
try {
|
||||
URL url = new URL("http://" + account.getInstance() + "/api/v1/streaming/user");
|
||||
if( proxy != null)
|
||||
httpURLConnection = (HttpURLConnection) url.openConnection(proxy);
|
||||
else
|
||||
httpURLConnection = (HttpURLConnection) url.openConnection();
|
||||
httpURLConnection.setRequestProperty("Content-Type", "application/json");
|
||||
httpURLConnection.setRequestProperty("Authorization", "Bearer " + account.getToken());
|
||||
httpURLConnection.setRequestProperty("Connection", "Keep-Alive");
|
||||
httpURLConnection.setRequestProperty("Keep-Alive", "header");
|
||||
httpURLConnection.setRequestProperty("Connection", "close");
|
||||
httpURLConnection.setRequestMethod("GET");
|
||||
if (httpURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
|
||||
inputStream = new BufferedInputStream(httpURLConnection.getInputStream());
|
||||
reader = new BufferedReader(new InputStreamReader(inputStream));
|
||||
String event;
|
||||
Helper.EventStreaming eventStreaming;
|
||||
while ((event = reader.readLine()) != null) {
|
||||
isRunning.put(account.getAcct() + account.getInstance(), true);
|
||||
if ((lastEvent == Helper.EventStreaming.NONE || lastEvent == null) && !event.startsWith("data: ")) {
|
||||
switch (event.trim()) {
|
||||
case "event: update":
|
||||
lastEvent = Helper.EventStreaming.UPDATE;
|
||||
break;
|
||||
case "event: notification":
|
||||
lastEvent = Helper.EventStreaming.NOTIFICATION;
|
||||
break;
|
||||
case "event: delete":
|
||||
lastEvent = Helper.EventStreaming.DELETE;
|
||||
break;
|
||||
default:
|
||||
lastEvent = Helper.EventStreaming.NONE;
|
||||
}
|
||||
} else {
|
||||
if (!event.startsWith("data: ")) {
|
||||
lastEvent = Helper.EventStreaming.NONE;
|
||||
continue;
|
||||
}
|
||||
event = event.substring(6);
|
||||
if (lastEvent == Helper.EventStreaming.UPDATE) {
|
||||
eventStreaming = Helper.EventStreaming.UPDATE;
|
||||
} else if (lastEvent == Helper.EventStreaming.NOTIFICATION) {
|
||||
eventStreaming = Helper.EventStreaming.NOTIFICATION;
|
||||
} else if (lastEvent == Helper.EventStreaming.DELETE) {
|
||||
eventStreaming = Helper.EventStreaming.DELETE;
|
||||
event = "{id:" + event + "}";
|
||||
} else {
|
||||
eventStreaming = Helper.EventStreaming.UPDATE;
|
||||
}
|
||||
lastEvent = Helper.EventStreaming.NONE;
|
||||
try {
|
||||
JSONObject eventJson = new JSONObject(event);
|
||||
onRetrieveStreaming(eventStreaming, account, eventJson);
|
||||
} catch (JSONException ignored) {
|
||||
ignored.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
isRunning.put(account.getAcct() + account.getInstance(), false);
|
||||
}
|
||||
|
||||
} catch (Exception ignored) {
|
||||
isRunning.put(account.getAcct() + account.getInstance(), false);
|
||||
ignored.printStackTrace();
|
||||
} finally {
|
||||
if (reader != null) {
|
||||
try {
|
||||
reader.close();
|
||||
} catch (IOException ignored) {
|
||||
}
|
||||
}
|
||||
if (inputStream != null) {
|
||||
try {
|
||||
inputStream.close();
|
||||
} catch (IOException ignored) {
|
||||
}
|
||||
}
|
||||
if (inputStream != null) {
|
||||
httpURLConnection.disconnect();
|
||||
}
|
||||
SystemClock.sleep(5000);
|
||||
Intent streamingIntent = new Intent(this, LiveNotificationService.class);
|
||||
streamingIntent.putExtra("userId", account.getId());
|
||||
try {
|
||||
startService(streamingIntent);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -142,6 +142,25 @@
|
|||
android:text="@string/show_boost_count"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<!-- Resize pictures -->
|
||||
<LinearLayout
|
||||
android:layout_marginTop="10dp"
|
||||
android:id="@+id/resize_layout_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
<TextView
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/set_resize_picture"/>
|
||||
<Spinner
|
||||
android:id="@+id/set_resize_picture"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
</LinearLayout>
|
||||
|
||||
<!-- TABS Layout -->
|
||||
<LinearLayout
|
||||
android:id="@+id/translation_layout_container"
|
||||
|
|
|
@ -94,6 +94,7 @@
|
|||
<TextView
|
||||
android:id="@+id/status_spoiler"
|
||||
android:layout_marginTop="10dp"
|
||||
android:textIsSelectable="true"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
<Button
|
||||
|
|
|
@ -139,6 +139,7 @@
|
|||
<TextView
|
||||
android:id="@+id/status_spoiler"
|
||||
android:layout_marginTop="10dp"
|
||||
android:textIsSelectable="true"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
<Button
|
||||
|
|
|
@ -141,6 +141,25 @@
|
|||
android:text="@string/show_boost_count"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
|
||||
<!-- Resize pictures -->
|
||||
<LinearLayout
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
<TextView
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/set_resize_picture"/>
|
||||
<Spinner
|
||||
android:id="@+id/set_resize_picture"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
</LinearLayout>
|
||||
|
||||
<!-- Translation engine -->
|
||||
<LinearLayout
|
||||
android:layout_marginTop="10dp"
|
||||
|
|
|
@ -22,13 +22,7 @@
|
|||
android:id="@+id/container"
|
||||
android:layout_height="@dimen/nav_header_height"
|
||||
>
|
||||
<ImageView
|
||||
android:id="@+id/back_ground_image"
|
||||
android:layout_alignParentTop="true"
|
||||
android:scaleType="centerCrop"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_width="match_parent"
|
||||
|
@ -103,5 +97,11 @@
|
|||
android:layout_height="20dp"
|
||||
tools:ignore="ContentDescription" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/back_ground_image"
|
||||
android:layout_alignParentTop="true"
|
||||
android:scaleType="centerCrop"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:ignore="ContentDescription" />
|
||||
</RelativeLayout>
|
||||
|
|
|
@ -318,6 +318,12 @@
|
|||
<item>Yandex</item>
|
||||
<item>No</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">Set LED colour:</string>
|
||||
<string-array name="led_colours">
|
||||
<item>Blue</item>
|
||||
|
@ -342,6 +348,7 @@
|
|||
<string name="followed_by">Follows you</string>
|
||||
<string name="action_search">Search</string>
|
||||
<string name="set_capitalize">First letter in capital for replies</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Push notifications</string>
|
||||
<string name="settings_popup_message">
|
||||
|
|
|
@ -330,6 +330,12 @@
|
|||
<item>يانديكس</item>
|
||||
<item>لا</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">تحديد لون الإشعار الضوئي :</string>
|
||||
<string-array name="led_colours">
|
||||
<item>أزرق</item>
|
||||
|
@ -354,6 +360,7 @@
|
|||
<string name="followed_by">يتابعك</string>
|
||||
<string name="action_search">البحث</string>
|
||||
<string name="set_capitalize">First letter in capital for replies</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">الإخطارات المدفوعة</string>
|
||||
<string name="settings_popup_message">
|
||||
|
|
|
@ -318,6 +318,12 @@
|
|||
<item>Yandex</item>
|
||||
<item>No</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">Set LED colour:</string>
|
||||
<string-array name="led_colours">
|
||||
<item>Blue</item>
|
||||
|
@ -342,6 +348,7 @@
|
|||
<string name="followed_by">Follows you</string>
|
||||
<string name="action_search">Search</string>
|
||||
<string name="set_capitalize">First letter in capital for replies</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Push notifications</string>
|
||||
<string name="settings_popup_message">
|
||||
|
|
|
@ -321,6 +321,12 @@
|
|||
<item>Yandex</item>
|
||||
<item>No</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">Set LED colour:</string>
|
||||
<string-array name="led_colours">
|
||||
<item>Blue</item>
|
||||
|
@ -345,6 +351,7 @@
|
|||
<string name="followed_by">Follows you</string>
|
||||
<string name="action_search">Search</string>
|
||||
<string name="set_capitalize">First letter in capital for replies</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Push notifications</string>
|
||||
<string name="settings_popup_message">
|
||||
|
|
|
@ -318,6 +318,12 @@
|
|||
<item>Yandex</item>
|
||||
<item>No</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">Set LED colour:</string>
|
||||
<string-array name="led_colours">
|
||||
<item>Blue</item>
|
||||
|
@ -342,6 +348,7 @@
|
|||
<string name="followed_by">Follows you</string>
|
||||
<string name="action_search">Search</string>
|
||||
<string name="set_capitalize">First letter in capital for replies</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Push notifications</string>
|
||||
<string name="settings_popup_message">
|
||||
|
|
|
@ -322,6 +322,12 @@
|
|||
<item>Yandex</item>
|
||||
<item>Nein</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">LED Farbe auswählen</string>
|
||||
<string-array name="led_colours">
|
||||
<item>Blau</item>
|
||||
|
@ -346,6 +352,7 @@
|
|||
<string name="followed_by">folgt dir</string>
|
||||
<string name="action_search">Suche</string>
|
||||
<string name="set_capitalize">Ersten Buchstaben bei Antworten groß schreiben</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Push Benachrichtigungen</string>
|
||||
<string name="settings_popup_message">Bitte bestätige welche Push Benachrichtigungen du erhalten möchtest. Diese können später im Benachrichtungsreiter aktiviert oder deaktiviert werden.</string>
|
||||
|
|
|
@ -318,6 +318,12 @@
|
|||
<item>Yandex</item>
|
||||
<item>No</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">Set LED colour:</string>
|
||||
<string-array name="led_colours">
|
||||
<item>Blue</item>
|
||||
|
@ -342,6 +348,7 @@
|
|||
<string name="followed_by">Follows you</string>
|
||||
<string name="action_search">Search</string>
|
||||
<string name="set_capitalize">First letter in capital for replies</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Push notifications</string>
|
||||
<string name="settings_popup_message">
|
||||
|
|
|
@ -318,6 +318,12 @@
|
|||
<item>Yandex</item>
|
||||
<item>No</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">Establecer color LED:</string>
|
||||
<string-array name="led_colours">
|
||||
<item>Azul</item>
|
||||
|
@ -342,6 +348,7 @@
|
|||
<string name="followed_by">Te sigue</string>
|
||||
<string name="action_search">Buscar</string>
|
||||
<string name="set_capitalize">First letter in capital for replies</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Notificaciones Push</string>
|
||||
<string name="settings_popup_message">
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
<string name="choose_picture">Hautatu irudi bat…</string>
|
||||
<string name="clear">Garbitu</string>
|
||||
<string name="microphone">Mikrofonoa</string>
|
||||
<string name="camera">Camera</string>
|
||||
<string name="camera">Kamera</string>
|
||||
<string name="speech_prompt">Esan zerbait</string>
|
||||
<string name="speech_not_supported">Zure gailuak ez du onartzen ahots sarrera!</string>
|
||||
<string name="delete_all">Ezabatu guztiak</string>
|
||||
|
@ -318,6 +318,12 @@
|
|||
<item>Yandex</item>
|
||||
<item>Ez</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">Ezarri LEDaren kolorea:</string>
|
||||
<string-array name="led_colours">
|
||||
<item>Urdina</item>
|
||||
|
@ -342,6 +348,7 @@
|
|||
<string name="followed_by">Zu jarraitzen</string>
|
||||
<string name="action_search">Bilatu</string>
|
||||
<string name="set_capitalize">Lehen letra maiuskulaz erantzunetan</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Push jakinarazpenak</string>
|
||||
<string name="settings_popup_message">
|
||||
|
@ -433,11 +440,11 @@ Eskerrik asko Stéphane logoagatik. </string>
|
|||
<string name="data_export_success">%1$s toot esportatu dira %2$stik.</string>
|
||||
<string name="data_export_error">Zerbait ez da behar bezala joan %1$s(e)ko datuak esportatzean</string>
|
||||
<!-- Proxy -->
|
||||
<string name="proxy_set">Proxy</string>
|
||||
<string name="proxy_type">Type</string>
|
||||
<string name="proxy_enable">Enable proxy?</string>
|
||||
<string name="poxy_host">Host</string>
|
||||
<string name="poxy_port">Port</string>
|
||||
<string name="poxy_login">Login</string>
|
||||
<string name="poxy_password">Password</string>
|
||||
<string name="proxy_set">Proxya</string>
|
||||
<string name="proxy_type">Mota</string>
|
||||
<string name="proxy_enable">Gaitu proxya?</string>
|
||||
<string name="poxy_host">Ostalaria</string>
|
||||
<string name="poxy_port">Ataka</string>
|
||||
<string name="poxy_login">Saioa</string>
|
||||
<string name="poxy_password">Pasahitza</string>
|
||||
</resources>
|
||||
|
|
|
@ -318,6 +318,12 @@
|
|||
<item>Yandex</item>
|
||||
<item>No</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">Set LED colour:</string>
|
||||
<string-array name="led_colours">
|
||||
<item>Blue</item>
|
||||
|
@ -342,6 +348,7 @@
|
|||
<string name="followed_by">Follows you</string>
|
||||
<string name="action_search">Search</string>
|
||||
<string name="set_capitalize">First letter in capital for replies</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Push notifications</string>
|
||||
<string name="settings_popup_message">
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
<string name="choose_picture">Changer l\'image…</string>
|
||||
<string name="clear">Nettoyer</string>
|
||||
<string name="microphone">Microphone</string>
|
||||
<string name="camera">Camera</string>
|
||||
<string name="camera">Appareil photo</string>
|
||||
<string name="speech_prompt">Veuillez dire quelque chose</string>
|
||||
<string name="speech_not_supported">Désolé ! Votre appareil ne supporte pas la commande vocale !</string>
|
||||
<string name="delete_all">Tout effacer</string>
|
||||
|
@ -318,6 +318,12 @@
|
|||
<item>Yandex</item>
|
||||
<item>Non</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>Non</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">Couleur de la LED :</string>
|
||||
<string-array name="led_colours">
|
||||
<item>Bleu</item>
|
||||
|
@ -342,6 +348,7 @@
|
|||
<string name="followed_by">Vous suit</string>
|
||||
<string name="action_search">Recherche</string>
|
||||
<string name="set_capitalize">Première lettre en majuscule pour les réponses</string>
|
||||
<string name="set_resize_picture">Redimensionner les images</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Notifications push</string>
|
||||
<string name="settings_popup_message">
|
||||
|
@ -434,9 +441,9 @@
|
|||
<!-- Proxy -->
|
||||
<string name="proxy_set">Proxy</string>
|
||||
<string name="proxy_type">Type</string>
|
||||
<string name="proxy_enable">Enable proxy?</string>
|
||||
<string name="poxy_host">Host</string>
|
||||
<string name="proxy_enable">Activer le proxy ?</string>
|
||||
<string name="poxy_host">Serveur</string>
|
||||
<string name="poxy_port">Port</string>
|
||||
<string name="poxy_login">Login</string>
|
||||
<string name="poxy_password">Password</string>
|
||||
<string name="poxy_login">Identifiant</string>
|
||||
<string name="poxy_password">Mot de passe</string>
|
||||
</resources>
|
||||
|
|
|
@ -324,6 +324,12 @@
|
|||
<item>Yandex</item>
|
||||
<item>No</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">Set LED colour:</string>
|
||||
<string-array name="led_colours">
|
||||
<item>Blue</item>
|
||||
|
@ -348,6 +354,7 @@
|
|||
<string name="followed_by">Follows you</string>
|
||||
<string name="action_search">Search</string>
|
||||
<string name="set_capitalize">First letter in capital for replies</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Push notifications</string>
|
||||
<string name="settings_popup_message">
|
||||
|
|
|
@ -318,6 +318,12 @@
|
|||
<item>Yandex</item>
|
||||
<item>No</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">Set LED colour:</string>
|
||||
<string-array name="led_colours">
|
||||
<item>Blue</item>
|
||||
|
@ -342,6 +348,7 @@
|
|||
<string name="followed_by">Follows you</string>
|
||||
<string name="action_search">Search</string>
|
||||
<string name="set_capitalize">First letter in capital for replies</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Push notifications</string>
|
||||
<string name="settings_popup_message">
|
||||
|
|
|
@ -0,0 +1,450 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--Generated by crowdin.com-->
|
||||
<resources>
|
||||
<string name="navigation_drawer_open">Բացել ընտրացանկը</string>
|
||||
<string name="navigation_drawer_close">Փակել ընտրացանկը</string>
|
||||
<string name="action_about">Տեղեկություններ</string>
|
||||
<string name="action_about_instance">Հանգույցի մասին</string>
|
||||
<string name="action_privacy">Գաղտնիություն</string>
|
||||
<string name="action_cache">Հիշապահեստ</string>
|
||||
<string name="action_logout">Ելք</string>
|
||||
<string name="login">Մուտք</string>
|
||||
<!-- common -->
|
||||
<string name="close">Փակել</string>
|
||||
<string name="yes">Այո</string>
|
||||
<string name="no">Ոչ</string>
|
||||
<string name="cancel">Չեղարկել</string>
|
||||
<string name="download">Ներբեռնել</string>
|
||||
<string name="download_file">Ներբեռնել %1$s-ը</string>
|
||||
<string name="download_over">Ներբեռնումն ավարտված է</string>
|
||||
<string name="save_file">Պահել %1$s-ը</string>
|
||||
<string name="save_over">Մեդիան պահված է</string>
|
||||
<string name="download_from" formatted="false">Նիշք․ %1$s</string>
|
||||
<string name="password">Գաղտնաբառ</string>
|
||||
<string name="email">Էլ․հասցե</string>
|
||||
<string name="accounts">Հաշիվներ</string>
|
||||
<string name="toots">Թթեր</string>
|
||||
<string name="tags">Պիտակներ</string>
|
||||
<string name="token">Կտրոն</string>
|
||||
<string name="save">Պահել</string>
|
||||
<string name="restore">Վերականգնել</string>
|
||||
<string name="two_factor_authentification">Երկքայլ իսկորոշո՞ւմ</string>
|
||||
<string name="other_instance">mastodon.etalab.gouv.fr-ից տարբեր հանգու՞յց</string>
|
||||
<string name="no_result">Ոչ մի արդյունք</string>
|
||||
<string name="instance">Հանգույց</string>
|
||||
<string name="instance_example">Հանգույց․ mastodon.social</string>
|
||||
<string name="toast_account_changed" formatted="false">Օգտագործվող հաշիվ՝ %1$s</string>
|
||||
<string name="add_account">Ավելացնել հաշիվ</string>
|
||||
<string name="clipboard">Թութի բովանդակությունը պատճենվել է սեղմատախտակին</string>
|
||||
<string name="change">Փոխել</string>
|
||||
<string name="choose_picture">Ընտրել նկար…</string>
|
||||
<string name="clear">Մաքրել</string>
|
||||
<string name="microphone">Խոսափող</string>
|
||||
<string name="camera">Խցիկ</string>
|
||||
<string name="speech_prompt">Ինչ-որ բան ասա</string>
|
||||
<string name="speech_not_supported">Ներիր։ Քո սարքը չի աջակցում ձայնային մուտքագրում։</string>
|
||||
<string name="delete_all">Ջնջել ամենը</string>
|
||||
<string name="translate_toot">Թարգմանել այս թութը։</string>
|
||||
<string name="schedule">Հերթ</string>
|
||||
<string name="text_size">Տեքստի և պատկերակների չափսերը</string>
|
||||
<string name="text_size_change">Փոխել տեքստի ներկայիս չափսը․</string>
|
||||
<string name="icon_size_change">Փոխել պատկերակի ներկայիս չափսը․</string>
|
||||
<string name="next">Հաջորդը</string>
|
||||
<string name="previous">Նախորդը</string>
|
||||
<string name="open_with">Բացել այլ հավելվածով</string>
|
||||
<string name="validate">Վավերացնել</string>
|
||||
<string name="media">Մեդիա</string>
|
||||
<string name="share_with">Կիսվել</string>
|
||||
<string name="shared_via">Տարածել Մաստալաբով</string>
|
||||
<string name="replies">Արձագանքներ</string>
|
||||
<string name="username">Օգտանուն</string>
|
||||
<string name="drafts">Սևագրեր</string>
|
||||
<string name="new_data">Թարմ տվյալներն հասանելի են։ Ուզու՞մ ես դրանք տեսնել</string>
|
||||
<string name="favourite">Նախընտրություններ</string>
|
||||
<string name="follow">Նոր հետևորդներ</string>
|
||||
<string name="mention">Հիշատակումներ</string>
|
||||
<string name="reblog">Խրախուսումներ</string>
|
||||
<string name="show_boosts">Ցուցադրել խրախ-ները</string>
|
||||
<string name="show_replies">Ցուցադրել արձագանքները</string>
|
||||
<string name="action_open_in_web">Բացել զննիչում</string>
|
||||
<string name="translate">Թարգմանել</string>
|
||||
<string name="please_wait">Սպասիր մի քանի վայրկյան մինչև այս գործողութ-նը կատարելը։</string>
|
||||
<!--- Menu -->
|
||||
<string name="home_menu">Տուն</string>
|
||||
<string name="local_menu">Տեղական հոսք</string>
|
||||
<string name="global_menu">Դաշնային հոսք</string>
|
||||
<string name="neutral_menu_title">Ընտրանքներ</string>
|
||||
<string name="favorites_menu">Նախընտրություններ</string>
|
||||
<string name="communication_menu_title">Հաղորդակցում</string>
|
||||
<string name="muted_menu">Խլացված օգտատերեր</string>
|
||||
<string name="blocked_menu">Արգելափակված օգտատերեր</string>
|
||||
<string name="remote_follow_menu">Հետևել հեռակա</string>
|
||||
<string name="notifications">Ծանուցումներ</string>
|
||||
<string name="follow_request">Հետևելու հայտեր</string>
|
||||
<string name="optimization">Լավարկում</string>
|
||||
<string name="settings">Կարգավորումներ</string>
|
||||
<string name="profile">Էջ</string>
|
||||
<string name="make_a_choice">Ի՞նչ ես ուզում անել</string>
|
||||
<string name="delete_account_title">Ջնջել հաշիվ</string>
|
||||
<string name="delete_account_message" formatted="false">Ջնջե՞լ %1$s հաշիվը հավելվածից</string>
|
||||
<string name="send_email">Ուղարկել էլփոստ</string>
|
||||
<string name="choose_file">Ընտրիր նիշք</string>
|
||||
<string name="choose_file_error">Ոչ մի նիշքախույզ չի հայտնաբերվել!</string>
|
||||
<string name="click_to_change">Կտտացրու հետագծի վրա՝ այն փոխելու համար</string>
|
||||
<string name="failed">Ձախողում</string>
|
||||
<string name="scheduled_toots">Հերթագրված թութեր</string>
|
||||
<string name="disclaimer_full">Սույն տեղեկատվությունը կարող է օգտատիրոջ էջն արտացոլել ոչ լիարժեք։</string>
|
||||
<string name="insert_emoji">Էմոջի ներմուծել</string>
|
||||
<string name="no_emoji">Ներկա պահին հավելվածը չունի հավաքագրած էմոջիներ։</string>
|
||||
<string name="live_notif">Ուղիղ ծանուցումներ</string>
|
||||
<!-- Status -->
|
||||
<string name="no_status">Թութ չկա</string>
|
||||
<string name="fav_added">Թութն ավելացվել է նախընտրություններին</string>
|
||||
<string name="fav_removed">Թութը հեռացվել է նախընտրություններից</string>
|
||||
<string name="reblog_added">Թութը խրախուսվել է</string>
|
||||
<string name="reblog_removed">Թութն այլևս խրախուսված չէ</string>
|
||||
<string name="reblog_by">Խրախուսվել է %1$s-ի կողմից</string>
|
||||
<string name="favourite_add">Ավելացնե՞լ այս թութը նախընտրություններին</string>
|
||||
<string name="favourite_remove">Հեռացնե՞լ այս թութը Նախընտրություններից</string>
|
||||
<string name="reblog_add">Խրախուսե՞լ այս թութը։</string>
|
||||
<string name="reblog_remove">Ապախրախուսե՞լ այս թութը։</string>
|
||||
<string name="pin_add">Մեխե՞լ այս թութը։</string>
|
||||
<string name="pin_remove">Արձակե՞լ այս թութը։</string>
|
||||
<string name="more_action_1">Խլացնել</string>
|
||||
<string name="more_action_2">Արգելափակել</string>
|
||||
<string name="more_action_3">Ահազանգել</string>
|
||||
<string name="more_action_4">Հեռացնել</string>
|
||||
<string name="more_action_5">Պատճենել</string>
|
||||
<string name="more_action_6">Տարածել</string>
|
||||
<string name="more_action_7">Հիշատակել</string>
|
||||
<string name="more_action_8">Ժամանակավոր խլացում</string>
|
||||
<string-array name="more_action_confirm">
|
||||
<item>Խլացնե՞լ այս հաշիվը</item>
|
||||
<item>Արգելափակե՞լ այս հաշիվը</item>
|
||||
<item>Ահազանգե՞լ այս հաշվի մասին</item>
|
||||
</string-array>
|
||||
<string-array name="more_action_owner_confirm">
|
||||
<item>Հեռացնե՞լ այս թութը</item>
|
||||
</string-array>
|
||||
<plurals name="preview_replies">
|
||||
<item quantity="one">%d արձագանք</item>
|
||||
<item quantity="other">%d արձագանք</item>
|
||||
</plurals>
|
||||
<!-- Date -->
|
||||
<string name="date_seconds">%d վրկ</string>
|
||||
<string name="date_minutes">%d ր</string>
|
||||
<string name="date_hours">%d ժ</string>
|
||||
<string name="date_day">%d օր</string>
|
||||
<!-- TOOT -->
|
||||
<string name="toot_cw_placeholder">Զգուշացում</string>
|
||||
<string name="toot_placeholder">Մտքիդ ի՞նչ կա</string>
|
||||
<string name="toot_it">ԹՈՒԹԵԼ!</string>
|
||||
<string name="cw">cw</string>
|
||||
<string name="toot_title">Թութ գրել</string>
|
||||
<string name="toot_title_reply">Արձագանքել թութին</string>
|
||||
<string name="toot_no_space">Մոտեցել ես 500 նիշ սահմանափակմանը</string>
|
||||
<string name="toot_select_image">Ընտրել մեդիա</string>
|
||||
<string name="toot_select_image_error">Մեդիան ընտրելու ընթացքում սխալ է հայտնվել</string>
|
||||
<string name="toot_delete_media">Ջնջե՞լ այս մեդիան</string>
|
||||
<string name="toot_error_no_content">Քո թութը դատարկ է</string>
|
||||
<string name="toot_visibility_tilte">Թութի տեսանելիությունը</string>
|
||||
<string name="toots_visibility_tilte">Թութերի սկզբնադիր տեսանելիությունը՝ </string>
|
||||
<string name="toot_sent">Թութն ուղարկված է</string>
|
||||
<string name="toot_reply_content_title">Արձագանքում ես տվյալ թութին․</string>
|
||||
<string name="toot_sensitive">Զգայուն բովանդակությու՞ն</string>
|
||||
<string-array name="toot_visibility">
|
||||
<item>Տեղադրել հանրային հոսքերին</item>
|
||||
<item>Չտեղադրել հանրային հոսքերին</item>
|
||||
<item>Գրառել միայն հետևորդների համար</item>
|
||||
<item>Գրառել միայն հիշատակված օգտատերերի համար</item>
|
||||
</string-array>
|
||||
<string name="no_draft">Ոչ մի սևագիր</string>
|
||||
<string name="choose_toot">Ընտրել թութ</string>
|
||||
<string name="choose_accounts">Ընտրել հաշիվ</string>
|
||||
<string name="select_accounts">Ընտրել մի քանի հաշիվ</string>
|
||||
<string name="remove_draft">Հեռացնե՞լ սևագիրը</string>
|
||||
<string name="show_reply">Կտտացրեւ կոճակին՝ բնօրինակ թութը տեսնելու համար</string>
|
||||
<string name="upload_form_description">Նկարագրիր՝ տեսողության խնդիրներ ունեցողների համար</string>
|
||||
<!-- Instance -->
|
||||
<string name="instance_no_description">Նկարագրություն չկա</string>
|
||||
<!-- About -->
|
||||
<string name="about_vesrion">Թողարկում %1$s</string>
|
||||
<string name="about_developer">Մշակող․</string>
|
||||
<string name="about_license">Արտոնագիր․</string>
|
||||
<string name="about_license_action">GNU GPL V3</string>
|
||||
<string name="about_code">Սկզբնական կոդ․</string>
|
||||
<string name="about_yandex">Թութերի թարգմանությունը․</string>
|
||||
<string name="about_thekinrar">Փնտրել հանգույցներ․</string>
|
||||
<string name="about_thekinrar_action">instances.social</string>
|
||||
<string name="thanks_text_logo">Պատկերակի հեղինակ․</string>
|
||||
<!-- Conversation -->
|
||||
<string name="conversation">Զրույց</string>
|
||||
<!-- Accounts -->
|
||||
<string name="no_accounts">Ցուցադրելու հաշիվ չկա</string>
|
||||
<string name="no_follow_request">Հետևելու հայտեր չկան</string>
|
||||
<string name="status_cnt">Թութեր \n %1$s</string>
|
||||
<string name="following_cnt">Հետևում եմ \n %1$s</string>
|
||||
<string name="followers_cnt">Հետևում են \n %1$s</string>
|
||||
<string name="pins_cnt">Մեխեր \n %d</string>
|
||||
<string name="authorize">Թույլատրել</string>
|
||||
<string name="reject">Մերժել</string>
|
||||
<!-- Scheduled toots -->
|
||||
<string name="no_scheduled_toots">Հերթագրված թութեր չկան</string>
|
||||
<string name="no_scheduled_toots_indications">Թութ գրիր, հետո ընտրիր <b>Հերթ</b>ը գլխավոր մենյուից</string>
|
||||
<string name="remove_scheduled">Ջնջե՞լ հերթագրված թութը</string>
|
||||
<string name="media_count">Մեդիա %d</string>
|
||||
<string name="toot_scheduled">Թութը հերթագրված է</string>
|
||||
<string name="toot_scheduled_date">Հերթագրման ամսաթիվը պետք է լինի ավելի ուշ քան ընթացիկ ժամը</string>
|
||||
<string name="warning_battery">Մարտկոցի տնտեսումը միացված է։ Հնարավոր է չաշխատի այնպես ինչպես ակնկալում եք</string>
|
||||
<!-- timed mute -->
|
||||
<string name="timed_mute_date_error">Խլացնելու ժամանակահատվածը պետք է լինի 1 րոպեից ավել։</string>
|
||||
<string name="timed_mute_date">%1$s-ը խլացվել է մինչև %2$s։ \n Կարող ես ապախլացնել հաշիվն իր էջից։</string>
|
||||
<string name="timed_mute_profile">%1$s-ը խլացվել է մինչև %2$s։ \n Կտտացրու այստեղ՝ ապխլացնելու համար։</string>
|
||||
<!-- Notifications -->
|
||||
<string name="no_notifications">Ծանուցում չկա</string>
|
||||
<string name="notif_mention">Քեզ հիշատակել է</string>
|
||||
<string name="notif_reblog">խրախուսել է քո թութը</string>
|
||||
<string name="notif_favourite">գրառումդ ավելացրել է նախընտրումներին</string>
|
||||
<string name="notif_follow">հետևում է քեզ</string>
|
||||
<string name="notif_pouet">Նոր թութ %1$s-ից</string>
|
||||
<plurals name="other_notifications">
|
||||
<item quantity="one">և մեկ այլ ծանուցում</item>
|
||||
<item quantity="other">և %d այլ ծանուցումներ</item>
|
||||
</plurals>
|
||||
<plurals name="other_notif_hometimeline">
|
||||
<item quantity="one">և մեկ այլ թութ</item>
|
||||
<item quantity="other">և %d այլ թութ</item>
|
||||
</plurals>
|
||||
<string name="delete_notification_ask">Ջնջե՞լ ծանուցումը</string>
|
||||
<string name="delete_notification_ask_all">Ջնջե՞լ բոլոր ծանուցումները</string>
|
||||
<string name="delete_notification">Ծանուցումը ջնջված է</string>
|
||||
<string name="delete_notification_all">Բոլոր ծանուցումները ջնջված են</string>
|
||||
<!-- HEADER -->
|
||||
<string name="following">Հետևում եմ</string>
|
||||
<string name="followers">Հետևորդներ</string>
|
||||
<string name="pinned_toots">Մեխած</string>
|
||||
<!-- TOAST -->
|
||||
<string name="client_error">Հաճախորդի id-ն հնարավոր չէ ստանալ</string>
|
||||
<string name="no_internet">Կապ չկա</string>
|
||||
<string name="toast_block">Հաշիվն արգելափակված է</string>
|
||||
<string name="toast_unblock">Հաշիվն այլևս արգելափակված չէ</string>
|
||||
<string name="toast_mute">Հաշիվը խլացված է</string>
|
||||
<string name="toast_unmute">Հաշիվն այլևս խլացված չէ</string>
|
||||
<string name="toast_follow">Հետևում ես հաշվին</string>
|
||||
<string name="toast_unfollow">Այլևս չես հետևում հաշվին</string>
|
||||
<string name="toast_reblog">Թութը խրախուսվել է</string>
|
||||
<string name="toast_unreblog">Թութն այլևս չի խրախուսվում</string>
|
||||
<string name="toast_favourite">Թութն ավելացվել է քո նախընտրություններին</string>
|
||||
<string name="toast_unfavourite">Թութը հեռացվել է նախընտրություններից</string>
|
||||
<string name="toast_report">Թութի վերաբերյալ ահազանգ կա</string>
|
||||
<string name="toast_unstatus">Թութը ջնջվել է</string>
|
||||
<string name="toast_pin">Թութը մեխվել է</string>
|
||||
<string name="toast_unpin">Թութն ապամեխվել է</string>
|
||||
<string name="toast_error">Ուպս! Ինչ-որ բան այն չէ</string>
|
||||
<string name="toast_code_error">Ինչ որ բան այն չէ! Հանգույցը չվերադարձրեց հաստատման կոդը</string>
|
||||
<string name="toast_error_instance">Հանգույցի դոմեյնը կարծես անվավեր է</string>
|
||||
<string name="toast_error_loading_account">Ինչ-որ սխալ տեղի ունեցավ հաշիվը փոխելու ընթացքում</string>
|
||||
<string name="toast_error_search">Փնտրելիս սխալ տեղի ունեցավ</string>
|
||||
<string name="toast_error_login">Չես կարող մուտք գործել</string>
|
||||
<string name="toast_update_credential_ok">Էջի բովանդակությունը պահպանված է</string>
|
||||
<string name="nothing_to_do">Անհնար է ինչ-րո բան անել</string>
|
||||
<string name="toast_saved">Մեդիան պահպանված է</string>
|
||||
<string name="toast_error_translate">Թարգմանության ընթացքում սխալ տեղի ունեցավ</string>
|
||||
<string name="toast_toot_saved">Սևագիրը պահված է</string>
|
||||
<string name="toast_error_char_limit">Վստա՞հ ես որ սույն հանգույցը թույլատրում է նիշերի նման քանակ։ Սովորաբար առավելագույնը 500 նիշն է։</string>
|
||||
<string name="toast_visibility_changed">Թութերի տեսանելությունը փոխվել է %1$s հաշվի համար</string>
|
||||
<string name="toast_empty_search">Հանգույցի ու օգտատիրոջ անունները չեն կարող դատարկ լինել</string>
|
||||
<!-- Settings -->
|
||||
<string name="settings_title_optimisation">Բեռնման լավարկում</string>
|
||||
<string name="set_toots_page">Թութերի քանակը մեկ բեռնման համար</string>
|
||||
<string name="set_accounts_page">Հաշիվների քանակը՝ մեկ բեռնման համար</string>
|
||||
<string name="set_notifications_page">Ծանուցումների քանակը՝ մեկ բեռնման համար</string>
|
||||
<string name="set_attachment_always">Միշտ</string>
|
||||
<string name="set_attachment_wifi">WIFI</string>
|
||||
<string name="set_attachment_ask">Հարցնել</string>
|
||||
<string name="set_attachment_action">Բեռնել մեդիան</string>
|
||||
<string name="load_attachment">Բեռնել նկարները</string>
|
||||
<string name="load_attachment_spoiler">Ցույց տալ…</string>
|
||||
<string name="load_attachment_spoiler_less">Ցույց չտալ…</string>
|
||||
<string name="load_sensitive_attachment">Զգայուն բովանդակություն</string>
|
||||
<string name="set_display_reply">Ցուցադրել արձագանքին նախորդող հաղորդագրությունը</string>
|
||||
<string name="set_display_local">Ցուցադրել տեղական հոսքը</string>
|
||||
<string name="set_display_global">Ցուցադրել դաշնային հոսքը</string>
|
||||
<string name="set_disable_gif">Անջատել գիֆ նկարները</string>
|
||||
<string name="set_folder_title">Հետագիծ․ </string>
|
||||
<string name="set_auto_store_toot">Ինքնաշխատ պահել սևագրերը</string>
|
||||
<string name="set_bubble_counter">Ցուցադրել հաշվիչները</string>
|
||||
<string name="set_auto_add_media_url">Թութում ներառել մեդիայի հղումը</string>
|
||||
<string name="settings_title_notifications">Կարգավորել ծանուցումները</string>
|
||||
<string name="set_notif_follow">Տեղեկացնել, երբ որևէ մեկը սկսում է հետևել քեզ</string>
|
||||
<string name="set_notif_follow_ask">Տեղեկացնել, երբ երևէ մեկը հայց է ուղարկում՝ հետևելու քեզ</string>
|
||||
<string name="set_notif_follow_share">Տեղեկացնել, երբ որևէ մեկը տարածում է թութդ</string>
|
||||
<string name="set_notif_follow_add">Տեղեկացնել, երբ որևէ մեկը հավանում է թութդ</string>
|
||||
<string name="set_notif_follow_mention">Տեղեկացնել, երբ որևէ մեկը նշում է քեզ</string>
|
||||
<string name="set_share_validation">Ցուցադրել հաստատման պատուհանը տարածելուց առաջ</string>
|
||||
<string name="set_share_validation_fav">Ցուցադրել հաստատման պատուհանը հավանածներին ավելացնելուց առաջ</string>
|
||||
<string name="settings_title_more_options">Հավելյալ կարգավորումներ</string>
|
||||
<string name="set_wifi_only">Ծանուցել միայն WIFI-ին կպած</string>
|
||||
<string name="set_notify">Ծանուցե՞լ</string>
|
||||
<string name="set_notif_silent">Լուռ ծանուցումներ</string>
|
||||
<string name="set_night_mode">Գիշերային ոճ</string>
|
||||
<string name="set_nsfw_timeout">NSFW ցուցադրման տևողությունը(վրկյ-ով, 0-ն անջատելն է)</string>
|
||||
<string name="settings_title_profile">Խմբագրել Էջը</string>
|
||||
<string name="set_profile_description">Կենսագրություն…</string>
|
||||
<string name="set_save_changes">Պահել փոփոխությունները</string>
|
||||
<string name="set_header_picture_overlay">Ընտրել գլխավոր նկար</string>
|
||||
<string name="set_preview_reply">Ցուցադրել արձագանքների քանակը հարազատ հոսքում</string>
|
||||
<string name="set_preview_reply_pp">Ցուցադրե՞լ անձնանկարները</string>
|
||||
<string name="set_multiaccount_actions">Թույլատրե՞լ հաշիվների միջև փոխհարաբերությունները</string>
|
||||
<string name="note_no_space">Դու հատե՛լ ես թույլատրված 160 նիշերի սահմանը</string>
|
||||
<string name="username_no_space">Դու հատե՛լ ես թույլատրված 30 նիշերի սահմանը</string>
|
||||
<string name="settings_title_hour">Ծանուցվելու ժամանակահատվածը՝</string>
|
||||
<string name="settings_time_from">Սկսած՝</string>
|
||||
<string name="settings_time_to">մինչև</string>
|
||||
<string name="settings_time_greater">Ժամը պետք է ավելի ուշ լինի, քան %1$s֊ը</string>
|
||||
<string name="settings_time_lower">Ժամը պետք է ավելի վաղ լինի, քան %1$s֊ը</string>
|
||||
<string name="settings_hour_init">Սկսելու ժամը</string>
|
||||
<string name="settings_hour_end">Ավարտի ժամը</string>
|
||||
<string name="embedded_browser">Օգտագործել ներկառուցված զննիչը</string>
|
||||
<string name="use_javascript">Թույլատրել JavaScript</string>
|
||||
<string name="use_cookies">Թույլատրել երրորդ կողմի քուքիներ</string>
|
||||
<string name="settings_ui_layout">Հոսքերի չափսը. </string>
|
||||
<string-array name="settings_menu_tabs">
|
||||
<item>Ներդիրներ</item>
|
||||
<item>Մենյու</item>
|
||||
<item>Ներդիրներ և մենյու</item>
|
||||
</string-array>
|
||||
<string-array name="settings_translation">
|
||||
<item>Յանդեքս</item>
|
||||
<item>Ոչ</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">Կարգել LED-ի գույնը․</string>
|
||||
<string-array name="led_colours">
|
||||
<item>Կապույտ</item>
|
||||
<item>Երկնագույն</item>
|
||||
<item>Մանուշակագույն</item>
|
||||
<item>Կանաչ</item>
|
||||
<item>Կարմիր</item>
|
||||
<item>Դեղին</item>
|
||||
<item>Սպիտակ</item>
|
||||
</string-array>
|
||||
<string name="set_title_news">Նորություններ</string>
|
||||
<string name="set_notification_news">Ծանուցել հարազատ հոսքում նոր թթերի դեպքում</string>
|
||||
<string name="set_show_error_messages">Ցուցադրել սխալների հաղորդումները</string>
|
||||
<string name="action_follow">Հետևել</string>
|
||||
<string name="action_unfollow">Չհետևել</string>
|
||||
<string name="action_block">Արգելափակել</string>
|
||||
<string name="action_unblock">Ապաարգելափակել</string>
|
||||
<string name="action_mute">Խլացնել</string>
|
||||
<string name="action_no_action">Գործողություն չկա</string>
|
||||
<string name="action_unmute">Ապախլացնել</string>
|
||||
<string name="request_sent">Հայտն ուղարկված է</string>
|
||||
<string name="followed_by">Հետևում է քեզ</string>
|
||||
<string name="action_search">Փնտրել</string>
|
||||
<string name="set_capitalize">Առաջին տառը մեծատառով՝ երբ արձագանքում եմ</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Փուշ ծանուցումներ</string>
|
||||
<string name="settings_popup_message">
|
||||
Հաստատիր այն փուշ ծանուցումները, որոնք ցանկանում ես ստանալ։
|
||||
Հետագայում կարող ես անջատել կամ միացնել այս ծանուցումները կարգավորումներից։
|
||||
</string>
|
||||
<string name="settings_popup_timeline">Հարազատ հոսքում չկարդացած թթերի համա՞ր</string>
|
||||
<string name="settings_popup_notification">Չկարդացած ծանուցումների համա՞ր</string>
|
||||
<!-- CACHE -->
|
||||
<string name="cache_title">Մաքրել քեշը</string>
|
||||
<string name="cache_message">Քեշում %1$s բովանդակություն կա։\n\nՑանկանում ես ջնջե՞լ</string>
|
||||
<string name="cache_units">Մբ</string>
|
||||
<string name="toast_cache_clear">Քեշը մաքուր է! %1$s տարածք ազատվեց</string>
|
||||
<!-- PRIVACY -->
|
||||
<string name="privacy_data_title">Հավաքած բովանդակություն</string>
|
||||
<string name="privacy_data">
|
||||
Հաշիվներից սարքում պահվում են զուտ հիմնական տեղեկությունները։
|
||||
Այս տեղեկությունները հույժ գաղտնի են և կարող են օգտագործվել միայն հավելվածի կողմից։
|
||||
Հավելվածը ջնջելու դեպքում այդ տեղեկություններն իսկույն կհեռացվեն սարքից։\n
|
||||
⚠ Ծածկանուններն ու գաղտնաբառերը երբեք չեն պահվում։ Դրանք օգտագործվում են միայն հանգույցի հետ ապահով իսկորոշման(SSL) ընթացքում։
|
||||
</string>
|
||||
<string name="privacy_authorizations_title">Թույլտվություններ.</string>
|
||||
<string name="privacy_authorizations">
|
||||
- <b>ACCESS_NETWORK_STATE</b>. Օգտագործվում է սարքի կապը WIFI-ին ստուգելու համար։\n
|
||||
- <b>INTERNET</b>․ Օգտագործվում է հանգույցին հարցումներ ուղարկելու համար։\n
|
||||
- <b>WRITE_EXTERNAL_STORAGE</b>․ Օգտագործվում է մեդիայի պահման կամ հավելվածն SD քարտ տեղափոխելու համար։\n
|
||||
- <b>READ_EXTERNAL_STORAGE</b>․ Օգտագործվում է թթին մեդիա կցելու համար։\n
|
||||
- <b>BOOT_COMPLETED</b>․ Օգտագործվում է ծանուցման ծառայությունը գործարկելու համար։\n
|
||||
- <b>WAKE_LOCK</b>. Օգտագործվում է ծանուցման ծառայության մատուցման ընթացքում։
|
||||
</string>
|
||||
<string name="privacy_API_authorizations_title">API-ի թույլտվություններ․</string>
|
||||
<string name="privacy_API_authorizations">
|
||||
-<b>Կարդալ</b>․ Կարդալ տվյալները։\n
|
||||
-<b>Գրել</b>․ Գրառումներ անել և վերբեռնել մեդիա դրանց համար։\n
|
||||
-<b>Հետևել</b>․ Հետևել, չհետևել, արգելափակել, ապաարգելափակել։\n\n
|
||||
<b>⚠ Այս գործողություններն իրականացվում են միայն օգտատիրոջ հայցով։</b>
|
||||
</string>
|
||||
<string name="privacy_API_title">Հսկում ու գրադարաններ</string>
|
||||
<string name="privacy_API">
|
||||
Հավելվածը <b>չի՛ օգտագործում հսկող գործիքներ</b> (լսարանի չափում, սխալանքների զեկուցում և այլն) և չի՛ պարունակում որևէ գովազդ։\n\n
|
||||
Գրադարանների օգտագործումը հասցված է նվազագույնի՝\n
|
||||
֊<b>Glide</b>՝ մեդիան կառավարելու համար\n
|
||||
֊<b>Android-Job</b>՝ ծառայությունները կառավարելու համար\n
|
||||
֊<b>PhotoView</b>՝ նկրները կառավարելու համար\n
|
||||
</string>
|
||||
<string name="privacy_API_yandex_title">Թթերի թարգմանություն</string>
|
||||
<string name="privacy_API_yandex_authorizations">
|
||||
Հավելվածը հնարավորություն է ընձեռում թարգմանել թթերը՝ օգտագործելով սարքի տեղույթը և Յանդեքսի API-ը։\n
|
||||
Յանդեքսն ունի սեփական գաղնիության քաղաքականությունը, որը կարող ես գտնել այստեղ․ https://yandex.ru/legal/confidential/?lang=en </string>
|
||||
<string name="thanks_text">
|
||||
Շնորհակալություն Ստեֆանին՝ լոգոյի համար։
|
||||
</string>
|
||||
<string name="thanks_text_dev">
|
||||
Շնորհակալություն ներքոհիշյալներին․
|
||||
</string>
|
||||
<string name="filter_regex">Ֆիլտրել ըստ կանոնավոր արտահայտությունների</string>
|
||||
<string name="search">Փնտրել</string>
|
||||
<string name="delete">Ջնջել</string>
|
||||
<string name="fetch_more_toots">Նոր թթեր բերել…</string>
|
||||
<!-- About lists -->
|
||||
<string name="action_lists">Ցանկեր</string>
|
||||
<string name="action_lists_confirm_delete">Վստա՞հ ես, որ ուզում ես ընդմիշտ ջնջել այս ցանկը</string>
|
||||
<string name="action_lists_empty_content">Այս Ցանկում դեռ ոչինչ չկա։ Երբ ցանկի անդամները նոր գրառումներ կատարեն, դրանք կհայտնվեն այստեղ։</string>
|
||||
<string name="action_lists_add_to">Ավելացնել ցանկին</string>
|
||||
<string name="action_lists_remove_from">Հանել ցանկից</string>
|
||||
<string name="action_lists_create">Ցանկ ավելացնել</string>
|
||||
<string name="action_lists_delete">Ջնջել ցանկը</string>
|
||||
<string name="action_lists_update">Փոփոխել ցանկը</string>
|
||||
<string name="action_lists_title_placeholder">Նոր ցանկի վերնագիր</string>
|
||||
<string name="action_lists_search_users">Փնտրել քո հետևած մարդկանց մեջ</string>
|
||||
<string name="action_lists_owner">Քո ցանկերը</string>
|
||||
<!-- Migration -->
|
||||
<string name="account_moved_to">%1$s-ը տեղափոխվել է %2$s</string>
|
||||
<string name="show_boost_count">Ցուցադրել տարածումների/հավանումների հաշվիչ</string>
|
||||
<string name="issue_login_title">Իսկորոշումը չի՞ աշխատում</string>
|
||||
<string name="issue_login_message">
|
||||
<b>Ահա մի քանի բան, որոնք կարող են օգնել․</b>\n\n
|
||||
Համոզվիր, որ ոչ մի սխալ թույլ չես տվել՝ հանգույցի անվան մեջ\n\n
|
||||
Ստուգիր արդյոք քո հանգույցն անխափան աշխատում է, թե ոչ\n\n
|
||||
Եթե օգտվում ես երկքայլ իսկորոշումից(2FA)՝ օգտագործիր ներքևի հղումը(հանգույցի անվանումը լրացնելուց հետո)\n\n
|
||||
Կարող ես օգտագործել վերոհիշյալ հղումը նաև առանց երկքայլ իսկորոշումն օգտագործելու\n\n
|
||||
Եթե այս ամենից հետո դեռ չի աշխատում, քեզ այլ բան չի մնում քան խնդրի մասին բարձրաձայնելը Github-ում՝ հետևյալ հղումով․ https://github.com/stom79/mastalab/issues
|
||||
</string>
|
||||
<string name="media_ready">Մեդիան բեռնվել է։ Կտտացրու այստեղ՝ այն ցուցադրելու համար։</string>
|
||||
<string name="data_export_start">Այս գործողությունը բավական երկար կարող է տևել։ Դու կծանուցվես դրա ավարտի մասին։</string>
|
||||
<string name="data_export_running">Դեռ բեռնվում է, սպասի՛ր…</string>
|
||||
<string name="data_export">Արտահանել գրառումները</string>
|
||||
<string name="data_export_toots">Արտահանել գրառումները %1$s-ի համար</string>
|
||||
<string name="data_export_success">%2$s-ից %1$s թութ արտահանվել է։</string>
|
||||
<string name="data_export_error">Ինչ-որ բան սխալ է գնացել %1$s-ի բովանդակությունն արտահանելու ընթացքում</string>
|
||||
<!-- Proxy -->
|
||||
<string name="proxy_set">Պրոքսի</string>
|
||||
<string name="proxy_type">Ձև</string>
|
||||
<string name="proxy_enable">Միացնե՞լ պրոքսին</string>
|
||||
<string name="poxy_host">Հոսթ</string>
|
||||
<string name="poxy_port">Պորտ</string>
|
||||
<string name="poxy_login">Մուտք</string>
|
||||
<string name="poxy_password">Գաղտնաբառ</string>
|
||||
</resources>
|
|
@ -315,6 +315,12 @@
|
|||
<item>Yandex</item>
|
||||
<item>Tidak</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">Atur warna LED:</string>
|
||||
<string-array name="led_colours">
|
||||
<item>Biru</item>
|
||||
|
@ -339,6 +345,7 @@
|
|||
<string name="followed_by">Mengikutimu</string>
|
||||
<string name="action_search">Pencarian</string>
|
||||
<string name="set_capitalize">Huruf pertama kapital untuk membalas</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Tolak pemberitahuan</string>
|
||||
<string name="settings_popup_message">
|
||||
|
|
|
@ -318,6 +318,12 @@
|
|||
<item>Yandex</item>
|
||||
<item>No</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">Set LED colour:</string>
|
||||
<string-array name="led_colours">
|
||||
<item>Blue</item>
|
||||
|
@ -342,6 +348,7 @@
|
|||
<string name="followed_by">Follows you</string>
|
||||
<string name="action_search">Search</string>
|
||||
<string name="set_capitalize">First letter in capital for replies</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Push notifications</string>
|
||||
<string name="settings_popup_message">
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
<string name="choose_picture">画像を選択…</string>
|
||||
<string name="clear">削除</string>
|
||||
<string name="microphone">マイク</string>
|
||||
<string name="camera">Camera</string>
|
||||
<string name="camera">カメラ</string>
|
||||
<string name="speech_prompt">何か話してみてください</string>
|
||||
<string name="speech_not_supported">お使いのデバイスは音声入力をサポートしておりません!</string>
|
||||
<string name="delete_all">すべて削除</string>
|
||||
|
@ -117,7 +117,7 @@
|
|||
<string name="more_action_5">コピー</string>
|
||||
<string name="more_action_6">共有</string>
|
||||
<string name="more_action_7">メンション</string>
|
||||
<string name="more_action_8">Timed mute</string>
|
||||
<string name="more_action_8">時限ミュート</string>
|
||||
<string-array name="more_action_confirm">
|
||||
<item>このアカウントをミュートしますか?</item>
|
||||
<item>このアカウントをブロックしますか?</item>
|
||||
|
@ -196,9 +196,9 @@
|
|||
<string name="toot_scheduled_date">スケジュールされた日付は現在の時間より後でなければなりません!</string>
|
||||
<string name="warning_battery">バッテリーセーバーが有効になっています! 期待どおりに動作しない可能性があります。</string>
|
||||
<!-- timed mute -->
|
||||
<string name="timed_mute_date_error">The time for muting should be greater than one minute.</string>
|
||||
<string name="timed_mute_date">%1$s has been muted until %2$s.\n You can unmute this account from his/her profile page.</string>
|
||||
<string name="timed_mute_profile">%1$s is muted until %2$s.\n Click here to unmute the account.</string>
|
||||
<string name="timed_mute_date_error">ミュートする時間(1分超)です。</string>
|
||||
<string name="timed_mute_date">%1$s は %2$s までミュートされています。\n このアカウントのプロフィールページでミュートを解除することができます。</string>
|
||||
<string name="timed_mute_profile">%1$s は %2$s までミュートされます。\n ミュートを解除するにはここをクリックします。</string>
|
||||
<!-- Notifications -->
|
||||
<string name="no_notifications">通知はありません</string>
|
||||
<string name="notif_mention">あなたにメンションしました</string>
|
||||
|
@ -315,6 +315,12 @@
|
|||
<item>Yandex</item>
|
||||
<item>いいえ</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">LEDの色:</string>
|
||||
<string-array name="led_colours">
|
||||
<item>青</item>
|
||||
|
@ -339,6 +345,7 @@
|
|||
<string name="followed_by">あなたをフォロー</string>
|
||||
<string name="action_search">検索</string>
|
||||
<string name="set_capitalize">First letter in capital for replies</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">プッシュ通知</string>
|
||||
<string name="settings_popup_message">
|
||||
|
@ -416,18 +423,18 @@
|
|||
- もしまだ解決しない場合、Github(https://github.com/stom79/mastalab/issues)にissueを投稿してください
|
||||
</string>
|
||||
<string name="media_ready">メディアが読み込まれました。表示するにはここをクリックします。</string>
|
||||
<string name="data_export_start">This action can be quite long. You will be notified when it will be finished.</string>
|
||||
<string name="data_export_running">Still running, please wait…</string>
|
||||
<string name="data_export">Export statuses</string>
|
||||
<string name="data_export_start">この操作には時間がかかることがあります。完了すると通知されます。</string>
|
||||
<string name="data_export_running">実行中です。お待ちください...</string>
|
||||
<string name="data_export">トゥートをエクスポート</string>
|
||||
<string name="data_export_toots">Export statuses for %1$s</string>
|
||||
<string name="data_export_success">%1$s toots out of %2$s have been exported.</string>
|
||||
<string name="data_export_error">Something went wrong when exporting data for %1$s</string>
|
||||
<string name="data_export_error">%1$s のデータをエクスポート中に問題が発生しました</string>
|
||||
<!-- Proxy -->
|
||||
<string name="proxy_set">Proxy</string>
|
||||
<string name="proxy_type">Type</string>
|
||||
<string name="proxy_enable">Enable proxy?</string>
|
||||
<string name="poxy_host">Host</string>
|
||||
<string name="poxy_port">Port</string>
|
||||
<string name="poxy_login">Login</string>
|
||||
<string name="poxy_password">Password</string>
|
||||
<string name="proxy_set">プロキシ</string>
|
||||
<string name="proxy_type">タイプ</string>
|
||||
<string name="proxy_enable">プロキシの有効化</string>
|
||||
<string name="poxy_host">ホスト</string>
|
||||
<string name="poxy_port">ポート</string>
|
||||
<string name="poxy_login">ログイン</string>
|
||||
<string name="poxy_password">パスワード</string>
|
||||
</resources>
|
||||
|
|
|
@ -315,6 +315,12 @@
|
|||
<item>Yandex</item>
|
||||
<item>No</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">Set LED colour:</string>
|
||||
<string-array name="led_colours">
|
||||
<item>Blue</item>
|
||||
|
@ -339,6 +345,7 @@
|
|||
<string name="followed_by">Follows you</string>
|
||||
<string name="action_search">Search</string>
|
||||
<string name="set_capitalize">First letter in capital for replies</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Push notifications</string>
|
||||
<string name="settings_popup_message">
|
||||
|
|
|
@ -318,6 +318,12 @@
|
|||
<item>Yandex</item>
|
||||
<item>Nee</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">LED-kleur instellen:</string>
|
||||
<string-array name="led_colours">
|
||||
<item>Blauw</item>
|
||||
|
@ -342,6 +348,7 @@
|
|||
<string name="followed_by">Volgt jou</string>
|
||||
<string name="action_search">Zoeken</string>
|
||||
<string name="set_capitalize">First letter in capital for replies</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Pushmeldingen</string>
|
||||
<string name="settings_popup_message">
|
||||
|
|
|
@ -318,6 +318,12 @@
|
|||
<item>Yandex</item>
|
||||
<item>Nei</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">Angi LED-farge:</string>
|
||||
<string-array name="led_colours">
|
||||
<item>Blå</item>
|
||||
|
@ -342,6 +348,7 @@
|
|||
<string name="followed_by">Følger deg</string>
|
||||
<string name="action_search">Søke</string>
|
||||
<string name="set_capitalize">First letter in capital for replies</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Trykk på varsler</string>
|
||||
<string name="settings_popup_message">
|
||||
|
|
|
@ -321,6 +321,12 @@
|
|||
<item>Yandex</item>
|
||||
<item>Nie</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">Ustaw kolor diody LED:</string>
|
||||
<string-array name="led_colours">
|
||||
<item>Niebieski</item>
|
||||
|
@ -345,6 +351,7 @@
|
|||
<string name="followed_by">Obserwuje Cię</string>
|
||||
<string name="action_search">Wyszykaj</string>
|
||||
<string name="set_capitalize">First letter in capital for replies</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Powiadomienia push</string>
|
||||
<string name="settings_popup_message">
|
||||
|
|
|
@ -318,6 +318,12 @@
|
|||
<item>Yandex</item>
|
||||
<item>Não</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">Configurar cor do LED:</string>
|
||||
<string-array name="led_colours">
|
||||
<item>Azul</item>
|
||||
|
@ -342,6 +348,7 @@
|
|||
<string name="followed_by">Segue você</string>
|
||||
<string name="action_search">Busca</string>
|
||||
<string name="set_capitalize">First letter in capital for replies</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Notificações</string>
|
||||
<string name="settings_popup_message">
|
||||
|
|
|
@ -321,6 +321,12 @@
|
|||
<item>Yandex</item>
|
||||
<item>Nu</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">Setează culoarea LED:</string>
|
||||
<string-array name="led_colours">
|
||||
<item>Albastru</item>
|
||||
|
@ -345,6 +351,7 @@
|
|||
<string name="followed_by">Vă urmărește</string>
|
||||
<string name="action_search">Căutare</string>
|
||||
<string name="set_capitalize">First letter in capital for replies</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Notificări instant</string>
|
||||
<string name="settings_popup_message">
|
||||
|
|
|
@ -321,6 +321,12 @@
|
|||
<item>Yandex</item>
|
||||
<item>No</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">Set LED colour:</string>
|
||||
<string-array name="led_colours">
|
||||
<item>Blue</item>
|
||||
|
@ -345,6 +351,7 @@
|
|||
<string name="followed_by">Follows you</string>
|
||||
<string name="action_search">Search</string>
|
||||
<string name="set_capitalize">First letter in capital for replies</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Push notifications</string>
|
||||
<string name="settings_popup_message">
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
<string name="choose_picture">Одаберите слику…</string>
|
||||
<string name="clear">Очисти</string>
|
||||
<string name="microphone">Микрофон</string>
|
||||
<string name="camera">Camera</string>
|
||||
<string name="camera">Камера</string>
|
||||
<string name="speech_prompt">Реците нешто</string>
|
||||
<string name="speech_not_supported">Ваш уређај не подржава гласовни унос!</string>
|
||||
<string name="delete_all">Избриши све</string>
|
||||
|
@ -321,6 +321,12 @@
|
|||
<item>Yandex</item>
|
||||
<item>Не</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">Постави ЛЕД боју:</string>
|
||||
<string-array name="led_colours">
|
||||
<item>Плава</item>
|
||||
|
@ -345,6 +351,7 @@
|
|||
<string name="followed_by">Прати Вас</string>
|
||||
<string name="action_search">Претрага</string>
|
||||
<string name="set_capitalize">Прво слово велико у одговорима</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Гурни обавештења</string>
|
||||
<string name="settings_popup_message">
|
||||
|
@ -437,11 +444,11 @@
|
|||
<string name="data_export_success">Извежено %1$s од укупно %2$s тутова.</string>
|
||||
<string name="data_export_error">Дошло је до грешке приликом извоза података за %1$s</string>
|
||||
<!-- Proxy -->
|
||||
<string name="proxy_set">Proxy</string>
|
||||
<string name="proxy_type">Type</string>
|
||||
<string name="proxy_enable">Enable proxy?</string>
|
||||
<string name="poxy_host">Host</string>
|
||||
<string name="poxy_port">Port</string>
|
||||
<string name="poxy_login">Login</string>
|
||||
<string name="poxy_password">Password</string>
|
||||
<string name="proxy_set">Прокси</string>
|
||||
<string name="proxy_type">Тип</string>
|
||||
<string name="proxy_enable">Омогући прокси?</string>
|
||||
<string name="poxy_host">Домаћин</string>
|
||||
<string name="poxy_port">Порт</string>
|
||||
<string name="poxy_login">Пријава</string>
|
||||
<string name="poxy_password">Лозинка</string>
|
||||
</resources>
|
||||
|
|
|
@ -318,6 +318,12 @@
|
|||
<item>Yandex</item>
|
||||
<item>No</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">Set LED colour:</string>
|
||||
<string-array name="led_colours">
|
||||
<item>Blue</item>
|
||||
|
@ -342,6 +348,7 @@
|
|||
<string name="followed_by">Follows you</string>
|
||||
<string name="action_search">Search</string>
|
||||
<string name="set_capitalize">First letter in capital for replies</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Push notifications</string>
|
||||
<string name="settings_popup_message">
|
||||
|
|
|
@ -318,6 +318,12 @@
|
|||
<item>Yandex</item>
|
||||
<item>Hayır</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">LED rengini ayarla:</string>
|
||||
<string-array name="led_colours">
|
||||
<item>Mavi</item>
|
||||
|
@ -342,6 +348,7 @@
|
|||
<string name="followed_by">Sizi takip ediyor</string>
|
||||
<string name="action_search">Ara</string>
|
||||
<string name="set_capitalize">First letter in capital for replies</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Anlık Bildirimler</string>
|
||||
<string name="settings_popup_message">
|
||||
|
|
|
@ -321,6 +321,12 @@
|
|||
<item>Yandex</item>
|
||||
<item>No</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">Set LED colour:</string>
|
||||
<string-array name="led_colours">
|
||||
<item>Blue</item>
|
||||
|
@ -345,6 +351,7 @@
|
|||
<string name="followed_by">Follows you</string>
|
||||
<string name="action_search">Search</string>
|
||||
<string name="set_capitalize">First letter in capital for replies</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Push notifications</string>
|
||||
<string name="settings_popup_message">
|
||||
|
|
|
@ -317,6 +317,12 @@ và %d toots khác để khám phá</item>
|
|||
<item>Yandex</item>
|
||||
<item>Không</item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">Đặt màu LED:</string>
|
||||
<string-array name="led_colours">
|
||||
<item>Màu xanh da trời</item>
|
||||
|
@ -341,6 +347,7 @@ và %d toots khác để khám phá</item>
|
|||
<string name="followed_by">Sau bạn</string>
|
||||
<string name="action_search">Tìm kiếm</string>
|
||||
<string name="set_capitalize">First letter in capital for replies</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Push thông báo</string>
|
||||
<string name="settings_popup_message">
|
||||
|
|
|
@ -315,6 +315,12 @@
|
|||
<item>Yandex</item>
|
||||
<item>否 </item>
|
||||
</string-array>
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
<string name="set_led_colour">设置 LED 颜色:</string>
|
||||
<string-array name="led_colours">
|
||||
<item>蓝色</item>
|
||||
|
@ -339,6 +345,7 @@
|
|||
<string name="followed_by">关注你</string>
|
||||
<string name="action_search">搜索</string>
|
||||
<string name="set_capitalize">First letter in capital for replies</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">推送通知</string>
|
||||
<string name="settings_popup_message">
|
||||
|
|
|
@ -339,6 +339,13 @@
|
|||
<item>No</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="settings_resize_picture">
|
||||
<item>No</item>
|
||||
<item>512 Ko</item>
|
||||
<item>1 Mo</item>
|
||||
<item>2 Mo</item>
|
||||
</string-array>
|
||||
|
||||
<string name="set_led_colour">Set LED colour:</string>
|
||||
|
||||
<string-array name="led_colours">
|
||||
|
@ -366,6 +373,8 @@
|
|||
|
||||
<string name="action_search">Search</string>
|
||||
<string name="set_capitalize">First letter in capital for replies</string>
|
||||
<string name="set_resize_picture">Resize pictures</string>
|
||||
|
||||
<!-- Quick settings for notifications -->
|
||||
<string name="settings_popup_title">Push notifications</string>
|
||||
<string name="settings_popup_message">
|
||||
|
|
Loading…
Reference in New Issue