Browse Source

feat: improve message interface

- add color to folder account
- add option to show/hide message details
- clean UI
main
Distopico Vegan 5 years ago
parent
commit
de7dc808a2
45 changed files with 243 additions and 96 deletions
  1. +57
    -11
      app/src/main/java/org/dystopia/email/AdapterMessage.java
  2. +17
    -1
      app/src/main/java/org/dystopia/email/FragmentMessages.java
  3. +62
    -42
      app/src/main/res/layout/item_message_compact.xml
  4. +61
    -41
      app/src/main/res/layout/item_message_normal.xml
  5. +5
    -0
      app/src/main/res/menu/menu_message.xml
  6. +1
    -0
      app/src/main/res/values-af/strings.xml
  7. +1
    -0
      app/src/main/res/values-ar-rBH/strings.xml
  8. +1
    -0
      app/src/main/res/values-ar-rEG/strings.xml
  9. +1
    -0
      app/src/main/res/values-ar-rSA/strings.xml
  10. +1
    -0
      app/src/main/res/values-ar-rYE/strings.xml
  11. +1
    -0
      app/src/main/res/values-ar/strings.xml
  12. +1
    -0
      app/src/main/res/values-az/strings.xml
  13. +1
    -0
      app/src/main/res/values-ca/strings.xml
  14. +1
    -0
      app/src/main/res/values-cs/strings.xml
  15. +1
    -0
      app/src/main/res/values-da/strings.xml
  16. +1
    -0
      app/src/main/res/values-de/strings.xml
  17. +1
    -0
      app/src/main/res/values-el/strings.xml
  18. +1
    -0
      app/src/main/res/values-en/strings.xml
  19. +2
    -1
      app/src/main/res/values-es-rES/strings.xml
  20. +1
    -0
      app/src/main/res/values-fa/strings.xml
  21. +1
    -0
      app/src/main/res/values-fi/strings.xml
  22. +1
    -0
      app/src/main/res/values-fr/strings.xml
  23. +1
    -0
      app/src/main/res/values-he/strings.xml
  24. +1
    -0
      app/src/main/res/values-hu/strings.xml
  25. +1
    -0
      app/src/main/res/values-it/strings.xml
  26. +1
    -0
      app/src/main/res/values-iw/strings.xml
  27. +1
    -0
      app/src/main/res/values-ja/strings.xml
  28. +1
    -0
      app/src/main/res/values-ko/strings.xml
  29. +1
    -0
      app/src/main/res/values-nb/strings.xml
  30. +1
    -0
      app/src/main/res/values-nl/strings.xml
  31. +1
    -0
      app/src/main/res/values-no/strings.xml
  32. +1
    -0
      app/src/main/res/values-pl/strings.xml
  33. +1
    -0
      app/src/main/res/values-pt-rBR/strings.xml
  34. +1
    -0
      app/src/main/res/values-pt-rPT/strings.xml
  35. +1
    -0
      app/src/main/res/values-ro/strings.xml
  36. +1
    -0
      app/src/main/res/values-ru/strings.xml
  37. +1
    -0
      app/src/main/res/values-sr/strings.xml
  38. +1
    -0
      app/src/main/res/values-sv-rSE/strings.xml
  39. +1
    -0
      app/src/main/res/values-tr/strings.xml
  40. +1
    -0
      app/src/main/res/values-uk/strings.xml
  41. +1
    -0
      app/src/main/res/values-vi/strings.xml
  42. +1
    -0
      app/src/main/res/values-zh-rCN/strings.xml
  43. +1
    -0
      app/src/main/res/values-zh-rTW/strings.xml
  44. +1
    -0
      app/src/main/res/values/colors.xml
  45. +1
    -0
      app/src/main/res/values/strings.xml

+ 57
- 11
app/src/main/java/org/dystopia/email/AdapterMessage.java View File

