diff options
Diffstat (limited to 'app')
7 files changed, 113 insertions, 63 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java index 81e2afa71..b5713909b 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java @@ -110,6 +110,7 @@ import static it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.Liv import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.applyBrandToFAB; import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.applyBrandToPrimaryTabLayout; import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.clearBrandColors; +import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.getSecondaryForegroundColorDependingOnTheme; import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.saveBrandColors; import static it.niedermann.nextcloud.deck.util.ColorUtil.contrastRatioIsSufficient; import static it.niedermann.nextcloud.deck.util.ColorUtil.contrastRatioIsSufficientBigAreas; @@ -372,11 +373,7 @@ public class MainActivity extends BrandedActivity implements DeleteStackListener } }); filterViewModel.getFilterInformation().observe(this, (info) -> - binding.filter.setImageDrawable(getResources().getDrawable( - filterViewModel.getFilterInformation().getValue() == null - ? R.drawable.ic_filter_list_white_24dp - : R.drawable.ic_filter_list_active_white_24dp) - )); + binding.filterIndicator.setVisibility(filterViewModel.getFilterInformation().getValue() == null ? View.GONE : View.VISIBLE)); binding.filter.setOnClickListener((v) -> FilterDialogFragment.newInstance().show(getSupportFragmentManager(), EditStackDialogFragment.class.getCanonicalName())); binding.archivedCards.setOnClickListener((v) -> startActivity(ArchivedCardsActvitiy.createIntent(this, mainViewModel.getCurrentAccount(), mainViewModel.getCurrentBoardLocalId(), mainViewModel.currentBoardHasEditPermission()))); @@ -430,6 +427,7 @@ public class MainActivity extends BrandedActivity implements DeleteStackListener @ColorInt final int headerTextColor = contrastRatioIsSufficientBigAreas(mainColor, Color.WHITE) ? Color.WHITE : Color.BLACK; DrawableCompat.setTint(headerBinding.logo.getDrawable(), headerTextColor); headerBinding.appName.setTextColor(headerTextColor); + DrawableCompat.setTint(binding.filterIndicator.getDrawable(), getSecondaryForegroundColorDependingOnTheme(this, mainColor)); } @Override diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/exception/tips/TipsAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/exception/tips/TipsAdapter.java index fa4113b1e..a059b2956 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/exception/tips/TipsAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/exception/tips/TipsAdapter.java @@ -133,6 +133,16 @@ public class TipsAdapter extends RecyclerView.Adapter<TipsViewHolder> { add(R.string.error_dialog_capabilities_not_parsable); } } + } else if (throwable instanceof RuntimeException) { + if (throwable.getMessage() != null && throwable.getMessage().contains("database")) { + Intent reportIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(context.getString(R.string.url_report_bug))) + .putExtra(INTENT_EXTRA_BUTTON_TEXT, R.string.error_action_report_issue); + add(R.string.error_dialog_tip_database_upgrade_failed, reportIntent); + Intent clearIntent = new Intent(ACTION_APPLICATION_DETAILS_SETTINGS) + .setData(Uri.parse("package:" + BuildConfig.APPLICATION_ID)) + .putExtra(INTENT_EXTRA_BUTTON_TEXT, R.string.error_action_open_deck_info); + add(R.string.error_dialog_tip_clear_storage, clearIntent); + } } } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/view/ColorChooser.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/view/ColorChooser.java index d444e075e..30dc0ada4 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/view/ColorChooser.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/view/ColorChooser.java @@ -5,21 +5,30 @@ import android.content.res.TypedArray; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; +import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import androidx.annotation.Nullable; +import com.google.android.flexbox.FlexboxLayout; import com.skydoves.colorpickerview.listeners.ColorEnvelopeListener; import it.niedermann.nextcloud.deck.R; import it.niedermann.nextcloud.deck.databinding.WidgetColorChooserBinding; import it.niedermann.nextcloud.deck.util.ViewUtil; +import static it.niedermann.nextcloud.deck.util.DimensionUtil.dpToPx; + public class ColorChooser extends LinearLayout { private WidgetColorChooserBinding binding; + private final FlexboxLayout.LayoutParams params = new FlexboxLayout.LayoutParams( + ViewGroup.LayoutParams.WRAP_CONTENT, + ViewGroup.LayoutParams.WRAP_CONTENT + ); + private Context context; private String[] colors; @@ -32,6 +41,9 @@ public class ColorChooser extends LinearLayout { super(context, attrs); this.context = context; + params.setMargins(0, dpToPx(context, R.dimen.spacer_1x), 0, 0); + params.setFlexBasisPercent(.15f); + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ColorChooser, 0, 0); colors = getResources().getStringArray(a.getResourceId(R.styleable.ColorChooser_colors, 0)); @@ -40,6 +52,7 @@ public class ColorChooser extends LinearLayout { binding = WidgetColorChooserBinding.inflate(LayoutInflater.from(context), this, true); for (final String color : colors) { ImageView image = new ImageView(getContext()); + image.setLayoutParams(params); image.setOnClickListener((imageView) -> { if (previouslySelectedImageView != null) { // null when first selection previouslySelectedImageView.setImageDrawable(ViewUtil.getTintedImageView(this.context, R.drawable.circle_grey600_36dp, previouslySelectedColor)); diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 5413b6219..a5c926a5e 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -122,19 +122,35 @@ app:srcCompat="@drawable/ic_baseline_account_circle_24" tools:targetApi="o" /> - <ImageView - android:id="@+id/filter" + <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical|end" - android:background="?attr/selectableItemBackgroundBorderless" - android:contentDescription="@string/simple_filter" - android:padding="12dp" - android:tint="?attr/colorAccent" - android:tooltipText="@string/simple_filter" - android:translationX="6dp" - app:srcCompat="@drawable/ic_filter_list_white_24dp" - tools:targetApi="o" /> + android:translationX="6dp"> + + <ImageView + android:id="@+id/filter" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackgroundBorderless" + android:contentDescription="@string/simple_filter" + android:padding="12dp" + android:tint="?attr/colorAccent" + android:tooltipText="@string/simple_filter" + app:srcCompat="@drawable/ic_filter_list_white_24dp" + tools:targetApi="o" /> + + <ImageView + android:id="@+id/filter_indicator" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="bottom|end" + android:layout_marginEnd="12dp" + android:layout_marginBottom="12dp" + android:contentDescription="@null" + android:src="@drawable/circle_grey600_8dp" + android:tint="@color/defaultBrand" /> + </FrameLayout> <ImageView android:id="@+id/archivedCards" @@ -201,9 +217,9 @@ android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" + android:background="?attr/colorPrimary" android:fitsSystemWindows="false" android:theme="@style/NavigationView" - android:background="?attr/colorPrimary" app:headerLayout="@layout/nav_header_main" /> </androidx.drawerlayout.widget.DrawerLayout> diff --git a/app/src/main/res/layout/widget_color_chooser.xml b/app/src/main/res/layout/widget_color_chooser.xml index 1d3970119..2a99c7a6c 100644 --- a/app/src/main/res/layout/widget_color_chooser.xml +++ b/app/src/main/res/layout/widget_color_chooser.xml @@ -1,49 +1,56 @@ <?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" +<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:layout_height="match_parent" - android:orientation="vertical"> + android:layout_height="match_parent"> - <com.google.android.flexbox.FlexboxLayout - android:id="@+id/colorPicker" + <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="@dimen/spacer_2x" - app:alignItems="stretch" - app:flexWrap="wrap" - app:justifyContent="space_between"> + android:orientation="vertical"> - <androidx.appcompat.widget.AppCompatImageView - android:id="@+id/customColorChooser" - android:layout_width="wrap_content" + <com.google.android.flexbox.FlexboxLayout + android:id="@+id/colorPicker" + android:layout_width="match_parent" android:layout_height="wrap_content" - android:contentDescription="@string/pick_custom_color" - app:srcCompat="@drawable/circle_alpha_colorize_36dp" - tools:tint="@color/grey600" /> - </com.google.android.flexbox.FlexboxLayout> + android:layout_marginTop="@dimen/spacer_2x" + app:alignItems="stretch" + app:flexWrap="wrap" + app:justifyContent="space_between"> - <com.skydoves.colorpickerview.ColorPickerView - android:id="@+id/customColorPicker" - android:layout_width="200dp" - android:layout_height="200dp" - android:layout_gravity="center" - android:layout_marginTop="10dp" - android:visibility="gone" - app:palette="@drawable/palette" - app:selector="@drawable/wheel" - tools:visibility="visible" /> + <androidx.appcompat.widget.AppCompatImageView + android:id="@+id/customColorChooser" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/spacer_1x" + android:contentDescription="@string/pick_custom_color" + app:layout_flexBasisPercent="15%" + app:srcCompat="@drawable/circle_alpha_colorize_36dp" + tools:tint="@color/grey600" /> + </com.google.android.flexbox.FlexboxLayout> - <com.skydoves.colorpickerview.sliders.BrightnessSlideBar - android:id="@+id/brightnessSlide" - android:layout_width="200dp" - android:layout_height="wrap_content" - android:layout_gravity="center" - android:layout_marginTop="10dp" - android:visibility="gone" - app:borderColor_BrightnessSlider="@android:color/darker_gray" - app:borderSize_BrightnessSlider="5" - app:selector_BrightnessSlider="@drawable/wheel" - tools:visibility="visible" /> -</LinearLayout>
\ No newline at end of file + <com.skydoves.colorpickerview.ColorPickerView + android:id="@+id/customColorPicker" + android:layout_width="200dp" + android:layout_height="200dp" + android:layout_gravity="center" + android:layout_marginTop="10dp" + android:visibility="gone" + app:palette="@drawable/palette" + app:selector="@drawable/wheel" + tools:visibility="visible" /> + + <com.skydoves.colorpickerview.sliders.BrightnessSlideBar + android:id="@+id/brightnessSlide" + android:layout_width="200dp" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_marginTop="10dp" + android:visibility="gone" + app:borderColor_BrightnessSlider="@android:color/darker_gray" + app:borderSize_BrightnessSlider="5" + app:selector_BrightnessSlider="@drawable/wheel" + tools:visibility="visible" /> + </LinearLayout> +</ScrollView>
\ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 120fcac27..6db0c7441 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -24,17 +24,20 @@ <color name="overdue_text_color">#FFFFFF</color> <!-- board color picker colors --> - <color name="board_default_color">#31CC7C</color> + <color name="board_default_color">#b6469d</color> <color name="board_default_custom_color">#616161</color> <string-array name="board_default_colors"> - <item>#31CC7C</item> - <item>#317CCC</item> - <item>#FF7A66</item> - <item>#F1DB50</item> - <item>#7C31CC</item> - <item>#CC317C</item> - <item>#3A3B3D</item> - <!-- <item>#CACBCD</item> --> + <item>#b6469d</item> + <item>#bf678b</item> + <item>#c98879</item> + <item>#ddcb55</item> + <item>#a5b872</item> + <item>#6ea68f</item> + <item>#3794ac</item> + <item>#0082c9</item> + <item>#2d73be</item> + <item>#5b64b3</item> + <item>#8855a8</item> </string-array> <color name="widget_background">#ccf5f5f5</color> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 51cd41e20..256f9bc91 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -114,6 +114,7 @@ <string name="url_about_icon_author" translatable="false">https://github.com/nextcloud/deck/commit/8c04ea8dc99e9b392f4039e8e5e6964d5a6d3453#diff-f3716cc279904617b1a21078526b6bf1R1</string> <string name="url_source" translatable="false">https://github.com/stefan-niedermann/nextcloud-deck</string> <string name="url_issues" translatable="false">https://github.com/stefan-niedermann/nextcloud-deck/issues/new/choose</string> + <string name="url_report_bug" translatable="false">https://github.com/stefan-niedermann/nextcloud-deck/issues/new?labels=bug&template=bug_report.md</string> <string name="url_license" translatable="false">https://github.com/stefan-niedermann/nextcloud-deck/blob/master/LICENSE</string> <string name="url_translations" translatable="false">https://www.transifex.com/nextcloud/nextcloud/</string> <string name="url_about_icons_disclaimer_mdi" translatable="false">https://materialdesignicons.com/</string> @@ -241,6 +242,7 @@ <string name="error_dialog_title">Oh no - What now? 🙁</string> <string name="error_dialog_tip_token_mismatch_retry">Please try to force close the app and restart it again. There might have been an incorrect connection to the Nextcloud app.</string> <string name="error_dialog_tip_token_mismatch_clear_storage">If the issue persists, try to clear the storage of both apps: Nextcloud and Nextcloud Deck to solve this issue.</string> + <string name="error_dialog_tip_database_upgrade_failed">The ugprade of the database failed. Please report the issue and clear the storage to use the app normally.</string> <string name="error_dialog_tip_clear_storage">You can clear the storage by opening the app info and selecting Storage → Clear storage.</string> <string name="error_dialog_tip_files_outdated">Your Nextcloud app seems to be outdated. Please visit the Play Store or F-Droid to get the latest version.</string> <string name="error_dialog_tip_files_force_stop">Something seems to be wrong with your Nextcloud app. Please try to force stop both, the Nextcloud app and the Nextcloud Deck app.</string> @@ -261,6 +263,7 @@ <string name="error_action_open_network">Network settings</string> <string name="error_action_server_logs">Server logs</string> <string name="error_action_install">Install</string> + <string name="error_action_report_issue">Report</string> <string name="info_box_maintenance_mode">Server in maintenance mode</string> <string name="info_box_version_not_supported">Server version %1$s not supported, please update to %2$s</string> <string name="share_link">Share link</string> |