Browse Source

Added advanced option to store sent messages

Refs #29
main
M66B 6 years ago
parent
commit
ae2c09aa89
7 changed files with 135 additions and 16 deletions
  1. +1
    -1
      app/src/main/java/eu/faircode/email/ActivitySetup.java
  2. +71
    -0
      app/src/main/java/eu/faircode/email/FragmentOptions.java
  3. +8
    -6
      app/src/main/java/eu/faircode/email/FragmentSetup.java
  4. +7
    -4
      app/src/main/java/eu/faircode/email/ServiceSynchronize.java
  5. +38
    -0
      app/src/main/res/layout/fragment_options.xml
  6. +6
    -4
      app/src/main/res/layout/fragment_setup.xml
  7. +4
    -1
      app/src/main/res/values/strings.xml

+ 1
- 1
app/src/main/java/eu/faircode/email/ActivitySetup.java View File

@ -44,7 +44,7 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_setup);
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportFragmentManager().addOnBackStackChangedListener(this);


+ 71
- 0
app/src/main/java/eu/faircode/email/FragmentOptions.java View File

@ -0,0 +1,71 @@
package eu.faircode.email;
/*
This file is part of FairEmail.
FairEmail is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
NetGuard is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with NetGuard. If not, see <http://www.gnu.org/licenses/>.
Copyright 2018 by Marcel Bokhorst (M66B)
*/
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
public class FragmentOptions extends FragmentEx {
private CheckBox cbStoreSent;
private CheckBox cbDebug;
@Override
@Nullable
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
setSubtitle(R.string.title_advanced);
View view = inflater.inflate(R.layout.fragment_options, container, false);
// Get controls
cbStoreSent = view.findViewById(R.id.cbStoreSent);
cbDebug = view.findViewById(R.id.cbDebug);
// Wire controls
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
cbStoreSent.setChecked(prefs.getBoolean("store_sent", false));
cbStoreSent.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
prefs.edit().putBoolean("store_sent", checked).apply();
}
});
cbDebug.setChecked(prefs.getBoolean("debug", false));
cbDebug.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
prefs.edit().putBoolean("debug", checked).apply();
}
});
return view;
}
}

+ 8
- 6
app/src/main/java/eu/faircode/email/FragmentSetup.java View File

@ -56,7 +56,8 @@ public class FragmentSetup extends FragmentEx {
private TextView tvPermissionsDone;
private CheckBox cbDarkTheme;
private CheckBox cbDebug;
private Button btnOptions;
private static final String[] permissions = new String[]{
Manifest.permission.READ_CONTACTS
@ -82,7 +83,7 @@ public class FragmentSetup extends FragmentEx {
tvPermissionsDone = view.findViewById(R.id.tvPermissionsDone);
cbDarkTheme = view.findViewById(R.id.cbDarkTheme);
cbDebug = view.findViewById(R.id.cbDebug);
btnOptions = view.findViewById(R.id.btnOptions);
// Wire controls
@ -129,11 +130,12 @@ public class FragmentSetup extends FragmentEx {
}
});
cbDebug.setChecked(prefs.getBoolean("debug", false));
cbDebug.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
btnOptions.setOnClickListener(new View.OnClickListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
prefs.edit().putBoolean("debug", checked).apply();
public void onClick(View view) {
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.content_frame, new FragmentOptions()).addToBackStack("options");
fragmentTransaction.commit();
}
});


+ 7
- 4
app/src/main/java/eu/faircode/email/ServiceSynchronize.java View File

@ -28,6 +28,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.ServiceConnection;
import android.content.SharedPreferences;
import android.media.RingtoneManager;
import android.net.ConnectivityManager;
import android.net.Network;
@ -965,10 +966,12 @@ public class ServiceSynchronize extends LifecycleService {
message.ui_seen = true;
db.message().updateMessage(message);
if (sent != null) {
Log.i(Helper.TAG, "Appending sent msgid=" + message.msgid);
EntityOperation.queue(db, message, EntityOperation.ADD); // Could already exist
}
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
if (prefs.getBoolean("store_sent", false))
if (sent != null) {
Log.i(Helper.TAG, "Appending sent msgid=" + message.msgid);
EntityOperation.queue(db, message, EntityOperation.ADD); // Could already exist
}
db.setTransactionSuccessful();
} finally {


+ 38
- 0
app/src/main/res/layout/fragment_options.xml View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ActivityView">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<CheckBox
android:id="@+id/cbStoreSent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_marginTop="12dp"
android:text="@string/title_advanced_store_sent"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="?android:attr/textColorSecondary"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<CheckBox
android:id="@+id/cbDebug"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_marginTop="12dp"
android:text="@string/title_advanced_debug"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="?android:attr/textColorSecondary"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cbStoreSent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>

+ 6
- 4
app/src/main/res/layout/fragment_setup.xml View File

@ -147,14 +147,16 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvPermissionsDone" />
<CheckBox
android:id="@+id/cbDebug"
<Button
android:id="@+id/btnOptions"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="@string/title_setup_debug"
android:minHeight="0dp"
android:minWidth="0dp"
android:text="@string/title_advanced"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="?android:attr/textColorSecondary"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cbDarkTheme" />


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

@ -60,7 +60,10 @@
<string name="title_setup_to_do">To do</string>
<string name="title_setup_done">Done</string>
<string name="title_setup_dark_theme">Dark theme</string>
<string name="title_setup_debug">Debug</string>
<string name="title_advanced">Advanced options</string>
<string name="title_advanced_store_sent">Store sent message</string>
<string name="title_advanced_debug">Debug</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>


Loading…
Cancel
Save