Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-notes.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountsActivity.java')
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountsActivity.java65
1 files changed, 26 insertions, 39 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountsActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountsActivity.java
index 8d0c253f..9492e43a 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountsActivity.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountsActivity.java
@@ -1,14 +1,13 @@
package it.niedermann.owncloud.notes.manageaccounts;
+import static it.niedermann.owncloud.notes.branding.BrandingUtil.applyBrandToEditTextInputLayout;
+import static it.niedermann.owncloud.notes.branding.BrandingUtil.readBrandMainColorLiveData;
import static it.niedermann.owncloud.notes.shared.util.ApiVersionUtil.getPreferredApiVersion;
import android.accounts.NetworkErrorException;
import android.os.Bundle;
import android.util.TypedValue;
-import android.view.ViewGroup;
-import android.widget.EditText;
-import android.widget.FrameLayout;
-import android.widget.ProgressBar;
+import android.view.View;
import android.widget.Toast;
import androidx.annotation.AttrRes;
@@ -18,16 +17,19 @@ import androidx.annotation.Px;
import androidx.annotation.StringRes;
import androidx.lifecycle.ViewModelProvider;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.nextcloud.android.sso.AccountImporter;
import com.nextcloud.android.sso.exceptions.NextcloudFilesAppAccountNotFoundException;
+import java.util.concurrent.Executor;
+import java.util.concurrent.Executors;
import java.util.function.Function;
import it.niedermann.owncloud.notes.LockedActivity;
import it.niedermann.owncloud.notes.R;
-import it.niedermann.owncloud.notes.branding.BrandedAlertDialogBuilder;
-import it.niedermann.owncloud.notes.branding.BrandedDeleteAlertDialogBuilder;
+import it.niedermann.owncloud.notes.branding.DeleteAlertDialogBuilder;
import it.niedermann.owncloud.notes.databinding.ActivityManageAccountsBinding;
+import it.niedermann.owncloud.notes.databinding.DialogEditSettingBinding;
import it.niedermann.owncloud.notes.exception.ExceptionDialogFragment;
import it.niedermann.owncloud.notes.persistence.NotesRepository;
import it.niedermann.owncloud.notes.persistence.entity.Account;
@@ -42,6 +44,7 @@ public class ManageAccountsActivity extends LockedActivity implements IManageAcc
private ActivityManageAccountsBinding binding;
private ManageAccountsViewModel viewModel;
private ManageAccountAdapter adapter;
+ private final Executor executor = Executors.newSingleThreadExecutor();
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
@@ -88,7 +91,7 @@ public class ManageAccountsActivity extends LockedActivity implements IManageAcc
public void onSuccess(Long unsynchronizedChangesCount) {
runOnUiThread(() -> {
if (unsynchronizedChangesCount > 0) {
- new BrandedDeleteAlertDialogBuilder(ManageAccountsActivity.this)
+ new DeleteAlertDialogBuilder(ManageAccountsActivity.this)
.setTitle(getString(R.string.remove_account, accountToDelete.getUserName()))
.setMessage(getResources().getQuantityString(R.plurals.remove_account_message, (int) unsynchronizedChangesCount.longValue(), accountToDelete.getAccountName(), unsynchronizedChangesCount))
.setNeutralButton(android.R.string.cancel, null)
@@ -129,16 +132,22 @@ public class ManageAccountsActivity extends LockedActivity implements IManageAcc
private void changeAccountSetting(@NonNull Account localAccount, @StringRes int title, @StringRes int message, @StringRes int successMessage, @NonNull Function<NotesSettings, String> propertyExtractor, @NonNull Function<String, NotesSettings> settingsFactory) {
final var repository = NotesRepository.getInstance(getApplicationContext());
- final var editText = new EditText(this);
- final var wrapper = createDialogViewWrapper();
- final var dialog = new BrandedAlertDialogBuilder(this)
+ final var binding = DialogEditSettingBinding.inflate(getLayoutInflater());
+ final var mainColor$ = readBrandMainColorLiveData(this);
+ mainColor$.observe(this, color -> {
+ mainColor$.removeObservers(this);
+ applyBrandToEditTextInputLayout(color, binding.inputWrapper);
+ binding.progress.setIndicatorColor(color);
+ });
+
+ final var dialog = new MaterialAlertDialogBuilder(this)
.setTitle(title)
.setMessage(message)
- .setView(wrapper)
+ .setView(binding.getRoot())
.setNeutralButton(android.R.string.cancel, null)
.setPositiveButton(R.string.action_edit_save, (v, d) -> {
- final var property = editText.getText().toString();
- new Thread(() -> {
+ final var property = binding.property.getText().toString();
+ executor.execute(() -> {
try {
final var putSettingsCall = repository.putServerSettings(AccountImporter.getSingleSignOnAccount(this, localAccount.getAccountName()), settingsFactory.apply(property), getPreferredApiVersion(localAccount.getApiVersion()));
putSettingsCall.enqueue(new Callback<>() {
@@ -160,7 +169,7 @@ public class ManageAccountsActivity extends LockedActivity implements IManageAcc
} catch (NextcloudFilesAppAccountNotFoundException e) {
ExceptionDialogFragment.newInstance(e).show(getSupportFragmentManager(), ExceptionDialogFragment.class.getSimpleName());
}
- }).start();
+ });
})
.show();
try {
@@ -171,9 +180,9 @@ public class ManageAccountsActivity extends LockedActivity implements IManageAcc
runOnUiThread(() -> {
final var body = response.body();
if (response.isSuccessful() && body != null) {
- wrapper.removeAllViews();
- editText.setText(propertyExtractor.apply(body));
- wrapper.addView(editText);
+ binding.getRoot().removeView(binding.progress);
+ binding.property.setText(propertyExtractor.apply(body));
+ binding.inputWrapper.setVisibility(View.VISIBLE);
} else {
dialog.dismiss();
ExceptionDialogFragment.newInstance(new NetworkErrorException(getString(R.string.http_status_code, response.code()))).show(getSupportFragmentManager(), ExceptionDialogFragment.class.getSimpleName());
@@ -195,28 +204,6 @@ public class ManageAccountsActivity extends LockedActivity implements IManageAcc
}
}
- @NonNull
- private ViewGroup createDialogViewWrapper() {
- final var progressBar = new ProgressBar(this, null, android.R.attr.progressBarStyleHorizontal);
- progressBar.setIndeterminate(true);
- final var wrapper = new FrameLayout(this);
- final int paddingVertical = getResources().getDimensionPixelSize(R.dimen.spacer_1x);
- final int paddingHorizontal = getDimensionFromAttribute(android.R.attr.dialogPreferredPadding);
- wrapper.setPadding(paddingHorizontal, paddingVertical, paddingHorizontal, paddingVertical);
- wrapper.addView(progressBar);
- return wrapper;
- }
-
- @Px
- private int getDimensionFromAttribute(@SuppressWarnings("SameParameterValue") @AttrRes int attr) {
- final var typedValue = new TypedValue();
- if (getTheme().resolveAttribute(attr, typedValue, true))
- return TypedValue.complexToDimensionPixelSize(typedValue.data, getResources().getDisplayMetrics());
- else {
- return 0;
- }
- }
-
@Override
public void applyBrand(int mainColor, int textColor) {
applyBrandToPrimaryToolbar(binding.appBar, binding.toolbar);