mirror of
https://github.com/M66B/FairEmail.git
synced 2026-01-04 11:54:10 +01:00
Added spinners for account/identity/folder
This commit is contained in:
@@ -68,6 +68,7 @@ import androidx.loader.content.Loader;
|
||||
public class FragmentAccount extends FragmentEx {
|
||||
private List<Provider> providers;
|
||||
|
||||
private ViewGroup view;
|
||||
private EditText etName;
|
||||
private Spinner spProfile;
|
||||
private EditText etHost;
|
||||
@@ -86,8 +87,8 @@ public class FragmentAccount extends FragmentEx {
|
||||
private Button btnSave;
|
||||
private ProgressBar pbSave;
|
||||
private ImageButton ibDelete;
|
||||
private ProgressBar pbWait;
|
||||
private Group grpFolders;
|
||||
// TODO: loading spinner
|
||||
|
||||
private ExecutorService executor = Executors.newCachedThreadPool();
|
||||
|
||||
@@ -96,7 +97,7 @@ public class FragmentAccount extends FragmentEx {
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
setSubtitle(R.string.title_edit_account);
|
||||
|
||||
View view = inflater.inflate(R.layout.fragment_account, container, false);
|
||||
view = (ViewGroup) inflater.inflate(R.layout.fragment_account, container, false);
|
||||
|
||||
// Get arguments
|
||||
Bundle args = getArguments();
|
||||
@@ -125,6 +126,7 @@ public class FragmentAccount extends FragmentEx {
|
||||
btnSave = view.findViewById(R.id.btnSave);
|
||||
pbSave = view.findViewById(R.id.pbSave);
|
||||
ibDelete = view.findViewById(R.id.ibDelete);
|
||||
pbWait = view.findViewById(R.id.pbWait);
|
||||
grpFolders = view.findViewById(R.id.grpFolders);
|
||||
|
||||
// Wire controls
|
||||
@@ -159,8 +161,11 @@ public class FragmentAccount extends FragmentEx {
|
||||
btnCheck.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Helper.setViewsEnabled(view, false);
|
||||
btnCheck.setEnabled(false);
|
||||
pbCheck.setVisibility(View.VISIBLE);
|
||||
btnSave.setVisibility(View.GONE);
|
||||
grpFolders.setVisibility(View.GONE);
|
||||
|
||||
Bundle args = new Bundle();
|
||||
args.putLong("id", id);
|
||||
@@ -180,6 +185,8 @@ public class FragmentAccount extends FragmentEx {
|
||||
btnSave.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Helper.setViewsEnabled(view, false);
|
||||
btnCheck.setEnabled(false);
|
||||
btnSave.setEnabled(false);
|
||||
pbSave.setVisibility(View.VISIBLE);
|
||||
|
||||
@@ -251,12 +258,14 @@ public class FragmentAccount extends FragmentEx {
|
||||
});
|
||||
|
||||
// Initialize
|
||||
Helper.setViewsEnabled(view, false);
|
||||
tilPassword.setPasswordVisibilityToggleEnabled(id < 0);
|
||||
btnCheck.setEnabled(false);
|
||||
pbCheck.setVisibility(View.GONE);
|
||||
btnSave.setVisibility(View.GONE);
|
||||
pbSave.setVisibility(View.GONE);
|
||||
grpFolders.setVisibility(View.GONE);
|
||||
ibDelete.setVisibility(id < 0 ? View.GONE : View.VISIBLE);
|
||||
ibDelete.setVisibility(View.GONE);
|
||||
|
||||
return view;
|
||||
}
|
||||
@@ -283,6 +292,11 @@ public class FragmentAccount extends FragmentEx {
|
||||
cbSynchronize.setChecked(account == null ? true : account.synchronize);
|
||||
cbPrimary.setChecked(account == null ? true : account.primary);
|
||||
cbPrimary.setEnabled(account == null ? true : account.synchronize);
|
||||
ibDelete.setVisibility(account == null ? View.GONE : View.VISIBLE);
|
||||
|
||||
Helper.setViewsEnabled(view, true);
|
||||
btnCheck.setEnabled(true);
|
||||
pbWait.setVisibility(View.GONE);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -408,6 +422,7 @@ public class FragmentAccount extends FragmentEx {
|
||||
public void onLoadFinished(@NonNull Loader<CheckData> loader, CheckData data) {
|
||||
LoaderManager.getInstance(FragmentAccount.this).destroyLoader(loader.getId());
|
||||
|
||||
Helper.setViewsEnabled(view, true);
|
||||
btnCheck.setEnabled(true);
|
||||
pbCheck.setVisibility(View.GONE);
|
||||
|
||||
@@ -462,6 +477,8 @@ public class FragmentAccount extends FragmentEx {
|
||||
} else {
|
||||
Log.w(Helper.TAG, data.ex + "\n" + Log.getStackTraceString(data.ex));
|
||||
Toast.makeText(getContext(), Helper.formatThrowable(data.ex), Toast.LENGTH_LONG).show();
|
||||
grpFolders.setVisibility(View.GONE);
|
||||
btnSave.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -626,8 +643,10 @@ public class FragmentAccount extends FragmentEx {
|
||||
public void onLoadFinished(@NonNull Loader<Throwable> loader, Throwable ex) {
|
||||
LoaderManager.getInstance(FragmentAccount.this).destroyLoader(loader.getId());
|
||||
|
||||
Helper.setViewsEnabled(view, true);
|
||||
btnCheck.setEnabled(true);
|
||||
btnSave.setEnabled(true);
|
||||
btnCheck.setVisibility(View.GONE);
|
||||
pbSave.setVisibility(View.GONE);
|
||||
|
||||
if (ex == null)
|
||||
getFragmentManager().popBackStack();
|
||||
|
||||
@@ -34,26 +34,25 @@ import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.constraintlayout.widget.Group;
|
||||
import androidx.lifecycle.Observer;
|
||||
import androidx.loader.app.LoaderManager;
|
||||
import androidx.loader.content.AsyncTaskLoader;
|
||||
import androidx.loader.content.Loader;
|
||||
|
||||
public class FragmentFolder extends FragmentEx {
|
||||
private ViewGroup view;
|
||||
private CheckBox cbSynchronize;
|
||||
private EditText etAfter;
|
||||
private Button btnSave;
|
||||
private ProgressBar pbSave;
|
||||
private ProgressBar pbWait;
|
||||
private Group grpReady;
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
setSubtitle(R.string.title_edit_folder);
|
||||
|
||||
View view = inflater.inflate(R.layout.fragment_folder, container, false);
|
||||
view = (ViewGroup) inflater.inflate(R.layout.fragment_folder, container, false);
|
||||
|
||||
// Get arguments
|
||||
Bundle args = getArguments();
|
||||
@@ -65,11 +64,11 @@ public class FragmentFolder extends FragmentEx {
|
||||
pbSave = view.findViewById(R.id.pbSave);
|
||||
btnSave = view.findViewById(R.id.btnSave);
|
||||
pbWait = view.findViewById(R.id.pbWait);
|
||||
grpReady = view.findViewById(R.id.grpReady);
|
||||
|
||||
btnSave.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Helper.setViewsEnabled(view, false);
|
||||
btnSave.setEnabled(false);
|
||||
pbSave.setVisibility(View.VISIBLE);
|
||||
|
||||
@@ -84,11 +83,11 @@ public class FragmentFolder extends FragmentEx {
|
||||
});
|
||||
|
||||
// Initialize
|
||||
Helper.setViewsEnabled(view, false);
|
||||
btnSave.setEnabled(false);
|
||||
pbSave.setVisibility(View.GONE);
|
||||
grpReady.setVisibility(View.GONE);
|
||||
pbWait.setVisibility(View.VISIBLE);
|
||||
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
@@ -110,7 +109,8 @@ public class FragmentFolder extends FragmentEx {
|
||||
}
|
||||
|
||||
pbWait.setVisibility(View.GONE);
|
||||
grpReady.setVisibility(View.VISIBLE);
|
||||
Helper.setViewsEnabled(view, true);
|
||||
btnSave.setEnabled(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -167,6 +167,7 @@ public class FragmentFolder extends FragmentEx {
|
||||
public void onLoadFinished(@NonNull Loader<Throwable> loader, Throwable ex) {
|
||||
LoaderManager.getInstance(FragmentFolder.this).destroyLoader(loader.getId());
|
||||
|
||||
Helper.setViewsEnabled(view, true);
|
||||
btnSave.setEnabled(true);
|
||||
pbSave.setVisibility(View.GONE);
|
||||
|
||||
|
||||
@@ -62,6 +62,7 @@ import androidx.loader.content.Loader;
|
||||
public class FragmentIdentity extends FragmentEx {
|
||||
private List<Provider> providers;
|
||||
|
||||
private ViewGroup view;
|
||||
private EditText etName;
|
||||
private EditText etEmail;
|
||||
private EditText etReplyTo;
|
||||
@@ -75,9 +76,9 @@ public class FragmentIdentity extends FragmentEx {
|
||||
private CheckBox cbSynchronize;
|
||||
private CheckBox cbPrimary;
|
||||
private Button btnSave;
|
||||
private ProgressBar pbCheck;
|
||||
private ProgressBar pbSave;
|
||||
private ImageButton ibDelete;
|
||||
// TODO: loading spinner
|
||||
private ProgressBar pbWait;
|
||||
|
||||
private ExecutorService executor = Executors.newCachedThreadPool();
|
||||
|
||||
@@ -86,7 +87,7 @@ public class FragmentIdentity extends FragmentEx {
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
setSubtitle(R.string.title_edit_identity);
|
||||
|
||||
View view = inflater.inflate(R.layout.fragment_identity, container, false);
|
||||
view = (ViewGroup) inflater.inflate(R.layout.fragment_identity, container, false);
|
||||
|
||||
// Get arguments
|
||||
Bundle args = getArguments();
|
||||
@@ -110,8 +111,9 @@ public class FragmentIdentity extends FragmentEx {
|
||||
cbSynchronize = view.findViewById(R.id.cbSynchronize);
|
||||
cbPrimary = view.findViewById(R.id.cbPrimary);
|
||||
btnSave = view.findViewById(R.id.btnSave);
|
||||
pbCheck = view.findViewById(R.id.pbCheck);
|
||||
pbSave = view.findViewById(R.id.pbSave);
|
||||
ibDelete = view.findViewById(R.id.ibDelete);
|
||||
pbWait = view.findViewById(R.id.pbWait);
|
||||
|
||||
// Wire controls
|
||||
|
||||
@@ -182,8 +184,9 @@ public class FragmentIdentity extends FragmentEx {
|
||||
btnSave.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Helper.setViewsEnabled(view, false);
|
||||
btnSave.setEnabled(false);
|
||||
pbCheck.setVisibility(View.VISIBLE);
|
||||
pbSave.setVisibility(View.VISIBLE);
|
||||
|
||||
EntityAccount account = (EntityAccount) spAccount.getSelectedItem();
|
||||
|
||||
@@ -234,10 +237,11 @@ public class FragmentIdentity extends FragmentEx {
|
||||
});
|
||||
|
||||
// Initialize
|
||||
etName.requestFocus();
|
||||
Helper.setViewsEnabled(view, false);
|
||||
tilPassword.setPasswordVisibilityToggleEnabled(id < 0);
|
||||
pbCheck.setVisibility(View.GONE);
|
||||
ibDelete.setVisibility(id < 0 ? View.GONE : View.VISIBLE);
|
||||
btnSave.setEnabled(false);
|
||||
pbSave.setVisibility(View.GONE);
|
||||
ibDelete.setVisibility(View.GONE);
|
||||
|
||||
return view;
|
||||
}
|
||||
@@ -267,6 +271,11 @@ public class FragmentIdentity extends FragmentEx {
|
||||
cbSynchronize.setChecked(identity == null ? true : identity.synchronize);
|
||||
cbPrimary.setChecked(identity == null ? true : identity.primary);
|
||||
cbPrimary.setEnabled(identity == null ? true : identity.synchronize);
|
||||
ibDelete.setVisibility(identity == null ? View.GONE : View.VISIBLE);
|
||||
|
||||
Helper.setViewsEnabled(view, true);
|
||||
btnSave.setEnabled(true);
|
||||
pbWait.setVisibility(View.GONE);
|
||||
|
||||
db.account().liveAccounts().removeObservers(getViewLifecycleOwner());
|
||||
db.account().liveAccounts().observe(getViewLifecycleOwner(), new Observer<List<EntityAccount>>() {
|
||||
@@ -403,8 +412,9 @@ public class FragmentIdentity extends FragmentEx {
|
||||
public void onLoadFinished(@NonNull Loader<Throwable> loader, Throwable ex) {
|
||||
LoaderManager.getInstance(FragmentIdentity.this).destroyLoader(loader.getId());
|
||||
|
||||
Helper.setViewsEnabled(view, true);
|
||||
btnSave.setEnabled(true);
|
||||
pbCheck.setVisibility(View.GONE);
|
||||
pbSave.setVisibility(View.GONE);
|
||||
|
||||
if (ex == null)
|
||||
getFragmentManager().popBackStack();
|
||||
|
||||
@@ -27,6 +27,11 @@ import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.EditText;
|
||||
import android.widget.Spinner;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
@@ -55,6 +60,16 @@ public class Helper {
|
||||
return mutated;
|
||||
}
|
||||
|
||||
static void setViewsEnabled(ViewGroup view, boolean enabled) {
|
||||
for (int i = 0; i < view.getChildCount(); i++) {
|
||||
View child = view.getChildAt(i);
|
||||
if (child instanceof Spinner || child instanceof EditText || child instanceof CheckBox)
|
||||
child.setEnabled(enabled);
|
||||
else if (child instanceof ViewGroup)
|
||||
setViewsEnabled((ViewGroup) child, enabled);
|
||||
}
|
||||
}
|
||||
|
||||
static String localizeFolderName(Context context, String name) {
|
||||
if ("INBOX".equals(name))
|
||||
return context.getString(R.string.title_folder_inbox);
|
||||
|
||||
Reference in New Issue
Block a user