|
|
|
@ -117,6 +117,8 @@ public class FragmentAccount extends FragmentEx {
|
|
|
|
|
|
|
|
|
|
private ProgressBar pbCheck;
|
|
|
|
|
|
|
|
|
|
private TextView tvIdle;
|
|
|
|
|
|
|
|
|
|
private ArrayAdapter<EntityFolder> adapter;
|
|
|
|
|
private Spinner spDrafts;
|
|
|
|
|
private Spinner spSent;
|
|
|
|
@ -183,6 +185,8 @@ public class FragmentAccount extends FragmentEx {
|
|
|
|
|
btnCheck = view.findViewById(R.id.btnCheck);
|
|
|
|
|
pbCheck = view.findViewById(R.id.pbCheck);
|
|
|
|
|
|
|
|
|
|
tvIdle = view.findViewById(R.id.tvIdle);
|
|
|
|
|
|
|
|
|
|
spDrafts = view.findViewById(R.id.spDrafts);
|
|
|
|
|
spSent = view.findViewById(R.id.spSent);
|
|
|
|
|
spAll = view.findViewById(R.id.spAll);
|
|
|
|
@ -217,6 +221,7 @@ public class FragmentAccount extends FragmentEx {
|
|
|
|
|
grpAdvanced.setVisibility(View.GONE);
|
|
|
|
|
|
|
|
|
|
btnCheck.setVisibility(position > 0 ? View.VISIBLE : View.GONE);
|
|
|
|
|
tvIdle.setVisibility(View.GONE);
|
|
|
|
|
grpFolders.setVisibility(View.GONE);
|
|
|
|
|
btnSave.setVisibility(View.GONE);
|
|
|
|
|
|
|
|
|
@ -385,6 +390,7 @@ public class FragmentAccount extends FragmentEx {
|
|
|
|
|
btnAuthorize.setEnabled(false);
|
|
|
|
|
btnCheck.setEnabled(false);
|
|
|
|
|
pbCheck.setVisibility(View.VISIBLE);
|
|
|
|
|
tvIdle.setVisibility(View.GONE);
|
|
|
|
|
grpFolders.setVisibility(View.GONE);
|
|
|
|
|
btnSave.setVisibility(View.GONE);
|
|
|
|
|
|
|
|
|
@ -398,9 +404,9 @@ public class FragmentAccount extends FragmentEx {
|
|
|
|
|
args.putString("password", tilPassword.getEditText().getText().toString());
|
|
|
|
|
args.putInt("auth_type", authorized == null ? Helper.AUTH_TYPE_PASSWORD : provider.getAuthType());
|
|
|
|
|
|
|
|
|
|
new SimpleTask<List<EntityFolder>>() {
|
|
|
|
|
new SimpleTask<CheckResult>() {
|
|
|
|
|
@Override
|
|
|
|
|
protected List<EntityFolder> onLoad(Context context, Bundle args) throws Throwable {
|
|
|
|
|
protected CheckResult onLoad(Context context, Bundle args) throws Throwable {
|
|
|
|
|
long id = args.getLong("id");
|
|
|
|
|
String host = args.getString("host");
|
|
|
|
|
String port = args.getString("port");
|
|
|
|
@ -417,8 +423,10 @@ public class FragmentAccount extends FragmentEx {
|
|
|
|
|
if (TextUtils.isEmpty(password))
|
|
|
|
|
throw new Throwable(getContext().getString(R.string.title_no_password));
|
|
|
|
|
|
|
|
|
|
CheckResult result = new CheckResult();
|
|
|
|
|
result.folders = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
// Check IMAP server / get folders
|
|
|
|
|
List<EntityFolder> folders = new ArrayList<>();
|
|
|
|
|
Properties props = MessageHelper.getSessionProperties(auth_type);
|
|
|
|
|
Session isession = Session.getInstance(props, null);
|
|
|
|
|
isession.setDebug(true);
|
|
|
|
@ -438,6 +446,8 @@ public class FragmentAccount extends FragmentEx {
|
|
|
|
|
if (!istore.hasCapability("UIDPLUS"))
|
|
|
|
|
throw new MessagingException(getContext().getString(R.string.title_no_uidplus));
|
|
|
|
|
|
|
|
|
|
result.idle = istore.hasCapability("IDLE");
|
|
|
|
|
|
|
|
|
|
for (Folder ifolder : istore.getDefaultFolder().list("*")) {
|
|
|
|
|
String type = null;
|
|
|
|
|
|
|
|
|
@ -478,7 +488,7 @@ public class FragmentAccount extends FragmentEx {
|
|
|
|
|
folder.synchronize = (type != null && EntityFolder.SYSTEM_FOLDER_SYNC.contains(type));
|
|
|
|
|
folder.after = (type == null ? EntityFolder.DEFAULT_USER_SYNC : EntityFolder.DEFAULT_SYSTEM_SYNC);
|
|
|
|
|
}
|
|
|
|
|
folders.add(folder);
|
|
|
|
|
result.folders.add(folder);
|
|
|
|
|
|
|
|
|
|
Log.i(Helper.TAG, folder.name + " id=" + folder.id +
|
|
|
|
|
" type=" + folder.type + " attr=" + TextUtils.join(",", attrs));
|
|
|
|
@ -490,17 +500,19 @@ public class FragmentAccount extends FragmentEx {
|
|
|
|
|
istore.close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return folders;
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
protected void onLoaded(Bundle args, List<EntityFolder> folders) {
|
|
|
|
|
protected void onLoaded(Bundle args, CheckResult result) {
|
|
|
|
|
Helper.setViewsEnabled(view, true);
|
|
|
|
|
btnAuthorize.setEnabled(true);
|
|
|
|
|
btnCheck.setEnabled(true);
|
|
|
|
|
pbCheck.setVisibility(View.GONE);
|
|
|
|
|
|
|
|
|
|
setFolders(folders);
|
|
|
|
|
tvIdle.setVisibility(result.idle ? View.GONE : View.VISIBLE);
|
|
|
|
|
|
|
|
|
|
setFolders(result.folders);
|
|
|
|
|
|
|
|
|
|
new Handler().post(new Runnable() {
|
|
|
|
|
@Override
|
|
|
|
@ -809,6 +821,8 @@ public class FragmentAccount extends FragmentEx {
|
|
|
|
|
|
|
|
|
|
btnAdvanced.setVisibility(View.GONE);
|
|
|
|
|
|
|
|
|
|
tvIdle.setVisibility(View.GONE);
|
|
|
|
|
|
|
|
|
|
btnCheck.setVisibility(View.GONE);
|
|
|
|
|
pbCheck.setVisibility(View.GONE);
|
|
|
|
|
|
|
|
|
@ -1076,4 +1090,9 @@ public class FragmentAccount extends FragmentEx {
|
|
|
|
|
grpFolders.setVisibility(View.VISIBLE);
|
|
|
|
|
btnSave.setVisibility(View.VISIBLE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private class CheckResult {
|
|
|
|
|
List<EntityFolder> folders;
|
|
|
|
|
boolean idle;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|