diff --git a/app/src/main/java/it/niedermann/owncloud/notes/branding/NotesViewThemeUtils.java b/app/src/main/java/it/niedermann/owncloud/notes/branding/NotesViewThemeUtils.java index d78575d6f..6112b4962 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/branding/NotesViewThemeUtils.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/branding/NotesViewThemeUtils.java @@ -255,7 +255,10 @@ public void themeCard(@NonNull MaterialCardView view) { new Pair<>(android.R.attr.state_activated, dynamicColor.secondaryContainer().getArgb(scheme)), new Pair<>(-android.R.attr.state_activated, dynamicColor.surface().getArgb(scheme))) ); - view.setStrokeColor(dynamicColor.outlineVariant().getArgb(scheme)); + view.setStrokeColor(buildColorStateList( + new Pair<>(android.R.attr.state_activated, dynamicColor.onSecondaryContainer().getArgb(scheme)), + new Pair<>(-android.R.attr.state_activated, dynamicColor.outlineVariant().getArgb(scheme))) + ); return view; }); } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java index 8f84e78c4..ef660e4ad 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java @@ -226,20 +226,20 @@ protected void onCreate(Bundle savedInstanceState) { switch (selectedCategory.getType()) { case RECENT -> { - activityBinding.searchText.setText(getString(R.string.search_in_all)); + activityBinding.searchBar.searchText.setText(getString(R.string.search_in_all)); } case FAVORITES -> { - activityBinding.searchText.setText(getString(R.string.search_in_category, getString(R.string.label_favorites))); + activityBinding.searchBar.searchText.setText(getString(R.string.search_in_category, getString(R.string.label_favorites))); } case UNCATEGORIZED -> { - activityBinding.searchText.setText(getString(R.string.search_in_category, getString(R.string.action_uncategorized))); + activityBinding.searchBar.searchText.setText(getString(R.string.search_in_category, getString(R.string.action_uncategorized))); } default -> { final String category = selectedCategory.getCategory(); if (category == null) { throw new IllegalStateException(NavigationCategory.class.getSimpleName() + " type is " + DEFAULT_CATEGORY + ", but category is null."); } - activityBinding.searchText.setText(getString(R.string.search_in_category, NoteUtil.extendCategory(category))); + activityBinding.searchBar.searchText.setText(getString(R.string.search_in_category, NoteUtil.extendCategory(category))); } } @@ -280,7 +280,7 @@ protected void onCreate(Bundle savedInstanceState) { mainViewModel.getSearchTerm().observe(this, adapter::setHighlightSearchQuery); mainViewModel.getCategorySortingMethodOfSelectedCategory().observe(this, methodOfCategory -> { updateSortMethodIcon(methodOfCategory.second); - activityBinding.sortingMethod.setOnClickListener((v) -> { + activityBinding.searchBar.sortingMethod.setOnClickListener((v) -> { if (methodOfCategory.first != null) { int newId = 0; if (methodOfCategory.second != null) @@ -303,7 +303,7 @@ protected void onCreate(Bundle savedInstanceState) { .placeholder(R.drawable.ic_account_circle_grey_24dp) .error(R.drawable.ic_account_circle_grey_24dp) .apply(RequestOptions.circleCropTransform()) - .into(activityBinding.launchAccountSwitcher); + .into(activityBinding.searchBar.launchAccountSwitcher); mainViewModel.synchronizeNotes(this, nextAccount, new IResponseCallback<>() { @Override @@ -331,7 +331,7 @@ public void onError(@NonNull Throwable t) { } }); fabCreate.show(); - activityBinding.launchAccountSwitcher.setOnClickListener((v) -> AccountSwitcherDialog.newInstance(nextAccount.getId()).show(getSupportFragmentManager(), AccountSwitcherDialog.class.getSimpleName())); + activityBinding.searchBar.launchAccountSwitcher.setOnClickListener((v) -> AccountSwitcherDialog.newInstance(nextAccount.getId()).show(getSupportFragmentManager(), AccountSwitcherDialog.class.getSimpleName())); if (menuAdapter == null) { menuAdapter = new MenuAdapter(getApplicationContext(), nextAccount, REQUEST_CODE_SERVER_SETTINGS, (menuItem) -> { @@ -484,13 +484,13 @@ protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) { private void setupToolbars() { setSupportActionBar(binding.activityNotesListView.searchToolbar); - activityBinding.homeToolbar.setOnClickListener((v) -> { + activityBinding.searchBar.homeToolbar.setOnClickListener((v) -> { if (activityBinding.searchToolbar.getVisibility() == GONE) { updateToolbars(true); } }); - final var toggle = new ActionBarDrawerToggle(this, binding.drawerLayout, activityBinding.homeToolbar, 0, 0); + final var toggle = new ActionBarDrawerToggle(this, binding.drawerLayout, activityBinding.searchBar.homeToolbar, 0, 0); binding.drawerLayout.addDrawerListener(toggle); toggle.syncState(); @@ -525,7 +525,7 @@ private void setupNotesList() { listView.setLayoutManager(gridLayoutManager); listView.addItemDecoration(new GridItemDecoration(adapter, spanCount, getResources().getDimensionPixelSize(R.dimen.spacer_3x), - getResources().getDimensionPixelSize(R.dimen.spacer_5x), + getResources().getDimensionPixelSize(R.dimen.spacer_3x), getResources().getDimensionPixelSize(R.dimen.spacer_3x), getResources().getDimensionPixelSize(R.dimen.spacer_1x), getResources().getDimensionPixelSize(R.dimen.spacer_activity_sides) + getResources().getDimensionPixelSize(R.dimen.spacer_1x) @@ -535,7 +535,7 @@ private void setupNotesList() { listView.setLayoutManager(layoutManager); listView.addItemDecoration(new SectionItemDecoration(adapter, getResources().getDimensionPixelSize(R.dimen.spacer_activity_sides) + getResources().getDimensionPixelSize(R.dimen.spacer_1x) + getResources().getDimensionPixelSize(R.dimen.spacer_3x) + getResources().getDimensionPixelSize(R.dimen.spacer_2x), - getResources().getDimensionPixelSize(R.dimen.spacer_5x), + getResources().getDimensionPixelSize(R.dimen.spacer_3x), getResources().getDimensionPixelSize(R.dimen.spacer_1x), 0 )); @@ -684,11 +684,11 @@ public void applyBrand(int color) { util.platform.colorCircularProgressBar(activityBinding.progressCircular, ColorRole.PRIMARY); util.platform.colorNavigationView(binding.navigationView); util.material.themeFAB(activityBinding.fabCreate); - util.notes.themeSearchCardView(binding.activityNotesListView.searchBarWrapper); - util.platform.colorViewBackground(getWindow().getDecorView()); - util.platform.colorViewBackground(binding.getRoot()); - util.platform.colorViewBackground(binding.activityNotesListView.activityNotesListView); - util.platform.colorTextView(binding.activityNotesListView.searchText, ColorRole.ON_SURFACE_VARIANT); + util.notes.themeSearchCardView(binding.activityNotesListView.searchBar.searchBarCardWrapper); + util.platform.colorViewBackground(getWindow().getDecorView(), ColorRole.SURFACE_CONTAINER); + util.platform.colorViewBackground(binding.getRoot(), ColorRole.SURFACE_CONTAINER); + util.platform.colorViewBackground(binding.activityNotesListView.activityNotesListView, ColorRole.SURFACE_CONTAINER); + util.platform.colorTextView(binding.activityNotesListView.searchBar.searchText, ColorRole.ON_SURFACE_VARIANT); util.notes.themeSearchToolbar(binding.activityNotesListView.searchToolbar); util.notes.themeToolbarSearchView(binding.activityNotesListView.searchView); @@ -723,29 +723,29 @@ private void updateSortMethodIcon(CategorySortingMethod method) { CategorySortingMethod newMethod = (method != null) ? method: CategorySortingMethod.SORT_MODIFIED_DESC; switch (newMethod){ case SORT_MODIFIED_DESC : - activityBinding.sortingMethod.setImageResource(R.drawable.modification_desc); - activityBinding.sortingMethod.setContentDescription(getString(R.string.sort_alphabetically)); + activityBinding.searchBar.sortingMethod.setImageResource(R.drawable.modification_desc); + activityBinding.searchBar.sortingMethod.setContentDescription(getString(R.string.sort_alphabetically)); if (SDK_INT >= O) { - activityBinding.sortingMethod.setTooltipText(getString(R.string.sort_alphabetically)); + activityBinding.searchBar.sortingMethod.setTooltipText(getString(R.string.sort_alphabetically)); } break; case SORT_LEXICOGRAPHICAL_ASC: - activityBinding.sortingMethod.setImageResource(R.drawable.alphabetical_asc); - activityBinding.sortingMethod.setContentDescription(getString(R.string.sort_alphabetically)); + activityBinding.searchBar.sortingMethod.setImageResource(R.drawable.alphabetical_asc); + activityBinding.searchBar.sortingMethod.setContentDescription(getString(R.string.sort_alphabetically)); if (SDK_INT >= O) { - activityBinding.sortingMethod.setTooltipText(getString(R.string.sort_alphabetically)); + activityBinding.searchBar.sortingMethod.setTooltipText(getString(R.string.sort_alphabetically)); } break; case SORT_LEXICOGRAPHICAL_DESC: - activityBinding.sortingMethod.setImageResource(R.drawable.alphabetical_desc); - activityBinding.sortingMethod.setContentDescription(getString(R.string.sort_last_modified)); + activityBinding.searchBar.sortingMethod.setImageResource(R.drawable.alphabetical_desc); + activityBinding.searchBar.sortingMethod.setContentDescription(getString(R.string.sort_last_modified)); if (SDK_INT >= O) { - activityBinding.sortingMethod.setTooltipText(getString(R.string.sort_last_modified)); + activityBinding.searchBar.sortingMethod.setTooltipText(getString(R.string.sort_last_modified)); } break; default: throw new IllegalStateException("Unknown method: " + method.name()); } - brandingUtil().platform.colorImageView(activityBinding.sortingMethod, ColorRole.ON_SURFACE); + brandingUtil().platform.colorImageView(activityBinding.searchBar.sortingMethod, ColorRole.ON_SURFACE); } @Override @@ -883,7 +883,7 @@ public void onNoteFavoriteClick(int position, View view) { } private void updateToolbars(boolean enableSearch) { - activityBinding.homeToolbar.setVisibility(enableSearch ? GONE : VISIBLE); + activityBinding.searchBar.searchBarWrapper.setVisibility(enableSearch ? GONE : VISIBLE); activityBinding.searchToolbar.setVisibility(enableSearch ? VISIBLE : GONE); activityBinding.appBar.setStateListAnimator(AnimatorInflater.loadStateListAnimator(activityBinding.appBar.getContext(), enableSearch ? R.animator.appbar_elevation_on diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/items/ItemAdapter.java b/app/src/main/java/it/niedermann/owncloud/notes/main/items/ItemAdapter.java index cf784a4c9..f8936e4f9 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/main/items/ItemAdapter.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/main/items/ItemAdapter.java @@ -28,6 +28,7 @@ import androidx.recyclerview.selection.SelectionTracker; import androidx.recyclerview.widget.RecyclerView; +import com.google.android.material.card.MaterialCardView; import com.nextcloud.android.common.ui.theme.utils.ColorRole; import java.util.ArrayList; @@ -120,12 +121,12 @@ public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int } case TYPE_NOTE_ONLY_TITLE -> { ItemNotesListNoteItemGridOnlyTitleBinding binding = ItemNotesListNoteItemGridOnlyTitleBinding.inflate(inflater, parent, false); - BrandingUtil.of(color, parent.getContext()).notes.themeCard(binding.card); + BrandingUtil.of(color, parent.getContext()).notes.themeCard(binding.noteCard); return new NoteViewGridHolderOnlyTitle(binding, noteClickListener, monospace, fontSize); } case TYPE_NOTE_WITH_EXCERPT, TYPE_NOTE_WITHOUT_EXCERPT -> { ItemNotesListNoteItemGridBinding binding = ItemNotesListNoteItemGridBinding.inflate(inflater, parent, false); - BrandingUtil.of(color, parent.getContext()).notes.themeCard(binding.card); + BrandingUtil.of(color, parent.getContext()).notes.themeCard(binding.noteCard); return new NoteViewGridHolder(binding, noteClickListener, monospace, fontSize); } default -> { @@ -141,12 +142,12 @@ public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int } case TYPE_NOTE_WITH_EXCERPT -> { ItemNotesListNoteItemWithExcerptBinding binding = ItemNotesListNoteItemWithExcerptBinding.inflate(inflater, parent, false); - BrandingUtil.of(color, parent.getContext()).notes.themeBackgroundItemView(binding.noteSwipeable); + BrandingUtil.of(color, parent.getContext()).notes.themeCard(binding.noteCard); return new NoteViewHolderWithExcerpt(binding, noteClickListener); } case TYPE_NOTE_ONLY_TITLE, TYPE_NOTE_WITHOUT_EXCERPT -> { ItemNotesListNoteItemWithoutExcerptBinding binding = ItemNotesListNoteItemWithoutExcerptBinding.inflate(inflater, parent, false); - BrandingUtil.of(color, parent.getContext()).notes.themeBackgroundItemView(binding.noteSwipeable); + BrandingUtil.of(color, parent.getContext()).notes.themeCard(binding.noteCard); return new NoteViewHolderWithoutExcerpt(binding, noteClickListener); } default -> { @@ -175,8 +176,10 @@ public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, int holder.itemView.findViewById(R.id.custom_checkbox).setVisibility(tracker != null && tracker.hasSelection() ? View.VISIBLE : View.GONE); holder.itemView.setSelected(isSelected); if (isSelected) { + ((MaterialCardView) holder.itemView.findViewById(R.id.noteCard)).setStrokeWidth((int) holder.itemView.getResources().getDimension(R.dimen.card_stroke_width_selected)); ((ImageView) holder.itemView.findViewById(R.id.custom_checkbox)).setImageDrawable(BrandingUtil.getInstance(holder.itemView.getContext()).platform.tintDrawable(holder.itemView.getContext(), R.drawable.ic_checkbox_marked, ColorRole.PRIMARY)); } else { + ((MaterialCardView) holder.itemView.findViewById(R.id.noteCard)).setStrokeWidth((int) holder.itemView.getResources().getDimension(R.dimen.card_stroke_width)); ((ImageView) holder.itemView.findViewById(R.id.custom_checkbox)).setImageResource(R.drawable.ic_checkbox_blank_outline); } holder.itemView.findViewById(R.id.custom_checkbox).setVisibility(isMultiSelect ? View.VISIBLE : View.GONE); diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/items/NoteViewHolder.java b/app/src/main/java/it/niedermann/owncloud/notes/main/items/NoteViewHolder.java index 54f0afdad..f972c7bcf 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/main/items/NoteViewHolder.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/main/items/NoteViewHolder.java @@ -112,7 +112,7 @@ protected void bindSearchableContent(@NonNull Context context, @NonNull TextView } } - public abstract void showSwipe(boolean left); + public abstract void showSwipe(float dX); @Nullable public abstract View getNoteSwipeable(); diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/items/grid/NoteViewGridHolder.java b/app/src/main/java/it/niedermann/owncloud/notes/main/items/grid/NoteViewGridHolder.java index e9760a313..638a2c7bb 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/main/items/grid/NoteViewGridHolder.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/main/items/grid/NoteViewGridHolder.java @@ -42,7 +42,7 @@ public NoteViewGridHolder(@NonNull ItemNotesListNoteItemGridBinding binding, @No } } - public void showSwipe(boolean left) { + public void showSwipe(float dX) { throw new UnsupportedOperationException(NoteViewGridHolder.class.getSimpleName() + " does not support swiping"); } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/items/grid/NoteViewGridHolderOnlyTitle.java b/app/src/main/java/it/niedermann/owncloud/notes/main/items/grid/NoteViewGridHolderOnlyTitle.java index 49fd8a819..b3a0ca67e 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/main/items/grid/NoteViewGridHolderOnlyTitle.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/main/items/grid/NoteViewGridHolderOnlyTitle.java @@ -34,7 +34,7 @@ public NoteViewGridHolderOnlyTitle(@NonNull ItemNotesListNoteItemGridOnlyTitleBi } } - public void showSwipe(boolean left) { + public void showSwipe(float dX) { throw new UnsupportedOperationException(NoteViewGridHolderOnlyTitle.class.getSimpleName() + " does not support swiping"); } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NoteViewHolderWithExcerpt.java b/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NoteViewHolderWithExcerpt.java index 892ab456e..b2b245a02 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NoteViewHolderWithExcerpt.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NoteViewHolderWithExcerpt.java @@ -6,11 +6,13 @@ */ package it.niedermann.owncloud.notes.main.items.list; +import android.content.res.Resources; import android.view.View; import androidx.annotation.ColorInt; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.core.content.res.ResourcesCompat; import it.niedermann.owncloud.notes.R; import it.niedermann.owncloud.notes.databinding.ItemNotesListNoteItemWithExcerptBinding; @@ -23,21 +25,37 @@ public class NoteViewHolderWithExcerpt extends NoteViewHolder { @NonNull private final ItemNotesListNoteItemWithExcerptBinding binding; + private final int defaultSwipeBackgroundColor; + private final int starSwipeBackgroundColor; + private final int deleteSwipeBackgroundColor; + + public NoteViewHolderWithExcerpt(@NonNull ItemNotesListNoteItemWithExcerptBinding binding, @NonNull NoteClickListener noteClickListener) { super(binding.getRoot(), noteClickListener); this.binding = binding; + Resources resources = binding.getRoot().getContext().getResources(); + this.defaultSwipeBackgroundColor = ResourcesCompat.getColor(resources, R.color.transparent, null); + this.starSwipeBackgroundColor = ResourcesCompat.getColor(resources, R.color.bg_warning, null); + this.deleteSwipeBackgroundColor = ResourcesCompat.getColor(resources, R.color.bg_attention, null); } - public void showSwipe(boolean left) { - binding.noteFavoriteLeft.setVisibility(left ? View.VISIBLE : View.INVISIBLE); - binding.noteDeleteRight.setVisibility(left ? View.INVISIBLE : View.VISIBLE); - binding.noteSwipeFrame.setBackgroundResource(left ? R.color.bg_warning : R.color.bg_attention); + public void showSwipe(float dX) { + if (dX == 0.0f) { + binding.noteFavoriteLeft.setVisibility(View.INVISIBLE); + binding.noteDeleteRight.setVisibility(View.INVISIBLE); + binding.noteSwipeFrame.setCardBackgroundColor(defaultSwipeBackgroundColor); + } else { + boolean left = dX > 0; + binding.noteFavoriteLeft.setVisibility(left ? View.VISIBLE : View.INVISIBLE); + binding.noteDeleteRight.setVisibility(left ? View.INVISIBLE : View.VISIBLE); + binding.noteSwipeFrame.setCardBackgroundColor(left ? starSwipeBackgroundColor : deleteSwipeBackgroundColor); + } } public void bind(boolean isSelected, @NonNull Note note, boolean showCategory, @ColorInt int color, @Nullable CharSequence searchQuery) { super.bind(isSelected, note, showCategory, color, searchQuery); @NonNull final var context = itemView.getContext(); - binding.noteSwipeable.setAlpha(DBStatus.LOCAL_DELETED.equals(note.getStatus()) ? 0.5f : 1.0f); + binding.noteCard.setAlpha(DBStatus.LOCAL_DELETED.equals(note.getStatus()) ? 0.5f : 1.0f); bindCategory(context, binding.noteCategory, showCategory, note.getCategory(), color); bindStatus(binding.noteStatus, note.getStatus(), color); bindFavorite(binding.noteFavorite, note.getFavorite()); @@ -49,6 +67,6 @@ public void bind(boolean isSelected, @NonNull Note note, boolean showCategory, @ @NonNull public View getNoteSwipeable() { - return binding.noteSwipeable; + return binding.noteCard; } -} \ No newline at end of file +} diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NoteViewHolderWithoutExcerpt.java b/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NoteViewHolderWithoutExcerpt.java index 70a4da13b..266af03be 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NoteViewHolderWithoutExcerpt.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NoteViewHolderWithoutExcerpt.java @@ -7,10 +7,12 @@ package it.niedermann.owncloud.notes.main.items.list; import android.content.Context; +import android.content.res.Resources; import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.core.content.res.ResourcesCompat; import it.niedermann.owncloud.notes.R; import it.niedermann.owncloud.notes.databinding.ItemNotesListNoteItemWithoutExcerptBinding; @@ -23,21 +25,36 @@ public class NoteViewHolderWithoutExcerpt extends NoteViewHolder { @NonNull private final ItemNotesListNoteItemWithoutExcerptBinding binding; + private final int defaultSwipeBackgroundColor; + private final int starSwipeBackgroundColor; + private final int deleteSwipeBackgroundColor; + public NoteViewHolderWithoutExcerpt(@NonNull ItemNotesListNoteItemWithoutExcerptBinding binding, @NonNull NoteClickListener noteClickListener) { super(binding.getRoot(), noteClickListener); this.binding = binding; + Resources resources = binding.getRoot().getContext().getResources(); + this.defaultSwipeBackgroundColor = ResourcesCompat.getColor(resources, R.color.transparent, null); + this.starSwipeBackgroundColor = ResourcesCompat.getColor(resources, R.color.bg_warning, null); + this.deleteSwipeBackgroundColor = ResourcesCompat.getColor(resources, R.color.bg_attention, null); } - public void showSwipe(boolean left) { - binding.noteFavoriteLeft.setVisibility(left ? View.VISIBLE : View.INVISIBLE); - binding.noteDeleteRight.setVisibility(left ? View.INVISIBLE : View.VISIBLE); - binding.noteSwipeFrame.setBackgroundResource(left ? R.color.bg_warning : R.color.bg_attention); + public void showSwipe(float dX) { + if (dX == 0.0f) { + binding.noteFavoriteLeft.setVisibility(View.INVISIBLE); + binding.noteDeleteRight.setVisibility(View.INVISIBLE); + binding.noteSwipeFrame.setCardBackgroundColor(defaultSwipeBackgroundColor); + } else { + boolean left = dX > 0; + binding.noteFavoriteLeft.setVisibility(left ? View.VISIBLE : View.INVISIBLE); + binding.noteDeleteRight.setVisibility(left ? View.INVISIBLE : View.VISIBLE); + binding.noteSwipeFrame.setCardBackgroundColor(left ? starSwipeBackgroundColor : deleteSwipeBackgroundColor); + } } public void bind(boolean isSelected, @NonNull Note note, boolean showCategory, int color, @Nullable CharSequence searchQuery) { super.bind(isSelected, note, showCategory, color, searchQuery); @NonNull final Context context = itemView.getContext(); - binding.noteSwipeable.setAlpha(DBStatus.LOCAL_DELETED.equals(note.getStatus()) ? 0.5f : 1.0f); + binding.noteCard.setAlpha(DBStatus.LOCAL_DELETED.equals(note.getStatus()) ? 0.5f : 1.0f); bindCategory(context, binding.noteCategory, showCategory, note.getCategory(), color); bindStatus(binding.noteStatus, note.getStatus(), color); bindFavorite(binding.noteFavorite, note.getFavorite()); @@ -47,6 +64,6 @@ public void bind(boolean isSelected, @NonNull Note note, boolean showCategory, i @NonNull public View getNoteSwipeable() { - return binding.noteSwipeable; + return binding.noteCard; } -} \ No newline at end of file +} diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NotesListViewItemTouchHelper.java b/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NotesListViewItemTouchHelper.java index 05b7c4d34..f09841b69 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NotesListViewItemTouchHelper.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NotesListViewItemTouchHelper.java @@ -9,6 +9,7 @@ import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Canvas; +import android.graphics.Color; import android.util.Log; import android.view.View; @@ -114,7 +115,7 @@ public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) public void onChildDraw(@NonNull Canvas c, @NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) { final var noteViewHolder = (NoteViewHolder) viewHolder; // show swipe icon on the side - noteViewHolder.showSwipe(dX > 0); + noteViewHolder.showSwipe(dX); // move only swipeable part of item (not leave-behind) getDefaultUIUtil().onDraw(c, recyclerView, noteViewHolder.getNoteSwipeable(), dX, dY, actionState, isCurrentlyActive); } diff --git a/app/src/main/res/color/grid_item_background_selector.xml b/app/src/main/res/color/grid_item_background_selector.xml deleted file mode 100644 index b366b5690..000000000 --- a/app/src/main/res/color/grid_item_background_selector.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - diff --git a/app/src/main/res/drawable/grid_item_background_selector.xml b/app/src/main/res/drawable/grid_item_background_selector.xml deleted file mode 100644 index d98aa12a0..000000000 --- a/app/src/main/res/drawable/grid_item_background_selector.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/list_item_background_selector.xml b/app/src/main/res/drawable/list_item_background_selector.xml deleted file mode 100644 index d7b1e044c..000000000 --- a/app/src/main/res/drawable/list_item_background_selector.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_notes_list_view.xml b/app/src/main/res/layout/activity_notes_list_view.xml index 77a35d662..d95dbf6fa 100644 --- a/app/src/main/res/layout/activity_notes_list_view.xml +++ b/app/src/main/res/layout/activity_notes_list_view.xml @@ -28,65 +28,9 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> - - - - - - - - - - - - - - - + - - - - - + android:layout_height="match_parent" + android:layout_marginStart="@dimen/spacer_1x" + android:layout_marginEnd="@dimen/spacer_1x" + app:cardBackgroundColor="@color/bg_attention" + app:strokeColor="@color/transparent"> + app:srcCompat="@drawable/ic_star_white_24dp" /> - - + android:layout_gravity="end|center_vertical" + android:layout_marginEnd="@dimen/spacer_2x" + android:contentDescription="@string/menu_delete" + app:srcCompat="@drawable/ic_delete_white_24dp" /> + + + + - - + android:baselineAligned="false" + android:gravity="center_vertical"> - - - + + + + + + - - - + android:layout_gravity="center_vertical|end" + android:layout_marginTop="12dp" + android:layout_marginEnd="4dp" + android:baseline="14dp" + app:srcCompat="@drawable/ic_sync_blue_18dp" /> + - - - - + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:orientation="vertical" + android:paddingVertical="@dimen/spacer_2x" + android:paddingStart="@dimen/zero" + android:paddingEnd="@dimen/spacer_2x"> + + + + + + + + + + + + + + + + + - + diff --git a/app/src/main/res/layout/item_notes_list_note_item_without_excerpt.xml b/app/src/main/res/layout/item_notes_list_note_item_without_excerpt.xml index a8ae9c73e..8f0ba83fd 100644 --- a/app/src/main/res/layout/item_notes_list_note_item_without_excerpt.xml +++ b/app/src/main/res/layout/item_notes_list_note_item_without_excerpt.xml @@ -8,121 +8,144 @@ + android:layout_marginTop="@dimen/spacer_1x" + android:clickable="true" + android:focusable="true"> - - - - - + android:layout_height="match_parent" + android:layout_marginStart="@dimen/spacer_1x" + android:layout_marginEnd="@dimen/spacer_1x" + app:cardBackgroundColor="@color/bg_attention" + app:strokeColor="@color/transparent"> + app:srcCompat="@drawable/ic_star_white_24dp" /> - - + android:layout_gravity="end|center_vertical" + android:layout_marginEnd="@dimen/spacer_2x" + android:contentDescription="@string/menu_delete" + app:srcCompat="@drawable/ic_delete_white_24dp" /> + + + + - - + + + + + + + + + + + - - - - + android:orientation="horizontal" + android:paddingStart="@dimen/zero" + android:paddingEnd="@dimen/spacer_2x"> + + + + + + + - + + diff --git a/app/src/main/res/layout/search_bar.xml b/app/src/main/res/layout/search_bar.xml new file mode 100644 index 000000000..05f79d598 --- /dev/null +++ b/app/src/main/res/layout/search_bar.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index b8596f742..8a62962a1 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -39,6 +39,8 @@ 0dp 12dp + 1dp + 3dp 40dp diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 4d756e58e..417713172 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -836,6 +836,11 @@ + + + + + @@ -892,6 +897,14 @@ + + + + + + + + @@ -927,6 +940,11 @@ + + + + + @@ -983,6 +1001,14 @@ + + + + + + + + @@ -1018,6 +1044,11 @@ + + + + + @@ -1074,6 +1105,14 @@ + + + + + + + + @@ -1109,6 +1148,11 @@ + + + + + @@ -1165,6 +1209,14 @@ + + + + + + + + @@ -1226,6 +1278,11 @@ + + + + + @@ -1282,6 +1339,14 @@ + + + + + + + + @@ -1356,6 +1421,11 @@ + + + + + @@ -1412,6 +1482,14 @@ + + + + + + + + @@ -1427,6 +1505,11 @@ + + + + + @@ -1451,6 +1534,14 @@ + + + + + + + + @@ -1486,6 +1577,11 @@ + + + + + @@ -1542,6 +1638,14 @@ + + + + + + + + @@ -1577,6 +1681,11 @@ + + + + + @@ -1633,6 +1742,14 @@ + + + + + + + + @@ -1668,6 +1785,11 @@ + + + + + @@ -1724,6 +1846,14 @@ + + + + + + + + @@ -1759,6 +1889,11 @@ + + + + + @@ -1815,6 +1950,14 @@ + + + + + + + + @@ -1850,6 +1993,11 @@ + + + + + @@ -1906,6 +2054,14 @@ + + + + + + + + @@ -1941,6 +2097,11 @@ + + + + + @@ -1997,6 +2158,14 @@ + + + + + + + + @@ -2032,6 +2201,11 @@ + + + + + @@ -2088,6 +2262,14 @@ + + + + + + + + @@ -2910,6 +3092,14 @@ + + + + + + + + @@ -2958,6 +3148,14 @@ + + + + + + + + @@ -2998,6 +3196,14 @@ + + + + + + + + @@ -3042,6 +3248,9 @@ + + + @@ -3134,6 +3343,14 @@ + + + + + + + + @@ -3179,6 +3396,14 @@ + + + + + + + + @@ -3219,6 +3444,14 @@ + + + + + + + + @@ -3256,6 +3489,14 @@ + + + + + + + + @@ -3296,6 +3537,14 @@ + + + + + + + + @@ -3346,6 +3595,14 @@ + + + + + + + + @@ -3386,6 +3643,11 @@ + + + + + @@ -3411,6 +3673,14 @@ + + + + + + + + @@ -3451,6 +3721,14 @@ + + + + + + + + @@ -3491,6 +3769,14 @@ + + + + + + + + @@ -3531,6 +3817,14 @@ + + + + + + + + @@ -3571,6 +3865,17 @@ + + + + + + + + + + + @@ -3641,6 +3946,14 @@ + + + + + + + + @@ -3681,6 +3994,14 @@ + + + + + + + + @@ -3721,6 +4042,14 @@ + + + + + + + + @@ -3766,6 +4095,14 @@ + + + + + + + + @@ -3934,6 +4271,14 @@ + + + + + + + + @@ -3958,6 +4303,14 @@ + + + + + + + + @@ -3990,6 +4343,14 @@ + + + + + + + + @@ -4022,6 +4383,14 @@ + + + + + + + + @@ -4046,6 +4415,14 @@ + + + + + + + + @@ -4098,6 +4475,11 @@ + + + + + @@ -4122,6 +4504,14 @@ + + + + + + + + @@ -4154,6 +4544,14 @@ + + + + + + + + @@ -4178,6 +4576,14 @@ + + + + + + + + @@ -4212,6 +4618,14 @@ + + + + + + + + @@ -4236,6 +4650,14 @@ + + + + + + + + @@ -4251,6 +4673,11 @@ + + + + + @@ -4272,6 +4699,14 @@ + + + + + + + + @@ -4304,6 +4739,14 @@ + + + + + + + + @@ -4344,6 +4787,14 @@ + + + + + + + + @@ -4368,6 +4819,14 @@ + + + + + + + + @@ -4405,6 +4864,14 @@ + + + + + + + + @@ -4429,6 +4896,14 @@ + + + + + + + + @@ -11342,6 +11817,14 @@ + + + + + + + + @@ -13100,6 +13583,14 @@ + + + + + + + + @@ -13180,6 +13671,11 @@ + + + + + @@ -13212,6 +13708,11 @@ + + + + + @@ -13279,6 +13780,11 @@ + + + + + @@ -13948,6 +14454,14 @@ + + + + + + + + @@ -13956,6 +14470,14 @@ + + + + + + + + @@ -13964,6 +14486,14 @@ + + + + + + + + @@ -13972,6 +14502,14 @@ + + + + + + + + @@ -15215,6 +15753,7 @@ + @@ -15262,6 +15801,11 @@ + + + + + @@ -15278,6 +15822,11 @@ + + + + + @@ -15291,6 +15840,7 @@ +