From a87387cd1d303881702409ae0079ba7ebe023b07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leon=20B=C3=B6ttger?= Date: Wed, 26 Mar 2025 19:02:38 +0100 Subject: [PATCH] Add sending of clipboard --- NearDrop/AppDelegate.swift | 44 +++++++++++++++++++--- NearDrop/Base.lproj/Localizable.strings | 3 +- NearDrop/ar.lproj/Localizable.strings | 2 + NearDrop/de.lproj/Localizable.strings | 2 + NearDrop/es.lproj/Localizable.strings | 2 + NearDrop/fr.lproj/Localizable.strings | 2 + NearDrop/hu.lproj/Localizable.strings | 2 + NearDrop/it.lproj/Localizable.strings | 2 + NearDrop/ja.lproj/Localizable.strings | 2 + NearDrop/ko.lproj/Localizable.strings | 2 + NearDrop/nl.lproj/Localizable.strings | 2 + NearDrop/pt-BR.lproj/Localizable.strings | 2 + NearDrop/pt-PT.lproj/Localizable.strings | 2 + NearDrop/ro.lproj/Localizable.strings | 2 + NearDrop/ru.lproj/Localizable.strings | 3 +- NearDrop/th.lproj/Localizable.strings | 2 + NearDrop/uk.lproj/Localizable.strings | 2 + NearDrop/zh-Hans.lproj/Localizable.strings | 2 + QuickDrop.xcodeproj/project.pbxproj | 8 ++-- 19 files changed, 76 insertions(+), 12 deletions(-) diff --git a/NearDrop/AppDelegate.swift b/NearDrop/AppDelegate.swift index e9db735..6d4001a 100644 --- a/NearDrop/AppDelegate.swift +++ b/NearDrop/AppDelegate.swift @@ -30,13 +30,14 @@ class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCenterDele menu.addItem(NSMenuItem.separator()) -// // Add "Recommended Apps" menu item -// let recommendedAppsItem = NSMenuItem(title: NSLocalizedString("RecommendedApps", value: "Recommended Apps", comment: ""), action: #selector(openRecommendedApps), keyEquivalent: "") -// menu.addItem(recommendedAppsItem) + let sendClipboardItem = NSMenuItem(title: "SendClipboard".localized(), action: #selector(sendClipboard), keyEquivalent: "") + menu.addItem(sendClipboardItem) - // Add "Recommended Apps" menu item - let recommendedAppsItem = NSMenuItem(title: NSLocalizedString("GetSupport", value: "Support", comment: ""), action: #selector(getSupport), keyEquivalent: "") - menu.addItem(recommendedAppsItem) + menu.addItem(NSMenuItem.separator()) + + + let getSupportItem = NSMenuItem(title: NSLocalizedString("GetSupport", value: "Support", comment: ""), action: #selector(getSupport), keyEquivalent: "") + menu.addItem(getSupportItem) // Add "Privacy Policy" menu item let privacyPolicyItem = NSMenuItem(title: NSLocalizedString("PrivacyPolicy", value: "Privacy Policy", comment: ""), action: #selector(openPrivacyPolicy), keyEquivalent: "") @@ -90,6 +91,37 @@ class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCenterDele } + @objc func sendClipboard() { + if let fileURL = saveClipboardToTempFile() { + + let sharingService = NSSharingService(named: NSSharingService.Name("com.leonboettger.neardrop.ShareExtension")) + + sharingService?.perform(withItems: [fileURL]) + } + } + + + func saveClipboardToTempFile() -> URL? { + let pasteboard = NSPasteboard.general + + guard let clipboardString = pasteboard.string(forType: .string) else { + log("No text found in clipboard.") + return nil + } + + let tempDirectory = FileManager.default.temporaryDirectory + let fileURL = tempDirectory.appendingPathComponent("Clipboard".localized() + ".txt") + + do { + try clipboardString.write(to: fileURL, atomically: true, encoding: .utf8) + return fileURL + } catch { + log("Failed to write file: \(error)") + return nil + } + } + + @objc func openWelcomeScreen() { // Create the welcome screen SwiftUI view let welcomeView = WelcomeScreen { diff --git a/NearDrop/Base.lproj/Localizable.strings b/NearDrop/Base.lproj/Localizable.strings index e4dc6c4..d8f79dd 100644 --- a/NearDrop/Base.lproj/Localizable.strings +++ b/NearDrop/Base.lproj/Localizable.strings @@ -51,7 +51,8 @@ "GetSupport" = "Support"; "PrivacyPolicy" = "Privacy Policy"; - +"SendClipboard" = "Send Clipboard"; +"Clipboard" = "Clipboard"; "DeviceCurrentlySendingFiles" = "%1$@ is sending you %2$@"; "UserManual" = "User Manual & Settings"; "Settings" = "Settings"; diff --git a/NearDrop/ar.lproj/Localizable.strings b/NearDrop/ar.lproj/Localizable.strings index a675f05..f08596a 100644 --- a/NearDrop/ar.lproj/Localizable.strings +++ b/NearDrop/ar.lproj/Localizable.strings @@ -43,6 +43,8 @@ "RecommendedApps" = "التطبيقات الموصى بها"; "GetSupport" = "الدعم"; "PrivacyPolicy" = "سياسة الخصوصية"; +"SendClipboard" = "إرسال الحافظة"; +"Clipboard" = "الحافظة"; "DeviceCurrentlySendingFiles" = "%1$@ يرسل لك %2$@"; "UserManual" = "دليل المستخدم والإعدادات"; "Settings" = "الإعدادات"; diff --git a/NearDrop/de.lproj/Localizable.strings b/NearDrop/de.lproj/Localizable.strings index 6ad956a..0ef9cf5 100644 --- a/NearDrop/de.lproj/Localizable.strings +++ b/NearDrop/de.lproj/Localizable.strings @@ -44,6 +44,8 @@ "GetSupport" = "Support"; "PrivacyPolicy" = "Datenschutzerklärung"; +"SendClipboard" = "Zwischenablage senden"; +"Clipboard" = "Zwischenablage"; "DeviceCurrentlySendingFiles" = "%1$@ sendet dir %2$@"; "UserManual" = "Benutzerhandbuch & Einstellungen"; diff --git a/NearDrop/es.lproj/Localizable.strings b/NearDrop/es.lproj/Localizable.strings index f50dd71..2ef7295 100644 --- a/NearDrop/es.lproj/Localizable.strings +++ b/NearDrop/es.lproj/Localizable.strings @@ -43,6 +43,8 @@ "RecommendedApps" = "Apps recomendadas"; "GetSupport" = "Soporte"; "PrivacyPolicy" = "Política de privacidad"; +"SendClipboard" = "Enviar Portapapeles"; +"Clipboard" = "Portapapeles"; "DeviceCurrentlySendingFiles" = "%1$@ te está enviando %2$@"; "UserManual" = "Manual de usuario y Configuración"; "Settings" = "Configuración"; diff --git a/NearDrop/fr.lproj/Localizable.strings b/NearDrop/fr.lproj/Localizable.strings index d203cce..a90788d 100644 --- a/NearDrop/fr.lproj/Localizable.strings +++ b/NearDrop/fr.lproj/Localizable.strings @@ -43,6 +43,8 @@ "RecommendedApps" = "Applications recommandées"; "GetSupport" = "Support"; "PrivacyPolicy" = "Politique de confidentialité"; +"SendClipboard" = "Envoyer le Presse-papiers"; +"Clipboard" = "Presse-papiers"; "DeviceCurrentlySendingFiles" = "%1$@ vous envoie %2$@"; "UserManual" = "Manuel d'utilisation et Paramètres"; "Settings" = "Paramètres"; diff --git a/NearDrop/hu.lproj/Localizable.strings b/NearDrop/hu.lproj/Localizable.strings index dc33370..7083d3e 100644 --- a/NearDrop/hu.lproj/Localizable.strings +++ b/NearDrop/hu.lproj/Localizable.strings @@ -43,6 +43,8 @@ "RecommendedApps" = "Ajánlott alkalmazások"; "GetSupport" = "Támogatás"; "PrivacyPolicy" = "Adatvédelmi irányelvek"; +"SendClipboard" = "Vágólap küldése"; +"Clipboard" = "Vágólap"; "DeviceCurrentlySendingFiles" = "%1$@ éppen küldi neked: %2$@"; "UserManual" = "Felhasználói kézikönyv és Beállítások"; "Settings" = "Beállítások"; diff --git a/NearDrop/it.lproj/Localizable.strings b/NearDrop/it.lproj/Localizable.strings index 95c215a..a611231 100644 --- a/NearDrop/it.lproj/Localizable.strings +++ b/NearDrop/it.lproj/Localizable.strings @@ -43,6 +43,8 @@ "RecommendedApps" = "App consigliate"; "GetSupport" = "Supporto"; "PrivacyPolicy" = "Informativa sulla privacy"; +"SendClipboard" = "Invia Appunti"; +"Clipboard" = "Appunti"; "DeviceCurrentlySendingFiles" = "%1$@ ti sta inviando %2$@"; "UserManual" = "Manuale utente e Impostazioni"; "Settings" = "Impostazioni"; diff --git a/NearDrop/ja.lproj/Localizable.strings b/NearDrop/ja.lproj/Localizable.strings index 73d9142..aa063bd 100644 --- a/NearDrop/ja.lproj/Localizable.strings +++ b/NearDrop/ja.lproj/Localizable.strings @@ -43,6 +43,8 @@ "RecommendedApps" = "おすすめアプリ"; "GetSupport" = "サポート"; "PrivacyPolicy" = "プライバシーポリシー"; +"SendClipboard" = "クリップボードを送信"; +"Clipboard" = "クリップボード"; "DeviceCurrentlySendingFiles" = "%1$@ が %2$@ を送信中"; "UserManual" = "ユーザーマニュアルと設定"; "Settings" = "設定"; diff --git a/NearDrop/ko.lproj/Localizable.strings b/NearDrop/ko.lproj/Localizable.strings index c3e3873..890faa1 100644 --- a/NearDrop/ko.lproj/Localizable.strings +++ b/NearDrop/ko.lproj/Localizable.strings @@ -43,6 +43,8 @@ "RecommendedApps" = "추천 앱"; "GetSupport" = "지원"; "PrivacyPolicy" = "개인정보 처리방침"; +"SendClipboard" = "클립보드 보내기"; +"Clipboard" = "클립보드"; "DeviceCurrentlySendingFiles" = "%1$@이(가) %2$@을(를) 보내는 중입니다"; "UserManual" = "사용자 매뉴얼 및 설정"; "Settings" = "설정"; diff --git a/NearDrop/nl.lproj/Localizable.strings b/NearDrop/nl.lproj/Localizable.strings index 6663f08..c3a8bdc 100644 --- a/NearDrop/nl.lproj/Localizable.strings +++ b/NearDrop/nl.lproj/Localizable.strings @@ -43,6 +43,8 @@ "RecommendedApps" = "Aanbevolen apps"; "GetSupport" = "Ondersteuning"; "PrivacyPolicy" = "Privacybeleid"; +"SendClipboard" = "Klembord Verzenden"; +"Clipboard" = "Klembord"; "DeviceCurrentlySendingFiles" = "%1$@ stuurt je %2$@"; "UserManual" = "Gebruikershandleiding en Instellingen"; diff --git a/NearDrop/pt-BR.lproj/Localizable.strings b/NearDrop/pt-BR.lproj/Localizable.strings index 9a473cc..8e8defd 100644 --- a/NearDrop/pt-BR.lproj/Localizable.strings +++ b/NearDrop/pt-BR.lproj/Localizable.strings @@ -43,6 +43,8 @@ "RecommendedApps" = "Apps recomendados"; "GetSupport" = "Suporte"; "PrivacyPolicy" = "Política de Privacidade"; +"SendClipboard" = "Enviar Área de Transferência"; +"Clipboard" = "Área de Transferência"; "DeviceCurrentlySendingFiles" = "%1$@ está enviando %2$@ para você"; "UserManual" = "Manual do Usuário e Configurações"; "Settings" = "Configurações"; diff --git a/NearDrop/pt-PT.lproj/Localizable.strings b/NearDrop/pt-PT.lproj/Localizable.strings index e85b40c..cd7c030 100644 --- a/NearDrop/pt-PT.lproj/Localizable.strings +++ b/NearDrop/pt-PT.lproj/Localizable.strings @@ -43,6 +43,8 @@ "RecommendedApps" = "Aplicativos recomendados"; "GetSupport" = "Suporte"; "PrivacyPolicy" = "Política de privacidade"; +"SendClipboard" = "Enviar Área de Transferência"; +"Clipboard" = "Área de Transferência"; "DeviceCurrentlySendingFiles" = "%1$@ está a enviar-te %2$@"; "UserManual" = "Manual do Utilizador e Definições"; "Settings" = "Definições"; diff --git a/NearDrop/ro.lproj/Localizable.strings b/NearDrop/ro.lproj/Localizable.strings index 266188d..191d77c 100644 --- a/NearDrop/ro.lproj/Localizable.strings +++ b/NearDrop/ro.lproj/Localizable.strings @@ -43,6 +43,8 @@ "RecommendedApps" = "Aplicații recomandate"; "GetSupport" = "Suport"; "PrivacyPolicy" = "Politica de confidențialitate"; +"SendClipboard" = "Trimite Clipboard-ul"; +"Clipboard" = "Clipboard"; "DeviceCurrentlySendingFiles" = "%1$@ îți trimite %2$@"; "UserManual" = "Manual utilizator & Setări"; "Settings" = "Setări"; diff --git a/NearDrop/ru.lproj/Localizable.strings b/NearDrop/ru.lproj/Localizable.strings index b557ff5..1bd9de8 100644 --- a/NearDrop/ru.lproj/Localizable.strings +++ b/NearDrop/ru.lproj/Localizable.strings @@ -44,7 +44,8 @@ "GetSupport" = "Поддержка"; "PrivacyPolicy" = "Политика конфиденциальности"; - +"SendClipboard" = "Отправить буфер обмена"; +"Clipboard" = "Буфер обмена"; "DeviceCurrentlySendingFiles" = "%1$@ отправляет вам %2$@"; "UserManual" = "Руководство пользователя и Настройки"; "Settings" = "Настройки"; diff --git a/NearDrop/th.lproj/Localizable.strings b/NearDrop/th.lproj/Localizable.strings index bc1daaf..0613681 100644 --- a/NearDrop/th.lproj/Localizable.strings +++ b/NearDrop/th.lproj/Localizable.strings @@ -43,6 +43,8 @@ "RecommendedApps" = "แอปแนะนำ"; "GetSupport" = "การสนับสนุน"; "PrivacyPolicy" = "นโยบายความเป็นส่วนตัว"; +"SendClipboard" = "ส่งคลิปบอร์ด"; +"Clipboard" = "คลิปบอร์ด"; "DeviceCurrentlySendingFiles" = "%1$@ กำลังส่ง %2$@ ให้คุณ"; "UserManual" = "คู่มือผู้ใช้และการตั้งค่า"; "Settings" = "การตั้งค่า"; diff --git a/NearDrop/uk.lproj/Localizable.strings b/NearDrop/uk.lproj/Localizable.strings index 8c10535..5a5182c 100644 --- a/NearDrop/uk.lproj/Localizable.strings +++ b/NearDrop/uk.lproj/Localizable.strings @@ -43,6 +43,8 @@ "RecommendedApps" = "Рекомендовані додатки"; "GetSupport" = "Підтримка"; "PrivacyPolicy" = "Політика конфіденційності"; +"SendClipboard" = "Надіслати буфер обміну"; +"Clipboard" = "Буфер обміну"; "DeviceCurrentlySendingFiles" = "%1$@ надсилає вам %2$@"; "UserManual" = "Керівництво користувача та налаштування"; "Settings" = "Налаштування"; diff --git a/NearDrop/zh-Hans.lproj/Localizable.strings b/NearDrop/zh-Hans.lproj/Localizable.strings index f326d4e..f2fc1a1 100644 --- a/NearDrop/zh-Hans.lproj/Localizable.strings +++ b/NearDrop/zh-Hans.lproj/Localizable.strings @@ -43,6 +43,8 @@ "RecommendedApps" = "推荐应用"; "GetSupport" = "支持"; "PrivacyPolicy" = "隐私政策"; +"SendClipboard" = "发送剪贴板"; +"Clipboard" = "剪贴板"; "DeviceCurrentlySendingFiles" = "%1$@ 正在向你发送 %2$@"; "UserManual" = "用户手册与设置"; "Settings" = "设置"; diff --git a/QuickDrop.xcodeproj/project.pbxproj b/QuickDrop.xcodeproj/project.pbxproj index 55e4258..b07a15f 100644 --- a/QuickDrop.xcodeproj/project.pbxproj +++ b/QuickDrop.xcodeproj/project.pbxproj @@ -783,8 +783,8 @@ MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; - SHARED_BUILD = 22; - SHARED_VERSION = 1.4.6; + SHARED_BUILD = 23; + SHARED_VERSION = 1.5; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; }; @@ -842,8 +842,8 @@ MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = macosx; - SHARED_BUILD = 22; - SHARED_VERSION = 1.4.6; + SHARED_BUILD = 23; + SHARED_VERSION = 1.5; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; };