Local contacts account

This commit is contained in:
M66B 2022-03-26 11:46:32 +01:00
parent 91dd224c87
commit b29c1150a0
5 changed files with 31 additions and 11 deletions

View File

@ -1646,6 +1646,7 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac
private void onManageLocalContacts(Intent intent) {
Bundle args = new Bundle();
// All accounts
args.putBoolean("junk", intent.getBooleanExtra("junk", false));
FragmentContacts fragment = new FragmentContacts();

View File

@ -38,8 +38,9 @@ public interface DaoContact {
@Query("SELECT contact.*, account.name AS accountName" +
" FROM contact" +
" JOIN account ON account.id = contact.account" +
" WHERE (:account IS NULL OR contact.account = :account)" +
" ORDER BY times_contacted DESC, last_contacted DESC")
LiveData<List<TupleContactEx>> liveContacts();
LiveData<List<TupleContactEx>> liveContacts(Long account);
@Query("SELECT email, name, avatar FROM contact" +
" WHERE state <> " + EntityContact.STATE_IGNORE +

View File

@ -1916,8 +1916,11 @@ public class FragmentCompose extends FragmentBase {
}
private void onMenuManageLocalContacts() {
FragmentContacts fragment = new FragmentContacts();
fragment.setArguments(new Bundle()); // all accounts
FragmentTransaction fragmentTransaction = getParentFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.content_frame, new FragmentContacts()).addToBackStack("contacts");
fragmentTransaction.replace(R.id.content_frame, fragment).addToBackStack("contacts");
fragmentTransaction.commit();
}

View File

@ -75,9 +75,11 @@ public class FragmentContacts extends FragmentBase {
private ContentLoadingProgressBar pbWait;
private Group grpReady;
private long account;
private Long account = null;
private boolean junk = false;
private String searching = null;
private long selected_account;
private AdapterContact adapter;
private static final int REQUEST_ACCOUNT = 1;
@ -90,7 +92,11 @@ public class FragmentContacts extends FragmentBase {
super.onCreate(savedInstanceState);
Bundle args = getArguments();
this.junk = (args != null && args.getBoolean("junk"));
if (args == null)
args = new Bundle();
this.account = (args.containsKey("account") ? args.getLong("account") : null);
this.junk = args.getBoolean("junk");
}
@Override
@ -127,6 +133,7 @@ public class FragmentContacts extends FragmentBase {
outState.putLong("fair:account", account);
outState.putBoolean("fair:junk", junk);
outState.putString("fair:searching", searching);
outState.putLong("fair:selected_account", selected_account);
super.onSaveInstanceState(outState);
}
@ -138,12 +145,16 @@ public class FragmentContacts extends FragmentBase {
account = savedInstanceState.getLong("fair:account");
junk = savedInstanceState.getBoolean("fair:junk");
searching = savedInstanceState.getString("fair:searching");
selected_account = savedInstanceState.getLong("fair:selected_account");
}
onMenuJunk(junk);
adapter.search(searching);
DB db = DB.getInstance(getContext());
db.contact().liveContacts().observe(getViewLifecycleOwner(), new Observer<List<TupleContactEx>>() {
final Context context = getContext();
DB db = DB.getInstance(context);
db.contact().liveContacts(account).observe(getViewLifecycleOwner(), new Observer<List<TupleContactEx>>() {
@Override
public void onChanged(List<TupleContactEx> contacts) {
if (contacts == null)
@ -156,7 +167,7 @@ public class FragmentContacts extends FragmentBase {
}
});
Shortcuts.update(getContext(), getViewLifecycleOwner());
Shortcuts.update(context, getViewLifecycleOwner());
}
@Override
@ -292,7 +303,7 @@ public class FragmentContacts extends FragmentBase {
}
private void onAccountSelected(Bundle args) {
account = args.getLong("account");
selected_account = args.getLong("account");
boolean export = args.getBoolean("export");
final Context context = getContext();
@ -321,7 +332,7 @@ public class FragmentContacts extends FragmentBase {
Bundle args = new Bundle();
args.putParcelable("uri", uri);
args.putLong("account", account);
args.putLong("account", selected_account);
new SimpleTask<Void>() {
@Override
@ -390,7 +401,7 @@ public class FragmentContacts extends FragmentBase {
private void handleExport(Intent data) {
Bundle args = new Bundle();
args.putParcelable("uri", data.getData());
args.putLong("account", account);
args.putLong("account", selected_account);
new SimpleTask<Void>() {
@Override
@ -401,6 +412,7 @@ public class FragmentContacts extends FragmentBase {
@Override
protected Void onExecute(Context context, Bundle args) throws Throwable {
Uri uri = args.getParcelable("uri");
long account = args.getLong("account");
if (uri == null)
throw new FileNotFoundException();

View File

@ -236,11 +236,13 @@ public class FragmentDialogJunk extends FragmentDialogBase {
@Override
public void onClick(DialogInterface dialog, int which) {
Bundle args = new Bundle();
args.putLong("account", account);
args.putLong("folder", folder);
new SimpleTask<Void>() {
@Override
protected Void onExecute(Context context, Bundle args) throws Throwable {
long aid = args.getLong("account");
long fid = args.getLong("folder");
DB db = DB.getInstance(context);
@ -266,7 +268,7 @@ public class FragmentDialogJunk extends FragmentDialogBase {
}
}
int count = db.contact().deleteContact(account, EntityContact.TYPE_JUNK);
int count = db.contact().deleteContact(aid, EntityContact.TYPE_JUNK);
EntityLog.log(context, "Deleted junk contacts=" + count);
return null;
@ -313,6 +315,7 @@ public class FragmentDialogJunk extends FragmentDialogBase {
@Override
public void onClick(View v) {
Bundle args = new Bundle();
args.putLong("account", account);
args.putBoolean("junk", true);
FragmentContacts fragment = new FragmentContacts();