@ -139,6 +139,7 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
private ImageView ivAttachments;
private TextView tvSubject;
private TextView tvFolder;
private TextView tvAccount;
private TextView tvCount;
private ImageView ivThread;
private TextView tvError;
@ -164,6 +165,7 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
private RecyclerView rvAttachment;
private AdapterAttachment adapter;
private Group grpDetails;
private Group grpHeaders;
private Group grpAttachments;
private Group grpExpanded;
@ -185,6 +187,7 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
tvTimeEx = itemView.findViewById(R.id.tvTimeEx);
ivAttachments = itemView.findViewById(R.id.ivAttachments);
tvSubject = itemView.findViewById(R.id.tvSubject);
tvAccount = itemView.findViewById(R.id.tvAccount);
tvFolder = itemView.findViewById(R.id.tvFolder);
tvCount = itemView.findViewById(R.id.tvCount);
ivThread = itemView.findViewById(R.id.ivThread);
@ -217,6 +220,7 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
adapter = new AdapterAttachment(context, owner, true);
rvAttachment.setAdapter(adapter);
grpDetails = itemView.findViewById(R.id.grpDetails);
grpHeaders = itemView.findViewById(R.id.grpHeaders);
grpAttachments = itemView.findViewById(R.id.grpAttachments);
grpExpanded = itemView.findViewById(R.id.grpExpanded);
@ -250,6 +254,7 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
ivAttachments.setVisibility(View.GONE);
tvSubject.setText(null);
tvFolder.setText(null);
tvAccount.setText(null);
tvCount.setText(null);
ivThread.setVisibility(View.GONE);
tvError.setVisibility(View.GONE);
@ -259,6 +264,7 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
vSeparatorBody.setVisibility(View.GONE);
btnImages.setVisibility(View.GONE);
pbBody.setVisibility(View.GONE);
grpDetails.setVisibility(View.GONE);
grpHeaders.setVisibility(View.GONE);
grpAttachments.setVisibility(View.GONE);
grpExpanded.setVisibility(View.GONE);
@ -267,6 +273,7 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
private void bindTo(int position, final TupleMessageEx message) {
final DB db = DB.getInstance(context);
final boolean show_expanded = properties.isExpanded(message.id);
boolean show_details = properties.showDetails(message.id);
boolean show_headers = properties.showHeaders(message.id);
pbLoading.setVisibility(View.GONE);
@ -281,17 +288,24 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
}
}
ivAvatar.setVisibility(photo ? View.VISIBLE : View.GONE);
vwColor.setVisibility(View.GONE);
vwColor.setBackgroundColor(Color.TRANSPARENT);
vwColor.setBackgroundColor(message.accountColor == null ? Color.TRANSPARENT : message.accountColor);
vwColor.setVisibility(viewType == ViewType.UNIFIED && message.accountColor != null ? View.VISIBLE : View.GONE);
if (message.accountColor != null && (viewType == ViewType.UNIFIED || viewType == ViewType.FOLDER)) {
vwColor.setVisibility(View.VISIBLE);
vwColor.setBackgroundColor(message.accountColor);
} else {
tvFolder.setBackgroundColor(message.accountColor == null ? Color.GRAY : message.accountColor);
}
ivExpander.setImageResource(show_expanded ? R.drawable.baseline_expand_less_24 : R.drawable.baseline_expand_more_24);
ivExpander.setVisibility(viewType == ViewType.THREAD ? View.VISIBLE : View.GONE);
if (viewType == ViewType.THREAD)
ivFlagged.setVisibility(message.unflagged == 1 ? View.GONE : View.VISIBLE);
else
else {
ivFlagged.setVisibility(message.count - message.unflagged > 0 ? View.VISIBLE : View.GONE);
}
if (EntityFolder.DRAFTS.equals(message.folderType) ||
EntityFolder.OUTBOX.equals(message.folderType) ||
@ -310,13 +324,18 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
ivAttachments.setVisibility(message.attachments > 0 ? View.VISIBLE : View.GONE);
tvSubject.setText(message.subject);
if (viewType == ViewType.UNIFIED)
tvFolder.setText(message.accountName);
else
tvFolder.setVisibility(View.GONE);
tvAccount.setVisibility(View.GONE);
if (viewType == ViewType.UNIFIED || viewType == ViewType.FOLDER) {
tvAccount.setText(message.accountName);
tvAccount.setVisibility(View.VISIBLE);
} else {
tvFolder.setText(message.folderDisplay == null
? Helper.localizeFolderName(context, message.folderName)
: message.folderDisplay);
tvFolder.setVisibility(viewType == ViewType.FOLDER ? View.GONE : View.VISIBLE);
? Helper.localizeFolderName(context, message.folderName)
: message.folderDisplay);
tvFolder.setVisibility(View.VISIBLE);
}
if (viewType == ViewType.THREAD) {
tvCount.setVisibility(View.GONE);
@ -363,8 +382,12 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
grpExpanded.setVisibility(viewType == ViewType.THREAD && show_expanded ? View.VISIBLE : View.GONE);
ivAddContact.setVisibility(viewType == ViewType.THREAD && show_expanded && contacts && message.from != null ? View.VISIBLE : View.GONE);
grpDetails.setVisibility(show_details && show_expanded ? View.VISIBLE : View.GONE);
pbHeaders.setVisibility(View.GONE);
grpHeaders.setVisibility(show_headers && show_expanded ? View.VISIBLE : View.GONE);
bnvActions.setVisibility(View.GONE);
vSeparatorBody.setVisibility(View.GONE);
btnImages.setVisibility(View.GONE);
@ -785,8 +808,9 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
ActionData data = (ActionData) bnvActions.getTag();
if (data == null)
if (data == null) {
return false;
}
switch (item.getItemId()) {
case R.id.action_more:
@ -1019,6 +1043,16 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
}.load(context, owner, args);
}
private void onShowDetails(ActionData data) {
boolean show_details = !properties.showDetails(data.message.id);
properties.setDetails(data.message.id, show_details);
if (show_details) {
grpDetails.setVisibility(View.VISIBLE);
} else {
notifyDataSetChanged();
}
}
private void onShowHeaders(ActionData data) {
boolean show_headers = !properties.showHeaders(data.message.id);
properties.setHeaders(data.message.id, show_headers);
@ -1045,8 +1079,9 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
Helper.unexpectedError(context, ex);
}
}.load(context, owner, args);
} else
} else {
notifyDataSetChanged();
}
}
private void onShowHtml(ActionData data) {
@ -1067,6 +1102,7 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
private void onMore(final ActionData data) {
boolean inOutbox = EntityFolder.OUTBOX.equals(data.message.folderType);
boolean show_details = properties.showDetails(data.message.id);
boolean show_headers = properties.showHeaders(data.message.id);
View anchor = bnvActions.findViewById(R.id.action_more);
@ -1088,6 +1124,9 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
popupMenu.getMenu().findItem(R.id.menu_flag).setChecked(data.message.unflagged != 1);
popupMenu.getMenu().findItem(R.id.menu_flag).setVisible(data.message.uid != null && !inOutbox);
popupMenu.getMenu().findItem(R.id.menu_show_details).setChecked(show_details);
popupMenu.getMenu().findItem(R.id.menu_show_details).setVisible(data.message.uid != null);
popupMenu.getMenu().findItem(R.id.menu_show_headers).setChecked(show_headers);
popupMenu.getMenu().findItem(R.id.menu_show_headers).setVisible(data.message.uid != null);
@ -1117,6 +1156,9 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
case R.id.menu_flag:
onFlag(data);
return true;
case R.id.menu_show_details:
onShowDetails(data);
return true;
case R.id.menu_show_headers:
onShowHeaders(data);
return true;
@ -1418,12 +1460,16 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
interface IProperties {
void setExpanded(long id, boolean expand);
void setDetails(long id, boolean show);
void setHeaders(long id, boolean show);
void setImages(long id, boolean show);
boolean isExpanded(long id);
boolean showDetails(long id);
boolean showHeaders(long id);
boolean showImages(long id);


+ 17
- 1
app/src/main/java/org/dystopia/email/FragmentMessages.java View File

@ -110,6 +110,7 @@ public class FragmentMessages extends FragmentEx {
private int autoCount = 0;
private boolean autoExpand = true;
private List<Long> expanded = new ArrayList<>();
private List<Long> details = new ArrayList<>();
private List<Long> headers = new ArrayList<>();
private List<Long> images = new ArrayList<>();
@ -205,8 +206,18 @@ public class FragmentMessages extends FragmentEx {
if (expand) {
expanded.add(id);
handleExpand(id);
} else
} else {
expanded.remove(id);
}
}
@Override
public void setDetails(long id, boolean show) {
if (show)
details.add(id);
else {
details.remove(id);
}
}
@Override
@ -230,6 +241,11 @@ public class FragmentMessages extends FragmentEx {
return expanded.contains(id);
}
@Override
public boolean showDetails(long id) {
return details.contains(id);
}
@Override
public boolean showHeaders(long id) {
return headers.contains(id);


+ 62
- 42
app/src/main/res/layout/item_message_compact.xml View File

@ -47,17 +47,6 @@
app:layout_constraintStart_toEndOf="@+id/ivExpander"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/ivFlagged"
android:layout_width="21dp"
android:layout_height="21dp"
android:layout_marginStart="6dp"
android:src="@drawable/baseline_star_24"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="@id/tvFrom"
app:layout_constraintStart_toEndOf="@id/paddingStart"
app:layout_constraintTop_toTopOf="@+id/tvFrom" />
<ImageView
android:id="@+id/ivAvatar"
android:layout_width="0dp"
@ -66,7 +55,7 @@
android:src="@drawable/baseline_person_24"
app:layout_constraintBottom_toBottomOf="@+id/tvFrom"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintStart_toEndOf="@id/ivFlagged"
app:layout_constraintStart_toEndOf="@id/paddingStart"
app:layout_constraintTop_toTopOf="@+id/tvFrom" />
<TextView
@ -74,7 +63,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:layout_marginEnd="6dp"
android:layout_marginEnd="20dp"
android:ellipsize="end"
android:maxLines="1"
android:text="From"
@ -83,18 +72,6 @@
app:layout_constraintStart_toEndOf="@id/ivAvatar"
app:layout_constraintTop_toBottomOf="@id/paddingTop" />
<TextView
android:id="@+id/tvSize"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="6dp"
android:maxLines="1"
android:text="123 KB"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintBottom_toBottomOf="@id/tvFrom"
app:layout_constraintEnd_toStartOf="@id/tvTime"
app:layout_constraintTop_toTopOf="@id/tvFrom" />
<TextView
android:id="@+id/tvTime"
android:layout_width="wrap_content"
@ -104,9 +81,20 @@
android:text="Time"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintBottom_toBottomOf="@id/tvFrom"
app:layout_constraintEnd_toStartOf="@+id/paddingEnd"
app:layout_constraintEnd_toStartOf="@+id/ivFlagged"
app:layout_constraintTop_toTopOf="@id/tvFrom" />
<ImageView
android:id="@+id/ivFlagged"
android:layout_width="21dp"
android:layout_height="21dp"
android:layout_marginEnd="6dp"
android:src="@drawable/baseline_star_24"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="@id/tvTime"
app:layout_constraintEnd_toEndOf="@+id/paddingEnd"
app:layout_constraintTop_toTopOf="@id/tvTime" />
<ImageView
android:id="@+id/ivAttachments"
android:layout_width="21dp"
@ -127,43 +115,69 @@
android:maxLines="1"
android:text="Subject"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintEnd_toStartOf="@+id/tvFolder"
app:layout_constraintStart_toEndOf="@id/ivAttachments"
app:layout_constraintEnd_toStartOf="@id/paddingEnd"
app:layout_constraintTop_toBottomOf="@id/tvFrom" />
<TextView
android:id="@+id/tvAccount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:maxLines="1"
android:text="acount"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintStart_toEndOf="@id/paddingStart"
app:layout_constraintTop_toBottomOf="@id/tvSubject" />
<TextView
android:id="@+id/tvFolder"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="6dp"
android:layout_marginStart="6dp"
android:maxLines="1"
android:text="folder"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:textColor="@color/colorActionForeground"
android:background="@color/colorAccent"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintBottom_toBottomOf="@id/tvSubject"
app:layout_constraintEnd_toStartOf="@+id/tvCount"
app:layout_constraintTop_toTopOf="@id/tvSubject" />
app:layout_constraintStart_toEndOf="@id/tvAccount"
app:layout_constraintTop_toBottomOf="@id/tvSubject" />
<TextView
android:id="@+id/tvCount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="3dp"
android:layout_marginStart="6dp"
android:layout_marginTop="0.5dp"
android:maxLines="1"
android:text="3"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintBottom_toBottomOf="@id/tvSubject"
app:layout_constraintEnd_toStartOf="@+id/ivThread"
app:layout_constraintTop_toTopOf="@id/tvSubject" />
app:layout_constraintTop_toBottomOf="@id/tvSubject"
app:layout_constraintStart_toEndOf="@id/tvFolder" />
<ImageView
android:id="@+id/ivThread"
android:layout_width="15dp"
android:layout_height="15dp"
android:layout_marginEnd="6dp"
android:layout_marginStart="3dp"
android:layout_marginTop="1dp"
android:src="@drawable/baseline_message_24"
app:layout_constraintBottom_toBottomOf="@id/tvSubject"
app:layout_constraintEnd_toStartOf="@+id/paddingEnd"
app:layout_constraintTop_toTopOf="@id/tvSubject" />
app:layout_constraintBottom_toBottomOf="@id/tvCount"
app:layout_constraintStart_toEndOf="@id/tvCount"
app:layout_constraintTop_toTopOf="@id/tvCount" />
<TextView
android:id="@+id/tvSize"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="6dp"
android:maxLines="1"
android:text="123 KB"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintTop_toBottomOf="@id/tvSubject"
app:layout_constraintEnd_toStartOf="@+id/paddingEnd" />
<TextView
android:id="@+id/tvError"
@ -177,7 +191,7 @@
android:textIsSelectable="true"
app:layout_constraintEnd_toStartOf="@+id/paddingEnd"
app:layout_constraintStart_toEndOf="@id/paddingStart"
app:layout_constraintTop_toBottomOf="@id/tvSubject" />
app:layout_constraintTop_toBottomOf="@id/tvSize" />
<View
android:id="@+id/paddingEnd"
@ -499,6 +513,12 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/rvAttachment" />
<androidx.constraintlayout.widget.Group
android:id="@+id/grpDetails"
android:layout_width="0dp"
android:layout_height="0dp"
app:constraint_referenced_ids="vSeparatorAddress,tvFromExTitle,tvFromEx,tvToTitle,tvTo,tvReplyToTitle,tvReplyTo,tvCcTitle,tvCc,tvBccTitle,tvBcc,tvTimeEx,tvSubjectEx" />
<androidx.constraintlayout.widget.Group
android:id="@+id/grpHeaders"
android:layout_width="0dp"
@ -515,6 +535,6 @@
android:id="@+id/grpExpanded"
android:layout_width="0dp"
android:layout_height="0dp"
app:constraint_referenced_ids="vSeparatorAddress,tvFromExTitle,tvFromEx,tvToTitle,tvTo,tvReplyToTitle,tvReplyTo,tvCcTitle,tvCc,tvBccTitle,tvBcc,tvTimeEx,tvSubjectEx,tvBody" />
app:constraint_referenced_ids="tvBody" />
</androidx.constraintlayout.widget.ConstraintLayout>
</FrameLayout>
</FrameLayout>

+ 61
- 41
app/src/main/res/layout/item_message_normal.xml View File

@ -45,17 +45,6 @@
app:layout_constraintStart_toEndOf="@+id/ivExpander"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/ivFlagged"
android:layout_width="21dp"
android:layout_height="21dp"
android:layout_marginStart="6dp"
android:src="@drawable/baseline_star_24"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="@id/tvFrom"
app:layout_constraintStart_toEndOf="@id/paddingStart"
app:layout_constraintTop_toTopOf="@+id/tvFrom" />
<ImageView
android:id="@+id/ivAvatar"
android:layout_width="0dp"
@ -64,7 +53,7 @@
android:src="@drawable/baseline_person_24"
app:layout_constraintBottom_toBottomOf="@+id/tvFrom"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintStart_toEndOf="@id/ivFlagged"
app:layout_constraintStart_toEndOf="@id/paddingStart"
app:layout_constraintTop_toTopOf="@+id/tvFrom" />
<TextView
@ -76,22 +65,10 @@
android:ellipsize="end"
android:text="From"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
app:layout_constraintEnd_toStartOf="@+id/tvSize"
app:layout_constraintEnd_toStartOf="@+id/tvTime"
app:layout_constraintStart_toEndOf="@id/ivAvatar"
app:layout_constraintTop_toBottomOf="@id/paddingTop" />
<TextView
android:id="@+id/tvSize"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="6dp"
android:maxLines="1"
android:text="123 KB"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintBottom_toBottomOf="@id/tvFrom"
app:layout_constraintEnd_toStartOf="@id/tvTime"
app:layout_constraintTop_toTopOf="@id/tvFrom" />
<TextView
android:id="@+id/tvTime"
android:layout_width="wrap_content"
@ -101,9 +78,20 @@
android:text="Time"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintBottom_toBottomOf="@id/tvFrom"
app:layout_constraintEnd_toStartOf="@+id/paddingEnd"
app:layout_constraintEnd_toStartOf="@+id/ivFlagged"
app:layout_constraintTop_toTopOf="@id/tvFrom" />
<ImageView
android:id="@+id/ivFlagged"
android:layout_width="21dp"
android:layout_height="21dp"
android:layout_marginEnd="6dp"
android:src="@drawable/baseline_star_24"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="@id/tvTime"
app:layout_constraintEnd_toEndOf="@+id/paddingEnd"
app:layout_constraintTop_toTopOf="@id/tvTime" />
<ImageView
android:id="@+id/ivAttachments"
android:layout_width="21dp"
@ -124,43 +112,69 @@
android:ellipsize="end"
android:text="Subject"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintEnd_toStartOf="@+id/tvFolder"
app:layout_constraintStart_toEndOf="@id/ivAttachments"
app:layout_constraintEnd_toStartOf="@id/paddingEnd"
app:layout_constraintTop_toBottomOf="@id/tvFrom" />
<TextView
android:id="@+id/tvAccount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:maxLines="1"
android:text="acount"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintStart_toEndOf="@id/paddingStart"
app:layout_constraintTop_toBottomOf="@id/tvSubject" />
<TextView
android:id="@+id/tvFolder"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="6dp"
android:layout_marginStart="6dp"
android:maxLines="1"
android:text="folder"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:textColor="@color/colorActionForeground"
android:background="@color/colorAccent"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintBottom_toBottomOf="@id/tvSubject"
app:layout_constraintEnd_toStartOf="@+id/tvCount"
app:layout_constraintTop_toTopOf="@id/tvSubject" />
app:layout_constraintStart_toEndOf="@id/tvAccount"
app:layout_constraintTop_toBottomOf="@id/tvSubject" />
<TextView
android:id="@+id/tvCount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="3dp"
android:layout_marginStart="6dp"
android:layout_marginTop="0.5dp"
android:maxLines="1"
android:text="3"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintBottom_toBottomOf="@id/tvSubject"
app:layout_constraintEnd_toStartOf="@+id/ivThread"
app:layout_constraintTop_toTopOf="@id/tvSubject" />
app:layout_constraintTop_toBottomOf="@id/tvSubject"
app:layout_constraintStart_toEndOf="@id/tvFolder" />
<ImageView
android:id="@+id/ivThread"
android:layout_width="15dp"
android:layout_height="15dp"
android:layout_marginEnd="6dp"
android:layout_marginStart="3dp"
android:layout_marginTop="1dp"
android:src="@drawable/baseline_message_24"
app:layout_constraintBottom_toBottomOf="@id/tvSubject"
app:layout_constraintBottom_toBottomOf="@id/tvCount"
app:layout_constraintStart_toEndOf="@id/tvCount"
app:layout_constraintTop_toTopOf="@id/tvCount" />
<TextView
android:id="@+id/tvSize"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="6dp"
android:maxLines="1"
android:text="123 KB"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintEnd_toStartOf="@+id/paddingEnd"
app:layout_constraintTop_toTopOf="@id/tvSubject" />
app:layout_constraintTop_toBottomOf="@id/tvSubject" />
<TextView
android:id="@+id/tvError"
@ -175,7 +189,7 @@
android:textIsSelectable="true"
app:layout_constraintEnd_toStartOf="@+id/paddingEnd"
app:layout_constraintStart_toEndOf="@id/paddingStart"
app:layout_constraintTop_toBottomOf="@id/tvSubject" />
app:layout_constraintTop_toBottomOf="@id/tvSize" />
<View
android:id="@+id/paddingEnd"
@ -495,6 +509,12 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/rvAttachment" />
<androidx.constraintlayout.widget.Group
android:id="@+id/grpDetails"
android:layout_width="0dp"
android:layout_height="0dp"
app:constraint_referenced_ids="vSeparatorAddress,tvFromExTitle,tvFromEx,tvToTitle,tvTo,tvReplyToTitle,tvReplyTo,tvCcTitle,tvCc,tvBccTitle,tvBcc,tvTimeEx,tvSubjectEx" />
<androidx.constraintlayout.widget.Group
android:id="@+id/grpHeaders"
android:layout_width="0dp"
@ -511,6 +531,6 @@
android:id="@+id/grpExpanded"
android:layout_width="0dp"
android:layout_height="0dp"
app:constraint_referenced_ids="vSeparatorAddress,tvFromExTitle,tvFromEx,tvToTitle,tvTo,tvReplyToTitle,tvReplyTo,tvCcTitle,tvCc,tvBccTitle,tvBcc,tvTimeEx,tvSubjectEx,tvBody" />
app:constraint_referenced_ids="tvBody" />
</androidx.constraintlayout.widget.ConstraintLayout>
</FrameLayout>
</FrameLayout>

+ 5
- 0
app/src/main/res/menu/menu_message.xml View File

@ -25,6 +25,11 @@
android:checkable="true"
android:title="@string/title_flag" />
<item
android:id="@+id/menu_show_details"
android:checkable="true"
android:title="@string/title_show_details" />
<item
android:id="@+id/menu_show_headers"
android:checkable="true"


+ 1
- 0
app/src/main/res/values-af/strings.xml View File

@ -255,4 +255,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-ar-rBH/strings.xml View File

@ -271,4 +271,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-ar-rEG/strings.xml View File

@ -271,4 +271,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-ar-rSA/strings.xml View File

@ -271,4 +271,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-ar-rYE/strings.xml View File

@ -271,4 +271,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-ar/strings.xml View File

@ -271,4 +271,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-az/strings.xml View File

@ -255,4 +255,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-ca/strings.xml View File

@ -255,4 +255,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-cs/strings.xml View File

@ -263,4 +263,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-da/strings.xml View File

@ -255,4 +255,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-de/strings.xml View File

@ -255,4 +255,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-el/strings.xml View File

@ -255,4 +255,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-en/strings.xml View File

@ -255,4 +255,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 2
- 1
app/src/main/res/values-es-rES/strings.xml View File

@ -254,5 +254,6 @@
<string name="title_privacy_description"><b>SimpleEmail</b> no recopila ninguna información, no requiere permisos innecesarios y es <b>100\% software libre</b>.</string>
<string name="title_permissions"><b>Se necesitan permisos y por qué</b></string>
<string name="title_permissions_list"><b>\n• tiene acceso completo a la red </b> (INTERNET): para enviar y recibir correo electrónico <b>\n• ver conexiones de red </b> (ACCESS_NETWORK_STATE): para monitorear los cambios de conectividad a internet <b>\n• ejecutar al inicio </b> (RECEIVE_BOOT_COMPLETED): para iniciar el monitoreo en el inicio del dispositivo <b>\n• Servicio de primer plano </b> (FOREGROUND_SERVICE): para ejecutar un servicio de primer plano en Android 9 Pie y posterior <b>\n• evitar que el dispositivo entre en suspensión </b> (WAKE_LOCK): para mantener el dispositivo despierto mientras se sincronizan los mensajes <b>\n• [Opcional] lee tus contactos </b> (READ_CONTACTS): autocompletar direcciones y mostrar fotos <b>\n• [Opcional] encuentre cuentas en el dispositivo </b> (GET_ACCOUNTS): usar OAuth en lugar de contraseñas</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_no_storage_framework">Framework de almacenamiento no disponible</string>
<string name="title_show_details">Ver detalles</string>
</resources>

+ 1
- 0
app/src/main/res/values-fa/strings.xml View File

@ -255,4 +255,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-fi/strings.xml View File

@ -255,4 +255,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-fr/strings.xml View File

@ -255,4 +255,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-he/strings.xml View File

@ -263,4 +263,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-hu/strings.xml View File

@ -255,4 +255,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-it/strings.xml View File

@ -255,4 +255,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-iw/strings.xml View File

@ -263,4 +263,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-ja/strings.xml View File

@ -251,4 +251,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-ko/strings.xml View File

@ -251,4 +251,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-nb/strings.xml View File

@ -255,4 +255,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-nl/strings.xml View File

@ -255,4 +255,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-no/strings.xml View File

@ -255,4 +255,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-pl/strings.xml View File

@ -263,4 +263,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-pt-rBR/strings.xml View File

@ -255,4 +255,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-pt-rPT/strings.xml View File

@ -255,4 +255,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-ro/strings.xml View File

@ -259,4 +259,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-ru/strings.xml View File

@ -263,4 +263,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-sr/strings.xml View File

@ -259,4 +259,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-sv-rSE/strings.xml View File

@ -255,4 +255,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-tr/strings.xml View File

@ -255,4 +255,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-uk/strings.xml View File

@ -263,4 +263,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-vi/strings.xml View File

@ -251,4 +251,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-zh-rCN/strings.xml View File

@ -251,4 +251,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values-zh-rTW/strings.xml View File

@ -251,4 +251,5 @@
<string name="title_permissions"><b>Permissions are needed and why</b></string>
<string name="title_permissions_list"><b>• have full network access</b> (INTERNET): to send and receive email <b>\n• view network connections</b> (ACCESS_NETWORK_STATE): to monitor internet connectivity changes <b>\n• run at startup</b> (RECEIVE_BOOT_COMPLETED): to start monitoring on device start <b>\n• foreground service</b> (FOREGROUND_SERVICE): to run a foreground service on Android 9 Pie and later <b>\n• prevent device from sleeping</b> (WAKE_LOCK): to keep the device awake while synchronizing messages <b>\n• [Optional] read your contacts</b> (READ_CONTACTS): to autocomplete addresses and to show photos <b>\n• [Optional] find accounts on the device</b> (GET_ACCOUNTS): to use OAuth instead of passwords</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

+ 1
- 0
app/src/main/res/values/colors.xml View File

@ -50,4 +50,5 @@
<color name="blue_grey">#5E7C8B</color>
<color name="grey">#9D9D9D</color>
<color name="dark_grey">#696969</color>
<color name="black">#000000</color>
</resources>

+ 1
- 0
app/src/main/res/values/strings.xml View File

@ -321,4 +321,5 @@
<string name="fingerprint" translatable="false">BCB07BD93B29C1959C15F1CF6C3A2619BAF7A17</string>
<string name="title_no_storage_framework">Storage framework not available</string>
<string name="title_show_details">See details</string>
</resources>

Loading…
Cancel
Save