2
0
mirror of https://github.com/KDE/kdeconnect-android synced 2025-08-22 09:58:08 +00:00
This commit is contained in:
Albert Vaca Cintora 2025-07-02 20:31:48 +02:00
parent c3e51d13fe
commit 568a8e623b
No known key found for this signature in database
4 changed files with 14 additions and 27 deletions

View File

@ -137,6 +137,8 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
<item>stronger</item>
</string-array>
<string name="virtualmonitor_rdp_client_not_installed">No app can handle RDP. Please install aFreeRDP or another client.</string>
<string name="sendkeystrokes_send_to">Send keystrokes to</string>
<string name="sendkeystrokes_textbox_hint">Send keystrokes to host</string>
<string name="sendkeystrokes_disabled_toast">Sending keystrokes is disabled - enable it in the settings</string>

View File

@ -45,7 +45,7 @@ public abstract class BaseLink {
return getDeviceInfo().id;
}
public InetAddress getDeviceIp() { return null; }
public abstract InetAddress getDeviceIp();
public BaseLinkProvider getLinkProvider() {
return linkProvider;

View File

@ -650,12 +650,7 @@ class Device : PacketReceiver {
fun removePluginsChangedListener(listener: PluginsChangedListener) = pluginsChangedListeners.remove(listener)
fun ipAddress(): InetAddress? {
for (link in links) {
if (link.deviceIp != null) {
return link.deviceIp
}
}
return null
return links.firstNotNullOf { it.deviceIp }
}
fun disconnect() {

View File

@ -6,14 +6,9 @@
package org.kde.kdeconnect.Plugins.VirtualMonitorPlugin
import android.content.Intent
import android.graphics.Rect
import android.net.Uri
import android.os.Build
import android.util.Log
import android.view.WindowManager
import android.view.WindowMetrics
import androidx.annotation.RequiresApi
import androidx.core.content.ContextCompat
import android.widget.Toast
import androidx.core.net.toUri
import org.json.JSONArray
import org.json.JSONObject
@ -67,7 +62,8 @@ class VirtualMonitorPlugin : Plugin() {
Log.i("KDE/VirtualMonitor", "Received request, try connecting to $url")
if (!openUrlExternally(url)) {
Log.e("KDE/VirtualMonitor", "Failed to open $url")
Toast.makeText(context, R.string.virtualmonitor_rdp_client_not_installed, Toast.LENGTH_LONG).show()
openUrlExternally("https://f-droid.org/en/packages/com.freerdp.afreerdp/".toUri())
val failure = NetworkPacket(PACKET_TYPE_VIRTUALMONITOR).apply {
this["failed"] = 0
}
@ -77,23 +73,21 @@ class VirtualMonitorPlugin : Plugin() {
return true
}
@RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
override fun onCreate() : Boolean
{
val windowManager = ContextCompat.getSystemService(context, WindowManager::class.java)
assert(windowManager != null);
val windowMetrics: WindowMetrics = windowManager!!.currentWindowMetrics
if (device.ipAddress() == null) {
Log.e("KDE/VirtualMonitor", "No IP address for device, pass.")
return false
}
val bounds: Rect = windowMetrics.bounds
val metrics = context.resources.displayMetrics
val np = NetworkPacket(PACKET_TYPE_VIRTUALMONITOR).apply {
this["resolutions"] = JSONArray().apply { put(JSONObject().apply {
put("resolution", bounds.width().toString() + 'x' + bounds.height())
put("scale", windowMetrics.density)
}) }
this["resolutions"] = JSONArray().apply {
put(JSONObject().apply {
put("resolution", "${metrics.widthPixels}x${metrics.heightPixels}")
put("scale", metrics.density)
})
}
this["supports_rdp"] = true
this["supports_virt_mon"] = false
}
@ -102,10 +96,6 @@ class VirtualMonitorPlugin : Plugin() {
return true
}
override fun onUnpairedDevicePacketReceived(np: NetworkPacket): Boolean {
return super.onUnpairedDevicePacketReceived(np)
}
override val supportedPacketTypes: Array<String>
get() = arrayOf(PACKET_TYPE_VIRTUALMONITOR, PACKET_TYPE_VIRTUALMONITOR_REQUEST)