diff options
author | Stefan Niedermann <info@niedermann.it> | 2021-03-15 17:29:47 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2021-03-15 17:29:47 +0300 |
commit | a447542fc16f602fa0e7db7533b2ca78b72d18fc (patch) | |
tree | c623e751f299efa94bb6ab941290703a30aed488 /app/src | |
parent | b788c07f36ed742869d7b419e03aca62ad9ba831 (diff) |
#916 Change remote account settings - UI
Diffstat (limited to 'app/src')
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> |