mirror of
https://github.com/M66B/FairEmail.git
synced 2025-03-15 08:29:24 +00:00
Added option to save attachments
This commit is contained in:
parent
4f2d37e226
commit
e9b7458a70
41 changed files with 190 additions and 46 deletions
|
@ -19,6 +19,7 @@ package eu.faircode.email;
|
|||
Copyright 2018 by Marcel Bokhorst (M66B)
|
||||
*/
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
|
@ -27,6 +28,7 @@ import android.content.res.Configuration;
|
|||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.ParcelFileDescriptor;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
|
@ -42,6 +44,8 @@ import android.widget.Toast;
|
|||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FileReader;
|
||||
import java.text.Collator;
|
||||
import java.util.ArrayList;
|
||||
|
@ -76,6 +80,7 @@ public class ActivityView extends ActivityBase implements FragmentManager.OnBack
|
|||
static final String ACTION_VIEW_MESSAGES = BuildConfig.APPLICATION_ID + ".VIEW_MESSAGES";
|
||||
static final String ACTION_VIEW_MESSAGE = BuildConfig.APPLICATION_ID + ".VIEW_MESSAGE";
|
||||
static final String ACTION_EDIT_FOLDER = BuildConfig.APPLICATION_ID + ".EDIT_FOLDER";
|
||||
static final String ACTION_STORE_ATTACHMENT = BuildConfig.APPLICATION_ID + ".STORE_ATTACHMENT";
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
|
@ -310,6 +315,7 @@ public class ActivityView extends ActivityBase implements FragmentManager.OnBack
|
|||
iff.addAction(ACTION_VIEW_MESSAGES);
|
||||
iff.addAction(ACTION_VIEW_MESSAGE);
|
||||
iff.addAction(ACTION_EDIT_FOLDER);
|
||||
iff.addAction(ACTION_STORE_ATTACHMENT);
|
||||
lbm.registerReceiver(receiver, iff);
|
||||
|
||||
if (newIntent) {
|
||||
|
@ -592,7 +598,79 @@ public class ActivityView extends ActivityBase implements FragmentManager.OnBack
|
|||
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
|
||||
fragmentTransaction.replace(R.id.content_frame, fragment).addToBackStack("folder");
|
||||
fragmentTransaction.commit();
|
||||
|
||||
} else if (ACTION_STORE_ATTACHMENT.equals(intent.getAction())) {
|
||||
Intent create = new Intent(Intent.ACTION_CREATE_DOCUMENT);
|
||||
create.addCategory(Intent.CATEGORY_OPENABLE);
|
||||
create.setType(intent.getStringExtra("type"));
|
||||
create.putExtra(Intent.EXTRA_TITLE, intent.getStringExtra("name"));
|
||||
startActivityForResult(create, (int) intent.getLongExtra("id", -1));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
if (resultCode == Activity.RESULT_OK) {
|
||||
Bundle args = new Bundle();
|
||||
args.putLong("id", requestCode);
|
||||
args.putParcelable("uri", data.getData());
|
||||
new SimpleTask<Void>() {
|
||||
@Override
|
||||
protected Void onLoad(Context context, Bundle args) throws Throwable {
|
||||
long id = args.getLong("id");
|
||||
Uri uri = args.getParcelable("uri");
|
||||
|
||||
File file = EntityAttachment.getFile(context, id);
|
||||
|
||||
ParcelFileDescriptor pfd = null;
|
||||
FileOutputStream fos = null;
|
||||
FileInputStream fis = null;
|
||||
try {
|
||||
pfd = context.getContentResolver().openFileDescriptor(uri, "w");
|
||||
fos = new FileOutputStream(pfd.getFileDescriptor());
|
||||
fis = new FileInputStream(file);
|
||||
|
||||
byte[] buffer = new byte[4096];
|
||||
int read;
|
||||
while ((read = fis.read(buffer)) != -1) {
|
||||
fos.write(buffer, 0, read);
|
||||
}
|
||||
} finally {
|
||||
try {
|
||||
if (pfd != null)
|
||||
pfd.close();
|
||||
} catch (Throwable ex) {
|
||||
Log.w(Helper.TAG, ex + "\n" + Log.getStackTraceString(ex));
|
||||
}
|
||||
try {
|
||||
if (fos != null)
|
||||
fos.close();
|
||||
} catch (Throwable ex) {
|
||||
Log.w(Helper.TAG, ex + "\n" + Log.getStackTraceString(ex));
|
||||
}
|
||||
try {
|
||||
if (fis != null)
|
||||
fis.close();
|
||||
} catch (Throwable ex) {
|
||||
Log.w(Helper.TAG, ex + "\n" + Log.getStackTraceString(ex));
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onLoaded(Bundle args, Void data) {
|
||||
Toast.makeText(ActivityView.this, R.string.title_attachment_saved, Toast.LENGTH_LONG).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onException(Bundle args, Throwable ex) {
|
||||
Log.e(Helper.TAG, ex + "\n" + Log.getStackTraceString(ex));
|
||||
Toast.makeText(ActivityView.this, ex.toString(), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
}.load(this, args);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -44,6 +44,7 @@ import java.util.List;
|
|||
import androidx.annotation.NonNull;
|
||||
import androidx.core.content.FileProvider;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
import androidx.recyclerview.widget.DiffUtil;
|
||||
import androidx.recyclerview.widget.ListUpdateCallback;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
@ -63,6 +64,7 @@ public class AdapterAttachment extends RecyclerView.Adapter<AdapterAttachment.Vi
|
|||
TextView tvName;
|
||||
TextView tvSize;
|
||||
ImageView ivStatus;
|
||||
ImageView ivSave;
|
||||
TextView tvType;
|
||||
ProgressBar progressbar;
|
||||
|
||||
|
@ -74,6 +76,7 @@ public class AdapterAttachment extends RecyclerView.Adapter<AdapterAttachment.Vi
|
|||
tvName = itemView.findViewById(R.id.tvName);
|
||||
tvSize = itemView.findViewById(R.id.tvSize);
|
||||
ivStatus = itemView.findViewById(R.id.ivStatus);
|
||||
ivSave = itemView.findViewById(R.id.ivSave);
|
||||
tvType = itemView.findViewById(R.id.tvType);
|
||||
progressbar = itemView.findViewById(R.id.progressbar);
|
||||
}
|
||||
|
@ -81,14 +84,17 @@ public class AdapterAttachment extends RecyclerView.Adapter<AdapterAttachment.Vi
|
|||
private void wire() {
|
||||
itemView.setOnClickListener(this);
|
||||
ivDelete.setOnClickListener(this);
|
||||
ivSave.setOnClickListener(this);
|
||||
}
|
||||
|
||||
private void unwire() {
|
||||
itemView.setOnClickListener(null);
|
||||
ivDelete.setOnClickListener(null);
|
||||
ivSave.setOnClickListener(null);
|
||||
}
|
||||
|
||||
private void bindTo(EntityAttachment attachment) {
|
||||
ivDelete.setVisibility(readonly ? View.GONE : View.VISIBLE);
|
||||
tvName.setText(attachment.name);
|
||||
|
||||
if (attachment.size != null)
|
||||
|
@ -106,7 +112,7 @@ public class AdapterAttachment extends RecyclerView.Adapter<AdapterAttachment.Vi
|
|||
ivStatus.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
ivDelete.setVisibility(readonly ? View.GONE : View.VISIBLE);
|
||||
ivSave.setVisibility(readonly && attachment.available ? View.VISIBLE : View.GONE);
|
||||
|
||||
if (attachment.progress != null)
|
||||
progressbar.setProgress(attachment.progress);
|
||||
|
@ -137,6 +143,14 @@ public class AdapterAttachment extends RecyclerView.Adapter<AdapterAttachment.Vi
|
|||
}
|
||||
}.load(context, owner, args);
|
||||
|
||||
} else if (view.getId() == R.id.ivSave) {
|
||||
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(context);
|
||||
lbm.sendBroadcast(
|
||||
new Intent(ActivityView.ACTION_STORE_ATTACHMENT)
|
||||
.putExtra("id", attachment.id)
|
||||
.putExtra("name", attachment.name)
|
||||
.putExtra("type", attachment.type));
|
||||
|
||||
} else {
|
||||
if (attachment.available) {
|
||||
// Build file name
|
||||
|
@ -153,8 +167,6 @@ public class AdapterAttachment extends RecyclerView.Adapter<AdapterAttachment.Vi
|
|||
Log.i(Helper.TAG, "Sharing " + file + " type=" + attachment.type);
|
||||
Log.i(Helper.TAG, "Intent=" + intent);
|
||||
|
||||
//context.startActivity(Intent.createChooser(intent, attachment.name));
|
||||
|
||||
// Set permissions
|
||||
List<ResolveInfo> targets = context.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
|
||||
for (ResolveInfo resolveInfo : targets) {
|
||||
|
@ -164,7 +176,7 @@ public class AdapterAttachment extends RecyclerView.Adapter<AdapterAttachment.Vi
|
|||
|
||||
// Check if viewer available
|
||||
if (targets.size() == 0) {
|
||||
Toast.makeText(context, R.string.title_no_viewer, Toast.LENGTH_LONG).show();
|
||||
Toast.makeText(context, context.getString(R.string.title_no_viewer, attachment.type), Toast.LENGTH_LONG).show();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -30,9 +30,9 @@ import androidx.room.Update;
|
|||
@Dao
|
||||
public interface DaoAttachment {
|
||||
@Query("SELECT * FROM attachment" +
|
||||
" WHERE message = :id" +
|
||||
" WHERE message = :message" +
|
||||
" ORDER BY sequence")
|
||||
LiveData<List<EntityAttachment>> liveAttachments(long id);
|
||||
LiveData<List<EntityAttachment>> liveAttachments(long message);
|
||||
|
||||
@Query("SELECT COUNT(id)" +
|
||||
" FROM attachment" +
|
||||
|
@ -54,7 +54,13 @@ public interface DaoAttachment {
|
|||
" AND sequence = :sequence")
|
||||
EntityAttachment getAttachment(long message, int sequence);
|
||||
|
||||
@Query("UPDATE attachment SET progress = :progress WHERE id = :id")
|
||||
@Query("SELECT * FROM attachment" +
|
||||
" WHERE id = :id")
|
||||
EntityAttachment getAttachment(long id);
|
||||
|
||||
@Query("UPDATE attachment" +
|
||||
" SET progress = :progress" +
|
||||
" WHERE id = :id")
|
||||
void setProgress(long id, Integer progress);
|
||||
|
||||
@Insert
|
||||
|
@ -63,6 +69,7 @@ public interface DaoAttachment {
|
|||
@Update
|
||||
void updateAttachment(EntityAttachment attachment);
|
||||
|
||||
@Query("DELETE FROM attachment WHERE id = :id")
|
||||
@Query("DELETE FROM attachment" +
|
||||
" WHERE id = :id")
|
||||
int deleteAttachment(long id);
|
||||
}
|
||||
|
|
|
@ -55,10 +55,20 @@
|
|||
android:layout_height="24dp"
|
||||
android:layout_marginStart="6dp"
|
||||
android:src="@drawable/baseline_get_app_24"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@+id/ivSave"
|
||||
app:layout_constraintStart_toEndOf="@id/tvSize"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivSave"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginStart="6dp"
|
||||
android:src="@drawable/baseline_save_24"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/ivStatus"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvType"
|
||||
android:layout_width="0dp"
|
||||
|
|
|
@ -115,7 +115,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -131,7 +131,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -131,7 +131,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -131,7 +131,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -131,7 +131,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -131,7 +131,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -115,7 +115,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -123,7 +123,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -115,7 +115,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -115,7 +115,8 @@
|
|||
<string name="title_move">Verschieben</string>
|
||||
<string name="title_archive">Archivieren</string>
|
||||
<string name="title_reply">Antworten</string>
|
||||
<string name="title_no_viewer">Keine App zur Ansicht verfügbar</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">E-Mail dauerhaft löschen?</string>
|
||||
<string name="title_ask_spam">Nachricht als Spam melden?</string>
|
||||
<string name="title_compose">Verfassen</string>
|
||||
|
|
|
@ -115,7 +115,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -115,7 +115,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -115,7 +115,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -115,7 +115,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -115,7 +115,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -123,7 +123,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -115,7 +115,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -115,7 +115,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -123,7 +123,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -111,7 +111,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -111,7 +111,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -115,7 +115,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -115,7 +115,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -115,7 +115,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -123,7 +123,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -115,7 +115,8 @@
|
|||
<string name="title_move">Mover</string>
|
||||
<string name="title_archive">Arquivar</string>
|
||||
<string name="title_reply">Responder</string>
|
||||
<string name="title_no_viewer">Sem aplicativo visualizador</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Deletar mensagem permanentemente?</string>
|
||||
<string name="title_ask_spam">Reportar mensagem com spam?</string>
|
||||
<string name="title_compose">Escrever</string>
|
||||
|
|
|
@ -115,7 +115,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -119,7 +119,8 @@
|
|||
<string name="title_move">Mută</string>
|
||||
<string name="title_archive">Arhivă</string>
|
||||
<string name="title_reply">Răspunde</string>
|
||||
<string name="title_no_viewer">Nici o aplicație nu poate deschide</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Ștergeți definitiv mesajul?</string>
|
||||
<string name="title_ask_spam">Raportați mesajul drept spam?</string>
|
||||
<string name="title_compose">Compune</string>
|
||||
|
|
|
@ -123,7 +123,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -119,7 +119,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -115,7 +115,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -115,7 +115,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -123,7 +123,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -111,7 +111,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -111,7 +111,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -111,7 +111,8 @@
|
|||
<string name="title_move">Move</string>
|
||||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
<string name="title_compose">Compose</string>
|
||||
|
|
|
@ -138,7 +138,8 @@
|
|||
<string name="title_archive">Archive</string>
|
||||
<string name="title_reply">Reply</string>
|
||||
|
||||
<string name="title_no_viewer">No viewer app available</string>
|
||||
<string name="title_no_viewer">No viewer app available for %1$s</string>
|
||||
<string name="title_attachment_saved">Attachment saved</string>
|
||||
<string name="title_ask_delete">Delete message permanently?</string>
|
||||
<string name="title_ask_spam">Report message as spam?</string>
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue