2
0
mirror of https://github.com/KDE/kdeconnect-android synced 2025-08-31 22:25:08 +00:00

Compare commits

..

1 Commits

Author SHA1 Message Date
Albert Vaca Cintora
36636406b0 Require Android 6 (API 32) 2024-05-12 16:25:11 +02:00
347 changed files with 10113 additions and 13178 deletions

2
.gitignore vendored
View File

@@ -1,4 +1,3 @@
.attach_pid*
local.properties
/.gradle/
/.idea/
@@ -14,4 +13,3 @@ local.properties
.directory
GPUCache/
/release/
/.kotlin/

View File

@@ -7,26 +7,13 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
xmlns:tools="http://schemas.android.com/tools"
android:versionCode="13001"
android:versionName="1.30.1">
<uses-feature
android:name="android.hardware.telephony"
android:required="false" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<uses-feature
android:name="android.software.leanback"
android:required="false" />
<uses-feature
android:name="android.hardware.bluetooth"
android:required="false" />
<uses-feature
android:name="android.hardware.location.gps"
android:required="false" />
<uses-feature
android:name="android.hardware.microphone"
android:required="false" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.INTERNET" />
@@ -69,16 +56,13 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:label="@string/kde_connect"
android:banner="@mipmap/ic_launcher_banner"
android:supportsRtl="true"
android:allowBackup="false"
android:dataExtractionRules="@xml/data_extraction_rules"
android:networkSecurityConfig="@xml/network_security_config"
android:theme="@style/KdeConnectTheme.NoActionBar"
android:name="org.kde.kdeconnect.KdeConnect"
android:enableOnBackInvokedCallback="true"
android:requestLegacyExternalStorage="true"> <!-- requestLegacyExternalStorage is only used in Android 10: https://developer.android.com/training/data-storage/use-cases#opt-out-in-production-app -->
android:enableOnBackInvokedCallback="true">
<receiver
android:name="com.android.mms.transaction.PushReceiver"
@@ -126,12 +110,6 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
<intent-filter>
<action android:name="android.service.quicksettings.action.QS_TILE_PREFERENCES"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
<meta-data android:name="android.app.shortcuts"
android:resource="@xml/shortcuts" />
</activity>
<activity
android:name="org.kde.kdeconnect.UserInterface.PluginSettingsActivity"
@@ -357,7 +335,7 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:authorities="org.kde.kdeconnect_tp.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data

View File

