mirror of https://github.com/M66B/FairEmail.git
Save export view model
This commit is contained in:
parent
3056949a92
commit
1b488aed5b
|
@ -463,10 +463,12 @@ dependencies {
|
|||
// https://mvnrepository.com/artifact/androidx.lifecycle/lifecycle-runtime
|
||||
// https://mvnrepository.com/artifact/androidx.lifecycle/lifecycle-livedata
|
||||
// https://mvnrepository.com/artifact/androidx.lifecycle/lifecycle-livedata-core
|
||||
// https://mvnrepository.com/artifact/androidx.lifecycle/lifecycle-viewmodel-savedstate
|
||||
// https://mvnrepository.com/artifact/androidx.lifecycle/lifecycle-compiler
|
||||
implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version"
|
||||
implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
|
||||
implementation "androidx.lifecycle:lifecycle-livedata-core:$lifecycle_version"
|
||||
implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version"
|
||||
annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
|
||||
|
||||
// https://mvnrepository.com/artifact/androidx.lifecycle/lifecycle-extensions
|
||||
|
|
|
@ -73,6 +73,7 @@ import androidx.fragment.app.FragmentManager;
|
|||
import androidx.fragment.app.FragmentTransaction;
|
||||
import androidx.lifecycle.Lifecycle;
|
||||
import androidx.lifecycle.Observer;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
import androidx.preference.PreferenceManager;
|
||||
import androidx.recyclerview.widget.DividerItemDecoration;
|
||||
|
@ -132,14 +133,6 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac
|
|||
private RecyclerView rvMenu;
|
||||
|
||||
private boolean hasAccount;
|
||||
private String password;
|
||||
private boolean import_accounts;
|
||||
private boolean import_delete;
|
||||
private boolean import_rules;
|
||||
private boolean import_contacts;
|
||||
private boolean import_answers;
|
||||
private boolean import_searches;
|
||||
private boolean import_settings;
|
||||
|
||||
static final int REQUEST_SOUND_INBOUND = 1;
|
||||
static final int REQUEST_SOUND_OUTBOUND = 2;
|
||||
|
@ -359,14 +352,6 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac
|
|||
|
||||
if (savedInstanceState != null) {
|
||||
drawerToggle.setDrawerIndicatorEnabled(savedInstanceState.getBoolean("fair:toggle"));
|
||||
password = savedInstanceState.getString("fair:password");
|
||||
import_accounts = savedInstanceState.getBoolean("fair:import_accounts");
|
||||
import_delete = savedInstanceState.getBoolean("fair:import_delete");
|
||||
import_rules = savedInstanceState.getBoolean("fair:import_rules");
|
||||
import_contacts = savedInstanceState.getBoolean("fair:import_contacts");
|
||||
import_answers = savedInstanceState.getBoolean("fair:import_answers");
|
||||
import_searches = savedInstanceState.getBoolean("fair:import_searches");
|
||||
import_settings = savedInstanceState.getBoolean("fair:import_settings");
|
||||
}
|
||||
|
||||
DB db = DB.getInstance(this);
|
||||
|
@ -382,14 +367,6 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac
|
|||
@Override
|
||||
protected void onSaveInstanceState(Bundle outState) {
|
||||
outState.putBoolean("fair:toggle", drawerToggle == null || drawerToggle.isDrawerIndicatorEnabled());
|
||||
outState.putString("fair:password", password);
|
||||
outState.putBoolean("fair:import_accounts", import_accounts);
|
||||
outState.putBoolean("fair:import_delete", import_delete);
|
||||
outState.putBoolean("fair:import_rules", import_rules);
|
||||
outState.putBoolean("fair:import_contacts", import_contacts);
|
||||
outState.putBoolean("fair:import_answers", import_answers);
|
||||
outState.putBoolean("fair:import_searches", import_searches);
|
||||
outState.putBoolean("fair:import_settings", import_settings);
|
||||
super.onSaveInstanceState(outState);
|
||||
}
|
||||
|
||||
|
@ -649,9 +626,11 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac
|
|||
}
|
||||
|
||||
private void handleExport(Intent data) {
|
||||
ViewModelExport vme = new ViewModelProvider(this).get(ViewModelExport.class);
|
||||
|
||||
Bundle args = new Bundle();
|
||||
args.putParcelable("uri", data.getData());
|
||||
args.putString("password", this.password);
|
||||
args.putString("password", vme.getPassword());
|
||||
|
||||
new SimpleTask<Void>() {
|
||||
private Toast toast = null;
|
||||
|
@ -971,16 +950,18 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac
|
|||
Button ok = dialog.getButton(AlertDialog.BUTTON_POSITIVE);
|
||||
ok.setEnabled(false);
|
||||
|
||||
ViewModelExport vme = new ViewModelProvider(this).get(ViewModelExport.class);
|
||||
|
||||
Bundle args = new Bundle();
|
||||
args.putParcelable("uri", uri);
|
||||
args.putString("password", this.password);
|
||||
args.putBoolean("import_accounts", this.import_accounts);
|
||||
args.putBoolean("import_delete", this.import_delete);
|
||||
args.putBoolean("import_rules", this.import_rules);
|
||||
args.putBoolean("import_contacts", this.import_contacts);
|
||||
args.putBoolean("import_answers", this.import_answers);
|
||||
args.putBoolean("import_searches", this.import_searches);
|
||||
args.putBoolean("import_settings", this.import_settings);
|
||||
args.putString("password", vme.getPassword());
|
||||
args.putBoolean("import_accounts", vme.getOption("accounts"));
|
||||
args.putBoolean("import_delete", vme.getOption("delete"));
|
||||
args.putBoolean("import_rules", vme.getOption("rules"));
|
||||
args.putBoolean("import_contacts", vme.getOption("contacts"));
|
||||
args.putBoolean("import_answers", vme.getOption("answers"));
|
||||
args.putBoolean("import_searches", vme.getOption("searches"));
|
||||
args.putBoolean("import_settings", vme.getOption("settings"));
|
||||
|
||||
new SimpleTask<Void>() {
|
||||
private SpannableStringBuilder ssb = new SpannableStringBuilder();
|
||||
|
@ -2005,8 +1986,8 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac
|
|||
.setPositiveButton(R.string.title_save_file, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
((ActivitySetup) getActivity()).password =
|
||||
tilPassword1.getEditText().getText().toString();
|
||||
ViewModelExport vme = new ViewModelProvider(getActivity()).get(ViewModelExport.class);
|
||||
vme.setPassword(tilPassword1.getEditText().getText().toString());
|
||||
getActivity().startActivityForResult(
|
||||
Helper.getChooser(context, getIntentExport()), REQUEST_EXPORT);
|
||||
}
|
||||
|
@ -2114,15 +2095,15 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac
|
|||
if (TextUtils.isEmpty(password1) && !(debug || BuildConfig.DEBUG))
|
||||
ToastEx.makeText(context, R.string.title_setup_password_missing, Toast.LENGTH_LONG).show();
|
||||
else {
|
||||
ActivitySetup activity = (ActivitySetup) getActivity();
|
||||
activity.password = password1;
|
||||
activity.import_accounts = cbAccounts.isChecked();
|
||||
activity.import_delete = cbDelete.isChecked();
|
||||
activity.import_rules = cbRules.isChecked();
|
||||
activity.import_contacts = cbContacts.isChecked();
|
||||
activity.import_answers = cbAnswers.isChecked();
|
||||
activity.import_searches = cbSearches.isChecked();
|
||||
activity.import_settings = cbSettings.isChecked();
|
||||
ViewModelExport vme = new ViewModelProvider(getActivity()).get(ViewModelExport.class);
|
||||
vme.setPassword(password1);
|
||||
vme.setOptions("accounts", cbAccounts.isChecked());
|
||||
vme.setOptions("delete", cbDelete.isChecked());
|
||||
vme.setOptions("rules", cbRules.isChecked());
|
||||
vme.setOptions("contacts", cbContacts.isChecked());
|
||||
vme.setOptions("answers", cbAnswers.isChecked());
|
||||
vme.setOptions("searches", cbSearches.isChecked());
|
||||
vme.setOptions("settings", cbSettings.isChecked());
|
||||
getActivity().startActivityForResult(
|
||||
Helper.getChooser(context, getIntentImport()), REQUEST_IMPORT);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
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.
|
||||
|
||||
FairEmail 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 FairEmail. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Copyright 2018-2023 by Marcel Bokhorst (M66B)
|
||||
*/
|
||||
|
||||
import androidx.lifecycle.SavedStateHandle;
|
||||
import androidx.lifecycle.ViewModel;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class ViewModelExport extends ViewModel {
|
||||
private SavedStateHandle state;
|
||||
|
||||
public ViewModelExport(SavedStateHandle state) {
|
||||
this.state = state;
|
||||
}
|
||||
|
||||
public void setPassword(String password) {
|
||||
state.set("password", password);
|
||||
}
|
||||
|
||||
public void setOptions(String name, boolean value) {
|
||||
state.set(name, value);
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return state.get("password");
|
||||
}
|
||||
|
||||
public boolean getOption(String name) {
|
||||
Boolean value = state.get("name");
|
||||
return (value != null && value);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue