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:
authorStefan Niedermann <info@niedermann.it>2021-03-15 17:29:47 +0300
committerStefan Niedermann <info@niedermann.it>2021-03-15 17:29:47 +0300
commita447542fc16f602fa0e7db7533b2ca78b72d18fc (patch)
treec623e751f299efa94bb6ab941290703a30aed488
parentb788c07f36ed742869d7b419e03aca62ad9ba831 (diff)
#916 Change remote account settings - UI
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountViewHolder.java10
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountsActivity.java47
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/shared/model/ApiVersion.java10
-rw-r--r--app/src/main/res/values/strings.xml7
4 files changed, 67 insertions, 7 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountViewHolder.java b/app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountViewHolder.java
index 96a8f381..910dccc0 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountViewHolder.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountViewHolder.java
@@ -16,6 +16,9 @@ import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
+import java.util.Arrays;
+import java.util.stream.Stream;
+
import it.niedermann.nextcloud.sso.glide.SingleSignOnUrl;
import it.niedermann.owncloud.notes.R;
import it.niedermann.owncloud.notes.databinding.ItemAccountChooseBinding;
@@ -54,6 +57,13 @@ public class ManageAccountViewHolder extends RecyclerView.ViewHolder {
binding.accountContextMenu.setOnClickListener((v) -> {
final PopupMenu popup = new PopupMenu(itemView.getContext(), v);
popup.inflate(R.menu.menu_account);
+ if (!localAccount.getPreferredApiVersion().supportsSettings()) {
+ final Menu menu = popup.getMenu();
+ Stream.of(
+ R.id.notes_path,
+ R.id.file_suffix
+ ).forEach((i) -> menu.removeItem(menu.findItem(i).getItemId()));
+ }
popup.setOnMenuItemClickListener(item -> {
if (item.getItemId() == R.id.notes_path) {
onChangeNotesPath.accept(localAccount);
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 3874ca11..1e51c20e 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,11 +1,18 @@
package it.niedermann.owncloud.notes.manageaccounts;
import android.os.Bundle;
+import android.util.TypedValue;
+import android.view.View;
+import android.widget.ArrayAdapter;
import android.widget.EditText;
+import android.widget.FrameLayout;
+import android.widget.Spinner;
import android.widget.Toast;
+import androidx.annotation.AttrRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.annotation.Px;
import androidx.appcompat.app.AppCompatActivity;
import com.nextcloud.android.sso.exceptions.NextcloudFilesAppAccountNotFoundException;
@@ -23,6 +30,9 @@ import it.niedermann.owncloud.notes.databinding.ActivityManageAccountsBinding;
import it.niedermann.owncloud.notes.shared.model.LocalAccount;
import it.niedermann.owncloud.notes.persistence.NotesDatabase;
+import static android.os.Build.VERSION.SDK_INT;
+import static android.os.Build.VERSION_CODES.LOLLIPOP_MR1;
+
public class ManageAccountsActivity extends LockedActivity {
private ActivityManageAccountsBinding binding;
@@ -81,10 +91,11 @@ public class ManageAccountsActivity extends LockedActivity {
private void onChangeNotesPath(@NonNull LocalAccount localAccount) {
final EditText editText = new EditText(this);
+ final View wrapper = createDialogViewWrapper(editText);
new BrandedAlertDialogBuilder(this)
.setTitle(R.string.settings_notes_path)
- .setMessage("Folder to store your notes in your Nextcloud")
- .setView(editText)
+ .setMessage("Folder to store your notes in your Nextcloud")
+ .setView(wrapper)
.setNeutralButton(android.R.string.cancel, null)
.setPositiveButton(R.string.action_edit_save, (v, d) -> {
Toast.makeText(this, "Submitted " + editText.getText(), Toast.LENGTH_LONG).show();
@@ -93,18 +104,44 @@ public class ManageAccountsActivity extends LockedActivity {
}
private void onChangeFileSuffix(@NonNull LocalAccount localAccount) {
- final EditText editText = new EditText(this);
+ final Spinner spinner = new Spinner(this);
+ final View wrapper = createDialogViewWrapper(spinner);
+ final ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.settings_file_suffixes, android.R.layout.simple_spinner_item);
+ adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ spinner.setAdapter(adapter);
new BrandedAlertDialogBuilder(this)
.setTitle(R.string.settings_file_suffix)
.setMessage("File extension for new notes in your Nextcloud")
- .setView(editText)
+ .setView(wrapper)
.setNeutralButton(android.R.string.cancel, null)
.setPositiveButton("Save", (v, d) -> {
- Toast.makeText(this, "Submitted " + editText.getText(), Toast.LENGTH_LONG).show();
+ Toast.makeText(this, "Submitted " + spinner.getSelectedItem(), Toast.LENGTH_LONG).show();
})
.show();
}
+ @NonNull
+ private View createDialogViewWrapper(@NonNull View view) {
+ final FrameLayout wrapper = new FrameLayout(this);
+ final int paddingVertical = getResources().getDimensionPixelSize(R.dimen.spacer_1x);
+ final int paddingHorizontal = SDK_INT >= LOLLIPOP_MR1
+ ? getDimensionFromAttribute(android.R.attr.dialogPreferredPadding)
+ : getResources().getDimensionPixelSize(R.dimen.spacer_2x);
+ wrapper.setPadding(paddingHorizontal, paddingVertical, paddingHorizontal, paddingVertical);
+ wrapper.addView(view);
+ return wrapper;
+ }
+
+ @Px
+ private int getDimensionFromAttribute(@SuppressWarnings("SameParameterValue") @AttrRes int attr) {
+ final TypedValue 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);
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/shared/model/ApiVersion.java b/app/src/main/java/it/niedermann/owncloud/notes/shared/model/ApiVersion.java
index b27afd7a..b4c62f5b 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/shared/model/ApiVersion.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/shared/model/ApiVersion.java
@@ -9,10 +9,11 @@ import java.util.regex.Pattern;
@SuppressWarnings("WeakerAccess")
public class ApiVersion implements Comparable<ApiVersion> {
private static final Pattern NUMBER_EXTRACTION_PATTERN = Pattern.compile("[0-9]+");
+ private static final ApiVersion VERSION_1_2 = new ApiVersion("1.2", 1, 2);
private String originalVersion = "?";
- private int major;
- private int minor;
+ private final int major;
+ private final int minor;
public ApiVersion(String originalVersion, int major, int minor) {
this(major, minor);
@@ -74,6 +75,11 @@ public class ApiVersion implements Comparable<ApiVersion> {
return 0;
}
+ public boolean supportsSettings() {
+ // TODO
+ return true;//getMajor() >= VERSION_1_2.getMajor() && getMinor() >= VERSION_1_2.getMinor();
+ }
+
@NonNull
@Override
public String toString() {
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 841ec5a3..9dde766a 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -298,4 +298,11 @@
<string name="settings_notes_path">Set folder</string>
<string name="settings_file_suffix">File extension</string>
<string name="remove_account">Remove account</string>
+
+
+ <string-array name="settings_file_suffixes">
+ <item>.txt</item>
+ <item>.md</item>
+ </string-array>
+
</resources>