MainActivity: Use NavigationRail on large screen devices

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2024-04-15 21:15:39 +05:30
parent c3963519e0
commit 5f714e624b
5 changed files with 70 additions and 20 deletions

View File

@@ -55,7 +55,4 @@ object Constants {
const val PAGE_TYPE = "PAGE_TYPE" const val PAGE_TYPE = "PAGE_TYPE"
const val TOP_CHART_TYPE = "TOP_CHART_TYPE" const val TOP_CHART_TYPE = "TOP_CHART_TYPE"
const val TOP_CHART_CATEGORY = "TOP_CHART_CATEGORY" const val TOP_CHART_CATEGORY = "TOP_CHART_CATEGORY"
//NAVIGATION
const val NAVIGATION_UPDATES = "NAVIGATION_UPDATES"
} }

View File

@@ -31,16 +31,15 @@ import androidx.navigation.FloatingWindow
import androidx.navigation.NavController import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.ui.setupWithNavController import androidx.navigation.ui.setupWithNavController
import com.aurora.Constants
import com.aurora.extensions.accentColor import com.aurora.extensions.accentColor
import com.aurora.extensions.applyThemeAccent import com.aurora.extensions.applyThemeAccent
import com.aurora.store.data.model.NetworkStatus import com.aurora.store.data.model.NetworkStatus
import com.aurora.store.data.providers.NetworkProvider import com.aurora.store.data.providers.NetworkProvider
import com.aurora.store.databinding.ActivityMainBinding import com.aurora.store.databinding.ActivityMainBinding
import com.aurora.store.util.Log
import com.aurora.store.util.Preferences import com.aurora.store.util.Preferences
import com.aurora.store.util.Preferences.PREFERENCE_DEFAULT_SELECTED_TAB import com.aurora.store.util.Preferences.PREFERENCE_DEFAULT_SELECTED_TAB
import com.aurora.store.view.ui.sheets.NetworkDialogSheet import com.aurora.store.view.ui.sheets.NetworkDialogSheet
import com.google.android.material.navigation.NavigationBarView
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@@ -94,7 +93,7 @@ class MainActivity : AppCompatActivity() {
} }
} }
B.navView.apply { (B.navView as NavigationBarView).apply {
val alphaColor = ColorUtils.setAlphaComponent(this@MainActivity.accentColor(), 100) val alphaColor = ColorUtils.setAlphaComponent(this@MainActivity.accentColor(), 100)
setupWithNavController(navController) setupWithNavController(navController)
itemActiveIndicatorColor = ColorStateList.valueOf(alphaColor) itemActiveIndicatorColor = ColorStateList.valueOf(alphaColor)
@@ -121,12 +120,6 @@ class MainActivity : AppCompatActivity() {
} }
} }
// Handle intents
when (intent?.action) {
Constants.NAVIGATION_UPDATES -> B.navView.selectedItemId = R.id.updatesFragment
else -> Log.i("Unhandled intent action: ${intent.action}")
}
// Handle views on fragments // Handle views on fragments
navController.addOnDestinationChangedListener { _, navDestination, _ -> navController.addOnDestinationChangedListener { _, navDestination, _ ->
if (navDestination !is FloatingWindow) { if (navDestination !is FloatingWindow) {

View File

@@ -213,14 +213,11 @@ object NotificationUtil {
} }
fun getUpdateNotification(context: Context, updatesList: List<App>): Notification { fun getUpdateNotification(context: Context, updatesList: List<App>): Notification {
val contentIntent = PendingIntent.getActivity( val contentIntent = NavDeepLinkBuilder(context)
context, .setGraph(R.navigation.mobile_navigation)
0, .setDestination(R.id.updatesFragment)
Intent(context, MainActivity::class.java).apply { .setComponentName(MainActivity::class.java)
action = Constants.NAVIGATION_UPDATES .createPendingIntent()
},
PendingIntent.FLAG_IMMUTABLE
)
return NotificationCompat.Builder(context, Constants.NOTIFICATION_CHANNEL_UPDATES) return NotificationCompat.Builder(context, Constants.NOTIFICATION_CHANNEL_UPDATES)
.setSmallIcon(R.drawable.ic_updates) .setSmallIcon(R.drawable.ic_updates)

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="0dp"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/nav_view"
app:layout_constraintTop_toTopOf="parent"
app:navGraph="@navigation/mobile_navigation" />
<com.google.android.material.navigationrail.NavigationRailView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
app:headerLayout="@layout/layout_nav_header"
app:labelVisibilityMode="labeled"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:menu="@menu/menu_bottom_nav"
app:menuGravity="center" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/nav_header_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/img"
android:src="@mipmap/ic_launcher"
android:layout_width="@dimen/icon_size_small"
android:layout_height="@dimen/icon_size_small"
app:srcCompat="@drawable/bg_placeholder" />
</RelativeLayout>