@@ -1,15 +1,8 @@
import com.android.build.api.instrumentation.AsmClassVisitorFactory
import com.android.build.api.instrumentation.ClassContext
import com.android.build.api.instrumentation.ClassData
import com.android.build.api.instrumentation.InstrumentationParameters
import com.android.build.api.instrumentation.InstrumentationScope
import com.github.jk1.license.LicenseReportExtension
import com.github.jk1.license.render.ReportRenderer
import com.github.jk1.license.render.TextReportRenderer
import org.objectweb.asm.ClassVisitor
import org.objectweb.asm.MethodVisitor
import org.objectweb.asm.Opcodes.CHECKCAST
import org.objectweb.asm.Opcodes.INVOKESTATIC
import java.io.FileNotFoundException
import java.util.Properties
buildscript {
dependencies {
@@ -18,30 +11,40 @@ buildscript {
}
}
@Suppress("DSL_SCOPE_VIOLATION") // TODO: remove once https://youtrack.jetbrains.com/issue/KTIJ-19369 is fixed
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.ksp)
alias(libs.plugins.kotlin.kapt)
alias(libs.plugins.dependencyLicenseReport)
alias(libs.plugins.compose.compiler)
}
val licenseResDir = File("$projectDir/build/dependency-license-res")
val hashProvider = project.providers.exec {
workingDir = rootDir
commandLine("git", "rev-parse", "--short", "HEAD")
}.standardOutput.asText.map { it.trim() }
fun String.runCommand(
workingDir: File = File("."),
timeoutAmount: Long = 60,
timeoutUnit: TimeUnit = TimeUnit.SECONDS
): String = ProcessBuilder(split("\\s(?=(?:[^'\"`]*(['\"`])[^'\"`]*\\1)*[^'\"`]*$)".toRegex()))
.directory(workingDir)
.redirectOutput(ProcessBuilder.Redirect.PIPE)
.redirectError(ProcessBuilder.Redirect.PIPE)
.start()
.apply { waitFor(timeoutAmount, timeoutUnit) }
.run {
val error = errorStream.bufferedReader().readText().trim()
if (error.isNotEmpty()) {
throw Exception(error)
}
inputStream.bufferedReader().readText().trim()
}
android {
namespace = "org.kde.kdeconnect_tp"
compileSdk = 35
compileSdk = 34
defaultConfig {
applicationId = "org.kde.kdeconnect_tp"
minSdk = 21
targetSdk = 35
versionCode = 13304
versionName = "1.33.4"
minSdk = 23
targetSdk = 33
proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
}
buildFeatures {
@@ -50,6 +53,10 @@ android {
buildConfig = true
}
composeOptions {
kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get()
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_9
targetCompatibility = JavaVersion.VERSION_1_9
@@ -64,18 +71,16 @@ android {
androidResources {
generateLocaleConfig = true
}
sourceSets {
getByName("main") {
setRoot(".") // By default AGP expects all directories under src/main/...
java.srcDir("src") // by default is "java"
res.setSrcDirs(listOf(licenseResDir, "res")) // add licenseResDir
}
getByName("debug") {
res.srcDir("dbg-res")
manifest.srcFile("AndroidManifest.xml")
java.setSrcDirs(listOf("src"))
resources.setSrcDirs(listOf("resources"))
res.setSrcDirs(listOf(licenseResDir, "res"))
assets.setSrcDirs(listOf("assets"))
}
getByName("test") {
java.srcDir("tests")
java.setSrcDirs(listOf("tests"))
}
}
@@ -94,12 +99,22 @@ android {
}
buildTypes {
getByName("debug") {
isMinifyEnabled = false
isShrinkResources = false
// We minify by default even on debug builds. This has helped us catch issues where minification would remove files that were actually used (eg: via reflection).
// If you want to locally disable this behavior to speed-up the build, add a line `disableMinifyDebug=true` to your `local.properties` file.
val reader = try {
rootProject.file("local.properties").reader()
} catch (e: FileNotFoundException) {
null
}
val properties = reader?.use { Properties().apply { load(it) } }
val disableMinifyDebug = properties?.getProperty("disableMinifyDebug")?.toBoolean() ?: false
isMinifyEnabled = !disableMinifyDebug
isShrinkResources = !disableMinifyDebug
signingConfig = signingConfigs.getByName("debug")
applicationIdSuffix = ".debug"
versionNameSuffix = "-debug"
}
// keep minifyEnabled false above for faster builds; set to 'true'
// when testing to make sure ProGuard/R8 is not deleting important stuff
getByName("release") {
isMinifyEnabled = true
isShrinkResources = true
@@ -110,6 +125,19 @@ android {
checkReleaseBuilds = false
}
testOptions {
unitTests.all {
it.jvmArgs = it.jvmArgs.orEmpty() + listOf(
"--add-opens=java.base/java.lang=ALL-UNNAMED",
"--add-opens=java.base/java.security=ALL-UNNAMED",
"--add-opens=java.base/sun.security.rsa=ALL-UNNAMED",
"--add-opens=java.base/sun.security.x509=ALL-UNNAMED",
"--add-opens=java.base/java.util=ALL-UNNAMED",
"--add-opens=java.base/java.lang.reflect=ALL-UNNAMED"
)
}
}
applicationVariants.all {
val variant = this
logger.quiet("Found a variant called ${variant.name}")
@@ -121,8 +149,9 @@ android {
// Default output filename is "${project.name}-${v.name}.apk". We want
// the Git commit short-hash to be added onto that default filename.
try {
val newName = "${project.name}-${variant.name}-${hashProvider.get()}.apk"
logger.quiet(" Found an output file ${output.outputFile.name}, renaming to $newName")
val hash = "git rev-parse --short HEAD".runCommand(workingDir = rootDir)
val newName = "${project.name}-${variant.name}-${hash}.apk"
logger.quiet(" Found an output file ${output.outputFile.name}, renaming to ${newName}")
output.outputFileName = newName
} catch (ignored: Exception) {
logger.warn("Could not make use of the 'git' command-line tool. Output filenames will not be customized.")
@@ -133,143 +162,8 @@ android {
}
}
/**
* Fix PosixFilePermission class type check issue.
*
* It fixed the class cast exception when lib desugar enabled and minSdk < 26.
*/
abstract class FixPosixFilePermissionClassVisitorFactory :
AsmClassVisitorFactory<FixPosixFilePermissionClassVisitorFactory.Params> {
override fun createClassVisitor(
classContext: ClassContext,
nextClassVisitor: ClassVisitor
): ClassVisitor {
return object : ClassVisitor(instrumentationContext.apiVersion.get(), nextClassVisitor) {
override fun visitMethod(
access: Int,
name: String?,
descriptor: String?,
signature: String?,
exceptions: Array<out String>?
): MethodVisitor {
if (name == "attributesToPermissions") { // org.apache.sshd.sftp.common.SftpHelper.attributesToPermissions
return object : MethodVisitor(
instrumentationContext.apiVersion.get(),
super.visitMethod(access, name, descriptor, signature, exceptions)
) {
override fun visitTypeInsn(opcode: Int, type: String?) {
// We need to prevent Android Desugar modifying the `PosixFilePermission` classname.
//
// Android Desugar will replace `CHECKCAST java/nio/file/attribute/PosixFilePermission`
// to `CHECKCAST j$/nio/file/attribute/PosixFilePermission`.
// We need to replace it with `CHECKCAST java/lang/Enum` to prevent Android Desugar from modifying it.
if (opcode == CHECKCAST && type == "java/nio/file/attribute/PosixFilePermission") {
println("Bypass PosixFilePermission type check success.")
// `Enum` is the superclass of `PosixFilePermission`.
// Due to `Object` is not the superclass of `Enum`, we need to use `Enum` instead of `Object`.
super.visitTypeInsn(opcode, "java/lang/Enum")
} else {
super.visitTypeInsn(opcode, type)
}
}
}
}
return super.visitMethod(access, name, descriptor, signature, exceptions)
}
}
}
override fun isInstrumentable(classData: ClassData): Boolean {
return (classData.className == "org.apache.sshd.sftp.common.SftpHelper").also {
if (it) println("SftpHelper Found! Instrumenting...")
}
}
interface Params : InstrumentationParameters
}
/**
* Collections.unmodifiableXXX is not exist when Android API level is lower than 26.
* So we replace the call to Collections.unmodifiableXXX with the original collection by removing the call.
*/
abstract class FixCollectionsClassVisitorFactory :
AsmClassVisitorFactory<FixCollectionsClassVisitorFactory.Params> {
override fun createClassVisitor(
classContext: ClassContext,
nextClassVisitor: ClassVisitor
): ClassVisitor {
return object : ClassVisitor(instrumentationContext.apiVersion.get(), nextClassVisitor) {
override fun visitMethod(
access: Int,
name: String?,
descriptor: String?,
signature: String?,
exceptions: Array<out String>?
): MethodVisitor {
return object : MethodVisitor(
instrumentationContext.apiVersion.get(),
super.visitMethod(access, name, descriptor, signature, exceptions)
) {
override fun visitMethodInsn(
opcode: Int,
type: String?,
name: String?,
descriptor: String?,
isInterface: Boolean
) {
val backportClass = "org/kde/kdeconnect/Helpers/CollectionsBackport"
if (opcode == INVOKESTATIC && type == "java/util/Collections") {
val replaceRules = mapOf(
"unmodifiableNavigableSet" to "(Ljava/util/NavigableSet;)Ljava/util/NavigableSet;",
"unmodifiableSet" to "(Ljava/util/Set;)Ljava/util/Set;",
"unmodifiableNavigableMap" to "(Ljava/util/NavigableMap;)Ljava/util/NavigableMap;",
"emptyNavigableMap" to "()Ljava/util/NavigableMap;")
if (name in replaceRules && descriptor == replaceRules[name]) {
super.visitMethodInsn(opcode, backportClass, name, descriptor, isInterface)
val calleeClass = classContext.currentClassData.className
println("Replace Collections.$name call with CollectionsBackport.$name from $calleeClass success.")
return
}
}
super.visitMethodInsn(opcode, type, name, descriptor, isInterface)
}
}
}
}
}
override fun isInstrumentable(classData: ClassData): Boolean {
return classData.className.startsWith("org.apache.sshd") // We only need to fix the Apache SSHD library
}
interface Params : InstrumentationParameters
}
ksp {
arg("com.albertvaka.classindexksp.annotations", "org.kde.kdeconnect.Plugins.PluginFactory.LoadablePlugin")
}
androidComponents {
onVariants { variant ->
variant.instrumentation.transformClassesWith(
FixPosixFilePermissionClassVisitorFactory::class.java,
InstrumentationScope.ALL
) { }
variant.instrumentation.transformClassesWith(
FixCollectionsClassVisitorFactory::class.java,
InstrumentationScope.ALL
) { }
}
}
dependencies {
// It has a bug that causes a crash when using PosixFilePermission and minSdk < 26.
// It has been used in SSHD Core.
// We have taken a workaround to fix it.
// See `FixPosixFilePermissionClassVisitorFactory` for more details.
coreLibraryDesugaring(libs.android.desugarJdkLibsNio)
coreLibraryDesugaring(libs.android.desugarJdkLibs)
implementation(libs.androidx.compose.material3)
implementation(libs.androidx.compose.ui.tooling.preview)
@@ -296,14 +190,13 @@ dependencies {
implementation(libs.slf4j.handroid)
implementation(libs.apache.sshd.core)
implementation(libs.apache.sshd.sftp)
implementation(libs.apache.sshd.scp)
implementation(libs.apache.sshd.mina)
implementation(libs.apache.mina.core)
implementation(libs.apache.mina.core) //For some reason, makes sshd-core:0.14.0 work without NIO, which isn't available until Android 8 (api 26)
//implementation("com.github.bright:slf4android:0.1.6") { transitive = true } // For org.apache.sshd debugging
implementation(libs.bcpkix.jdk15on) //For SSL certificate generation
ksp(libs.classindexksp)
implementation(libs.classindex)
kapt(libs.classindex)
// The android-smsmms library is the only way I know to handle MMS in Android
// (Shouldn't a phone OS make phone things easy?)
@@ -326,7 +219,10 @@ dependencies {
// Testing
testImplementation(libs.junit)
testImplementation(libs.mockito.core)
testImplementation(libs.powermock.core)
testImplementation(libs.powermock.module.junit4)
testImplementation(libs.powermock.api.mockito2)
testImplementation(libs.mockito.core) // powermock isn't compatible with mockito 4
testImplementation(libs.jsonassert)
// For device controls

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<!-- <background android:drawable="@drawable/ic_launcher_background"/>-->
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
<monochrome android:drawable="@drawable/ic_launcher_monochrome"/>
</adaptive-icon>

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<!-- <background android:drawable="@drawable/ic_launcher_banner_background"/>-->
<foreground android:drawable="@drawable/ic_launcher_banner_foreground"/>
</adaptive-icon>

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<!-- <background android:drawable="@drawable/ic_launcher_background"/>-->
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
<monochrome android:drawable="@drawable/ic_launcher_monochrome"/>
</adaptive-icon>

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="kde_connect">Debug KDE Connect</string>
</resources>

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="kde_connect">Debug KDE Connect</string>
</resources>

View File

@@ -1,21 +0,0 @@
يوفر جسر كِيدِي مجموعة من الميزات لدمج سير عملك عبر الأجهزة:
- نقل الملفات بين أجهزتك.
- الوصول إلى الملفات الموجودة على هاتفك من حاسوبك، دون أسلاك.
- الحافظة المشتركة: النسخ واللصق بين أجهزتك.
- الحصول على إشعارات للمكالمات والرسائل الواردة على حاسوبك.
- لوحة اللمس الافتراضية: استخدم شاشة هاتفك كلوحة لمس لحاسوبك.
- مزامنة الإشعارات: الوصول إلى إشعارات هاتفك من حاسوبك والرد على الرسائل.
- التحكم عن بعد في الوسائط المتعددة: استخدم هاتفك كجهاز تحكم عن بعد لمشغلات الوسائط لينكس.
- اتصال واي فاي: لا حاجة إلى سلك USB أو بلوتوث.
- تشفير TLS من البداية إلى النهاية: معلوماتك آمنة.
يرجى ملاحظة أنك ستحتاج إلى تثبيت جسر كِيدِي على حاسوبك حتى يعمل هذا التطبيق، والحفاظ على تحديث إصدار سطح المكتب بإصدار أندوريد حتى تعمل أحدث الميزات.
معلومات الأذونات الحساسة:
* إذن إمكانية الوصول: مطلوب لتلقي إدخال من جهاز آخر للتحكم في هاتف أندرويد خاص بك، إذا كنت تستخدم ميزة الإدخال عن بُعد.
* إذن تحديد الموقع في الخلفية: مطلوب لمعرفة شبكة واي فاي التي تتصل بها، إذا كنت تستخدم ميزة الشبكات الموثوقة.
لا يرسل جسر كِيدِي أي معلومات إلى كيدي أو إلى أي طرف ثالث. يرسل جسر كِيدِي البيانات من جهاز إلى آخر مباشرةً باستخدام الشبكة المحلية، وليس عبر الإنترنت، وباستخدام التشفير من البداية إلى النهاية.
هذا التطبيق جزء من مشروع مفتوح المصدر وهو موجود بفضل جميع الأشخاص الذين ساهموا فيه. قم بزيارة الموقع الإلكتروني للحصول على الشفرة المصدرية.

View File

@@ -1 +0,0 @@
يدمج جسر كِيدِي هاتفك الذكي مع حاسوبك

View File

@@ -1 +0,0 @@
KDE Connect

View File

@@ -1,21 +0,0 @@
KDE Connect предоставя набор от функции за интегриране на вашия работен процес на различни устройства:
- Прехвърляйте файлове между вашите устройства.
- Осъществявайте достъп до файлове на телефона си от компютъра си, без кабели.
- Споделен клипборд: копирайте и поставяйте между вашите устройства.
- Получавайте известия за входящи обаждания и съобщения на вашия компютър.
- Виртуален тъчпад: Използвайте екрана на телефона си като тъчпад на компютъра.
- Синхронизиране на известия: Достъп до известията на телефона ви от вашия компютър и отговаряне на съобщения.
- Мултимедийно дистанционно управление: Използвайте телефона си като дистанционно за Linux медийни плейъри.
- WiFi връзка: не е необходим USB кабел или bluetooth.
- TLS криптиране от край до край: информацията ви е в безопасност.
Моля, имайте предвид, че ще трябва да инсталирате KDE Connect на вашия компютър, за да работи това приложение, и поддържайте версията за настолен компютър актуална с версията за Android, за да работят най-новите функции.
Поверителна информация за разрешения:
* Разрешение за достъпност: Изисква се за получаване на вход от друго устройство за управление на вашия телефон с Android, ако използвате функцията за отдалечено въвеждане.
* Разрешение за местоположение във фонов режим: Изисква се, за да знаете към коя WiFi мрежа сте свързани, ако използвате функцията Trusted Networks.
KDE Connect никога не изпраща никаква информация на KDE или на трета страна. KDE Connect изпраща данни от едно устройство на друго директно чрез локалната мрежа, никога през интернет, и чрез криптиране от край до край.
Това приложение е част от проект с отворен код и съществува благодарение на всички хора, които са допринесли за него. Посетете уебсайта, за да вземете изходния код.

View File

@@ -1 +0,0 @@
KDE Connect интегрира вашия смартфон и компютър

View File

@@ -1 +0,0 @@
KDE Connect

View File

@@ -1,21 +1,21 @@
KDE Connect bietet eine Reihe von Funktionen, um Ihre Arbeitsabläufe über verschiedene Geräte zu vereinigen:
KDE Connect provides a set of features to integrate your workflow across devices:
- Daten zwischen Ihren Geräten übertragen.
- Auf Daten auf Ihrem Telefon von Ihrem Computer aus zugreifen, ohne Kabel.
- Geteilte Zwischenablage: Kopieren und Einfügen zwischen Ihren Geräten.
- Erhalten Sie Benachrichtigungen über eingehende Anrufe und Nachrichten auf Ihren Computer.
- Virtuelles Touchpad: Verwenden Sie den Bildschirm Ihres Telefons als Touchpad für Ihren Computer.
- Abgleich der Benachrichtigungen: Greifen Sie über den Computer auf Ihre Telefonbenachrichtigungen zu und antworten Sie auf Nachrichten.
- Multimedia-Fernbedienung: Verwenden Sie Ihr Telefon als Fernbedienung für Linux-Medienspieler.
- WLAN-Verbindung: kein USB-Kabel oder Bluetooth erforderlich.
- Ende-zu-Ende-TLS-Verschlüsselung: Ihre Informationen sind sicher.
- Transfer files between your devices.
- Access files on your phone from your computer, without wires.
- Shared clipboard: copy and paste between your devices.
- Get notifications for incoming calls and messages on your computer.
- Virtual touchpad: Use your phone screen as your computer's touchpad.
- Notifications sync: Access your phone notifications from your computer and reply to messages.
- Multimedia remote control: Use your phone as a remote for Linux media players.
- WiFi connection: no USB wire or bluetooth needed.
- End-to-end TLS encryption: your information is safe.
Bitte beachten Sie, dass Sie KDE Connect auf Ihrem Computer installieren müssen, damit diese App funktioniert und halten Sie die Desktop-Version mit der Android-Version auf dem aktuellen Stand, um die neuesten Funktionen nutzen zu können.
Please note you will need to install KDE Connect on your computer for this app to work, and keep the desktop version up-to-date with the Android version for the latest features to work.
Informationen zu sensiblen Berechtigungen:
* Zugriffsberechtigung: Wird benötigt, um Eingaben zur Steuerung ihres Android-Telefons von einem anderen Gerät zu erhalten, wenn Sie die Ferneingabefunktion verwenden.
* Berechtigung den Standort im Hintergrund zu nutzen: Wird benötigt, um festzustellen, mit welchem WLAN-Netzwerk Sie verbunden sind, wenn Sie die Funktion „Vertrauenswürdige Netzwerke” verwenden.
Sensitive permissions information:
* Accessibility permission: Required to receive input from another device to control your Android phone, if you use the Remote Input feature.
* Background location permission: Required to know to which WiFi network you are connected to, if you use the Trusted Networks feature.
KDE Connect sendet niemals irgendwelche Informationen an KDE oder an Dritte. KDE Connect sendet Daten, unter Verwendung einer Ende-zu-Ende-Verschlüsselung, über das lokale Netzwerk direkt von einem Gerät zum anderen, niemals über das Internet.
KDE Connect never sends any information to KDE nor to any third party. KDE Connect sends data from one device to the other directly using the local network, never through the internet, and using end to end encryption.
Diese App ist Teil eines Open-Scource-Projekts und besteht Dank all der Menschen die dazu beigetragen haben. Besuchen Sie die Internetseite, um sich den Quelltext zu holen.
This app is part of an open source project and it exists thanks to all the people who contributed to it. Visit the website to grab the source code.

View File

@@ -1,11 +0,0 @@
1.31
* Allow sharing URLs to disconnected devices, to be opened when they become available later
* Show a notification to continue playing media on this device after stopping it on another device
* Display a shortened version of the pairing verification key
* Tweaks to the app theme
1.30
* Added Bluetooth support (beta)
* Improved device controls
* Added scroll sensitivity option to remote input
* Accessibility improvements

View File

@@ -1,10 +0,0 @@
1.32
* Rewrite the remote file browsing
* Add Direct Share targets
* Send album art from phone to PC
1.31
* Allow sharing URLs to disconnected devices, to be opened when they become available later
* Show a notification to continue playing media on this device after stopping it on another device
* Display a shortened version of the pairing verification key
* Tweaks to the app theme

View File

@@ -1,13 +0,0 @@
1.32.1
* Fixed a crash when opening the presentation remote
1.32
* Rewrite the remote file browsing
* Add Direct Share targets
* Send album art from phone to PC
1.31
* Allow sharing URLs to disconnected devices, to be opened when they become available later
* Show a notification to continue playing media on this device after stopping it on another device
* Display a shortened version of the pairing verification key
* Tweaks to the app theme

View File

@@ -1,11 +0,0 @@
1.32.2
* Handle expired certificates
* Support doubletap drag in remote mouse
1.32.1
* Fixed a crash when opening the presentation remote
1.32
* Rewrite the remote file browsing
* Add Direct Share targets
* Send album art from phone to PC

View File

@@ -1,14 +0,0 @@
1.32.3
* Fix trusted devices list
1.32.2
* Handle expired certificates
* Support doubletap drag in remote mouse
1.32.1
* Fixed a crash when opening the presentation remote
1.32
* Rewrite the remote file browsing
* Add Direct Share targets
* Send album art from phone to PC

View File

@@ -1,17 +0,0 @@
1.32.5
* Fixed crash in Android 14+
1.32.3
* Fix trusted devices list
1.32.2
* Handle expired certificates
* Support doubletap drag in remote mouse
1.32.1
* Fixed a crash when opening the presentation remote
1.32
* Rewrite the remote file browsing
* Add Direct Share targets
* Send album art from phone to PC

View File

@@ -1,16 +0,0 @@
1.32.7
* Fixed file transfers showing as failed when they succeeded
* Fixed plugin list not updating after granting permissions
1.32.5
* Fixed crash in Android 14+
1.32.3
* Fix trusted devices list
1.32.2
* Handle expired certificates
* Support doubletap drag in remote mouse
1.32.1
* Fixed a crash when opening the presentation remote

View File

@@ -1,14 +0,0 @@
1.32.10
* Fixed app showing behind the notifications bar in Android 15
* Fixed file transfers showing as failed when they succeeded
* Fixed plugin list not updating after granting permissions
1.32.3
* Fix trusted devices list
1.32.2
* Handle expired certificates
* Support doubletap drag in remote mouse
1.32.1
* Fixed a crash when opening the presentation remote

View File

@@ -1,6 +0,0 @@
1.33.0
* Add support for PeerTube links
* Allow filtering notifications from work profile
* Fix bug where devices would unpair without user interaction
* Verification key now changes every second (only if both devices support it)
* Fix crashes

View File

@@ -1,9 +0,0 @@
1.33.1
* Fix compatibility with GSConnect
1.33.0
* Add support for PeerTube links
* Allow filtering notifications from work profile
* Fix bug where devices would unpair without user interaction
* Verification key now changes every second (only if both devices support it)
* Fix crashes

View File

@@ -1,12 +0,0 @@
1.33.2
* Fix connection issues on some devices
1.33.1
* Fix compatibility with GSConnect
1.33.0
* Add support for PeerTube links
* Allow filtering notifications from work profile
* Fix bug where devices would unpair without user interaction
* Verification key now changes every second (only if both devices support it)
* Fix crashes

View File

@@ -1,16 +0,0 @@
1.33.3
* Fix more connection issues. Pairing again might be needed in some setups.
* Add a setting to export the application logs.
1.33.2
* Fix connection issues on some devices.
1.33.1
* Fix compatibility with GSConnect.
1.33.0
* Add support for PeerTube links.
* Allow filtering notifications from work profile.
* Fix bug where devices would unpair without user interaction.
* Verification key now changes every second (only if both devices support it).
* Fix crashes.

View File

@@ -1,16 +0,0 @@
1.33.4
* Extend offline URL sharing behavior to direct share targets.
* Improve paring screen.
1.33.3
* Fix connection issues. Pairing again might be needed in some cases.
* Add a setting to export the application logs.
1.33.1
* Fix compatibility with GSConnect.
1.33.0
* Add support for PeerTube links.
* Allow filtering notifications from work profile.
* Fix bug where devices would unpair without user interaction.
* Verification key now changes every second (if both devices support it).

View File

@@ -1,21 +1,14 @@
KDE Connect provides a set of features to integrate your workflow across devices:
- Transfer files between your devices.
- Access files on your phone from your computer, without wires.
- Shared clipboard: copy and paste between your devices.
- Get notifications for incoming calls and messages on your computer.
- Share files and URLs to your computer from any app.
- Get notifications for incoming calls and SMS messages on your PC.
- Virtual touchpad: Use your phone screen as your computer's touchpad.
- Notifications sync: Access your phone notifications from your computer and reply to messages.
- Notifications sync: Read your Android notifications from the desktop.
- Multimedia remote control: Use your phone as a remote for Linux media players.
- WiFi connection: no USB wire or bluetooth needed.
- End-to-end TLS encryption: your information is safe.
Please note you will need to install KDE Connect on your computer for this app to work, and keep the desktop version up-to-date with the Android version for the latest features to work.
Sensitive permissions information:
* Accessibility permission: Required to receive input from another device to control your Android phone, if you use the Remote Input feature.
* Background location permission: Required to know to which WiFi network you are connected to, if you use the Trusted Networks feature.
KDE Connect never sends any information to KDE nor to any third party. KDE Connect sends data from one device to the other directly using the local network, never through the internet, and using end to end encryption.
This app is part of an open source project and it exists thanks to all the people who contributed to it. Visit the website to grab the source code.

View File

@@ -6,7 +6,7 @@ KDEConnect fournit un ensemble de fonctionnalités pour intégrer votre flux de
- Apparition de notifications pour les appels et les messages entrants sur votre ordinateur.
- Pavé tactile virtuel : utilisation de l'écran de votre téléphone comme pavé tactile pour votre ordinateur.
- Synchronisation de vos notifications : accès à vos notifications téléphoniques depuis votre ordinateur et réponses aux messages.
- Télé-commande multimédia : utilisation de votre téléphone comme télécommande pour les lecteurs de média sous Linux.
- Télé-commande multimédia : utilisation de votre téléphone comme télécommande pour les lecteurs de médias sous Linux.
- Connexion au Wifi : aucun connexion USB ou Bluetooth nécessaire.
- Chiffrement « TLS » de bout en bout : vos informations sont en sécurité.
@@ -18,4 +18,4 @@ Informations sur les permissions sensibles :
KDEConnect n'envoie jamais d'informations à KDE ni à aucun tiers. KDEConnect envoie des données d'un périphérique à un autre à l'aide du réseau local, mais jamais par Internet et en utilisant le chiffrement de bout en bout.
Cette application fait partie d'un projet « Open source ». Il existe grâce à toutes les personnes qui y ont contribué. Veuillez visiter le site Internet pour accéder au code source.
Cette application fait partie d'un projet « Open source ». Il existe grâce à toutes les personnes qui y ont contribué.Visitez le site Internet pour accéder au code source.

View File

@@ -1,21 +0,0 @@
KDE Connect tilbyr eit sett funksjonar som lèt deg enkelt arbeida på tvers av einingar:
Overfør filer mellom einingane
Få trådlaus tilgang til filer på telefonen frå datamaskina
Del utklippsbilete: kopier og lim inn mellom einingane
Vert varsla på datamaskina om innkommande samtalar og tekstmeldingar
Virtuell styreplate: bruk telefon­skjermen som styreplate for datamaskina
Synkronisering av varslingar: få tilgang til telefon­varslingar frå datamaskina og svar på meldingar
Fjernkontroll av medieavspeling: bruk telefonen til å styra Linux-baserte mediespelarar
Wi-Fi-tilkopling: du treng ikkje USB- eller Bluetooth-tilkopling
Ende-til-ende-kryptering: informasjonen din er trygg
Merk at du må installera KDE Connect på datamaskina for å kunna bruka appen. Hugs å halda PC-versjonen oppdatert med Android-versjonen for tilgang til dei nyaste funksjonane.
Informasjon om sensitive løyve:
Tilgjenge-løyve: Trengst for å kunna ta imot tastetrykk frå PC for å styra Android-eininga om du brukar funksjonen «Fjernstyring»
Bakgrunns­løyve til å sjå geografiske posisjon: Trengst for å veta kva Wi-Fi-nettverk du er tilkopla om du brukar funksjonen «Tiltrudde nettverk»
KDE Connect sender aldri informasjon til KDE eller nokon tredjepart. Programmet sender data direkte mellom dei to einingane via lokalnettet, aldri via Internett og alltid med ende-til-ende-kryptering.
Appen er ein del av eit fri programvare-prosjekt og er blitt til takka vera mange bidragsytarar. Gå til heimesida for å sjå kjeldekoden.

View File

@@ -1 +0,0 @@
KDE Connect koplar telefonen din saman med datamaskina

View File

@@ -1 +0,0 @@
KDE Connect

View File

@@ -1,21 +1,20 @@
O KDE Connect fornece um conjunto de recursos para integrar seu fluxo de trabalho entre dispositivos:
- Transfira arquivos entre seus dispositivos.
- Acesse arquivos do seu computador no seu telefone, sem fios.
- Área de transferência compartilhada: copie e cole entre seus dispositivos.
- Compartilhe arquivos e URLs em seu computador a partir de qualquer app.
- Receba notificações de chamadas recebidas e mensagens SMS no seu PC.
- Touchpad virtual: use a tela do telefone como touchpad do computador.
- Sincronização de notificações: acesse as notificações do seu telefone no seu computador e responda as mensagens.
- Controle remoto multimídia: use seu telefone como controle remoto para reprodutores de mídia no Linux.
- Sincronização de notificações: leia as notificações do seu Android na área de trabalho.
- Controle remoto multimídia: use seu telefone como controle remoto para reprodutores de mídia Linux.
- Conexão Wi-Fi: sem necessidade de cabos USB ou bluetooth.
- Criptografia TLS de ponta a ponta: suas informações estão seguras.
Observe que você precisará instalar o KDE Connect no seu computador para que este aplicativo funcione e mantenha a versão para desktop atualizada com a versão do Android para que os recursos mais recentes funcionem.
Informações sobre permissões sensíveis:
Informações a respeito de permissões especiais :
* Permissão de acessibilidade: necessária para receber entrada de outro dispositivo para controlar seu telefone Android, se você usar o recurso de entrada remota.
* Permissão de localização em segundo plano: necessária para saber a qual rede Wi-Fi você está conectado, se você usar o recurso de redes confiáveis.
O KDE Connect nunca envia nenhuma informação ao KDE ou a terceiros. O KDE Connect envia dados de um dispositivo para outro diretamente usando a rede local, nunca pela Internet e usando criptografia de ponta a ponta.
O KDE Connect nunca envia nenhuma informação ao KDE nem a terceiros. O KDE Connect envia dados de um dispositivo para outro diretamente usando a rede local, nunca pela Internet e usando criptografia de ponta a ponta.
Este aplicativo faz parte de um projeto de código aberto e existe graças a todas as pessoas que contribuíram para ele. Visite o site para obter o código-fonte.

View File

@@ -1,20 +0,0 @@
KDE Connect предоставляет набор функций для интеграции рабочего процесса между устройствами:
- Передача файлов между устройствами.
- Доступ к файлам на телефоне с компьютера без проводов.
- Общий буфер обмена: копирование и вставка между устройствами.
- Уведомления о входящих вызовах и сообщениях на компьютере.
- Виртуальный тачпад: использование экрана телефона в качестве тачпада для компьютера.
- Синхронизация уведомлений: доступ к уведомлениям телефона с компьютера и возможность отвечать на сообщения.
- Дистанционное управление мультимедиа: использование телефона как пульта для медиаплееров в Linux.
- Подключение по Wi-Fi: без проводов USB или Bluetooth.
- Сквозное шифрование TLS: безопасность передаваемой информации.
Обратите внимание, что для работы приложения требуется установка KDE Connect на компьютере. Для поддержки всех функций, версия на компьютере должна быть актуальной и соответствовать версии на Android .
Информация о чувствительных разрешениях:
- Разрешение «Специальные возможности»: необходимо для получения ввода с другого устройства при использовании функции дистанционного ввода.
- Разрешение «Фоновое определение местоположения»: необходимо для определения текущей Wi-Fi-сети при использовании функции «Доверенные сети».
KDE Connect никогда не отправляет данные ни в KDE, ни третьим лицам. Передача данных осуществляется напрямую между устройствами через локальную сеть, без использования интернета, с применением сквозного шифрования.
Приложение является частью проекта с открытым исходным кодом и существует благодаря сообществу участников. Исходный код доступен на официальном сайте.

View File

@@ -1 +0,0 @@
KDE Connect позволяет соединить смартфон и компьютер

View File

@@ -1 +0,0 @@
KDE Connect

View File

@@ -1,4 +1,4 @@
KDE Connect 提供許多功能讓您整合您跨裝置的作業流程:
KDE 連線提供許多功能讓您整合您跨裝置的作業流程:
- 在您的裝置之間傳輸檔案。
- 從您的電腦無線存取您的手機上的檔案。
@@ -10,12 +10,12 @@ KDE Connect 提供許多功能讓您整合您跨裝置的作業流程:
- WiFi 連線:不需要 USB 線或是藍牙連線。
- 點對點 TLS 加密:您的資訊是安全的。
請注意,這個應用程式需要您在電腦上也安裝 KDE Connect 才能正常運作;最新功能也會需要電腦的版本跟 Android 的版本一樣新才能正常運作。
請注意,這個應用程式需要您在電腦上也安裝 KDE 連線才能正常運作;最新功能也會需要電腦的版本跟 Android 的版本一樣新才能正常運作。
敏感權限資訊:
* 協助工具權限:如果您使用「遠端輸入」功能,需要它來從另一個裝置接收輸入後控制您的 Android 裝置。
* 背景位置權限:如果您使用「信任網路」功能,需要它來得知您目前連線的 WiFi 網路。
KDE Connect 不會傳送任何資訊給 KDE 或任何第三方。KDE Connect 利用本地網路直接從一個裝置傳送資料到另一個裝置,不會透過網際網路,並且同時使用點對點加密。
KDE 連線不會傳送任何資訊給 KDE 或任何第三方。KDE 連線利用本地網路直接從一個裝置傳送資料到另一個裝置,不會透過網際網路,並且同時使用點對點加密。
這個應用程式是一個開源專案的一部分,它的存在歸功於所有貢獻者。可造訪網站取得原始碼。

View File

@@ -1 +1 @@
KDE Connect 整合了您的智慧型手機與電腦
KDE 連線整合了您的智慧型手機與電腦

View File

@@ -1,7 +1,3 @@
android.enableJetifier=false
android.useAndroidX=true
org.gradle.jvmargs=-Xmx4096m
org.gradle.caching=true
org.gradle.parallel=true
# License report doesn't allow us to enable configuration caching
#org.gradle.configuration-cache=true

View File

@@ -1,45 +1,47 @@
[versions]
activityCompose = "1.10.1"
androidDesugarJdkLibs = "2.1.5"
androidGradlePlugin = "8.10.1"
activityCompose = "1.8.2"
androidDesugarJdkLibs = "2.0.4"
androidGradlePlugin = "8.4.0"
androidSmsmms = "kdeconnect-1-21-0"
appcompat = "1.7.0"
appcompat = "1.6.1"
bcpkixJdk15on = "1.70"
classindexksp = "1.2"
commonsCollections4 = "4.5.0"
commonsIo = "2.19.0"
commonsLang3 = "3.17.0"
constraintlayoutCompose = "1.1.1"
coreKtx = "1.16.0"
dependencyLicenseReport = "2.9"
classindex = "3.13"
commonsCollections4 = "4.4"
commonsIo = "2.16.1"
commonsLang3 = "3.14.0"
constraintlayoutCompose = "1.0.1"
compose-compiler = "1.5.11"
coreKtx = "1.12.0"
disklrucache = "2.0.2"
documentfile = "1.1.0"
gridlayout = "1.1.0"
jsonassert = "1.5.3"
documentfile = "1.0.1"
gradle = "8.4.0"
gridlayout = "1.0.0"
jsonassert = "1.5.1"
junit = "4.13.2"
kotlin = "2.1.21"
kspPlugin = "2.1.21-2.0.1"
kotlinxCoroutinesCore = "1.10.2"
dependencyLicenseReport = "1.16"
kotlin = "1.9.23"
kotlinxCoroutinesCore = "1.8.0"
lifecycleExtensions = "2.2.0"
lifecycleRuntimeKtx = "2.9.0"
lifecycleRuntimeKtx = "2.7.0"
logger = "1.0.3"
material = "1.12.0"
material3 = "1.3.2"
material = "1.11.0"
material3 = "1.2.1"
media = "1.7.0"
minaCore = "2.2.4"
mockitoCore = "5.18.0"
minaCore = "2.0.19"
mockitoCore = "3.12.4"
powermockModuleJunit4 = "2.0.9"
preferenceKtx = "1.2.1"
reactiveStreams = "1.0.4"
recyclerview = "1.4.0"
recyclerview = "1.3.2"
rxjava = "2.2.21"
sl4j = "2.0.13"
sshdCore = "2.15.0"
sshdCore = "0.14.0"
swiperefreshlayout = "1.1.0"
uiToolingPreview = "1.8.2"
uiToolingPreview = "1.6.5"
univocityParsers = "2.9.1"
sl4j = "2.0.4"
[libraries]
android-desugarJdkLibsNio = { module = "com.android.tools:desugar_jdk_libs_nio", version.ref = "androidDesugarJdkLibs" }
android-desugarJdkLibs = { module = "com.android.tools:desugar_jdk_libs", version.ref = "androidDesugarJdkLibs" }
android-smsmms = { module = "org.kde.invent.sredman:android-smsmms", version.ref = "androidSmsmms" }
androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "activityCompose" }
androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "appcompat" }
@@ -59,14 +61,14 @@ androidx-preference-ktx = { module = "androidx.preference:preference-ktx", versi
androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "recyclerview" }
androidx-swiperefreshlayout = { module = "androidx.swiperefreshlayout:swiperefreshlayout", version.ref = "swiperefreshlayout" }
bcpkix-jdk15on = { module = "org.bouncycastle:bcpkix-jdk15on", version.ref = "bcpkixJdk15on" }
classindexksp = { module = "com.github.albertvaka:classindexksp", version.ref = "classindexksp" }
classindex = { module = "org.atteo.classindex:classindex", version.ref = "classindex" }
commons-collections4 = { module = "org.apache.commons:commons-collections4", version.ref = "commonsCollections4" }
commons-io = { module = "commons-io:commons-io", version.ref = "commonsIo" }
commons-lang3 = { module = "org.apache.commons:commons-lang3", version.ref = "commonsLang3" }
disklrucache = { module = "com.jakewharton:disklrucache", version.ref = "disklrucache" }
android-gradlePlugin = { module = "com.android.tools.build:gradle", version.ref = "gradle" }
jsonassert = { module = "org.skyscreamer:jsonassert", version.ref = "jsonassert" }
junit = { module = "junit:junit", version.ref = "junit" }
android-gradlePlugin = { module = "com.android.tools.build:gradle", version.ref = "androidGradlePlugin" }
kotlin-gradlePlugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
kotlin-stdlib-jdk8 = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" }
kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "kotlinxCoroutinesCore" }
@@ -75,10 +77,10 @@ logger = { module = "com.klinkerapps:logger", version.ref = "logger" }
material = { module = "com.google.android.material:material", version.ref = "material" }
apache-mina-core = { module = "org.apache.mina:mina-core", version.ref = "minaCore" }
apache-sshd-core = { module = "org.apache.sshd:sshd-core", version.ref = "sshdCore" }
apache-sshd-sftp = { module = "org.apache.sshd:sshd-sftp", version.ref = "sshdCore" }
apache-sshd-scp = { module = "org.apache.sshd:sshd-scp", version.ref = "sshdCore" }
apache-sshd-mina = { module = "org.apache.sshd:sshd-mina", version.ref = "sshdCore" }
mockito-core = { module = "org.mockito:mockito-core", version.ref = "mockitoCore" }
powermock-api-mockito2 = { module = "org.powermock:powermock-api-mockito2", version.ref = "powermockModuleJunit4" }
powermock-core = { module = "org.powermock:powermock-core", version.ref = "powermockModuleJunit4" }
powermock-module-junit4 = { module = "org.powermock:powermock-module-junit4", version.ref = "powermockModuleJunit4" }
reactive-streams = { module = "org.reactivestreams:reactive-streams", version.ref = "reactiveStreams" }
rxjava = { module = "io.reactivex.rxjava2:rxjava", version.ref = "rxjava" }
univocity-parsers = { module = "com.univocity:univocity-parsers", version.ref = "univocityParsers" }
@@ -86,7 +88,6 @@ slf4j-handroid = { group = "com.gitlab.mvysny.slf4j", name = "slf4j-handroid", v
[plugins]
android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
ksp = { id = "com.google.devtools.ksp", version.ref = "kspPlugin" }
kotlin-android = { id ="org.jetbrains.kotlin.android", version.ref = "kotlin" }
kotlin-kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" }
dependencyLicenseReport = { id = "com.github.jk1.dependency-license-report", version.ref = "dependencyLicenseReport" }

Binary file not shown.

View File

@@ -1,8 +1,6 @@
#Sat Sep 28 01:39:16 AM EDT 2024
#Sat Mar 02 00:26:28 CET 2024
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

284
gradlew vendored
View File

@@ -1,7 +1,7 @@
#!/bin/sh
#!/usr/bin/env sh
#
# Copyright © 2015-2021 the original authors.
# Copyright 2015 the original author or authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -17,111 +17,78 @@
#
##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##
## Gradle start up script for UN*X
##
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
MAX_FD="maximum"
warn () {
echo "$*"
} >&2
}
die () {
echo
echo "$*"
echo
exit 1
} >&2
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD=$JAVA_HOME/jre/sh/java
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD=$JAVA_HOME/bin/java
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
@@ -130,120 +97,87 @@ Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD=java
if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=`expr $i + 1`
done
case $i in
0) set -- ;;
1) set -- "$args0" ;;
2) set -- "$args0" "$args1" ;;
3) set -- "$args0" "$args1" "$args2" ;;
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=`save "$@"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
die "xargs is not available"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
exec "$JAVACMD" "$@"

55
gradlew.bat vendored
View File

@@ -14,7 +14,7 @@
@rem limitations under the License.
@rem
@if "%DEBUG%"=="" @echo off
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@@ -25,8 +25,7 @@
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@@ -41,13 +40,13 @@ if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
if "%ERRORLEVEL%" == "0" goto init
echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
@@ -55,36 +54,48 @@ goto fail
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
if exist "%JAVA_EXE%" goto init
echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windows variants
if not "%OS%" == "Windows_NT" goto win9xME_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal

View File

@@ -1,79 +0,0 @@
# SPDX-FileCopyrightText: 2025 Zayed Al-Saidi <zayed.alsaidi@gmail.com>
#. extracted from ./metadata/android/en-US/full_description.txt
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-05 12:31+0000\n"
"PO-Revision-Date: 2025-05-31 17:29+0400\n"
"Last-Translator: Zayed Al-Saidi <zayed.alsaidi@gmail.com>\n"
"Language-Team: ar\n"
"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
"X-Generator: Lokalize 23.08.5\n"
msgid ""
"KDE Connect provides a set of features to integrate your workflow across "
"devices:\n"
"\n"
"- Transfer files between your devices.\n"
"- Access files on your phone from your computer, without wires.\n"
"- Shared clipboard: copy and paste between your devices.\n"
"- Get notifications for incoming calls and messages on your computer.\n"
"- Virtual touchpad: Use your phone screen as your computer's touchpad.\n"
"- Notifications sync: Access your phone notifications from your computer and "
"reply to messages.\n"
"- Multimedia remote control: Use your phone as a remote for Linux media "
"players.\n"
"- WiFi connection: no USB wire or bluetooth needed.\n"
"- End-to-end TLS encryption: your information is safe.\n"
"\n"
"Please note you will need to install KDE Connect on your computer for this "
"app to work, and keep the desktop version up-to-date with the Android "
"version for the latest features to work.\n"
"\n"
"Sensitive permissions information:\n"
"* Accessibility permission: Required to receive input from another device to "
"control your Android phone, if you use the Remote Input feature.\n"
"* Background location permission: Required to know to which WiFi network you "
"are connected to, if you use the Trusted Networks feature.\n"
"\n"
"KDE Connect never sends any information to KDE nor to any third party. KDE "
"Connect sends data from one device to the other directly using the local "
"network, never through the internet, and using end to end encryption.\n"
"\n"
"This app is part of an open source project and it exists thanks to all the "
"people who contributed to it. Visit the website to grab the source code.\n"
msgstr ""
"يوفر جسر كِيدِي مجموعة من الميزات لدمج سير عملك عبر الأجهزة:\n"
"\n"
"- نقل الملفات بين أجهزتك.\n"
"- الوصول إلى الملفات الموجودة على هاتفك من حاسوبك، دون أسلاك.\n"
"- الحافظة المشتركة: النسخ واللصق بين أجهزتك.\n"
"- الحصول على إشعارات للمكالمات والرسائل الواردة على حاسوبك.\n"
"- لوحة اللمس الافتراضية: استخدم شاشة هاتفك كلوحة لمس لحاسوبك.\n"
"- مزامنة الإشعارات: الوصول إلى إشعارات هاتفك من حاسوبك والرد على الرسائل.\n"
"- التحكم عن بعد في الوسائط المتعددة: استخدم هاتفك كجهاز تحكم عن بعد لمشغلات "
"الوسائط لينكس.\n"
"- اتصال واي فاي: لا حاجة إلى سلك USB أو بلوتوث.\n"
"- تشفير TLS من البداية إلى النهاية: معلوماتك آمنة.\n"
"\n"
"يرجى ملاحظة أنك ستحتاج إلى تثبيت جسر كِيدِي على حاسوبك حتى يعمل هذا التطبيق، "
"والحفاظ على تحديث إصدار سطح المكتب بإصدار أندوريد حتى تعمل أحدث الميزات.\n"
"\n"
"معلومات الأذونات الحساسة:\n"
"* إذن إمكانية الوصول: مطلوب لتلقي إدخال من جهاز آخر للتحكم في هاتف أندرويد "
"خاص بك، إذا كنت تستخدم ميزة الإدخال عن بُعد.\n"
"* إذن تحديد الموقع في الخلفية: مطلوب لمعرفة شبكة واي فاي التي تتصل بها، إذا "
"كنت تستخدم ميزة الشبكات الموثوقة.\n"
"\n"
"لا يرسل جسر كِيدِي أي معلومات إلى كيدي أو إلى أي طرف ثالث. يرسل جسر كِيدِي "
"البيانات من جهاز إلى آخر مباشرةً باستخدام الشبكة المحلية، وليس عبر الإنترنت، "
"وباستخدام التشفير من البداية إلى النهاية.\n"
"\n"
"هذا التطبيق جزء من مشروع مفتوح المصدر وهو موجود بفضل جميع الأشخاص الذين "
"ساهموا فيه. قم بزيارة الموقع الإلكتروني للحصول على الشفرة المصدرية.\n"

View File

@@ -1,20 +0,0 @@
# SPDX-FileCopyrightText: 2025 Zayed Al-Saidi <zayed.alsaidi@gmail.com>
#. extracted from ./metadata/android/en-US/short_description.txt
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-05 12:31+0000\n"
"PO-Revision-Date: 2025-05-31 17:30+0400\n"
"Last-Translator: Zayed Al-Saidi <zayed.alsaidi@gmail.com>\n"
"Language-Team: ar\n"
"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
"X-Generator: Lokalize 23.08.5\n"
msgid "KDE Connect integrates your smartphone and computer"
msgstr "يدمج جسر كِيدِي هاتفك الذكي مع حاسوبك"

View File

@@ -1,85 +0,0 @@
# SPDX-FileCopyrightText: 2024 Mincho Kondarev <mkondarev@yahoo.de>
#. extracted from ./metadata/android/en-US/full_description.txt
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-05 12:31+0000\n"
"PO-Revision-Date: 2024-07-28 18:31+0200\n"
"Last-Translator: Mincho Kondarev <mkondarev@yahoo.de>\n"
"Language-Team: Bulgarian <kde-i18n-doc@kde.org>\n"
"Language: bg\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 24.07.70\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
msgid ""
"KDE Connect provides a set of features to integrate your workflow across "
"devices:\n"
"\n"
"- Transfer files between your devices.\n"
"- Access files on your phone from your computer, without wires.\n"
"- Shared clipboard: copy and paste between your devices.\n"
"- Get notifications for incoming calls and messages on your computer.\n"
"- Virtual touchpad: Use your phone screen as your computer's touchpad.\n"
"- Notifications sync: Access your phone notifications from your computer and "
"reply to messages.\n"
"- Multimedia remote control: Use your phone as a remote for Linux media "
"players.\n"
"- WiFi connection: no USB wire or bluetooth needed.\n"
"- End-to-end TLS encryption: your information is safe.\n"
"\n"
"Please note you will need to install KDE Connect on your computer for this "
"app to work, and keep the desktop version up-to-date with the Android "
"version for the latest features to work.\n"
"\n"
"Sensitive permissions information:\n"
"* Accessibility permission: Required to receive input from another device to "
"control your Android phone, if you use the Remote Input feature.\n"
"* Background location permission: Required to know to which WiFi network you "
"are connected to, if you use the Trusted Networks feature.\n"
"\n"
"KDE Connect never sends any information to KDE nor to any third party. KDE "
"Connect sends data from one device to the other directly using the local "
"network, never through the internet, and using end to end encryption.\n"
"\n"
"This app is part of an open source project and it exists thanks to all the "
"people who contributed to it. Visit the website to grab the source code.\n"
msgstr ""
"KDE Connect предоставя набор от функции за интегриране на вашия работен "
"процес на различни устройства:\n"
"\n"
"- Прехвърляйте файлове между вашите устройства.\n"
"- Осъществявайте достъп до файлове на телефона си от компютъра си, без "
"кабели.\n"
"- Споделен клипборд: копирайте и поставяйте между вашите устройства.\n"
"- Получавайте известия за входящи обаждания и съобщения на вашия компютър.\n"
"- Виртуален тъчпад: Използвайте екрана на телефона си като тъчпад на "
"компютъра.\n"
"- Синхронизиране на известия: Достъп до известията на телефона ви от вашия "
"компютър и отговаряне на съобщения.\n"
"- Мултимедийно дистанционно управление: Използвайте телефона си като "
"дистанционно за Linux медийни плейъри.\n"
"- WiFi връзка: не е необходим USB кабел или bluetooth.\n"
"- TLS криптиране от край до край: информацията ви е в безопасност.\n"
"\n"
"Моля, имайте предвид, че ще трябва да инсталирате KDE Connect на вашия "
"компютър, за да работи това приложение, и поддържайте версията за настолен "
"компютър актуална с версията за Android, за да работят най-новите функции.\n"
"\n"
"Поверителна информация за разрешения:\n"
"* Разрешение за достъпност: Изисква се за получаване на вход от друго "
"устройство за управление на вашия телефон с Android, ако използвате "
"функцията за отдалечено въвеждане.\n"
"* Разрешение за местоположение във фонов режим: Изисква се, за да знаете към "
"коя WiFi мрежа сте свързани, ако използвате функцията Trusted Networks.\n"
"\n"
"KDE Connect никога не изпраща никаква информация на KDE или на трета страна. "
"KDE Connect изпраща данни от едно устройство на друго директно чрез "
"локалната мрежа, никога през интернет, и чрез криптиране от край до край.\n"
"\n"
"Това приложение е част от проект с отворен код и съществува благодарение на "
"всички хора, които са допринесли за него. Посетете уебсайта, за да вземете "
"изходния код.\n"

View File

@@ -1,19 +0,0 @@
# SPDX-FileCopyrightText: 2024 Mincho Kondarev <mkondarev@yahoo.de>
#. extracted from ./metadata/android/en-US/short_description.txt
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-05 12:31+0000\n"
"PO-Revision-Date: 2024-07-28 18:32+0200\n"
"Last-Translator: Mincho Kondarev <mkondarev@yahoo.de>\n"
"Language-Team: Bulgarian <kde-i18n-doc@kde.org>\n"
"Language: bg\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 24.07.70\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
msgid "KDE Connect integrates your smartphone and computer"
msgstr "KDE Connect интегрира вашия смартфон и компютър"

View File

@@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2024 Vit Pelcak <vit@pelcak.org>
# SPDX-FileCopyrightText: 2024 Vit Pelcak <vpelcak@suse.cz>
#. extracted from ./metadata/android/en-US/short_description.txt
msgid ""
msgstr ""

View File

@@ -1,20 +1,19 @@
# Frederik Schwarzer <schwarzer@kde.org>, 2023.
# tobi <onewayme001@posteo.de>, 2024.
#. extracted from ./metadata/android/en-US/full_description.txt
msgid ""
msgstr ""
"Project-Id-Version: kdeconnect-android-store-full\n"
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-05 12:31+0000\n"
"PO-Revision-Date: 2024-10-02 20:37+0200\n"
"Last-Translator: tobi <onewayme001@posteo.de>\n"
"PO-Revision-Date: 2023-06-07 19:50+0200\n"
"Last-Translator: Frederik Schwarzer <schwarzer@kde.org>\n"
"Language-Team: German <kde-i18n-de@kde.org>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 21.12.3\n"
"X-Generator: Lokalize 23.07.70\n"
msgid ""
"KDE Connect provides a set of features to integrate your workflow across "
@@ -49,41 +48,3 @@ msgid ""
"This app is part of an open source project and it exists thanks to all the "
"people who contributed to it. Visit the website to grab the source code.\n"
msgstr ""
"KDE Connect bietet eine Reihe von Funktionen, um Ihre Arbeitsabläufe über "
"verschiedene Geräte zu vereinigen:\n"
"\n"
"- Daten zwischen Ihren Geräten übertragen.\n"
"- Auf Daten auf Ihrem Telefon von Ihrem Computer aus zugreifen, ohne Kabel.\n"
"- Geteilte Zwischenablage: Kopieren und Einfügen zwischen Ihren Geräten.\n"
"- Erhalten Sie Benachrichtigungen über eingehende Anrufe und Nachrichten auf "
"Ihren Computer.\n"
"- Virtuelles Touchpad: Verwenden Sie den Bildschirm Ihres Telefons als "
"Touchpad für Ihren Computer.\n"
"- Abgleich der Benachrichtigungen: Greifen Sie über den Computer auf Ihre "
"Telefonbenachrichtigungen zu und antworten Sie auf Nachrichten.\n"
"- Multimedia-Fernbedienung: Verwenden Sie Ihr Telefon als Fernbedienung für "
"Linux-Medienspieler.\n"
"- WLAN-Verbindung: kein USB-Kabel oder Bluetooth erforderlich.\n"
"- Ende-zu-Ende-TLS-Verschlüsselung: Ihre Informationen sind sicher.\n"
"\n"
"Bitte beachten Sie, dass Sie KDE Connect auf Ihrem Computer installieren "
"müssen, damit diese App funktioniert und halten Sie die Desktop-Version mit "
"der Android-Version auf dem aktuellen Stand, um die neuesten Funktionen "
"nutzen zu können.\n"
"\n"
"Informationen zu sensiblen Berechtigungen:\n"
"* Zugriffsberechtigung: Wird benötigt, um Eingaben zur Steuerung ihres "
"Android-Telefons von einem anderen Gerät zu erhalten, wenn Sie die "
"Ferneingabefunktion verwenden. \n"
"* Berechtigung den Standort im Hintergrund zu nutzen: Wird benötigt, um "
"festzustellen, mit welchem WLAN-Netzwerk Sie verbunden sind, wenn Sie die "
"Funktion „Vertrauenswürdige Netzwerke” verwenden.\n"
"\n"
"KDE Connect sendet niemals irgendwelche Informationen an KDE oder an Dritte. "
"KDE Connect sendet Daten, unter Verwendung einer Ende-zu-Ende-"
"Verschlüsselung, über das lokale Netzwerk direkt von einem Gerät zum "
"anderen, niemals über das Internet.\n"
"\n"
"Diese App ist Teil eines Open-Scource-Projekts und besteht Dank all der "
"Menschen die dazu beigetragen haben. Besuchen Sie die Internetseite, um sich "
"den Quelltext zu holen.\n"

View File

@@ -2,7 +2,7 @@
#. extracted from ./metadata/android/en-US/short_description.txt
msgid ""
msgstr ""
"Project-Id-Version: kdeconnect-android-store-short\n"
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-05 12:31+0000\n"
"PO-Revision-Date: 2023-06-07 19:50+0200\n"

View File

@@ -1,20 +1,42 @@
# SPDX-FileCopyrightText: 2023, 2024 Steve Allewell <steve.allewell@gmail.com>
# Steve Allewell <steve.allewell@gmail.com>, 2023.
#. extracted from ./metadata/android/en-US/full_description.txt
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-05 12:31+0000\n"
"PO-Revision-Date: 2024-05-24 19:25+0100\n"
"PO-Revision-Date: 2023-06-17 12:11+0100\n"
"Last-Translator: Steve Allewell <steve.allewell@gmail.com>\n"
"Language-Team: British English\n"
"Language: en_GB\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 24.02.2\n"
"X-Generator: Lokalize 23.03.70\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#, fuzzy
#| msgid ""
#| "KDE Connect provides a set of features to integrate your workflow across "
#| "devices:\n"
#| "\n"
#| "- Shared clipboard: copy and paste between your devices.\n"
#| "- Share files and URLs to your computer from any app.\n"
#| "- Get notifications for incoming calls and SMS messages on your PC.\n"
#| "- Virtual touchpad: Use your phone screen as your computer's touchpad.\n"
#| "- Notifications sync: Read your Android notifications from the desktop.\n"
#| "- Multimedia remote control: Use your phone as a remote for Linux media "
#| "players.\n"
#| "- WiFi connection: no USB wire or bluetooth needed.\n"
#| "- End-to-end TLS encryption: your information is safe.\n"
#| "\n"
#| "Please note you will need to install KDE Connect on your computer for "
#| "this app to work, and keep the desktop version up-to-date with the "
#| "Android version for the latest features to work.\n"
#| "\n"
#| "This app is part of an open source project and it exists thanks to all "
#| "the people who contributed to it. Visit the website to grab the source "
#| "code."
msgid ""
"KDE Connect provides a set of features to integrate your workflow across "
"devices:\n"
@@ -51,13 +73,11 @@ msgstr ""
"KDE Connect provides a set of features to integrate your workflow across "
"devices:\n"
"\n"
"- Transfer files between your devices.\n"
"- Access files on your phone from your computer, without wires.\n"
"- Shared clipboard: copy and paste between your devices.\n"
"- Get notifications for incoming calls and messages on your computer.\n"
"- Share files and URLs to your computer from any app.\n"
"- Get notifications for incoming calls and SMS messages on your PC.\n"
"- Virtual touchpad: Use your phone screen as your computer's touchpad.\n"
"- Notifications sync: Access your phone notifications from your computer and "
"reply to messages.\n"
"- Notifications sync: Read your Android notifications from the desktop.\n"
"- Multimedia remote control: Use your phone as a remote for Linux media "
"players.\n"
"- WiFi connection: no USB wire or bluetooth needed.\n"
@@ -67,15 +87,5 @@ msgstr ""
"app to work, and keep the desktop version up-to-date with the Android "
"version for the latest features to work.\n"
"\n"
"Sensitive permissions information:\n"
"* Accessibility permission: Required to receive input from another device to "
"control your Android phone, if you use the Remote Input feature.\n"
"* Background location permission: Required to know to which WiFi network you "
"are connected to, if you use the Trusted Networks feature.\n"
"\n"
"KDE Connect never sends any information to KDE nor to any third party. KDE "
"Connect sends data from one device to the other directly using the local "
"network, never through the internet, and using end to end encryption.\n"
"\n"
"This app is part of an open source project and it exists thanks to all the "
"people who contributed to it. Visit the website to grab the source code.\n"
"people who contributed to it. Visit the website to grab the source code."

View File

@@ -1,15 +1,11 @@
# Spanish translations for kdeconnect-android-store-full.po package.
# Copyright (C) 2023-2025 This file is copyright:
# This file is distributed under the same license as the kdeconnect-android package.
#
# SPDX-FileCopyrightText: 2023, 2025 Víctor Rodrigo Córdoba <vrcordoba@gmail.com>
# Víctor Rodrigo Córdoba <vrcordoba@gmail.com>, 2023.
#. extracted from ./metadata/android/en-US/full_description.txt
msgid ""
msgstr ""
"Project-Id-Version: kdeconnect-android-store-full\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-05 12:31+0000\n"
"PO-Revision-Date: 2025-06-09 02:36+0100\n"
"PO-Revision-Date: 2023-09-30 18:49+0200\n"
"Last-Translator: Víctor Rodrigo Córdoba <vrcordoba@gmail.com>\n"
"Language-Team: Spanish <kde-l10n-es@kde.org>\n"
"Language: es\n"

View File

@@ -1,15 +1,11 @@
# Spanish translations for kdeconnect-android-store-short.po package.
# Copyright (C) 2023-2025 This file is copyright:
# This file is distributed under the same license as the kdeconnect-android package.
#
# SPDX-FileCopyrightText: 2023, 2025 Víctor Rodrigo Córdoba <vrcordoba@gmail.com>
# Víctor Rodrigo Córdoba <vrcordoba@gmail.com>, 2023.
#. extracted from ./metadata/android/en-US/short_description.txt
msgid ""
msgstr ""
"Project-Id-Version: kdeconnect-android-store-short\n"
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-05 12:31+0000\n"
"PO-Revision-Date: 2025-06-09 02:36+0100\n"
"PO-Revision-Date: 2023-06-10 17:26+0200\n"
"Last-Translator: Víctor Rodrigo Córdoba <vrcordoba@gmail.com>\n"
"Language-Team: Spanish <kde-l10n-es@kde.org>\n"
"Language: es\n"

View File

@@ -13,6 +13,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 22.12.3\n"
msgid ""
"KDE Connect provides a set of features to integrate your workflow across "

View File

@@ -13,6 +13,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 22.12.3\n"
msgid "KDE Connect integrates your smartphone and computer"
msgstr "KDE Connect eheyttää älypuhelimen ja tietokoneen"

View File

@@ -1,20 +1,20 @@
#
# SPDX-FileCopyrightText: 2023, 2024 Xavier Besnard <xavier.besnard@kde.org>
# SPDX-FileCopyrightText: 2023 Xavier Besnard <xavier.besnard@kde.org>
#. extracted from ./metadata/android/en-US/full_description.txt
msgid ""
msgstr ""
"Project-Id-Version: kdeconnect-android-store-full\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-05 12:31+0000\n"
"PO-Revision-Date: 2024-08-09 22:07+0200\n"
"Last-Translator: Xavier Besnard <xavier.besnard@kde.org>\n"
"Language-Team: French <French <kde-francophone@kde.org>>\n"
"PO-Revision-Date: 2023-09-28 18:06+0200\n"
"Last-Translator: Xavier BESNARD <xavier.besnard@neuf.fr>\n"
"Language-Team: French <kde-francophone@kde.org>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 23.08.5\n"
"X-Generator: Lokalize 23.08.1\n"
msgid ""
"KDE Connect provides a set of features to integrate your workflow across "
@@ -62,7 +62,7 @@ msgstr ""
"- Synchronisation de vos notifications : accès à vos notifications "
"téléphoniques depuis votre ordinateur et réponses aux messages.\n"
"- Télé-commande multimédia : utilisation de votre téléphone comme "
"télécommande pour les lecteurs de média sous Linux.\n"
"télécommande pour les lecteurs de médias sous Linux.\n"
"- Connexion au Wifi : aucun connexion USB ou Bluetooth nécessaire.\n"
"- Chiffrement « TLS » de bout en bout : vos informations sont en sécurité.\n"
"\n"
@@ -83,5 +83,5 @@ msgstr ""
"mais jamais par Internet et en utilisant le chiffrement de bout en bout.\n"
"\n"
"Cette application fait partie d'un projet « Open source ». Il existe grâce à "
"toutes les personnes qui y ont contribué. Veuillez visiter le site Internet "
"pour accéder au code source.\n"
"toutes les personnes qui y ont contribué.Visitez le site Internet pour "
"accéder au code source.\n"

View File

@@ -1,85 +0,0 @@
# Translation of kdeconnect-android-store-full to Norwegian Nynorsk
#
#. extracted from ./metadata/android/en-US/full_description.txt
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-05 12:31+0000\n"
"PO-Revision-Date: 2024-07-10 20:18+0200\n"
"Last-Translator: Karl Ove Hufthammer <karl@huftis.org>\n"
"Language-Team: Norwegian Nynorsk <l10n-no@lister.huftis.org>\n"
"Language: nn\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 24.05.1\n"
"X-Environment: kde\n"
"X-Accelerator-Marker: &\n"
"X-Text-Markup: kde4\n"
msgid ""
"KDE Connect provides a set of features to integrate your workflow across "
"devices:\n"
"\n"
"- Transfer files between your devices.\n"
"- Access files on your phone from your computer, without wires.\n"
"- Shared clipboard: copy and paste between your devices.\n"
"- Get notifications for incoming calls and messages on your computer.\n"
"- Virtual touchpad: Use your phone screen as your computer's touchpad.\n"
"- Notifications sync: Access your phone notifications from your computer and "
"reply to messages.\n"
"- Multimedia remote control: Use your phone as a remote for Linux media "
"players.\n"
"- WiFi connection: no USB wire or bluetooth needed.\n"
"- End-to-end TLS encryption: your information is safe.\n"
"\n"
"Please note you will need to install KDE Connect on your computer for this "
"app to work, and keep the desktop version up-to-date with the Android "
"version for the latest features to work.\n"
"\n"
"Sensitive permissions information:\n"
"* Accessibility permission: Required to receive input from another device to "
"control your Android phone, if you use the Remote Input feature.\n"
"* Background location permission: Required to know to which WiFi network you "
"are connected to, if you use the Trusted Networks feature.\n"
"\n"
"KDE Connect never sends any information to KDE nor to any third party. KDE "
"Connect sends data from one device to the other directly using the local "
"network, never through the internet, and using end to end encryption.\n"
"\n"
"This app is part of an open source project and it exists thanks to all the "
"people who contributed to it. Visit the website to grab the source code.\n"
msgstr ""
"KDE Connect tilbyr eit sett funksjonar som lèt deg enkelt arbeida på tvers "
"av einingar:\n"
"\n"
" Overfør filer mellom einingane\n"
" Få trådlaus tilgang til filer på telefonen frå datamaskina\n"
" Del utklippsbilete: kopier og lim inn mellom einingane\n"
" Vert varsla på datamaskina om innkommande samtalar og tekstmeldingar\n"
" Virtuell styreplate: bruk telefon­skjermen som styreplate for datamaskina\n"
" Synkronisering av varslingar: få tilgang til telefon­varslingar frå "
"datamaskina og svar på meldingar\n"
" Fjernkontroll av medieavspeling: bruk telefonen til å styra Linux-baserte "
"mediespelarar\n"
" Wi-Fi-tilkopling: du treng ikkje USB- eller Bluetooth-tilkopling\n"
" Ende-til-ende-kryptering: informasjonen din er trygg\n"
"\n"
"Merk at du må installera KDE Connect på datamaskina for å kunna bruka appen. "
"Hugs å halda PC-versjonen oppdatert med Android-versjonen for tilgang til "
"dei nyaste funksjonane.\n"
"\n"
"Informasjon om sensitive løyve:\n"
" Tilgjenge-løyve: Trengst for å kunna ta imot tastetrykk frå PC for å styra "
"Android-eininga om du brukar funksjonen «Fjernstyring»\n"
" Bakgrunns­løyve til å sjå geografiske posisjon: Trengst for å veta kva Wi-"
"Fi-nettverk du er tilkopla om du brukar funksjonen «Tiltrudde nettverk»\n"
"\n"
"KDE Connect sender aldri informasjon til KDE eller nokon tredjepart. "
"Programmet sender data direkte mellom dei to einingane via lokalnettet, "
"aldri via Internett og alltid med ende-til-ende-kryptering.\n"
"\n"
"Appen er ein del av eit fri programvare-prosjekt og er blitt til takka vera "
"mange bidragsytarar. Gå til heimesida for å sjå kjeldekoden.\n"

View File

@@ -12,6 +12,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 23.04.3\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"

View File

@@ -12,6 +12,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 23.04.3\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"

View File

@@ -1,21 +1,53 @@
# Geraldo Simiao <geraldosimiao@fedoraproject.org>, 2023.
# Frederico Goncalves Guimaraes <frederico@teia.bio.br>, 2024.
#. extracted from ./metadata/android/en-US/full_description.txt
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-05 12:31+0000\n"
"PO-Revision-Date: 2024-08-28 17:37-0300\n"
"Last-Translator: Frederico Goncalves Guimaraes <frederico@teia.bio.br>\n"
"PO-Revision-Date: 2023-08-04 01:33-0300\n"
"Last-Translator: Geraldo Simiao <geraldosimiao@fedoraproject.org>\n"
"Language-Team: Brazilian Portuguese <kde-i18n-pt_BR@kde.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 22.12.3\n"
"X-Generator: Lokalize 23.04.3\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#, fuzzy
#| msgid ""
#| "KDE Connect provides a set of features to integrate your workflow across "
#| "devices:\n"
#| "\n"
#| "- Shared clipboard: copy and paste between your devices.\n"
#| "- Share files and URLs to your computer from any app.\n"
#| "- Get notifications for incoming calls and SMS messages on your PC.\n"
#| "- Virtual touchpad: Use your phone screen as your computer's touchpad.\n"
#| "- Notifications sync: Read your Android notifications from the desktop.\n"
#| "- Multimedia remote control: Use your phone as a remote for Linux media "
#| "players.\n"
#| "- WiFi connection: no USB wire or bluetooth needed.\n"
#| "- End-to-end TLS encryption: your information is safe.\n"
#| "\n"
#| "Please note you will need to install KDE Connect on your computer for "
#| "this app to work, and keep the desktop version up-to-date with the "
#| "Android version for the latest features to work.\n"
#| "\n"
#| "Sensitive permissions information:\n"
#| "* Accessibility permission: Required to receive input from another device "
#| "to control your Android phone, if you use the Remote Input feature.\n"
#| "* Background location permission: Required to know to which WiFi network "
#| "you are connected to, if you use the Trusted Networks feature.\n"
#| "\n"
#| "KDE Connect never sends any information to KDE nor to any third party. "
#| "KDE Connect sends data from one device to the other directly using the "
#| "local network, never through the internet, and using end to end "
#| "encryption.\n"
#| "\n"
#| "This app is part of an open source project and it exists thanks to all "
#| "the people who contributed to it. Visit the website to grab the source "
#| "code.\n"
msgid ""
"KDE Connect provides a set of features to integrate your workflow across "
"devices:\n"
@@ -52,16 +84,15 @@ msgstr ""
"O KDE Connect fornece um conjunto de recursos para integrar seu fluxo de "
"trabalho entre dispositivos:\n"
"\n"
"- Transfira arquivos entre seus dispositivos.\n"
"- Acesse arquivos do seu computador no seu telefone, sem fios.\n"
"- Área de transferência compartilhada: copie e cole entre seus "
"dispositivos.\n"
"- Compartilhe arquivos e URLs em seu computador a partir de qualquer app.\n"
"- Receba notificações de chamadas recebidas e mensagens SMS no seu PC.\n"
"- Touchpad virtual: use a tela do telefone como touchpad do computador.\n"
"- Sincronização de notificações: acesse as notificações do seu telefone no "
"seu computador e responda as mensagens.\n"
"- Sincronização de notificações: leia as notificações do seu Android na área "
"de trabalho.\n"
"- Controle remoto multimídia: use seu telefone como controle remoto para "
"reprodutores de mídia no Linux.\n"
"reprodutores de mídia Linux.\n"
"- Conexão Wi-Fi: sem necessidade de cabos USB ou bluetooth.\n"
"- Criptografia TLS de ponta a ponta: suas informações estão seguras.\n"
"\n"
@@ -69,14 +100,14 @@ msgstr ""
"este aplicativo funcione e mantenha a versão para desktop atualizada com a "
"versão do Android para que os recursos mais recentes funcionem.\n"
"\n"
"Informações sobre permissões sensíveis:\n"
"Informações a respeito de permissões especiais :\n"
"* Permissão de acessibilidade: necessária para receber entrada de outro "
"dispositivo para controlar seu telefone Android, se você usar o recurso de "
"entrada remota.\n"
"* Permissão de localização em segundo plano: necessária para saber a qual "
"rede Wi-Fi você está conectado, se você usar o recurso de redes confiáveis.\n"
"\n"
"O KDE Connect nunca envia nenhuma informação ao KDE ou a terceiros. O KDE "
"O KDE Connect nunca envia nenhuma informação ao KDE nem a terceiros. O KDE "
"Connect envia dados de um dispositivo para outro diretamente usando a rede "
"local, nunca pela Internet e usando criptografia de ponta a ponta.\n"
"\n"

View File

@@ -1,83 +0,0 @@
# Alexander Yavorskiy <kekcuha@gmail.com>, 2025.
#. extracted from ./metadata/android/en-US/full_description.txt
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-05 12:31+0000\n"
"PO-Revision-Date: 2025-05-30 20:22+0200\n"
"Last-Translator: Alexander Yavorskiy <kekcuha@gmail.com>\n"
"Language-Team: Russian <kde-russian@lists.kde.ru>\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 21.08.3\n"
"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n"
"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
msgid ""
"KDE Connect provides a set of features to integrate your workflow across "
"devices:\n"
"\n"
"- Transfer files between your devices.\n"
"- Access files on your phone from your computer, without wires.\n"
"- Shared clipboard: copy and paste between your devices.\n"
"- Get notifications for incoming calls and messages on your computer.\n"
"- Virtual touchpad: Use your phone screen as your computer's touchpad.\n"
"- Notifications sync: Access your phone notifications from your computer and "
"reply to messages.\n"
"- Multimedia remote control: Use your phone as a remote for Linux media "
"players.\n"
"- WiFi connection: no USB wire or bluetooth needed.\n"
"- End-to-end TLS encryption: your information is safe.\n"
"\n"
"Please note you will need to install KDE Connect on your computer for this "
"app to work, and keep the desktop version up-to-date with the Android "
"version for the latest features to work.\n"
"\n"
"Sensitive permissions information:\n"
"* Accessibility permission: Required to receive input from another device to "
"control your Android phone, if you use the Remote Input feature.\n"
"* Background location permission: Required to know to which WiFi network you "
"are connected to, if you use the Trusted Networks feature.\n"
"\n"
"KDE Connect never sends any information to KDE nor to any third party. KDE "
"Connect sends data from one device to the other directly using the local "
"network, never through the internet, and using end to end encryption.\n"
"\n"
"This app is part of an open source project and it exists thanks to all the "
"people who contributed to it. Visit the website to grab the source code.\n"
msgstr ""
"KDE Connect предоставляет набор функций для интеграции рабочего процесса "
"между устройствами:\n"
"- Передача файлов между устройствами.\n"
"- Доступ к файлам на телефоне с компьютера без проводов.\n"
"- Общий буфер обмена: копирование и вставка между устройствами.\n"
"- Уведомления о входящих вызовах и сообщениях на компьютере.\n"
"- Виртуальный тачпад: использование экрана телефона в качестве тачпада для "
"компьютера.\n"
"- Синхронизация уведомлений: доступ к уведомлениям телефона с компьютера и "
"возможность отвечать на сообщения.\n"
"- Дистанционное управление мультимедиа: использование телефона как пульта "
"для медиаплееров в Linux.\n"
"- Подключение по Wi-Fi: без проводов USB или Bluetooth.\n"
"- Сквозное шифрование TLS: безопасность передаваемой информации.\n"
"\n"
"Обратите внимание, что для работы приложения требуется установка KDE Connect "
"на компьютере. Для поддержки всех функций, версия на компьютере должна быть "
"актуальной и соответствовать версии на Android .\n"
"\n"
"Информация о чувствительных разрешениях:\n"
"\n"
"- Разрешение «Специальные возможности»: необходимо для получения ввода с "
"другого устройства при использовании функции дистанционного ввода.\n"
"- Разрешение «Фоновое определение местоположения»: необходимо для "
"определения текущей Wi-Fi-сети при использовании функции «Доверенные сети».\n"
"\n"
"KDE Connect никогда не отправляет данные ни в KDE, ни третьим лицам. "
"Передача данных осуществляется напрямую между устройствами через локальную "
"сеть, без использования интернета, с применением сквозного шифрования.\n"
"Приложение является частью проекта с открытым исходным кодом и существует "
"благодаря сообществу участников. Исходный код доступен на официальном "
"сайте.\n"

View File

@@ -1,20 +0,0 @@
# Alexander Yavorskiy <kekcuha@gmail.com>, 2025.
#. extracted from ./metadata/android/en-US/short_description.txt
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-05 12:31+0000\n"
"PO-Revision-Date: 2025-05-30 20:17+0200\n"
"Last-Translator: Alexander Yavorskiy <kekcuha@gmail.com>\n"
"Language-Team: Russian <kde-russian@lists.kde.ru>\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 21.08.3\n"
"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n"
"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
msgid "KDE Connect integrates your smartphone and computer"
msgstr "KDE Connect позволяет соединить смартфон и компьютер"

View File

@@ -1,20 +1,19 @@
# Kisaragi Hiu <mail@kisaragi-hiu.com>, 2023.
# taijuin <taijuin@gmail.com>, 2024.
#. extracted from ./metadata/android/en-US/full_description.txt
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-05 12:31+0000\n"
"PO-Revision-Date: 2024-11-12 19:04+0800\n"
"Last-Translator: taijuin <taijuin@gmail.com>\n"
"PO-Revision-Date: 2023-12-09 17:51+0900\n"
"Last-Translator: Kisaragi Hiu <mail@kisaragi-hiu.com>\n"
"Language-Team: Traditional Chinese <zh-l10n@lists.slat.org>\n"
"Language: zh_TW\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 24.01.80\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 3.5\n"
msgid ""
"KDE Connect provides a set of features to integrate your workflow across "
@@ -49,7 +48,7 @@ msgid ""
"This app is part of an open source project and it exists thanks to all the "
"people who contributed to it. Visit the website to grab the source code.\n"
msgstr ""
"KDE Connect 提供許多功能讓您整合您跨裝置的作業流程:\n"
"KDE 連線提供許多功能讓您整合您跨裝置的作業流程:\n"
"\n"
"- 在您的裝置之間傳輸檔案。\n"
"- 從您的電腦無線存取您的手機上的檔案。\n"
@@ -61,8 +60,8 @@ msgstr ""
"- WiFi 連線:不需要 USB 線或是藍牙連線。\n"
"- 點對點 TLS 加密:您的資訊是安全的。\n"
"\n"
"請注意,這個應用程式需要您在電腦上也安裝 KDE Connect 才能正常運作;最新功能也"
"會需要電腦的版本跟 Android 的版本一樣新才能正常運作。\n"
"請注意,這個應用程式需要您在電腦上也安裝 KDE 連線才能正常運作;最新功能也會需"
"要電腦的版本跟 Android 的版本一樣新才能正常運作。\n"
"\n"
"敏感權限資訊:\n"
"* 協助工具權限:如果您使用「遠端輸入」功能,需要它來從另一個裝置接收輸入後控"
@@ -70,8 +69,8 @@ msgstr ""
"* 背景位置權限:如果您使用「信任網路」功能,需要它來得知您目前連線的 WiFi 網"
"路。\n"
"\n"
"KDE Connect 不會傳送任何資訊給 KDE 或任何第三方。KDE Connect 利用本地網路直接"
"從一個裝置傳送資料到另一個裝置,不會透過網際網路,並且同時使用點對點加密。 \n"
"KDE 連線不會傳送任何資訊給 KDE 或任何第三方。KDE 連線利用本地網路直接從一個裝"
"置傳送資料到另一個裝置,不會透過網際網路,並且同時使用點對點加密。 \n"
"\n"
"這個應用程式是一個開源專案的一部分,它的存在歸功於所有貢獻者。可造訪網站取得"
"原始碼。\n"

View File

@@ -1,20 +1,19 @@
# Kisaragi Hiu <mail@kisaragi-hiu.com>, 2023.
# taijuin <taijuin@gmail.com>, 2024.
#. extracted from ./metadata/android/en-US/short_description.txt
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-05 12:31+0000\n"
"PO-Revision-Date: 2024-11-12 19:00+0800\n"
"Last-Translator: taijuin <taijuin@gmail.com>\n"
"PO-Revision-Date: 2023-12-09 17:39+0900\n"
"Last-Translator: Kisaragi Hiu <mail@kisaragi-hiu.com>\n"
"Language-Team: Traditional Chinese <zh-l10n@lists.slat.org>\n"
"Language: zh_TW\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 24.01.80\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 3.5\n"
msgid "KDE Connect integrates your smartphone and computer"
msgstr "KDE Connect 整合了您的智慧型手機與電腦"
msgstr "KDE 連線整合了您的智慧型手機與電腦"

23
proguard-rules.pro vendored
View File

@@ -17,10 +17,29 @@
#}
-dontobfuscate
-dontwarn org.spongycastle.**
-dontwarn org.apache.sshd.**
-dontwarn org.apache.mina.**
-dontwarn org.slf4j.**
-dontwarn io.netty.**
-keepattributes SourceFile,LineNumberTable,Signature,*Annotation*
-keep class org.kde.kdeconnect.** {*;}
-keep class org.spongycastle.** {*;}
# SSHd requires mina, and mina uses reflection so some classes would get deleted
-keep class org.apache.mina.** {*;}
-keep class org.apache.sshd.** {*;}
-dontwarn org.apache.sshd.**
-keep class org.kde.kdeconnect.** {*;}
-dontwarn org.mockito.**
-dontwarn sun.reflect.**
-dontwarn android.test.**
-dontwarn java.lang.management.**
-dontwarn javax.**
-dontwarn android.net.ConnectivityManager
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
-dontwarn android.net.LinkProperties

View File

@@ -7,4 +7,20 @@
<path
android:pathData="m0,0h108v108h-108z"
android:fillColor="@color/launcher_background"/>
<path
android:pathData="m0,0h108v108h-108z"
android:strokeAlpha="0.2"
android:fillAlpha="0.2">
<aapt:attr name="android:fillColor">
<gradient
android:startY="0"
android:endY="108"
android:startX="0"
android:endX="0"
android:type="linear">
<item android:offset="0" android:color="#FFFFFFFF"/>
<item android:offset="1" android:color="#00FFFFFF"/>
</gradient>
</aapt:attr>
</path>
</vector>

View File

@@ -1,10 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="320dp"
android:height="180dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:pathData="m0,0h320v108h-320z"
android:fillColor="@color/launcher_background"/>
</vector>

View File

@@ -1,104 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="320dp"
android:height="180dp"
android:viewportWidth="108"
android:viewportHeight="108">
<group android:scaleX="0.6666667"
android:scaleY="0.6666667"
android:translateX="18"
android:translateY="18">
<group android:scaleX="0.6525"
android:scaleY="1.16"
android:translateX="-10.395"
android:translateY="-8.64">
<group android:scaleX="0.8"
android:scaleY="0.8"
android:translateX="10.8"
android:translateY="10.8">
<path
android:pathData="M40,27L68,27A2,2 0,0 1,70 29L70,79A2,2 0,0 1,68 81L40,81A2,2 0,0 1,38 79L38,29A2,2 0,0 1,40 27z"
android:strokeWidth="1.73436">
<aapt:attr name="android:fillColor">
<gradient
android:startY="27"
android:startX="38"
android:endY="81"
android:endX="38"
android:type="linear">
<item android:offset="0" android:color="#FFF5F5F5"/>
<item android:offset="1" android:color="#FFF0F0F0"/>
</gradient>
</aapt:attr>
</path>
<path
android:pathData="m41,30h26v48h-26z"
android:strokeWidth="1.00241"
android:fillColor="#2d2d2d"/>
<path
android:pathData="M50.25,28.25L57.75,28.25A0.25,0.25 0,0 1,58 28.5L58,28.5A0.25,0.25 0,0 1,57.75 28.75L50.25,28.75A0.25,0.25 0,0 1,50 28.5L50,28.5A0.25,0.25 0,0 1,50.25 28.25z"
android:strokeWidth=".632455"
android:fillColor="#2d2d2d"/>
<path
android:pathData="m47.694,47.379c-0.04,0.004 -0.083,0.015 -0.113,0.045 0,0 -1.381,1.381 -1.381,1.381 -0.058,0.058 -0.065,0.147 -0.023,0.218 0,0 1.614,2.665 1.614,2.665 -0.287,0.482 -0.519,0.999 -0.683,1.547 0,0 -2.965,0.616 -2.965,0.616 -0.083,0.017 -0.143,0.096 -0.143,0.18v1.952c0,0.083 0.063,0.153 0.143,0.173 0,0 2.875,0.698 2.875,0.698 0.154,0.634 0.391,1.241 0.706,1.794 0,0 -1.667,2.538 -1.667,2.538 -0.046,0.071 -0.037,0.165 0.023,0.225 0,0 1.381,1.381 1.381,1.381 0.058,0.058 0.147,0.065 0.218,0.023 0,0 2.613,-1.584 2.613,-1.584 0.512,0.296 1.067,0.533 1.652,0.691 0,0 0.608,2.928 0.608,2.928 0.017,0.083 0.088,0.143 0.173,0.143h1.952c0.082,0 0.153,-0.055 0.173,-0.135 0,0 0.721,-2.943 0.721,-2.943 0.603,-0.163 1.171,-0.404 1.697,-0.713 0,0 2.575,1.689 2.575,1.689 0.071,0.046 0.165,0.037 0.225,-0.023 0,0 1.374,-1.381 1.374,-1.381 0.058,-0.058 0.073,-0.147 0.03,-0.218 0,0 -0.938,-1.547 -0.938,-1.547s-0.308,0.098 -0.308,0.098c-0.044,0.014 -0.094,-0.006 -0.12,-0.045 0,0 -0.593,-0.872 -1.366,-2.005 -0.925,1.81 -2.812,3.048 -4.985,3.048 -3.088,0 -5.593,-2.505 -5.593,-5.593 0,-2.271 1.358,-4.222 3.303,-5.098v-1.441c-0.354,0.124 -0.696,0.273 -1.021,0.45 -0.001,-0 0.001,-0.007 0,-0.007 0,0 -2.635,-1.727 -2.635,-1.727 -0.035,-0.023 -0.073,-0.027 -0.113,-0.023 0,0 0,0 0,-0zM55.659,43.85s-3.514,0.338 -3.514,0.338v14.475s3.476,-0.526 3.476,-0.526v-6.171s4.677,6.847 4.677,6.847 3.664,-1.164 3.664,-1.164 -4.79,-6.584 -4.79,-6.584 4.827,-6.209 4.827,-6.209 -3.739,-0.856 -3.739,-0.856 -4.64,6.209 -4.64,6.209 0.038,-6.359 0.038,-6.359z"
android:fillColor="#f2f2f2"/>
<path
android:pathData="m41,30h22l-18,45h-4z"
android:strokeAlpha="0.1"
android:fillAlpha="0.1">
<aapt:attr name="android:fillColor">
<gradient
android:startY="30"
android:startX="41"
android:endY="70"
android:endX="60"
android:type="linear">
<item android:offset="0" android:color="#FFFFFFFD"/>
<item android:offset="1" android:color="#00FFFFFD"/>
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FF000000"
android:pathData="m38,78v1c0,1.108 0.892,2 2,2h28c1.108,0 2,-0.892 2,-2v-1c0,1.108 -0.892,2 -2,2h-28c-1.108,0 -2,-0.892 -2,-2z"
android:strokeAlpha="0.1"
android:strokeWidth="1.73436"
android:fillAlpha="0.1"/>
<path
android:pathData="m70,30v-1c0,-1.108 -0.892,-2 -2,-2h-28c-1.108,0 -2,0.892 -2,2v1c0,-1.108 0.892,-2 2,-2h28c1.108,0 2,0.892 2,2z"
android:strokeAlpha="0.5"
android:strokeWidth="1.73436"
android:fillColor="#fffff8"
android:fillAlpha="0.5"/>
</group>
</group>
<group android:scaleX="0.075"
android:scaleY="0.16"
android:translateX="40"
android:translateY="36">
<group android:translateY="153.93605">
<path android:pathData="M83.375,-0L58.03125,-0L39.453125,-40.609375L32.546875,-35.421875L32.546875,-0L9.796875,-0L9.796875,-102.8125L32.546875,-102.8125L32.546875,-56.734375Q33.546875,-59.765625,35.34375,-63Q37.15625,-66.234375,39.171875,-69.984375L58.75,-102.8125L83.375,-102.8125L55.734375,-56.875L83.375,-0Z"
android:fillColor="@android:color/primary_text_light"/>
<path android:pathData="M165.9375,-53.28125Q165.9375,-27.359375,153.84375,-13.671875Q141.75,0,119.859375,0L92.796875,0L92.796875,-102.8125L121.734375,-102.8125Q142.76562,-102.8125,154.34375,-90.0625Q165.9375,-77.328125,165.9375,-53.28125ZM142.46875,-52.421875Q142.46875,-68.6875,137.20312,-76.09375Q131.95312,-83.515625,121.734375,-83.515625L115.546875,-83.515625L115.546875,-19.4375L120.15625,-19.4375Q131.67188,-19.4375,137.0625,-27.578125Q142.46875,-35.71875,142.46875,-52.421875Z"
android:fillColor="@android:color/primary_text_light"/>
<path android:pathData="M234.34375,0L182.79688,0L182.79688,-102.8125L234.34375,-102.8125L234.34375,-83.8125L205.54688,-83.8125L205.54688,-62.78125L232.1875,-62.78125L232.1875,-43.78125L205.54688,-43.78125L205.54688,-19.296875L234.34375,-19.296875L234.34375,0Z"
android:fillColor="@android:color/primary_text_light"/>
<path android:pathData="M318.67188,-84.953125Q309.59375,-84.953125,304.84375,-75.671875Q300.09375,-66.390625,300.09375,-51.125Q300.09375,-34.84375,304.98438,-26.421875Q309.89062,-18,319.6875,-18Q325.01562,-18,330.04688,-19.65625Q335.09375,-21.3125,340.26562,-23.90625L340.26562,-4.03125Q329.76562,1.4375,316.51562,1.4375Q296.78125,1.4375,286.625,-12.453125Q276.48438,-26.359375,276.48438,-51.265625Q276.48438,-66.8125,281.29688,-78.765625Q286.125,-90.71875,295.26562,-97.484375Q304.42188,-104.25,317.51562,-104.25Q331.34375,-104.25,343.73438,-97.34375L337.25,-78.90625Q332.78125,-81.5,328.25,-83.21875Q323.71875,-84.953125,318.67188,-84.953125Z"
android:fillColor="@android:color/primary_text_light"/>
<path android:pathData="M420.14062,-39.75Q420.14062,-28.375,416.6875,-19Q413.23438,-9.640625,405.8125,-4.09375Q398.40625,1.4375,386.59375,1.4375Q375.79688,1.4375,368.375,-4.03125Q360.95312,-9.5,357.14062,-18.859375Q353.32812,-28.21875,353.32812,-39.75Q353.32812,-51.84375,357,-61.046875Q360.67188,-70.265625,368.07812,-75.453125Q375.5,-80.640625,387.03125,-80.640625Q401.85938,-80.640625,411,-70.046875Q420.14062,-59.46875,420.14062,-39.75ZM375.5,-39.59375Q375.5,-28.21875,378.15625,-22.3125Q380.82812,-16.421875,386.875,-16.421875Q392.78125,-16.421875,395.375,-22.25Q397.96875,-28.078125,397.96875,-39.75Q397.96875,-51.265625,395.375,-56.953125Q392.78125,-62.640625,386.73438,-62.640625Q380.82812,-62.640625,378.15625,-56.953125Q375.5,-51.265625,375.5,-39.59375Z"
android:fillColor="@android:color/primary_text_light"/>
<path android:pathData="M474.95312,-80.640625Q485.76562,-80.640625,491.95312,-73.359375Q498.14062,-66.09375,498.14062,-51.84375L498.14062,0L476.25,0L476.25,-45.359375Q476.25,-53.421875,474.375,-57.59375Q472.51562,-61.78125,467.60938,-61.78125Q461.14062,-61.78125,458.76562,-55.9375Q456.39062,-50.109375,456.39062,-36.859375L456.39062,0L434.5,0L434.5,-79.203125L451.48438,-79.203125L454.07812,-69.125L455.23438,-69.125Q461.28125,-80.640625,474.95312,-80.640625Z"
android:fillColor="@android:color/primary_text_light"/>
<path android:pathData="M555.9531,-80.640625Q566.7656,-80.640625,572.9531,-73.359375Q579.1406,-66.09375,579.1406,-51.84375L579.1406,0L557.25,0L557.25,-45.359375Q557.25,-53.421875,555.375,-57.59375Q553.5156,-61.78125,548.6094,-61.78125Q542.1406,-61.78125,539.7656,-55.9375Q537.3906,-50.109375,537.3906,-36.859375L537.3906,0L515.5,0L515.5,-79.203125L532.4844,-79.203125L535.0781,-69.125L536.2344,-69.125Q542.28125,-80.640625,555.9531,-80.640625Z"
android:fillColor="@android:color/primary_text_light"/>
<path android:pathData="M625.4375,-80.5Q640.125,-80.5,648.2656,-71.0625Q656.40625,-61.625,656.40625,-44.5L656.40625,-33.265625L615.0781,-33.265625Q615.3594,-15.546875,630.625,-15.546875Q636.53125,-15.546875,641.6406,-16.984375Q646.75,-18.4375,652.375,-21.59375L652.375,-4.171875Q642.28125,1.4375,627.8906,1.4375Q610.75,1.4375,602.03125,-9Q593.3281,-19.4375,593.3281,-39.171875Q593.3281,-59.328125,601.6719,-69.90625Q610.03125,-80.5,625.4375,-80.5ZM626.0156,-64.078125Q621.40625,-64.078125,618.4531,-60.40625Q615.5,-56.734375,615.21875,-48.390625L636.2344,-48.390625Q636.2344,-55.875,633.5625,-59.96875Q630.90625,-64.078125,626.0156,-64.078125Z"
android:fillColor="@android:color/primary_text_light"/>
<path android:pathData="M699.15625,1.4375Q683.03125,1.4375,674.6719,-8.421875Q666.3281,-18.28125,666.3281,-39.171875Q666.3281,-58.03125,674.8906,-69.328125Q683.46875,-80.640625,700.03125,-80.640625Q706.6406,-80.640625,712.0469,-79.125Q717.4531,-77.609375,722.0625,-75.03125L715.8594,-57.890625Q711.96875,-59.90625,708.375,-61.046875Q704.78125,-62.203125,701.1719,-62.203125Q695.125,-62.203125,691.8125,-56.375Q688.5,-50.546875,688.5,-39.3125Q688.5,-27.9375,691.875,-22.390625Q695.2656,-16.84375,701.46875,-16.84375Q710.96875,-16.84375,720.0469,-23.46875L720.0469,-5.046875Q711.40625,1.4375,699.15625,1.4375Z"
android:fillColor="@android:color/primary_text_light"/>
<path android:pathData="M765.1719,-16.984375Q767.7656,-16.984375,770.34375,-17.625Q772.9375,-18.28125,775.8281,-19.578125L775.8281,-2.59375Q772.21875,-0.71875,767.8906,0.359375Q763.5781,1.4375,758.40625,1.4375Q747.4531,1.4375,741.9844,-4.75Q736.5156,-10.9375,736.5156,-24.90625L736.5156,-61.625L728.0156,-61.625L728.0156,-72.4375L738.2344,-78.625L743.71875,-95.46875L758.40625,-95.46875L758.40625,-79.203125L774.8125,-79.203125L774.8125,-61.625L758.40625,-61.625L758.40625,-25.484375Q758.40625,-16.984375,765.1719,-16.984375Z"
android:fillColor="@android:color/primary_text_light"/>
</group>
</group>
</group>
</vector>

View File

@@ -4,6 +4,6 @@
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="?colorControlNormal"
android:fillColor="#000000"
android:pathData="M12,3v10.55c-0.59,-0.34 -1.27,-0.55 -2,-0.55 -2.21,0 -4,1.79 -4,4s1.79,4 4,4 4,-1.79 4,-4V7h4V3h-6z"/>
</vector>

View File

@@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<group android:pivotX="12" android:pivotY="12" android:scaleX="0.66" android:scaleY="0.66">
<path
android:fillColor="@android:color/white"
android:pathData="M21,2L3,2c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h7v2L8,20v2h8v-2h-2v-2h7c1.1,0 2,-0.9 2,-2L23,4c0,-1.1 -0.9,-2 -2,-2zM21,16L3,16L3,4h18v12z" />
</group>
</vector>

View File

@@ -1,17 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<group
android:pivotX="12"
android:pivotY="12"
android:scaleX="0.66"
android:scaleY="0.66">
<path
android:fillColor="@android:color/white"
android:pathData="M20,18c1.1,0 2,-0.9 2,-2V6c0,-1.1 -0.9,-2 -2,-2H4C2.9,4 2,4.9 2,6v10c0,1.1 0.9,2 2,2H0v2h24v-2H20zM4,6h16v10H4V6z" />
</group>
</vector>

View File

@@ -1,18 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<group
android:pivotX="12"
android:pivotY="12"
android:scaleX="0.66"
android:scaleY="0.66">
<path
android:fillColor="@android:color/white"
android:pathData="M16,1L8,1C6.34,1 5,2.34 5,4v16c0,1.66 1.34,3 3,3h8c1.66,0 3,-1.34 3,-3L19,4c0,-1.66 -1.34,-3 -3,-3zM14,21h-4v-1h4v1zM17.25,18L6.75,18L6.75,4h10.5v14z" />
</group>
</vector>

View File

@@ -1,18 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<group
android:pivotX="12"
android:pivotY="12"
android:scaleX="0.66"
android:scaleY="0.66">
<path
android:fillColor="@android:color/white"
android:pathData="M21,4L3,4c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h18c1.1,0 1.99,-0.9 1.99,-2L23,6c0,-1.1 -0.9,-2 -2,-2zM19,18L5,18L5,6h14v12z" />
</group>
</vector>

View File

@@ -1,17 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<group
android:pivotX="12"
android:pivotY="12"
android:scaleX="0.66"
android:scaleY="0.66">
<path
android:fillColor="@android:color/white"
android:pathData="M21,3L3,3c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h5v2h8v-2h5c1.1,0 1.99,-0.9 1.99,-2L23,5c0,-1.1 -0.9,-2 -2,-2zM21,17L3,17L3,5h18v12z" />
</group>
</vector>

View File

@@ -4,6 +4,6 @@
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="?attr/colorControlNormal"
android:fillColor="#FF000000"
android:pathData="M3,9v6h4l5,5L12,4L7,9L3,9zM16.5,12c0,-1.77 -1.02,-3.29 -2.5,-4.03v8.05c1.48,-0.73 2.5,-2.25 2.5,-4.02zM14,3.23v2.06c2.89,0.86 5,3.54 5,6.71s-2.11,5.85 -5,6.71v2.06c4.01,-0.91 7,-4.49 7,-8.77s-2.99,-7.86 -7,-8.77z"/>
</vector>

View File

@@ -6,6 +6,8 @@
android:viewportHeight="24">
<path
android:fillColor="?attr/colorControlNormal"
android:fillColor="#000000"
android:pathData="M7 9v6h4l5 5V4l-5 5H7z" />
<path
android:pathData="M0 0h24v24H0z" />
</vector>

View File

@@ -1,25 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
SPDX-FileCopyrightText: 2023 Albert Vaca Cintora <albertvaka@gmail.com>
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
-->
<TextView 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="wrap_content"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:drawablePadding="8dp"
android:paddingTop="16dp"
android:paddingBottom="12dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:text="@string/pairing_duplicate_names"
app:drawableStartCompat="@drawable/ic_warning"
app:drawableTint="?attr/colorControlNormal">
</TextView>

View File

@@ -21,8 +21,6 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:clipToPadding="false"
android:id="@+id/scroll_view"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout

View File

@@ -26,7 +26,6 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
tools:listitem="@layout/custom_device_item"/>
<TextView

View File

@@ -30,8 +30,7 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
android:id="@+id/device_view"
android:descendantFocusability="afterDescendants"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false">
android:layout_height="match_parent">
<!-- Shown when the device is paired and reachable -->
<androidx.compose.ui.platform.ComposeView

View File

@@ -20,6 +20,5 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
android:id="@+id/licenses_text"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"/>
android:layout_height="match_parent" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@@ -17,8 +17,7 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
<!-- Keep in sync with toolbar.xml, copied here because it needs the nested TabLayout -->
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true">
android:layout_height="wrap_content">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"

View File

@@ -57,7 +57,6 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
android:dividerHeight="0dp"
android:orientation="vertical"
android:paddingTop="8dp"
android:clipToPadding="false"
tools:context=".MainActivity" />
</LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@@ -24,7 +24,7 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
app:drawableEndCompat="@drawable/ic_delete"
app:drawableStartCompat="@drawable/ic_delete" />
<androidx.constraintlayout.widget.ConstraintLayout
<FrameLayout
android:id="@+id/swipeableView"
android:layout_width="match_parent"
android:layout_height="match_parent"
@@ -32,30 +32,17 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
<TextView
android:id="@+id/deviceNameOrIP"
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="?android:selectableItemBackground"
android:gravity="center_vertical"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:paddingStart="?android:attr/listPreferredItemPaddingLeft"
android:paddingEnd="?android:attr/listPreferredItemPaddingRight"
android:paddingStart="?android:attr/listPreferredItemPaddingLeft"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:visibility="visible"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="192.168.0.1" />
tools:text="192.168.0.1"/>
<TextView
android:id="@+id/connectionStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:paddingStart="?android:attr/listPreferredItemPaddingLeft"
android:paddingEnd="?android:attr/listPreferredItemPaddingRight"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</FrameLayout>
</FrameLayout>

View File

@@ -11,21 +11,18 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
android:id="@+id/refresh_list_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
android:layout_margin="@dimen/activity_horizontal_margin">
<ListView
android:id="@+id/devices_list"
android:scrollbarStyle="outsideOverlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:addStatesFromChildren="true"
android:divider="@null"
android:padding="@dimen/activity_horizontal_margin"
android:descendantFocusability="afterDescendants"
android:dividerHeight="12dp"
android:orientation="vertical"
android:clipToPadding="false"
tools:listitem="@layout/list_item_device_entry"
tools:listitem="@layout/list_card_entry"
tools:context=".MainActivity" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

View File

@@ -11,9 +11,7 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fillViewport="true"
android:clipToPadding="false"
android:id="@+id/scroll_view">
android:fillViewport="true">
<LinearLayout
android:id="@+id/about_layout"

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
SPDX-FileCopyrightText: 2023 Dmitry Yudin <dgyudin@gmail.com>
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
-->
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
style="@style/KdeConnectCardStyle.Filled"
app:contentPadding="@dimen/view_default_padding"
tools:layout_width="240dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:baselineAligned="false"
android:gravity="center_vertical"
android:layout_marginTop="8dp"
android:minHeight="?android:attr/listPreferredItemHeight"
android:orientation="vertical">
<ImageView
android:id="@+id/list_item_entry_icon"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:src="@drawable/ic_device_laptop_32dp"
android:layout_marginBottom="12dp"
android:importantForAccessibility="no"
app:tint="?attr/colorOnSurface" />
<TextView
android:id="@+id/list_item_entry_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:ellipsize="end"
android:lines="2"
android:text=""
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="?attr/colorOnSurface"
tools:maxLength="30"
tools:text="@tools:sample/lorem/random" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>

View File

@@ -1,71 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
SPDX-FileCopyrightText: 2023 Dmitry Yudin <dgyudin@gmail.com>
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
-->
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:focusable="true"
android:clickable="true"
android:background="?android:attr/selectableItemBackground"
style="@style/KdeConnectCardStyle.Filled"
app:contentPadding="@dimen/view_default_padding">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:baselineAligned="false"
android:gravity="center_vertical"
android:minHeight="?android:attr/listPreferredItemHeight"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/list_item_entry_icon"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:layout_marginStart="12dp"
android:src="@drawable/ic_device_laptop_32dp"
android:importantForAccessibility="no"
app:tint="?attr/colorControlNormal"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/list_item_entry_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="8dip"
android:text=""
android:textAppearance="?android:attr/textAppearanceMedium"
tools:text="A very long device name that might wrap into multiple lines"/>
<TextView
android:id="@+id/list_item_entry_summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dip"
android:singleLine="true"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="#CC2222"
android:visibility="gone"
tools:text="Other (optional) info"
tools:visibility="gone"/>
</LinearLayout>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>

View File

@@ -49,7 +49,7 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
android:background="@android:color/transparent"
android:contentDescription="@string/mute"
android:scaleType="fitXY"
android:src="@drawable/ic_volume"/>
android:src="@drawable/ic_volume_black"/>
<SeekBar
android:id="@+id/systemvolume_seek"

View File

@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
SPDX-FileCopyrightText: 2023 Albert Vaca Cintora <albertvaka@gmail.com>
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground"
android:baselineAligned="false"
android:gravity="center_vertical"
android:minHeight="?android:attr/listPreferredItemHeight"
android:orientation="horizontal"
android:paddingLeft="16dp"
android:paddingRight="16dp">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/list_item_entry_icon"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:layout_marginStart="12dp"
android:src="@drawable/ic_device_laptop_32dp"
android:importantForAccessibility="no"
app:tint="?attr/colorControlNormal"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/list_item_entry_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="8dip"
android:ellipsize="marquee"
android:fadingEdge="horizontal"
android:singleLine="true"
android:text=""
android:textAppearance="?android:attr/textAppearanceMedium"
tools:maxLength="20"
tools:text="@tools:sample/lorem/random"/>
<TextView
android:id="@+id/list_item_entry_summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dip"
android:singleLine="true"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="#CC2222"
android:visibility="gone"
tools:text="Other (optional) info"
tools:visibility="visible"/>
</LinearLayout>
</LinearLayout>

View File

@@ -198,7 +198,7 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
android:layout_weight="0"
android:contentDescription="@string/mpris_volume"
android:maxWidth="30dip"
android:src="@drawable/ic_volume"/>
android:src="@drawable/ic_volume_black"/>
<SeekBar

View File

@@ -1,25 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
SPDX-FileCopyrightText: 2023 Albert Vaca Cintora <albertvaka@gmail.com>
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
-->
<TextView 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="wrap_content"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:drawablePadding="8dp"
android:paddingTop="16dp"
android:paddingBottom="12dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:text="@string/pairing_duplicate_names"
app:drawableStartCompat="@drawable/ic_warning"
app:drawableLeftCompat="@drawable/ic_warning">
</TextView>

View File

@@ -13,4 +13,6 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
android:clipToPadding="false"
android:orientation="vertical"
android:paddingHorizontal="@dimen/activity_horizontal_margin"
android:paddingVertical="@dimen/activity_vertical_margin" />
android:paddingVertical="@dimen/activity_vertical_margin">
</androidx.recyclerview.widget.RecyclerView>

View File

@@ -19,6 +19,12 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
android:visibility="gone"
tools:visibility="visible">
<ProgressBar
android:id="@+id/pair_progress"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:visibility="gone" />
<TextView
android:id="@+id/pair_message"
android:layout_width="wrap_content"
@@ -27,13 +33,6 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
android:text="@string/device_not_paired"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/pairing_explanation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="12dip"
android:text="@string/pairing_explanation" />
<TextView
android:id="@+id/pair_verification"
android:layout_width="wrap_content"
@@ -41,15 +40,10 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
android:drawablePadding="5dp"
android:layout_marginBottom="8dip"
android:importantForAccessibility="no"
android:visibility="gone"
android:textAppearance="?android:attr/textAppearanceMedium"
app:drawableStartCompat="@drawable/ic_key" />
<ProgressBar
android:id="@+id/pair_progress"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:visibility="gone" />
<com.google.android.material.button.MaterialButton
android:id="@+id/pair_button"
android:layout_width="match_parent"

View File

@@ -7,20 +7,11 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="20dp">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dip"
android:text="@string/pairing_title"
android:textAppearance="?android:attr/textAppearanceLarge" />
<ListView
android:id="@+id/run_commands_device_list"
android:layout_width="match_parent"
@@ -29,12 +20,13 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
android:addStatesFromChildren="true"
android:orientation="vertical"
android:divider="@null"
android:dividerHeight="12dp" />
android:dividerHeight="0dp" />
<TextView
android:id="@+id/no_devices"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="10dip"
android:text="@string/device_list_empty"
android:textAppearance="?android:attr/textAppearanceSmall"

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_banner_background"/>
<foreground android:drawable="@drawable/ic_launcher_banner_foreground"/>
</adaptive-icon>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

View File

@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='utf-8'?>
<resources>
<string name="kde_connect">جسر كِيدِي</string>
<string name="kde_connect">كِيدِي المتّصل</string>
<string name="manifest_label_share">أرسِل إلى جهاز</string>
<string name="foreground_notification_no_devices">غير متصل بأي جهاز</string>
<string name="foreground_notification_devices">متّصل بـ: %s</string>
@@ -10,60 +10,41 @@
<string name="pref_plugin_battery">تقرير البطّاريّة</string>
<string name="pref_plugin_battery_desc">بلّغ عن حالة البطّاريّة دوريًّا</string>
<string name="pref_plugin_connectivity_report">تقرير الاتصال</string>
<string name="pref_plugin_connectivity_report_desc">تقرير قوة إشارة الشبكة والحالة</string>
<string name="pref_plugin_sftp">اكشف نظام الملفّات</string>
<string name="pref_plugin_sftp_desc">تسمح بتصفّح نظام ملفّات هذا الهاتف عن بعد</string>
<string name="pref_plugin_clipboard">مزامنة الحافظة</string>
<string name="pref_plugin_clipboard_desc">شارك محتوى الحافظة</string>
<string name="pref_plugin_clipboard_sent">أرسل للحافظة</string>
<string name="pref_plugin_mousepad">الإدخال البعيد</string>
<string name="pref_plugin_clipboard_sent">أرسل الحافظة</string>
<string name="pref_plugin_mousepad">الدّخل البعيد</string>
<string name="pref_plugin_mousepad_desc">استخدم الهاتف أو اللوحيّ كفأرة ولوحة مفاتيح</string>
<string name="pref_plugin_presenter">متحكم العرض التقديمي</string>
<string name="pref_plugin_presenter_desc">استخدام جهازك لتغيير الشرائح في العرض التقديمي</string>
<string name="pref_plugin_remotekeyboard">تلقي ضغطات المفاتيح البعيدة</string>
<string name="pref_plugin_remotekeyboard_desc">تلقي أحداث الضغط على المفاتيح من الأجهزة البعيدة</string>
<string name="pref_plugin_mpris">تحكّمات الوسائط المتعدّدة</string>
<string name="pref_plugin_mpris_desc">توفّر تحكّمًا بعيدًا لمشغّل الوسائط</string>
<string name="pref_plugin_runcommand">شغّل أمرًا</string>
<string name="pref_plugin_runcommand_desc">شغّل أوامر عن بعد من الهاتف أو اللوحيّ</string>
<string name="pref_plugin_runcommand_desc">تحفّز أوامر عن بعد من الهاتف أو اللوحيّ</string>
<string name="pref_plugin_contacts">مزامن المتراسلين</string>
<string name="pref_plugin_contacts_desc">اسمح بمزامنة دفتر المتراسلين في الجهاز</string>
<string name="pref_plugin_ping">وخزة Ping</string>
<string name="pref_plugin_ping_desc">أرسل واستقبل وخزات Ping</string>
<string name="pref_plugin_notifications">مزامنة الإشعارات</string>
<string name="pref_plugin_notifications_desc">انفذ إلى إشعاراتك من أجهزة أخرى</string>
<string name="pref_plugin_receive_notifications">استقبل الإشعارات</string>
<string name="pref_plugin_receive_notifications_desc">استقبل الإشعارات من الجهاز الآخر واعرضها على أندرويد</string>
<string name="pref_plugin_ping">وخزة</string>
<string name="pref_plugin_ping_desc">أرسل واستقبل وخزات</string>
<string name="pref_plugin_notifications">مزامنة الإخطارات</string>
<string name="pref_plugin_notifications_desc">انفذ إلى إخطاراتك من أجهزة أخرى</string>
<string name="pref_plugin_receive_notifications">استقبل الإخطارات</string>
<string name="pref_plugin_receive_notifications_desc">استقبل الإخطارات من الجهاز الآخر واعرضها على أندرويد</string>
<string name="pref_plugin_sharereceiver">شارك واستقبل</string>
<string name="pref_plugin_sharereceiver_desc">شارك الملفّات والعناوين بين الجهازين</string>
<string name="device_list_empty">لا توجد أجهزة</string>
<string name="device_list_empty">لا أجهزة</string>
<string name="ok">حسنًا</string>
<string name="sad_ok">حسنًا ):</string>
<string name="cancel">ألغِ</string>
<string name="open_settings">افتح الإعدادات</string>
<string name="no_permissions">عليك إعطاء التّطبيق صلاحيّات للنّفاذ إلى الإشعارات</string>
<string name="no_permission_mprisreceiver">لتكون قادرًا على التحكم في مشغلات الوسائط الخاصة بك ، تحتاج إلى منح حق الوصول إلى الإشعارات</string>
<string name="no_permissions_remotekeyboard">لتلقي ضغطات المفاتيح تحتاج إلى تنشيط لوحة المفاتيح البعيدة لجسر كِيدِي</string>
<string name="send_ping">أرسل وخزة ping</string>
<string name="open_mpris_controls">متحكّمات الوسائط المتعدّدة</string>
<string name="remotekeyboard_editing_only_title">التعامل مع المفاتيح البعيدة فقط عند التحرير</string>
<string name="remotekeyboard_not_connected">لا يوجد اتصال لوحة المفاتيح بعيدة نشط، وإنشاء واحد في جسر كِيدِي</string>
<string name="remotekeyboard_connected">اتصال لوحة المفاتيح بعيدة نشط</string>
<string name="remotekeyboard_multiple_connections">هناك أكثر من اتصال لوحة مفاتيح بعيدة، حدد الجهاز لتضبطه</string>
<string name="open_mousepad">الإدخال البعيد</string>
<string name="mousepad_info">حرك إصبعًا على الشاشة لتحريك مؤشر الفأرة. اطرق للنقرة، واستخدم اثنين أو ثلاث أصابع للأزرار اليمنى والوسطى. استخدام أصبعين للتمرير. استخدم الضغط طويلًا للسحب والإفلات. يمكن تمكين وظيفة الفأرة التوجيهية Gyro من تفضيلات الملحقة.</string>
<string name="mousepad_info_no_gestures">حرك إصبعًا على الشاشة لتحريك مؤشر الفأرة، اطرق للنقرة.</string>
<string name="mousepad_keyboard_input_not_supported">إدخال لوحة المفاتيح غير مدعوم من قبل الجهاز المقترن</string>
<string name="mousepad_single_tap_settings_title">اضبط إجراء الطَرق بأصبع واحدة</string>
<string name="mousepad_double_tap_settings_title">اضبط إجراء الطرق بأصبعين</string>
<string name="mousepad_triple_tap_settings_title">اضبط إجراء الطرق بثلاث أصابع</string>
<string name="no_permissions">عليك إعطاء التّطبيق صلاحيّات للنّفاذ إلى الإخطارات</string>
<string name="send_ping">أرسل وخزة</string>
<string name="open_mpris_controls">تحكّمات الوسائط المتعدّدة</string>
<string name="open_mousepad">الدّخل البعيد</string>
<string name="mousepad_single_tap_settings_title">اضبط إجراء الطَرق بالأصبع</string>
<string name="mousepad_double_tap_settings_title">اضبط إجراء اللمس بإصبعين</string>
<string name="mousepad_triple_tap_settings_title">اضبط إجراء اللمس بثلاث أصابع</string>
<string name="mousepad_sensitivity_settings_title">اضبط حساسيّة لوحة اللمس</string>
<string name="mousepad_mouse_buttons_title">أظهر أزرار الفأرة</string>
<string name="mousepad_acceleration_profile_settings_title">عيّن تسارع المؤشر</string>
<string name="mousepad_scroll_direction_title">اعكس اتّجاه التّمرير</string>
<string name="mousepad_scroll_sensitivity_title">حساسية التمرير</string>
<string name="gyro_mouse_enabled_title">تمكين الفأر التوجيهي</string>
<string name="gyro_mouse_sensitivity_title">حساسية التوجيه</string>
<string-array name="mousepad_tap_entries">
<item>النّقر باليسار</item>
<item>النقر باليمين</item>
@@ -73,33 +54,18 @@
<string-array name="mousepad_sensitivity_entries">
<item>الأبطأ</item>
<item>الأقل بطئًا</item>
<item>المبدئيّ</item>
<item>الافتراضيّ</item>
<item>الأسرع قليلًا</item>
<item>الأسرع</item>
</string-array>
<string-array name="mousepad_acceleration_profile_entries">
<item>دون تسريع</item>
<item>بدون تسريع</item>
<item>الأكثر ضعفاً</item>
<item>ضعيف</item>
<item>متوسط</item>
<item>أقوى</item>
<item>الأقوى</item>
</string-array>
<string name="sendkeystrokes_send_to">أرسل ضغطات المفاتيح إلى</string>
<string name="sendkeystrokes_textbox_hint">أرسل ضغطات المفاتيح إلى المضيف</string>
<string name="sendkeystrokes_disabled_toast">إرسال ضغطات المفاتيح معطل - تمكينه في الإعدادات</string>
<string name="sendkeystrokes_wrong_data">نوع ملف غير صحيح - يجب أن يكون \'text/x-keystrokes\'</string>
<string name="sendkeystrokes_sent_text">أرسل %1$s إلى جهاز %2$s</string>
<string name="sendkeystrokes_pref_category_summary">تسمح هذه الوحدة للتطبيقات الأخرى بمشاركة مقاطع النص على شكل ضغطات مفاتيح والتي ستُرسل إلى المضيف المتصل</string>
<string name="sendkeystrokes_pref_category_title">أرسل ضغطات المفاتيح</string>
<string name="sendkeystrokes_pref_enabled">مكّن إرسال ضغطات المفاتيح</string>
<string name="sendkeystrokes_pref_enabled_summary">ستمع إلى البيانات التي تحتوي على نوع ملف التعريف \'text/x-keystrokes\'</string>
<string name="sendkeystrokes_safe_text_enabled">أرسل نص آمن فورًا</string>
<string name="sendkeystrokes_safe_text_enabled_summary">أرسل سلاسل رقمية قصيرة فقط دون تأكيد</string>
<string name="pref_plugin_mousepad_send_keystrokes">أرسل كضغطات مفاتيح</string>
<string name="mouse_receiver_plugin_description">استقبل حركة الفأرة البعيدة</string>
<string name="mouse_receiver_plugin_name">مستقبل الفأرة</string>
<string name="mouse_receiver_no_permissions">لتلقي المدخلات التي تعمل باللمس عن بُعد، تحتاج إلى منح أذونات إمكانية الوصول للتحكم الكامل في جهازك</string>
<string name="view_status_title">الحالة</string>
<string name="battery_status_format">البطارية: %d%%</string>
<string name="battery_status_low_format">البطارية: %d%% منخفضة</string>
@@ -110,98 +76,26 @@
<string name="device_menu_plugins">إعدادات الملحقة</string>
<string name="device_menu_unpair">ألغِ الاقتران</string>
<string name="pair_new_device">اقرن جهازًا جديدًا</string>
<string name="cancel_pairing">ألغ الاقتران</string>
<string name="unknown_device">جهاز مجهول</string>
<string name="error_not_reachable">الجهاز غير قابل الوصول</string>
<string name="error_already_paired">الجهاز مقترن بالفعل</string>
<string name="error_timed_out">انتهت المهلة</string>
<string name="error_clocks_not_match">ساعات الجهاز غير متزامنة</string>
<string name="error_canceled_by_user">ألغاه المستخدم</string>
<string name="error_canceled_by_other_peer">ألغاه ندّ آخر</string>
<string name="encryption_info_title">معلومات التّعمية</string>
<string name="my_device_fingerprint">بصمة SHA256 لشهادة جهازك هي:</string>
<string name="remote_device_fingerprint">بصمة SHA256 لشهادة الجهاز البعيد هي:</string>
<string name="encryption_info_msg_no_ssl">لا يستخدم الجهاز الآخر إصدارة حديثة من «كِيدِي المتّصل»، ستُستخدم طريقة التّعمية القديمة.</string>
<string name="pair_requested">طُلب الاقتران</string>
<string name="pair_succeeded">نجح الاقتران</string>
<string name="pairing_request_from">اطلب اقتران من \'%1s\'</string>
<plurals name="incoming_file_title">
<item quantity="zero">لا يستقبل شيء</item>
<item quantity="one">يستقبل %1$d ملف من %2$s</item>
<item quantity="two">يستقبل %1$d ملفات من %2$s</item>
<item quantity="few">يستقبل %1$d ملفات من %2$s</item>
<item quantity="many">يستقبل %1$d ملفًا من %2$s</item>
<item quantity="other">يستقبل %1$d ملف من %2$s</item>
</plurals>
<plurals name="incoming_files_text">
<item quantity="zero">ملف: %1s</item>
<item quantity="one">ملف: %1s</item>
<item quantity="two">(الملف %2$d من %3$d) : %1$s</item>
<item quantity="few">(الملف %2$d من %3$d) : %1$s</item>
<item quantity="many">(الملف %2$d من %3$d) : %1$s</item>
<item quantity="other">(الملف %2$d من %3$d) : %1$s</item>
</plurals>
<plurals name="outgoing_file_title">
<item quantity="zero">لا يرسل شيء</item>
<item quantity="one">يرسل %1$d ملف إلى %2$s</item>
<item quantity="two">يرسل %1$d ملفات إلى %2$s</item>
<item quantity="few">يرسل %1$d ملفات إلى %2$s</item>
<item quantity="many">يرسل %1$d ملفًا إلى %2$s</item>
<item quantity="other">يرسل %1$d ملف إلى %2$s</item>
</plurals>
<plurals name="outgoing_files_text">
<item quantity="zero">ملف: %1$s</item>
<item quantity="one">ملف: %1$s</item>
<item quantity="two">(الملف %2$d من %3$d) : %1$s</item>
<item quantity="few">(الملف %2$d من %3$d) : %1$s</item>
<item quantity="many">(الملف %2$d من %3$d) : %1$s</item>
<item quantity="other">(الملف %2$d من %3$d) : %1$s</item>
</plurals>
<plurals name="received_files_title">
<item quantity="zero">لم استلم شيئًا</item>
<item quantity="one">استُلمت %2$d ملف من %1$s</item>
<item quantity="two">استُلمت ملفين من %1$s</item>
<item quantity="few">استُلمت %2$d ملفات من %1$s</item>
<item quantity="many">استُلمت %2$d ملفًا من %1$s</item>
<item quantity="other">استُلمت %2$d ملف من %1$s</item>
</plurals>
<plurals name="received_files_fail_title">
<item quantity="zero">فشل استلام ملف من %1$s</item>
<item quantity="one">فشل استلام ملف من %1$s</item>
<item quantity="two">فشل استلام %2$d من %3$d ملفًا من %1$s</item>
<item quantity="few">فشل استلام %2$d من %3$d ملفًا من %1$s</item>
<item quantity="many">فشل استلام %2$d من %3$d ملفًا من %1$s</item>
<item quantity="other">فشل استلام %2$d من %3$d ملفًا من %1$s</item>
</plurals>
<plurals name="sent_files_title">
<item quantity="zero">لم يرسل شيء إلى %1$s</item>
<item quantity="one">أرسل ملف إلى %1$s</item>
<item quantity="two">أرسل ملفين إلى %1$s</item>
<item quantity="few">أرسل %2$d ملفات إلى %1$s</item>
<item quantity="many">أرسل %2$d ملفًا إلى %1$s</item>
<item quantity="other">أرسل %2$d ملف إلى %1$s</item>
</plurals>
<plurals name="send_files_fail_title">
<item quantity="zero">فشل في إرسال ملف إلى %1$s</item>
<item quantity="one">فشل في إرسال ملف إلى %1$s</item>
<item quantity="two">فشل في إرسال %2$d من %3$d ملفًا إلى %1$s</item>
<item quantity="few">فشل في إرسال %2$d من %3$d ملفًا إلى %1$s</item>
<item quantity="many">فشل في إرسال %2$d من %3$d ملفًا إلى %1$s</item>
<item quantity="other">فشل في إرسال %2$d من %3$d ملفًا إلى %1$s</item>
</plurals>
<string name="pairing_request_from">طلب اقتران من %1s</string>
<string name="tap_to_open">اطرق لتفتح</string>
<string name="received_file_text">اطرق لفتح \'%1s\'</string>
<string name="cannot_create_file">تعذّر إنشاء الملف %s</string>
<string name="tap_to_answer">اطرق للإجابة</string>
<string name="left_click">أرسل نقرة باليسار</string>
<string name="received_file_text">المس لفتح \'%1s\'</string>
<string name="tap_to_answer">المس للإجابة</string>
<string name="right_click">أرسل نقرة باليمين</string>
<string name="middle_click">أرسل نقرة بالوسط</string>
<string name="show_keyboard">أظهر لوحة المفاتيح</string>
<string name="device_not_paired">الجهاز غير مقترن</string>
<string name="pairing_duplicate_names">تنبيه: هناك عدة أجهزة تحمل نفس الاسم.</string>
<string name="request_pairing">اطلب الاقتران</string>
<string name="pairing_accept">اقبل</string>
<string name="pairing_reject">ارفض</string>
<string name="pairing_explanation">سيؤدي إقران جهازين إلى منحهما إمكانية الوصول إلى بعضهما البعض. قم بإقران أجهزتك الخاصة بك فقط.</string>
<string name="settings">إعدادات</string>
<string name="mpris_play">شغّل</string>
<string name="mpris_pause">ألبث</string>
@@ -221,165 +115,89 @@
<item>دقيقة واحدة</item>
<item>دقيقتان</item>
</string-array>
<string name="mpris_notifications_explanation">يلزم الحصول على إذن الإشعارات لإظهار الوسائط البعيدة في درج الإشعارات</string>
<string name="mpris_notification_settings_title">أظهر إشعار التحكم في الوسائط</string>
<string name="mpris_notification_settings_summary">اسمح بالتحكم في مشغلات الوسائط دون فتح جسر كِيدِي</string>
<string name="share_to">شارك مع…</string>
<string name="unreachable_device_dynamic_shortcut">%s (✕)</string>
<string name="unreachable_device_url_share_text">شاركنا العناوين إلى جهاز لا يمكن الوصول إليه، ستُسلم إليه بمجرد أن يصبح الوصول إليه ممكناً.\n\n</string>
<string name="protocol_version">إصدار الميفاق:</string>
<string name="protocol_version_newer">يستخدم هذا الجهاز إصدار ميفاق أحدث</string>
<string name="plugin_settings_with_name">إعدادات %s</string>
<string name="invalid_device_name">اسم جهاز غير صالح</string>
<string name="shareplugin_text_saved">استُقبل نصّ، حُفظ إلى الحافظة</string>
<string name="custom_devices_settings">قائمة أجهزة مخصّصة</string>
<string name="custom_devices_settings_summary">%d أجهزة مضافة يدوياً</string>
<string name="custom_device_list">أضف أجهزة بعنوان IP</string>
<string name="custom_device_list">أضف أجهزة بميفاق الإنترنت م​إ</string>
<string name="custom_device_deleted">حُذف الجهاز المخصّص</string>
<string name="custom_device_list_help">إذا لم يُكتشف جهازك آلياً يمكنك إضافة عنوان IP الخاص به أو اسم المضيف الخاص به من خلال النقر على زر الإجراء العائم</string>
<string name="custom_device_fab_hint">أضف جهازاً</string>
<string name="undo">تراجع</string>
<string name="share_notification_preference">إخطارات مزعجة</string>
<string name="share_notification_preference_summary">اهتزّ وشغّل صوتًا عند استقبال ملفّ</string>
<string name="share_destination_customize">خصص مجلد المقصد</string>
<string name="share_destination_customize_summary_disabled">ستظهر الملفات المستلمة في التنزيلات</string>
<string name="share_destination_customize_summary_enabled">ستُخزن الملفات في المجلد أدناه</string>
<string name="share_destination_folder_preference">مجلد الوجهة</string>
<string name="share">شارك</string>
<string name="share_received_file">شارك \"%s\"</string>
<string name="title_activity_notification_filter">مرشّح الإخطارات</string>
<string name="filter_apps_info">ستُزامن الإخطارات من التّطبيقات المحدّدة.</string>
<string name="show_notification_if_screen_off">أرسل تنبيهات فقط إذا كانت الشاشة مغلقة</string>
<string name="add_device_dialog_title">أضف جهازاً</string>
<string name="add_device_hint">اسم المضيف أو عنوان IP</string>
<string name="sftp_preference_configured_storage_locations">أماكن التّخزين المضبوطة</string>
<string name="sftp_preference_add_storage_location_title">أضف مكان تخزين</string>
<string name="sftp_preference_edit_storage_location">حرر مكان التخزين</string>
<string name="sftp_storage_preference_storage_location">مكان التخزين</string>
<string name="sftp_storage_preference_storage_location_already_configured">هذا المكان مضبوط مسبقًا</string>
<string name="sftp_storage_preference_click_to_select">"انقر للاختيار "</string>
<string name="sftp_storage_preference_display_name">اسم العرض</string>
<string name="sftp_storage_preference_display_name_already_used">اسم العرض مستخدم مسبقًا</string>
<string name="sftp_storage_preference_display_name_cannot_be_empty">اسم العرض لا يمكن أن يكون فارغا</string>
<string name="sftp_action_mode_menu_delete">احذف</string>
<string name="sftp_no_storage_locations_configured">لا توجد مواقع تخزين مضبوطة</string>
<string name="sftp_saf_permission_explanation">للوصول إلى الملفات عن بُعد عليك ضبط مواقع التخزين</string>
<string name="sftp_manage_storage_permission_explanation">للسماح بالوصول عن بُعد إلى الملفات الموجودة على هذا الجهاز، يجب أن تسمح لـ جسر كِيدِي بإدارة التخزين.</string>
<string name="no_players_connected">لم يُعثر على مشغّلات</string>
<string name="send_files">أرسل ملفّات</string>
<string name="block_notification_contents">احظر محتويات الإشعار</string>
<string name="block_notification_images">احظر صور الإشعار</string>
<string name="pairing_title">أجهزة «جسر كِيدِي»</string>
<string name="pairing_description">الأجهزة الأخرى التي تشغّل «جسر كِيدِي» وعلى نفس الشّبكة ستظهر هنا.</string>
<string name="pairing_title">أجهزة «كِيدِي المتّصل»</string>
<string name="pairing_description">الأجهزة الأخرى التي تشغّل «كِيدِي المتّصل» وعلى نفس الشّبكة ستظهر هنا.</string>
<string name="device_rename_title">أعد تسمية الجهاز</string>
<string name="device_rename_confirm">أعد التّسمية</string>
<string name="refresh">حدّث</string>
<string name="refresh">أنعش</string>
<string name="unreachable_description">الجهاز المقترن هذا لا يمكن الوصول إليه. تأكّد من اتّصاله بنفس الشّبكة.</string>
<string name="no_wifi">أنت غير متصل بشبكة واي فاي، لذلك قد لا تتمكن من رؤية أي أجهزة. انقر هنا لتمكين واي فاي.</string>
<string name="on_non_trusted_message">ليس على شبكة موثوق بها: الاكتشاف التلقائي معطل.</string>
<string name="no_file_browser">لا متصفّحات ملفّات مثبّتة.</string>
<string name="pref_plugin_telepathy">أرسل رسالة نصية قصيرة</string>
<string name="pref_plugin_telepathy">أرسل SMS</string>
<string name="pref_plugin_telepathy_desc">أرسل رسائل نصّيّة من سطح المكتب</string>
<string name="pref_plugin_telepathy_mms">أرسل رسالة وسائط</string>
<string name="pref_plugin_telepathy_mms_desc">لتتمكن من إرسال رسائل الوسائط المتعددة من جسر كِيدِي، عليك تعيينه كتطبيق الرسائل القصيرة المبدئي.</string>
<string name="findmyphone_title">جِد جهازي</string>
<string name="findmyphone_title_tablet">جِد جهازي اللوحيّ</string>
<string name="findmyphone_title_tv">جِد تلفازي</string>
<string name="findmyphone_description">يرّن هذا الجهاز لتجده</string>
<string name="findmyphone_found">عثرت عليه</string>
<string name="findmyphone_found">عثر عليه</string>
<string name="open">افتح</string>
<string name="close">أغلق</string>
<string name="plugins_need_permission">تحتاج بعض المُلحَقَات إلى أذونات للعمل (انقر للحصول على مزيد من المعلومات):</string>
<string name="permission_explanation">تحتاج هذه الملحقة إلى أذونات للعمل</string>
<string name="all_permissions_granted">جميع الأذونات ممنوحة 🎉</string>
<string name="optional_permission_explanation">تحتاج إلى منح أذونات إضافية لتمكين جميع الوظائف</string>
<string name="plugins_need_optional_permission">تحتوي بعض المُلحقات على ميزات معطلة بسبب عدم وجود إذن (انقر للحصول على مزيد من المعلومات):</string>
<string name="share_optional_permission_explanation">لتلقي الملفات تحتاج إلى السماح بالوصول إلى التخزين</string>
<string name="share_notifications_explanation">لرؤية التقدم المحرز عند إرسال واستقبال الملفات تحتاج إلى السماح بالإشعارات</string>
<string name="telepathy_permission_explanation">لقراءة الرسائل النصية القصيرة وكتابتها من سطح المكتب، تحتاج إلى منح الإذن للرسائل النصية القصيرة</string>
<string name="telephony_permission_explanation">للاطلاع على المكالمات الهاتفية على سطح المكتب، تحتاج إلى منح الإذن لسجلات المكالمات الهاتفية وحالة الهاتف</string>
<string name="telephony_optional_permission_explanation">للاطلاع على اسم المتراسل بدلاً من رقم الهاتف، تحتاج إلى منح حق الوصول إلى المتراسلين على الهاتف</string>
<string name="contacts_permission_explanation">لمشاركة دفتر متراسليك مع سطح المكتب، تحتاج إلى منح إذن الوصول إلى المتراسلين</string>
<string name="contacts_per_device_confirmation">ستُنسخ جهات اتصال هاتفك إلى هذا الجهاز، بحيث يمكن استخدامها من قبل تطبيق جسر كِيدِي للرسائل النصية القصيرة والتطبيقات الأخرى.</string>
<string name="select_ringtone">اختر النغمة</string>
<string name="telephony_pref_blocked_title">أرقام محظورة</string>
<string name="telephony_pref_blocked_dialog_desc">لا تعرض المكالمات والرسائل النصية القصيرة من هذه الأرقام. يرجى تحديد رقم واحد لكل سطر</string>
<string name="mpris_coverart_description">الصورة الفنية للوسيط الحالي</string>
<string name="settings_icon_description">أيقونة الإعدادات</string>
<string name="presenter_fullscreen">ملء الشّاشة</string>
<string name="presenter_exit">اخرج من العرض التقديمي</string>
<string name="presenter_lock_tip">يمكنك قفل جهازك واستخدام مفاتيح الصوت للانتقال إلى الشريحة السابقة/التالية</string>
<string name="add_command">أضف أمراً</string>
<string name="addcommand_explanation">لا يوجد أوامر مسجلة</string>
<string name="addcommand_explanation2">يمكنك إضافة أوامر جديدة في إعدادات نظام جسر كِيدِي في إعدادات نظام جسر كِيدِي</string>
<string name="add_command_description">يمكنك إضافة أوامر على سطح المكتب</string>
<string name="pref_plugin_mprisreceiver">متحكم الوسائط</string>
<string name="pref_plugin_mprisreceiver_desc">تحكم في مشغلات الوسائط في هاتفك من جهاز آخر</string>
<string name="notification_channel_default">الإشعارات الأخرى</string>
<string name="notification_channel_persistent">مؤشر مستمر</string>
<string name="notification_channel_default">إخطارات أخرى</string>
<string name="notification_channel_media_control">متحكم الوسائط</string>
<string name="notification_channel_filetransfer">نقل الملفات الواردة</string>
<string name="notification_channel_filetransfer_upload">نقل الملفات الصادرة</string>
<string name="notification_channel_filetransfer_error">خطأ في النقل الملف</string>
<string name="notification_channel_high_priority">مرتفعة الأولوية</string>
<string name="mpris_stop">أوقف المشغل الحالي</string>
<string name="copy_url_to_clipboard">انسخ المسار إلى الحافظة</string>
<string name="clipboard_toast">نُسخ إلى الحافظة</string>
<string name="runcommand_notreachable">الجهاز غير قابل الوصول</string>
<string name="runcommand_notpaired">الجهاز غير مقترن</string>
<string name="runcommand_nosuchdevice">لا يوجد جهاز من هذا القبيل</string>
<string name="runcommand_noruncommandplugin">لم يُمكّن ملحقة تشغيل الأوامر في هذا الجهاز</string>
<string name="runcommand_category_device_controls_title">متحكمات الجهاز</string>
<string name="runcommand_device_controls_summary">إذا كان جهازك يدعم عناصر تحكم الجهاز، فستظهر الأوامر التي ضبطتها هناك.</string>
<string name="set_runcommand_name_as_title">اجعل اسم الأمر كعنوان</string>
<string name="runcommand_name_as_title_title">اعرض الاسم كعنوان</string>
<string name="pref_plugin_findremotedevice">اعثر على جهاز بعيد</string>
<string name="pref_plugin_findremotedevice_desc">رنّ على الجهاز البعيد</string>
<string name="ring">رّن</string>
<string name="pref_plugin_systemvolume">صوت النظام</string>
<string name="pref_plugin_systemvolume_desc">تحكّم في مستوى صوت النظام للجهاز البعيد</string>
<string name="mute">اكتم</string>
<string name="all">الكلّ</string>
<string name="devices">الأجهزة</string>
<string name="settings_rename">اسم الجهاز</string>
<string name="settings_dark_mode">سمة مظلمة</string>
<string name="settings_export_logs">صدّر سجل جسر كِيدِي</string>
<string name="settings_export_logs_text">أنشئ ملفًا يحتوي على معلومات التنفيذ التي يمكن أن تساعد في استكشاف المشكلات وإصلاحها.</string>
<string name="settings_more_settings_title">المزيد من الإعدادات</string>
<string name="settings_more_settings_text">يمكن العثور على إعدادات لكل جهاز ضمن ”إعدادات الملحقة“ من داخل الجهاز.</string>
<string name="setting_persistent_notification">أظهر الإخطارات المستمرّة</string>
<string name="setting_persistent_notification_oreo">الإخطارات المستمرّة</string>
<string name="setting_persistent_notification_description">اطرق للتمكين/التعطيل في إعدادات الإشعارات</string>
<string name="extra_options">الخيارات الإضافية</string>
<string name="privacy_options">خيارات الخصوصية</string>
<string name="set_privacy_options">حدد خيارات الخصوصية</string>
<string name="block_contents">امنح محتويات الإخطارات</string>
<string name="block_images">امنع الصور في الإخطارات</string>
<string name="notification_channel_receivenotification">إخطارات من أجهزة أخرى</string>
<string name="no_app_for_opening">لا يوجد تطبيق مناسب لفتح هذا الملف</string>
<string name="remote_keyboard_service">لوحة مفاتيح بعيده لجسر كِيدِي</string>
<string name="presenter_pointer">المؤشر</string>
<string name="trusted_networks">الشّبكات الموثوقة</string>
<string name="trusted_networks_desc">اقَصْر الاكتشاف التلقائي على الشبكات المعروفة</string>
<string name="add_trusted_network">أضف %1s</string>
<string name="empty_trusted_networks_list_text">لم تضف أي شبكة موثوق بها حتى الآن</string>
<string name="add_trusted_network">أضف %s</string>
<string name="allow_all_networks_text">اسمح للكل</string>
<string name="location_permission_needed_title">الإذن مطلوب</string>
<string name="bluetooth_permission_needed_desc">يحتاج جسر كِيدِي إلى إذن للاتصال بالأجهزة القريبة لإتاحة الأجهزة المقترنة باستخدام البلوتوث في جسر كِيدِي.</string>
<string name="location_permission_needed_desc">يحتاج جسر كِيدِي إلى إذن الموقع في الخلفية لمعرفة شبكة الواي فاي التي تتصل بها حتى عندما يكون التطبيق في الخلفية. وذلك لأنه يمكن استخدام اسم شبكات الواي فاي من حولك للعثور على موقعك، حتى وإن لم يكن هذا ما يفعله جسر كِيدِي.</string>
<string name="clipboard_android_x_incompat">قام أندرويد 10 بإزالة وصول للحافظة إلى جميع التطبيقات. ستعطل هذه الملحقة.</string>
<string name="mpris_open_url">استمر في التشغيل هنا</string>
<string name="cant_open_url">تعذر فتح العنوان للاستمرار في التشغيل</string>
<string name="bigscreen_home">المنزل</string>
<string name="bigscreen_up">أعلى</string>
<string name="bigscreen_left">يسار</string>
<string name="bigscreen_select">اختر</string>
<string name="bigscreen_right">يمين</string>
<string name="bigscreen_down">أسفل</string>
<string name="bigscreen_mic">ميكروفون</string>
<string name="bigscreen_mic">اللاقط</string>
<string name="pref_plugin_bigscreen">متحكم الشاشة الكبيرة</string>
<string name="pref_plugin_bigscreen_desc">استخدم جهازك كجهاز تحكم عن بُعد لشاشة البلازما الكبيرة</string>
<string name="bigscreen_optional_permission_explanation">لمشاركة إدخال الميكروفون من هاتفك تحتاج إلى إتاحة الوصول إلى إدخال الصوت في الهاتف</string>
<string name="bigscreen_speech_extra_prompt">حديث</string>
<string name="message_reply_label">ردّ</string>
<string name="mark_as_read_label">علّم كمقروءة</string>
@@ -398,13 +216,13 @@
<string name="theme_dialog_title">اختر سمة</string>
<string-array name="theme_list">
<item>معينة بواسطة حافظ البطارية</item>
<item>فاتح</item>
<item>خفيف</item>
<item>مظلمة</item>
</string-array>
<string-array name="theme_list_v28">
<item>مبدئيات النظام</item>
<item>فاتح</item>
<item>مظلم</item>
<item>افتراضيات النظام</item>
<item>خفيف</item>
<item>مظلمة</item>
</string-array>
<string name="report_bug">أبلغ عن علة</string>
<string name="donate">تبرّع</string>
@@ -424,44 +242,12 @@
<string name="konqi">كوينكي</string>
<string name="rise_up">ارفع</string>
<string name="rise_down">اخفض</string>
<string name="click_here_to_type">اطُرق هنا لتكتب</string>
<string name="click_here_to_type">اطُرق لتكتب</string>
<string name="clear_compose">امسح</string>
<string name="send_compose">أرسل</string>
<string name="compose_send_title">اكتب أرسل</string>
<string name="open_compose_send">اكتب نصًا</string>
<string name="double_tap_to_drag">طرق مزدوج للسحب</string>
<string name="hold_to_drag">اضغط مع الاستمرار للسحب</string>
<string name="about_kde_about"><h1>حول</h1>" "<p>كيدي مجتمع عالمي من مهندسي البرمجيات والفنانين والكتاب والمترجمين والمبدعين الملتزمين بتطوير البرمجيات الحرة. تُنتج كيدي بيئة سطح المكتب بلازما، ومئات التطبيقات، والعديد من مكتبات البرمجيات التي تدعمها.</p>" "<p>كيدي مشروع تعاوني: لا تتحكم جهة واحدة في توجهاته أو منتجاته. بل نعمل معًا لتحقيق هدفنا المشترك المتمثل في بناء أفضل برمجيات حرة في العالم. الجميع مدعوون للانضمام والمساهمة في كيدي، بمن فيهم أنت.</p>" قم بزيارة &lt;a href=https://www.kde.org/&gt;https://www.kde.org/&lt;/a&gt; للحصول على مزيد من المعلومات حول مجتمع كيدي والبرمجيات التي ننتجها"</string>
<string name="about_kde_report_bugs_or_wishes">&lt;h1&gt;الإبلاغ عن الأخطاء أو الرغبات&lt;/h1&gt; &lt;p&gt;يمكن دائمًا تحسين البرامج، وفريق كيدي مستعدٌّ لذلك. ومع ذلك، يجب عليك - كمستخدم - إبلاغنا عندما لا يعمل شيءٌ ما كما هو متوقع أو عندما يكون من الممكن تحسينه.&lt;/p&gt; &lt;p&gt;تحتوي كيدي على نظام تتبع للأخطاء. تفضل بزيارة &lt;a href=https://bugs.kde.org/&gt;https://bugs.kde.org/&lt;/a&gt; أو استخدم زر \"الإبلاغ عن خطأ\" من شاشة \"حول\" للإبلاغ عن الأخطاء.&lt;/p&gt; إذا كانت لديك أي اقتراحات للتحسين، فنرحب بك باستخدام نظام تتبع الأخطاء لتسجيل رغبتك. تأكد من استخدام مستوى الخطورة المسمى \"قائمة الأمنيات\".</string>
<string name="about_kde_join_kde">&lt;h1&gt;انضم إلى كيدي&lt;/h1&gt; &lt;p&gt;لا يلزم أن تكون مطور برامج لكي تكون عضوًا في فريق كيدي. يمكنك الانضمام إلى فرق اللغات التي تترجم واجهات البرامج. يمكنك توفير الرسومات والموضوعات والأصوات والوثائق المُحسّنة. القرار لك! &lt;p&gt;قم بزيارة &lt;a href=https://community.kde.org/Get_Involved&gt;https://community.kde.org/Get_Involved&lt;/a&gt; للحصول على معلومات حول بعض المشاريع التي يمكنك المشاركة فيها.&lt;/p&gt; إذا كنت بحاجة إلى مزيد من المعلومات أو الوثائق، فإن زيارة &lt;a href=https://techbase.kde.org/&gt;https://techbase.kde.org/&lt;/a&gt; ستوفر لك ما تحتاجه.</string>
<string name="about_kde_support_kde">&lt;h1&gt;دعم كيدي&lt;/h1&gt; &lt;p&gt;برامج كيدي متاحة دائمًا بالمجان، ولكن إنشاءها ليس مجانيًا.&lt;/p&gt; &lt;p&gt;لدعم التطوير، قام مجتمع كيدي بتأسيس KDE e.V.، وهي منظمة غير ربحية تأسست بشكل قانوني في ألمانيا. تمثل KDE e.V. مجتمع كيدي في الشؤون القانونية والمالية. انظر &lt;a href=https://ev.kde.org/&gt;https://ev.kde.org/&lt;/a&gt; للحصول على معلومات حول KDE e.V.&lt;/p&gt; &lt;p&gt;يستفيد كيدي من العديد من أنواع المساهمات، بما في ذلك المساهمات المالية. نحن نستخدم الأموال لتعويض الأعضاء وغيرهم عن النفقات التي يتكبدونها عند المساهمة. ويتم استخدام المزيد من الأموال للدعم القانوني وتنظيم المؤتمرات والاجتماعات.&lt;/p&gt; &lt;p&gt;نود أن نشجعكم على دعم جهودنا من خلال التبرع المالي، باستخدام إحدى الطرق الموضحة في &lt;a href=https://www.kde.org/community/donations/&gt;https://www.kde.org/community/donations/&lt;/a&gt;.&lt;/p&gt; نشكركم جزيل الشكر مقدمًا على دعمكم.</string>
<string name="maintainer_and_developer">الصائن ومطوّر</string>
<string name="open_compose_send">ألف نص</string>
<string name="maintainer_and_developer">المصين ومطوّر</string>
<string name="developer">مطوّر</string>
<string name="apple_support">دعم ماك أو إس. العمل على دعم iOS</string>
<string name="bug_fixes_and_general_improvements">إصلاح علل وتحسينات عامة</string>
<string name="samoilenko_yuri_task">تنفيذ SFTP، وإصلاح الأخطاء والتحسينات العامة</string>
<string name="aniket_kumar_task">تحسينات ملحق الرسائل النصية القصيرة</string>
<string name="alex_fiestas_task">تحسينات ملحق المتراسلين</string>
<string name="maxim_leshchenko_task">تحسينات واجهة المستخدم وصفحة ”حول“ هذه الصفحة</string>
<string name="holger_kaelberer_task">ملحق لوحة المفاتيح عن بُعد وإصلاح الأخطاء</string>
<string name="saikrishna_arcot_task">دعم استخدام لوحة المفاتيح في ملحق الإدخال عن بُعد، وإصلاح الأخطاء والتحسينات العامة</string>
<string name="shellwen_chen_task">تحسين أمان SFTP، وتحسين قابلية صيانة هذا المشروع، وإصلاح الأخطاء والتحسينات العامة</string>
<string name="everyone_else">كل من ساهم في جسر كِيدِي على مدار السنوات الماضية</string>
<string name="send_clipboard">أرسل الحافظة</string>
<string name="tap_to_execute">اطرق لتنفيذه</string>
<string name="plugin_stats">ملحقة الإحصائيات</string>
<string name="enable_udp_broadcast">مكّن اكتشاف الجهاز عن طريق UDP</string>
<string name="enable_bluetooth">فعّل بلوتوث (بيتا)</string>
<string name="receive_notifications_permission_explanation">يجب السماح بتلقي الإشعارات من الأجهزة الأخرى</string>
<string name="findmyphone_notifications_explanation">إذن الإشعارات مطلوب حتى يتمكن الهاتف من الرنين عندما يكون التطبيق في الخلفية</string>
<string name="no_notifications">الإشعارات معطلة، لن تتلقى إشعارات الأزواج الواردة.</string>
<string name="mpris_keepwatching">استمر في التشغيل</string>
<string name="mpris_keepwatching_settings_title">استمر في التشغيل</string>
<string name="mpris_keepwatching_settings_summary">أظهر إشعارًا صامتًا للمواصلة التشغيل على هذا الجهاز بعد إغلاق الوسائط</string>
<string name="notification_channel_keepwatching">استمر في التشغيل</string>
<string name="ping_result">تعقبت في %1$d ميلي ثانية</string>
<string name="ping_failed">تعذر الوصول إلى الجهاز</string>
<string name="ping_in_progress">يتعقب…</string>
<string name="device_host_invalid">المضيف غير صالح. استخدم اسم مضيف أو IPv4 أو IPv6 صالحاً</string>
<string name="device_host_duplicate">المضيف موجود مسبقًا في القائمة</string>
</resources>

Some files were not shown because too many files have changed in this diff Show More