[network/kdeconnect-android/kdeconnect-android-work/close-button] src/main: Add close button

Albert Vaca Cintora <[email protected]>
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git commit db8a81a906232632e1eb722299a14e95dc9c9298 by Albert Vaca Cintora, on behalf of Douglas Carvalho.
Committed on 02/08/2026 at 21:30.
Pushed by albertvaka into branch 'kdeconnect-android-work/close-button'.

Add close button

And change the behavior of Home to typing the ALT + Home key.

M  +6    -0    src/main/java/org/kde/kdeconnect/plugins/mousepad/BigscreenActivity.kt
M  +8    -1    src/main/java/org/kde/kdeconnect/plugins/mousepad/MousePadPlugin.kt
M  +52   -42   src/main/res/layout/activity_bigscreen.xml
M  +3    -1    src/main/res/values/strings.xml
M  +6    -0    src/main/res/xml/mousepadplugin_preferences_tv.xml

https://invent.kde.org/network/kdeconnect-android/-/commit/db8a81a906232632e1eb722299a14e95dc9c9298

diff --git a/src/main/java/org/kde/kdeconnect/plugins/mousepad/BigscreenActivity.kt b/src/main/java/org/kde/kdeconnect/plugins/mousepad/BigscreenActivity.kt
index 043f3ccae..477aaf11e 100644
--- a/src/main/java/org/kde/kdeconnect/plugins/mousepad/BigscreenActivity.kt
+++ b/src/main/java/org/kde/kdeconnect/plugins/mousepad/BigscreenActivity.kt
@@ -54,6 +54,7 @@ class BigscreenActivity : BaseActivity<ActivityBigscreenBinding>() {
         binding.selectButton.setOnClickListener { v: View? -> plugin.sendSelect() }
         binding.homeButton.setOnClickListener { v: View? -> plugin.sendHome() }
         binding.backButton.setOnClickListener { v: View? -> plugin.sendBack() }
+        binding.closeButton.setOnClickListener { v: View? -> plugin.sendClose() }
         binding.micButton.setOnClickListener { v: View? ->
             if (plugin.hasMicPermission()) {
                 activateSTT()
@@ -78,6 +79,11 @@ class BigscreenActivity : BaseActivity<ActivityBigscreenBinding>() {
         } else {
             binding.homeButton.visibility = View.INVISIBLE
         }
+        if (prefs.getBoolean(getString(R.string.pref_bigscreen_show_close), true)) {
+            binding.closeButton.visibility = View.VISIBLE
+        } else {
+            binding.closeButton.visibility = View.INVISIBLE
+        }
     }
 
     fun activateSTT() {
diff --git a/src/main/java/org/kde/kdeconnect/plugins/mousepad/MousePadPlugin.kt b/src/main/java/org/kde/kdeconnect/plugins/mousepad/MousePadPlugin.kt
index 624100cd9..b298d5774 100644
--- a/src/main/java/org/kde/kdeconnect/plugins/mousepad/MousePadPlugin.kt
+++ b/src/main/java/org/kde/kdeconnect/plugins/mousepad/MousePadPlugin.kt
@@ -162,7 +162,7 @@ class MousePadPlugin : Plugin() {
     fun sendHome() {
         val np = NetworkPacket(PACKET_TYPE_MOUSEPAD_REQUEST)
         np["alt"] = true
-        np["specialKey"] = KeyListenerView.SpecialKeysMap.get(KeyEvent.KEYCODE_F4)
+        np["specialKey"] = KeyListenerView.SpecialKeysMap.get(KeyEvent.KEYCODE_MOVE_HOME)
         device.sendPacket(np)
     }
 
@@ -172,6 +172,13 @@ class MousePadPlugin : Plugin() {
         device.sendPacket(np)
     }
 
+    fun sendClose() {
+        val np = NetworkPacket(PACKET_TYPE_MOUSEPAD_REQUEST)
+        np["alt"] = true
+        np["specialKey"] = KeyListenerView.SpecialKeysMap.get(KeyEvent.KEYCODE_F4)
+        device.sendPacket(np)
+    }
+
     fun sendText(content: String) {
         val np = NetworkPacket(PACKET_TYPE_MOUSEPAD_REQUEST)
         np["key"] = content
diff --git a/src/main/res/layout/activity_bigscreen.xml b/src/main/res/layout/activity_bigscreen.xml
index a5a0ee8b8..a9b645e47 100644
--- a/src/main/res/layout/activity_bigscreen.xml
+++ b/src/main/res/layout/activity_bigscreen.xml
@@ -17,99 +17,109 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
     <include layout="@layout/toolbar" android:id="@+id/toolbar_layout" />
 
     <androidx.gridlayout.widget.GridLayout
-        xmlns:grid="http://schemas.android.com/apk/res-auto"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        grid:useDefaultMargins="true"
+        app:useDefaultMargins="true"
         app:layout_behavior="@string/appbar_scrolling_view_behavior">
 
         <com.google.android.material.button.MaterialButton
             android:id="@+id/home_button"
-            grid:layout_column="0"
-            grid:layout_row="0"
-            grid:layout_columnWeight="1"
-            grid:layout_rowWeight="1"
+            app:layout_column="0"
+            app:layout_row="0"
+            app:layout_columnWeight="1"
+            app:layout_rowWeight="1"
             android:contentDescription="@string/bigscreen_home"
-            grid:iconSize="32dp"
+            app:iconSize="32dp"
             app:icon="@drawable/ic_home_black_24dp"
             style="@style/KdeConnectButton.IconButton" />
 
         <com.google.android.material.button.MaterialButton
             android:id="@+id/up_button"
-            grid:layout_column="1"
-            grid:layout_row="0"
-            grid:layout_columnWeight="1"
-            grid:layout_rowWeight="1"
+            app:layout_column="1"
+            app:layout_row="0"
+            app:layout_columnWeight="1"
+            app:layout_rowWeight="1"
             android:contentDescription="@string/bigscreen_up"
-            grid:iconSize="42dp"
+            app:iconSize="42dp"
             app:icon="@drawable/outline_arrow_drop_up_24"
             style="@style/KdeConnectButton.IconButton" />
 
         <com.google.android.material.button.MaterialButton
             android:id="@+id/mic_button"
-            grid:layout_column="2"
-            grid:layout_columnWeight="1"
-            grid:layout_row="0"
-            grid:layout_rowWeight="1"
+            app:layout_column="2"
+            app:layout_columnWeight="1"
+            app:layout_row="0"
+            app:layout_rowWeight="1"
             android:contentDescription="@string/bigscreen_mic"
-            grid:iconSize="32dp"
+            app:iconSize="32dp"
             app:icon="@drawable/ic_mic_black"
             style="@style/KdeConnectButton.IconButton" />
 
         <com.google.android.material.button.MaterialButton
             android:id="@+id/left_button"
-            grid:layout_column="0"
-            grid:layout_row="1"
-            grid:layout_columnWeight="1"
-            grid:layout_rowWeight="1"
+            app:layout_column="0"
+            app:layout_row="1"
+            app:layout_columnWeight="1"
+            app:layout_rowWeight="1"
             android:contentDescription="@string/bigscreen_left"
-            grid:iconSize="42dp"
+            app:iconSize="42dp"
             app:icon="@drawable/outline_arrow_left_24"
             style="@style/KdeConnectButton.IconButton" />
 
         <com.google.android.material.button.MaterialButton
             android:id="@+id/select_button"
-            grid:layout_column="1"
-            grid:layout_row="1"
-            grid:layout_columnWeight="1"
-            grid:layout_rowWeight="1"
+            app:layout_column="1"
+            app:layout_row="1"
+            app:layout_columnWeight="1"
+            app:layout_rowWeight="1"
             android:contentDescription="@string/bigscreen_select"
-            grid:iconSize="32dp"
+            app:iconSize="32dp"
             app:icon="@drawable/ic_keyboard_return_black_24dp"
             style="@style/KdeConnectButton.IconButton" />
 
         <com.google.android.material.button.MaterialButton
             android:id="@+id/right_button"
-            grid:layout_column="2"
-            grid:layout_row="1"
-            grid:layout_columnWeight="1"
-            grid:layout_rowWeight="1"
+            app:layout_column="2"
+            app:layout_row="1"
+            app:layout_columnWeight="1"
+            app:layout_rowWeight="1"
             android:contentDescription="@string/bigscreen_right"
-            grid:iconSize="42dp"
+            app:iconSize="42dp"
             app:icon="@drawable/outline_arrow_right_24"
             style="@style/KdeConnectButton.IconButton" />
 
         <com.google.android.material.button.MaterialButton
             android:id="@+id/down_button"
-            grid:layout_column="1"
-            grid:layout_row="2"
-            grid:layout_columnWeight="1"
-            grid:layout_rowWeight="1"
+            app:layout_column="1"
+            app:layout_row="2"
+            app:layout_columnWeight="1"
+            app:layout_rowWeight="1"
             android:contentDescription="@string/bigscreen_down"
-            grid:iconSize="42dp"
+            app:iconSize="42dp"
             app:icon="@drawable/outline_arrow_drop_down_24"
             style="@style/KdeConnectButton.IconButton"  />
 
 
         <com.google.android.material.button.MaterialButton
             android:id="@+id/back_button"
-            grid:layout_column="0"
-            grid:layout_row="2"
-            grid:layout_columnWeight="1"
-            grid:layout_rowWeight="1"
+            app:layout_column="0"
+            app:layout_row="2"
+            app:layout_columnWeight="1"
+            app:layout_rowWeight="1"
             android:contentDescription="@string/bigscreen_back"
-            grid:iconSize="32dp"
+            app:iconSize="32dp"
             app:icon="@drawable/ic_arrow_back_black_24dp"
             style="@style/KdeConnectButton.IconButton"  />
+
+        <com.google.android.material.button.MaterialButton
+            android:id="@+id/close_button"
+            style="@style/KdeConnectButton.IconButton"
+            android:contentDescription="@string/bigscreen_close"
+            app:icon="@android:drawable/ic_menu_close_clear_cancel"
+            app:iconSize="32dp"
+            app:layout_column="2"
+            app:layout_columnWeight="1"
+            app:layout_row="2"
+            app:layout_rowWeight="1" />
     </androidx.gridlayout.widget.GridLayout>
 </androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index d6352641e..6f57838f5 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -101,6 +101,7 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
     <string name="bigscreen_hide_mouse_input">Hide mouse and keyboard remote input button</string>
     <string name="bigscreen_show_home_title">Show Home button</string>
     <string name="bigscreen_show_back_title">Show Back button</string>
+    <string name="bigscreen_show_close_title">Show Close button</string>
     <string-array name="mousepad_tap_entries">
         <item>Left click</item>
         <item>Right click</item>
@@ -173,7 +174,7 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
     <string name="pref_bigscreen_hide_mouse_input" translatable="false">bigscreen_hide_mouse_input</string>
     <string name="pref_bigscreen_show_home" translatable="false">bigscreen_show_home</string>
     <string name="pref_bigscreen_show_back" translatable="false">bigscreen_show_back</string>
-
+    <string name="pref_bigscreen_show_close" translatable="false">bigscreen_show_close</string>
 
     <string name="mouse_receiver_plugin_description">Receive remote mouse movement</string>
     <string name="mouse_receiver_plugin_name">Mouse receiver</string>
@@ -488,6 +489,7 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
     <string name="cant_open_url">Can\'t open URL to continue playing</string>
 
     <string name="bigscreen_home">Home</string>
+    <string name="bigscreen_close">Close</string>
     <string name="bigscreen_up">Up</string>
     <string name="bigscreen_left">Left</string>
     <string name="bigscreen_select">Select</string>
diff --git a/src/main/res/xml/mousepadplugin_preferences_tv.xml b/src/main/res/xml/mousepadplugin_preferences_tv.xml
index 75649d27c..946d586da 100644
--- a/src/main/res/xml/mousepadplugin_preferences_tv.xml
+++ b/src/main/res/xml/mousepadplugin_preferences_tv.xml
@@ -27,6 +27,12 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
             android:key="@string/pref_bigscreen_show_home"
             android:title="@string/bigscreen_show_home_title" />
 
+        <SwitchPreference
+            android:id="@+id/bigscreen_show_close"
+            android:defaultValue="true"
+            android:key="@string/pref_bigscreen_show_close"
+            android:title="@string/bigscreen_show_close_title" />
+
         <SwitchPreference
             android:id="@+id/bigscreen_hide_mouse_input"
             android:defaultValue="false"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.