Moved browse on server setting to account

pull/147/head
M66B 7 years ago
parent 8752b498f0
commit 04b8a44d11

File diff suppressed because it is too large Load Diff

@ -1,7 +1,9 @@
package eu.faircode.email;
import android.content.Context;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.preference.PreferenceManager;
import android.text.TextUtils;
import android.util.Log;
@ -46,7 +48,7 @@ import io.requery.android.database.sqlite.RequerySQLiteOpenHelperFactory;
// https://developer.android.com/topic/libraries/architecture/room.html
@Database(
version = 25,
version = 26,
entities = {
EntityIdentity.class,
EntityAccount.class,
@ -83,7 +85,7 @@ public abstract class DB extends RoomDatabase {
public static synchronized DB getInstance(Context context) {
if (sInstance == null) {
sInstance = migrate(Room
sInstance = migrate(context, Room
.databaseBuilder(context.getApplicationContext(), DB.class, DB_NAME)
.openHelperFactory(new RequerySQLiteOpenHelperFactory())
.setJournalMode(JournalMode.WRITE_AHEAD_LOGGING));
@ -110,7 +112,7 @@ public abstract class DB extends RoomDatabase {
}
}
private static DB migrate(RoomDatabase.Builder<DB> builder) {
private static DB migrate(final Context context, RoomDatabase.Builder<DB> builder) {
// https://www.sqlite.org/lang_altertable.html
return builder
.addCallback(new Callback() {
@ -321,6 +323,15 @@ public abstract class DB extends RoomDatabase {
db.execSQL("ALTER TABLE `account` ADD COLUMN `prefix` TEXT");
}
})
.addMigrations(new Migration(25, 26) {
@Override
public void migrate(SupportSQLiteDatabase db) {
Log.i(Helper.TAG, "DB migration from version " + startVersion + " to " + endVersion);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
int browse = (prefs.getBoolean("browse", true) ? 1 : 0);
db.execSQL("ALTER TABLE `account` ADD COLUMN `browse` INTEGER NOT NULL DEFAULT " + browse);
}
})
.build();
}

@ -64,6 +64,8 @@ public class EntityAccount {
public Boolean synchronize;
@NonNull
public Boolean primary;
@NonNull
public Boolean browse;
public Integer color;
@NonNull
public Boolean notify;
@ -108,6 +110,7 @@ public class EntityAccount {
json.put("auth_type", auth_type);
json.put("synchronize", synchronize);
json.put("primary", primary);
json.put("browse", browse);
if (color != null)
json.put("color", color);
json.put("notify", notify);
@ -134,6 +137,10 @@ public class EntityAccount {
account.auth_type = json.getInt("auth_type");
account.synchronize = json.getBoolean("synchronize");
account.primary = json.getBoolean("primary");
if (json.has("browse"))
account.browse = json.getBoolean("browse");
else
account.browse = true;
if (json.has("color"))
account.color = json.getInt("color");
if (json.has("notify"))
@ -157,6 +164,7 @@ public class EntityAccount {
this.auth_type.equals(other.auth_type) &&
this.synchronize.equals(other.synchronize) &&
this.primary.equals(other.primary) &&
this.browse.equals(other.browse) &&
(this.color == null ? other.color == null : this.color.equals(other.color)) &&
this.notify.equals(other.notify) &&
this.poll_interval.equals(other.poll_interval) &&

@ -117,6 +117,7 @@ public class FragmentAccount extends FragmentEx {
private CheckBox cbSynchronize;
private CheckBox cbPrimary;
private CheckBox cbBrowse;
private EditText etInterval;
private Button btnCheck;
@ -191,6 +192,7 @@ public class FragmentAccount extends FragmentEx {
cbSynchronize = view.findViewById(R.id.cbSynchronize);
cbPrimary = view.findViewById(R.id.cbPrimary);
cbBrowse = view.findViewById(R.id.cbBrowse);
etInterval = view.findViewById(R.id.etInterval);
btnCheck = view.findViewById(R.id.btnCheck);
@ -608,6 +610,7 @@ public class FragmentAccount extends FragmentEx {
args.putBoolean("synchronize", cbSynchronize.isChecked());
args.putBoolean("primary", cbPrimary.isChecked());
args.putBoolean("browse", cbBrowse.isChecked());
args.putString("interval", etInterval.getText().toString());
args.putSerializable("drafts", drafts);
@ -635,6 +638,7 @@ public class FragmentAccount extends FragmentEx {
boolean synchronize = args.getBoolean("synchronize");
boolean primary = args.getBoolean("primary");
boolean browse = args.getBoolean("browse");
String interval = args.getString("interval");
EntityFolder drafts = (EntityFolder) args.getSerializable("drafts");
@ -725,6 +729,7 @@ public class FragmentAccount extends FragmentEx {
account.synchronize = synchronize;
account.primary = (account.synchronize && primary);
account.browse = browse;
account.poll_interval = Integer.parseInt(interval);
if (!update)
@ -949,6 +954,7 @@ public class FragmentAccount extends FragmentEx {
cbSynchronize.setChecked(account == null ? true : account.synchronize);
cbPrimary.setChecked(account == null ? false : account.primary);
cbBrowse.setChecked(account == null ? true : account.browse);
etInterval.setText(account == null ? "" : Long.toString(account.poll_interval));
color = (account == null || account.color == null ? Color.TRANSPARENT : account.color);

@ -1626,7 +1626,6 @@ public class FragmentMessages extends FragmentEx {
if (TextUtils.isEmpty(search)) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
String sort = prefs.getString("sort", "time");
boolean browse = prefs.getBoolean("browse", true);
boolean debug = prefs.getBoolean("debug", false);
// Sort changed
@ -1670,8 +1669,7 @@ public class FragmentMessages extends FragmentEx {
.build();
LivePagedListBuilder<Integer, TupleMessageEx> builder = new LivePagedListBuilder<>(
db.message().pagedFolder(folder, threading, sort, false, debug), config);
if (browse)
builder.setBoundaryCallback(searchCallback);
builder.setBoundaryCallback(searchCallback);
messages = builder.build();
break;

@ -58,7 +58,6 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
private SwitchCompat swMetered;
private Spinner spDownload;
private SwitchCompat swBrowse;
private SwitchCompat swInsecure;
private SwitchCompat swUnified;
@ -98,7 +97,6 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
swMetered = view.findViewById(R.id.swMetered);
spDownload = view.findViewById(R.id.spDownload);
swBrowse = view.findViewById(R.id.swBrowse);
swInsecure = view.findViewById(R.id.swInsecure);
swUnified = view.findViewById(R.id.swUnified);
@ -166,14 +164,6 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
}
});
swBrowse.setChecked(prefs.getBoolean("browse", true));
swBrowse.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
prefs.edit().putBoolean("browse", checked).apply();
}
});
swInsecure.setChecked(prefs.getBoolean("insecure", false));
swInsecure.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override

@ -86,6 +86,12 @@ public class ViewModelBrowse extends ViewModel {
if (folder == null) // unified inbox
return;
if (state.search == null) {
EntityAccount account = db.account().getAccount(folder.account);
if (!account.browse)
return;
}
if (state.search != null)
try {
db.beginTransaction();

@ -347,6 +347,25 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cbSynchronize" />
<CheckBox
android:id="@+id/cbBrowse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/title_advanced_browse"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cbPrimary" />
<TextView
android:id="@+id/tvBrowseHint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/title_advanced_browse_hint"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="italic"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cbBrowse" />
<!-- keep alive -->
<TextView
@ -357,7 +376,7 @@
android:text="@string/title_keep_alive_interval"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cbPrimary" />
app:layout_constraintTop_toBottomOf="@id/tvBrowseHint" />
<EditText
android:id="@+id/etInterval"
@ -560,7 +579,7 @@
android:id="@+id/grpAdvanced"
android:layout_width="0dp"
android:layout_height="0dp"
app:constraint_referenced_ids="tvName,tvNameRemark,etName,tvPrefix,tvPrefixRemark,etPrefix,btnColor,vwColor,ibColorDefault,cbNotify,cbSynchronize,cbPrimary,tvInterval,etInterval" />
app:constraint_referenced_ids="tvName,tvNameRemark,etName,tvPrefix,tvPrefixRemark,etPrefix,btnColor,vwColor,ibColorDefault,cbNotify,cbSynchronize,cbPrimary,cbBrowse,tvBrowseHint,tvInterval,etInterval" />
<androidx.constraintlayout.widget.Group
android:id="@+id/grpFolders"

@ -135,31 +135,6 @@
app:barrierDirection="bottom"
app:constraint_referenced_ids="tvDownload,spDownload" />
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/swBrowse"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_marginTop="12dp"
android:layout_marginEnd="12dp"
android:text="@string/title_advanced_browse"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/barrier1"
app:switchPadding="12dp" />
<TextView
android:id="@+id/tvBrowseHint"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_marginEnd="60dp"
android:text="@string/title_advanced_browse_hint"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="italic"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/swBrowse" />
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/swInsecure"
android:layout_width="match_parent"
@ -169,7 +144,7 @@
android:layout_marginEnd="12dp"
android:text="@string/title_allow_insecure"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvBrowseHint"
app:layout_constraintTop_toBottomOf="@id/barrier1"
app:switchPadding="12dp" />
<TextView

Loading…
Cancel
Save