feat: add navigation buttons to main drawer and relocate FABs to the connection status bar

This commit is contained in:
zarazaex69
2026-04-04 01:58:06 +03:00
parent b59deeb9e4
commit 2422b8ea9e
7 changed files with 104 additions and 92 deletions
@@ -82,6 +82,16 @@ class MainActivity : HelperBaseActivity(), NavigationView.OnNavigationItemSelect
binding.drawerLayout.addDrawerListener(toggle)
toggle.syncState()
binding.navView.setNavigationItemSelectedListener(this)
// Bottom drawer buttons
findViewById<android.widget.TextView>(R.id.drawer_settings)?.setOnClickListener {
requestActivityLauncher.launch(Intent(this, SettingsActivity::class.java))
binding.drawerLayout.closeDrawer(androidx.core.view.GravityCompat.START)
}
findViewById<android.widget.TextView>(R.id.drawer_per_app)?.setOnClickListener {
requestActivityLauncher.launch(Intent(this, PerAppProxyActivity::class.java))
binding.drawerLayout.closeDrawer(androidx.core.view.GravityCompat.START)
}
fun removeUnderlines(textView: android.widget.TextView?) {
if (textView == null) return
textView.movementMethod = android.text.method.LinkMovementMethod.getInstance()
@@ -56,10 +56,6 @@ class PerAppProxyActivity : BaseActivity() {
MmkvManager.encodeSettings(AppConfig.PREF_BYPASS_APPS, isChecked)
}
binding.switchBypassApps.isChecked = MmkvManager.decodeSettingsBool(AppConfig.PREF_BYPASS_APPS, false)
binding.layoutSwitchBypassAppsTips.setOnClickListener {
Toasty.info(this, R.string.summary_pref_per_app_proxy, Toast.LENGTH_LONG, true).show()
}
}
private fun initList() {
@@ -62,24 +62,6 @@
android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:theme="@style/BrandedSwitch" />
<LinearLayout
android:id="@+id/layout_switch_bypass_apps_tips"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true"
android:contentDescription="@string/switch_bypass_apps_mode"
android:focusable="true"
android:gravity="center"
android:padding="@dimen/padding_spacing_dp8">
<ImageView
android:layout_width="@dimen/image_size_dp24"
android:layout_height="@dimen/image_size_dp24"
android:importantForAccessibility="no"
app:srcCompat="@drawable/ic_about_24dp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
@@ -61,65 +61,70 @@
android:layout_weight="1" />
<LinearLayout
android:id="@+id/layout_test"
android:layout_width="match_parent"
android:layout_height="@dimen/view_height_dp64"
android:clickable="true"
android:contentDescription="@string/connection_test_pending"
android:focusable="true"
android:nextFocusLeft="@+id/view_pager"
android:nextFocusRight="@+id/fab"
android:layout_height="wrap_content"
android:orientation="vertical">
<View
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/divider_color_light" />
<TextView
android:id="@+id/tv_test_state"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="start|center"
android:maxLines="2"
android:minLines="1"
android:paddingStart="@dimen/padding_spacing_dp16"
android:text="@string/connection_test_pending"
android:textAppearance="@style/TextAppearance.AppCompat.Small" />
<LinearLayout
android:id="@+id/layout_test"
android:layout_width="match_parent"
android:layout_height="@dimen/view_height_dp64"
android:clickable="true"
android:contentDescription="@string/connection_test_pending"
android:focusable="true"
android:nextFocusLeft="@+id/view_pager"
android:nextFocusRight="@+id/fab"
android:orientation="horizontal"
android:gravity="center_vertical">
<TextView
android:id="@+id/tv_test_state"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="start|center_vertical"
android:maxLines="2"
android:minLines="1"
android:paddingStart="@dimen/padding_spacing_dp16"
android:text="@string/connection_test_pending"
android:textAppearance="@style/TextAppearance.AppCompat.Small" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/btn_summary_lite"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:src="@drawable/ic_lite_bolt"
app:tint="@color/colorWhite"
app:backgroundTint="@color/color_fab_inactive"
app:fabSize="mini"
app:maxImageSize="24dp"
android:elevation="0dp" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/padding_spacing_dp16"
android:clickable="true"
android:contentDescription="@string/tasker_start_service"
android:focusable="true"
android:nextFocusLeft="@+id/layout_test"
android:src="@drawable/ic_play_24dp"
app:tint="@color/colorWhite"
app:fabSize="mini"
android:elevation="0dp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_marginEnd="@dimen/padding_spacing_dp16"
android:layout_marginBottom="@dimen/view_height_dp36"
android:gravity="center_horizontal"
android:orientation="vertical">
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/btn_summary_lite"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:src="@drawable/ic_lite_bolt"
app:tint="@color/colorWhite"
app:backgroundTint="@color/color_fab_inactive" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:contentDescription="@string/tasker_start_service"
android:focusable="true"
android:nextFocusLeft="@+id/layout_test"
android:src="@drawable/ic_play_24dp"
app:tint="@color/colorWhite"
app:useCompatPadding="true" />
</LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</RelativeLayout>
</LinearLayout>
@@ -136,8 +141,7 @@
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
app:headerLayout="@layout/nav_header"
app:menu="@menu/menu_drawer" />
app:headerLayout="@layout/nav_header" />
<LinearLayout
android:layout_width="match_parent"
@@ -145,6 +149,40 @@
android:orientation="vertical"
android:padding="16dp">
<TextView
android:id="@+id/drawer_settings"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawablePadding="12dp"
android:gravity="center_vertical"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:text="@string/title_settings"
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true" />
<TextView
android:id="@+id/drawer_per_app"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawablePadding="12dp"
android:gravity="center_vertical"
android:paddingTop="12dp"
android:paddingBottom="16dp"
android:text="@string/per_app_proxy_settings"
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginBottom="12dp"
android:background="@color/divider_color_light" />
<TextView
android:id="@+id/tv_forked"
android:layout_width="wrap_content"
+2 -16
View File
@@ -1,20 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
android:padding="@dimen/padding_spacing_dp16">
android:layout_height="0dp"
android:orientation="vertical" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:fontFamily="@font/montserrat_thin"
android:gravity="center"
android:paddingTop="@dimen/padding_spacing_dp8"
android:text="@string/app_name"
android:textAppearance="@style/TextAppearance.AppCompat.Display1" />
</LinearLayout>
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="color_fab_active">#f97910</color>
<color name="color_fab_active">#88AC8A</color>
<color name="color_fab_inactive">#646464</color>
<color name="divider_color_light">#424242</color>
@@ -10,9 +10,9 @@
<color name="md_theme_primaryContainer">#474747</color>
<color name="md_theme_onPrimaryContainer">#E0E0E0</color>
<!-- Secondary colors - accent color: orange -->
<color name="md_theme_secondary">#FFB687</color>
<color name="md_theme_onSecondary">#4E2600</color>
<!-- Secondary colors - accent color: green -->
<color name="md_theme_secondary">#88AC8A</color>
<color name="md_theme_onSecondary">#FFFFFF</color>
<color name="md_theme_secondaryContainer">#6F3800</color>
<color name="md_theme_onSecondaryContainer">#FFE8D6</color>
@@ -144,7 +144,7 @@
<string name="menu_item_export_proxy_app">Экспорт в буфер обмена</string>
<string name="menu_item_import_proxy_app">Импорт из буфера обмена</string>
<string name="per_app_proxy_settings">Выбор приложений</string>
<string name="per_app_proxy_settings_enable">Использовать выбор приложений</string>
<string name="per_app_proxy_settings_enable">Выбор приложений</string>
<!-- Preferences -->
<string name="title_settings">Настройки</string>