diff --git a/app/build.gradle b/app/build.gradle
index c25babb..aa3fb69 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -36,7 +36,9 @@ dependencies {
implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "androidx.appcompat:appcompat:${versions.appcompat}"
implementation "androidx.legacy:legacy-support-v4:${versions.legacy}"
- implementation "com.mikepenz:materialdrawer:${versions.materialdrawer}"
+ api("com.github.kuba2k2:MaterialDrawer:${versions.materialdrawer}") {
+ exclude module: 'library-iconics'
+ }
implementation "com.mikepenz:iconics-core:${versions.iconics}"
implementation "com.mikepenz:iconics-views:${versions.iconics}"
implementation "com.mikepenz:community-material-typeface:${versions.font_cmd}@aar"
diff --git a/app/src/main/java/pl/szczodrzynski/navigation/MainActivity.kt b/app/src/main/java/pl/szczodrzynski/navigation/MainActivity.kt
index d550fb4..cc03dd8 100644
--- a/app/src/main/java/pl/szczodrzynski/navigation/MainActivity.kt
+++ b/app/src/main/java/pl/szczodrzynski/navigation/MainActivity.kt
@@ -260,8 +260,8 @@ class MainActivity : AppCompatActivity() {
DrawerPrimaryItem().withName("Lock screen")
.withDescription("aaand not visible in Mini Drawer")
- .withIsHiddenInMiniDrawer(true)
.withIdentifier(62)
+ .withIsHiddenInMiniDrawer(true)
.withBadgeStyle(badgeStyle)
.withIcon(CommunityMaterial.Icon.cmd_fingerprint),
@@ -284,9 +284,6 @@ class MainActivity : AppCompatActivity() {
.withIcon(CommunityMaterial.Icon2.cmd_internet_explorer)
)
- setUnreadCount(2, 20, 30) // phil swift has 30 unreads on "Settings item"
- setUnreadCount(4, 40, 1000) // mark has 99+ unreads on "Lock screen item"
-
//setAccountHeaderBackground("/sdcard/ban.gif")
appendProfiles(
@@ -298,6 +295,9 @@ class MainActivity : AppCompatActivity() {
DrawerProfile(6, "Gandalf", "http://sax.hol.es/", null)
)
+ setUnreadCount(2, 20, 30) // phil swift has 30 unreads on "Settings item"
+ setUnreadCount(4, 40, 1000) // mark has 99+ unreads on "Lock screen item"
+
addProfileSettings(
ProfileSettingDrawerItem()
.withName("Add Account")
@@ -354,6 +354,10 @@ class MainActivity : AppCompatActivity() {
}
}
+ setSelection.setOnClickListener {
+ navView.drawer.setSelection(id = 1, fireOnClick = false)
+ }
+
navView.bottomSheet.apply {
this += BottomSheetPrimaryItem(true)
diff --git a/app/src/main/res/layout/sample_nav_view.xml b/app/src/main/res/layout/sample_nav_view.xml
index dcbb723..7b3b97f 100644
--- a/app/src/main/res/layout/sample_nav_view.xml
+++ b/app/src/main/res/layout/sample_nav_view.xml
@@ -35,6 +35,12 @@
android:layout_height="48dp"
android:text="Ripple bottombar" />
+
+
if (profile is ProfileSettingDrawerItem) {
@@ -477,7 +478,7 @@ class NavDrawer(
if (drawer.selectedItemIdentifier != id.toLong() || !fireOnClick)
drawer.setSelection(id.toLong(), fireOnClick)
- miniDrawer.setSelection(-1L)
+ //miniDrawer.setSelection(-1L)
if (drawerMode == DRAWER_MODE_MINI)
miniDrawer.setSelection(id.toLong())
}
@@ -518,12 +519,14 @@ class NavDrawer(
.withName(profile.name)
.withEmail(profile.subname)
.also { it.icon = image }
+ .withBadgeStyle(badgeStyle)
.withNameShown(true)
.also { profiles?.add(index, it) }
}
accountHeader.profiles = profiles
+ updateBadges()
updateMiniDrawer()
}
@@ -623,12 +626,32 @@ class NavDrawer(
}
}
+ var profileCounters = listOf()
+
+ accountHeader.profiles?.forEach { profile ->
+ if (profile !is ProfileDrawerItem) return@forEach
+ val counters = unreadCounterList.filter { it.profileId == profile.identifier.toInt() }
+ val count = counters.sumBy { it.count }
+ val badge = when {
+ count == 0 -> null
+ count >= 99 -> StringHolder("99+")
+ else -> StringHolder(count.toString())
+ }
+ if (profile.badge != badge) {
+ profile.badge = badge
+ accountHeader.updateProfile(profile)
+ }
+
+ if (currentProfile == profile.identifier.toInt())
+ profileCounters = counters
+ }
+
Log.d("NavDebug", "updateBadges()")
- unreadCounterList.map {
+ profileCounters.map {
it.drawerItemId = unreadCounterTypeMap[it.type]
}
var totalCount = 0
- unreadCounterList.forEach {
+ profileCounters.forEach {
if (it.drawerItemId == null)
return@forEach
if (it.profileId != currentProfile) {
@@ -699,10 +722,10 @@ class NavDrawer(
}
if (item != null) {
item.count = count
- updateBadges()
}
else {
unreadCounterList.add(UnreadCounter(profileId, type, null, count))
}
+ updateBadges()
}
}