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
path: root/app
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2021-10-08 14:17:36 +0300
committerStefan Niedermann <info@niedermann.it>2021-10-08 14:17:36 +0300
commit5c124bc92b8d31aab4b70b5e530beb0153445eec (patch)
tree9de9c5b3d87f1181e1bfa06c66e0e3a7092c2d2e /app
parente3bcc15c2f2494c6f23ded2d1f4ad30b12f2d69f (diff)
Also intent sub categories which have deeper sub categories
Signed-off-by: Stefan Niedermann <info@niedermann.it>
Diffstat (limited to 'app')
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/main/MainViewModel.java3
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/main/navigation/NavigationItem.java11
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/main/navigation/NavigationViewHolder.java8
-rw-r--r--app/src/main/res/values/dimens.xml2
-rw-r--r--app/src/test/java/it/niedermann/owncloud/notes/main/MainViewModelTest.java73
5 files changed, 71 insertions, 26 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/MainViewModel.java b/app/src/main/java/it/niedermann/owncloud/notes/main/MainViewModel.java
index 2897bb38..c99a21c1 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/main/MainViewModel.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/main/MainViewModel.java
@@ -351,6 +351,9 @@ public class MainViewModel extends AndroidViewModel {
lastSecondaryCategory.icon = NavigationAdapter.ICON_SUB_MULTIPLE;
} else if (belongsToLastPrimaryCategory) {
if (isCategoryOpen) {
+ if(currentSecondaryCategory == null) {
+ throw new IllegalStateException("Current secondary category is null. Last primary category: " + lastPrimaryCategory);
+ }
item.label = currentSecondaryCategory;
item.id = "category:" + item.label;
item.icon = NavigationAdapter.ICON_SUB_FOLDER;
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/navigation/NavigationItem.java b/app/src/main/java/it/niedermann/owncloud/notes/main/navigation/NavigationItem.java
index e291d1db..2879746d 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/main/navigation/NavigationItem.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/main/navigation/NavigationItem.java
@@ -93,4 +93,15 @@ public class NavigationItem {
result = 31 * result + (type != null ? type.hashCode() : 0);
return result;
}
+
+ @Override
+ public String toString() {
+ return "NavigationItem{" +
+ "id='" + id + '\'' +
+ ", label='" + label + '\'' +
+ ", icon=" + icon +
+ ", count=" + count +
+ ", type=" + type +
+ '}';
+ }
} \ No newline at end of file
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/navigation/NavigationViewHolder.java b/app/src/main/java/it/niedermann/owncloud/notes/main/navigation/NavigationViewHolder.java
index 1af734d2..8fb03dfa 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/main/navigation/NavigationViewHolder.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/main/navigation/NavigationViewHolder.java
@@ -1,5 +1,7 @@
package it.niedermann.owncloud.notes.main.navigation;
+import static java.util.Objects.requireNonNull;
+
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
@@ -15,8 +17,6 @@ import it.niedermann.owncloud.notes.R;
import it.niedermann.owncloud.notes.databinding.ItemNavigationBinding;
import it.niedermann.owncloud.notes.shared.util.NoteUtil;
-import static java.util.Objects.requireNonNull;
-
class NavigationViewHolder extends RecyclerView.ViewHolder {
@NonNull
private final View view;
@@ -62,7 +62,9 @@ class NavigationViewHolder extends RecyclerView.ViewHolder {
view.setSelected(isSelected);
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
- params.leftMargin = item.icon == NavigationAdapter.ICON_SUB_FOLDER ? view.getResources().getDimensionPixelSize(R.dimen.margin_25) : 0;
+ params.leftMargin = item.icon == NavigationAdapter.ICON_SUB_FOLDER || item.icon == NavigationAdapter.ICON_SUB_MULTIPLE
+ ? view.getResources().getDimensionPixelSize(R.dimen.spacer_3x)
+ : 0;
view.requestLayout();
}
} \ No newline at end of file
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index 09c59517..ebf6b15f 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -38,6 +38,4 @@
<dimen name="widget_note_list_fav_icon_width">26dp</dimen>
<dimen name="widget_note_list_fav_icon_height">20dp</dimen>
- <dimen name="margin_25">25dp</dimen>
-
</resources>
diff --git a/app/src/test/java/it/niedermann/owncloud/notes/main/MainViewModelTest.java b/app/src/test/java/it/niedermann/owncloud/notes/main/MainViewModelTest.java
index afdb59c1..ef58dc4c 100644
--- a/app/src/test/java/it/niedermann/owncloud/notes/main/MainViewModelTest.java
+++ b/app/src/test/java/it/niedermann/owncloud/notes/main/MainViewModelTest.java
@@ -36,16 +36,6 @@ public class MainViewModelTest {
private Context context;
private Method fromCategoriesWithNotesCount;
- private final List<CategoryWithNotesCount> categoriesWithNotesCount = List.of(
- new CategoryWithNotesCount(1, "Foo", 13),
- new CategoryWithNotesCount(1, "Bar", 30),
- new CategoryWithNotesCount(1, "Bar/abc", 10),
- new CategoryWithNotesCount(1, "Bar/abc/def", 5),
- new CategoryWithNotesCount(1, "Bar/xyz/zyx", 10),
- new CategoryWithNotesCount(1, "Bar/aaa/bbb", 8),
- new CategoryWithNotesCount(1, "Bar/ddd", 2),
- new CategoryWithNotesCount(1, "Baz", 13)
- );
@Before
public void setup() throws NoSuchMethodException {
@@ -57,7 +47,7 @@ public class MainViewModelTest {
@Test
public void fromCategoriesWithNotesCount_nothing_expanded() throws InvocationTargetException, IllegalAccessException {
//noinspection unchecked
- final var navigationItems = (List<NavigationItem>) fromCategoriesWithNotesCount.invoke(null, context, "", categoriesWithNotesCount, 56, 0);
+ final var navigationItems = (List<NavigationItem>) fromCategoriesWithNotesCount.invoke(null, context, "", getSaneCategoriesWithNotesCount(), 56, 0);
assertNotNull(navigationItems);
assertEquals(5, navigationItems.size());
@@ -71,7 +61,7 @@ public class MainViewModelTest {
@Test
public void fromCategoriesWithNotesCount_Bar_expanded() throws InvocationTargetException, IllegalAccessException {
//noinspection unchecked
- final var navigationItems = (List<NavigationItem>) fromCategoriesWithNotesCount.invoke(null, context, "Bar", categoriesWithNotesCount, 56, 0);
+ final var navigationItems = (List<NavigationItem>) fromCategoriesWithNotesCount.invoke(null, context, "Bar", getSaneCategoriesWithNotesCount(), 56, 0);
assertNotNull(navigationItems);
assertEquals(9, navigationItems.size());
@@ -86,20 +76,61 @@ public class MainViewModelTest {
assertEquals("Baz", navigationItems.get(8).label);
}
+ @Test
+ public void fromCategoriesWithNotesCount_invalid_expanded() throws InvocationTargetException, IllegalAccessException {
+ //noinspection unchecked
+ final var navigationItems = (List<NavigationItem>) fromCategoriesWithNotesCount.invoke(null, context, "ThisCategoryDoesNotExist", getSaneCategoriesWithNotesCount(), 56, 0);
+
+ assertNotNull(navigationItems);
+ assertEquals(5, navigationItems.size());
+ assertEquals(ENavigationCategoryType.RECENT, navigationItems.get(0).type);
+ assertEquals(ENavigationCategoryType.FAVORITES, navigationItems.get(1).type);
+ assertEquals("Foo", navigationItems.get(2).label);
+ assertEquals("Bar", navigationItems.get(3).label);
+ assertEquals("Baz", navigationItems.get(4).label);
+ }
+
/**
* Expanded sub categories are not supported and should therefore be treated like an unknown category
*/
@Test
public void fromCategoriesWithNotesCount_subcategory_expanded() throws InvocationTargetException, IllegalAccessException {
//noinspection unchecked
- final var bar_abcExpanded = (List<NavigationItem>) fromCategoriesWithNotesCount.invoke(null, context, "Bar/abc", categoriesWithNotesCount, 56, 0);
-
- assertNotNull(bar_abcExpanded);
- assertEquals(5, bar_abcExpanded.size());
- assertEquals(ENavigationCategoryType.RECENT, bar_abcExpanded.get(0).type);
- assertEquals(ENavigationCategoryType.FAVORITES, bar_abcExpanded.get(1).type);
- assertEquals("Foo", bar_abcExpanded.get(2).label);
- assertEquals("Bar", bar_abcExpanded.get(3).label);
- assertEquals("Baz", bar_abcExpanded.get(4).label);
+ final var navigationItems = (List<NavigationItem>) fromCategoriesWithNotesCount.invoke(null, context, "Bar/abc", getSaneCategoriesWithNotesCount(), 56, 0);
+
+ assertNotNull(navigationItems);
+ assertEquals(5, navigationItems.size());
+ assertEquals(ENavigationCategoryType.RECENT, navigationItems.get(0).type);
+ assertEquals(ENavigationCategoryType.FAVORITES, navigationItems.get(1).type);
+ assertEquals("Foo", navigationItems.get(2).label);
+ assertEquals("Bar", navigationItems.get(3).label);
+ assertEquals("Baz", navigationItems.get(4).label);
+ }
+
+ @Test
+ public void fromCategoriesWithNotesCount_only_deep_category_without_favorites() throws InvocationTargetException, IllegalAccessException {
+ //noinspection unchecked
+ final var navigationItems = (List<NavigationItem>) fromCategoriesWithNotesCount.invoke(null, context, "Bar/abc", List.of(
+ new CategoryWithNotesCount(1, "Bar/abc/def", 5)
+ ), 0, 0);
+
+ assertNotNull(navigationItems);
+ assertEquals(3, navigationItems.size());
+ assertEquals(ENavigationCategoryType.RECENT, navigationItems.get(0).type);
+ assertEquals(ENavigationCategoryType.FAVORITES, navigationItems.get(1).type);
+ assertEquals("Bar", navigationItems.get(2).label);
+ }
+
+ private static List<CategoryWithNotesCount> getSaneCategoriesWithNotesCount() {
+ return List.of(
+ new CategoryWithNotesCount(1, "Foo", 13),
+ new CategoryWithNotesCount(1, "Bar", 30),
+ new CategoryWithNotesCount(1, "Bar/abc", 10),
+ new CategoryWithNotesCount(1, "Bar/abc/def", 5),
+ new CategoryWithNotesCount(1, "Bar/xyz/zyx", 10),
+ new CategoryWithNotesCount(1, "Bar/aaa/bbb", 8),
+ new CategoryWithNotesCount(1, "Bar/ddd", 2),
+ new CategoryWithNotesCount(1, "Baz", 13)
+ );
}
} \ No newline at end of file