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 @@
+