Commit Graph

219 Commits

Author SHA1 Message Date
Martin Sh
0067ad51b1 Digitizer plugin
Add plugin that allows users to use their devices as pressure-sensitive drawing tablets.

* Schemas MR: https://invent.kde.org/network/kdeconnect-meta/-/merge_requests/16
* KDE MR: https://invent.kde.org/network/kdeconnect-kde/-/merge_requests/862
2025-11-25 21:28:51 +01:00
Albert Vaca Cintora
f04ffc67eb Use a different, non-silent channel when a file transfer completes 2025-11-09 20:31:30 +01:00
Albert Vaca Cintora
2f594ec7c2 Add explanation for mdns discovery toggle 2025-11-06 18:32:33 +01:00
Albert Vaca Cintora
5cfb33f185 Disable MDNS discovery by default, behind a setting 2025-11-06 18:32:33 +01:00
Albert Vaca Cintora
937f77ced7 Improve wording
BUG: 510434
2025-10-11 23:46:09 +02:00
Albert Vaca Cintora
6a8135d51c Add tv-specific settings to the mousepad plugins
Allow customizing the buttons shown: added a new optional back button and
allowed removing the home button.
2025-10-09 18:52:35 +02:00
Albert Vaca Cintora
468e7337a9 Add way to send an error when trying to use a plugin that lacks permissions
Plugins can opt-in to be loaded even when missing permissions, so they can
react if the user tries to remotely use the plugin for example to show an
error.

This is used in the SFTP plugin to display a message when trying to use it
without having granted filesystem permissions.

I also renamed the name of the plugin shown when missing permissions, from
"filesystem expose" to something hopefully more understandable.
2025-09-23 21:10:52 +02:00
User8395
f392ea0a12 Plugins/MousePadPlugin: Consolidate Bigscreen remote and mousepad into one plugin for TV targets
When connected to a TV (running Plasma Bigscreen), Remote Input will show a TV remote and a button on the top to switch to mouse and keyboard. When connected to any other device, Remote Input will show the mouse and keyboard only.

**Removals:**
- [x] Remove BigscreenPlugin

**Additions:**
- [x] Add "Use mouse and keyboard"

**Changes:**
- [x] Plugin has both remote and mouse/keyboard if device is TV, just mouse/keyboard otherwise

**Code changes:**
- [x] Move all TV functions to MousePlugin

![Screencast_20250519_174042](/uploads/606b32ddc584025fea5fa49b006f3a79/Screencast_20250519_174042.mp4)
2025-09-04 00:34:07 +00:00
Albert Vaca Cintora
5bc41367ed Homegenize devices look in device lists 2025-05-26 18:57:24 +02:00
Albert Vaca Cintora
fc1424c67c Better pairing fragment layout 2025-04-18 19:51:51 +02:00
Albert Vaca Cintora
83efd6b355 Add a warning if multiple devices have the same name 2025-04-18 17:42:08 +00:00
Vala Zadeh
63a849b80a Extend offline URL sharing behavior
## Summary

Previously, URLs shared to offline targets via the ShareActivity were
delivered to them once they became online. This change extends this
behavior to direct share targets.

## Test Plan

Test 1

* Make sure a PC device is already paired with the phone. Let's say the name of this device is "PC".
* Make PC unreachable, e.g., close the KDE app on it.
* On the phone, open Chrome and share a couple of webpages to KDE's PC's direct share target.
* Open the KDE app on the PC.
* Observe that the webpages are opened on PC.

Test 2

* Make sure a PC device is already paired with the phone. Let's say the name of this device is "PC".
* Make PC unreachable, e.g., close the KDE app on it.
* On the phone, share a file to KDE's PC's direct share target.
* Open the KDE app on the PC.
* Observe that the file is sent to PC.

Test 3

* Make sure two PC devices are already paired with the phone. Let's say the name of these devices are "PC1" and "PC2".
* Make PC1 and PC2 unreachable, e.g., close the KDE app on them.
* On the phone, open Chrome and share a couple of webpages to KDE's PC1's direct share target.
* Open the KDE app on the PC2.
* Observe that the webpages are NOT opened on PC2.
* Open the KDE app on the PC1.
* Observe that the webpages are opened on PC1.

Test 4

* Make sure a PC device is already paired with the phone. Let's say the name of this device is "PC".
* Make PC reachable, e.g., have the KDE app open on it.
* Try to share a URL from the phone to the KDE's PC's direct share target.
* Observe that the URL opens instantly on the PC.
2025-04-13 00:20:04 +00:00
Albert Vaca Cintora
72e958a891 Allow exporting the logs form the app 2025-04-06 10:24:28 +02:00
Albert Vaca Cintora
7a4fb8b584 Make the verification key change every time in protocol v8 2025-02-23 15:50:11 +00:00
Albert Vaca Cintora
0560071cfb Show protocol version in encryption info 2025-02-23 15:50:11 +00:00
Albert Vaca Cintora
0923c8ecda Show number of custom devices in settings fragment 2024-12-29 15:19:22 +00:00
TPJ Schikhof
75ddac0bf0 Reworked custom device list
- Solved serialization issue when commas were used
- Validate hosts and show toast message if host is invalid
- Show whether device can be reached over the network
- Show toast message when host already exists
- Code TODO's (including sorting device list)
2024-12-22 19:41:58 +00:00
Albert Vaca Cintora
e613e7e09d Change wording to try to make Google happy 2024-10-21 16:48:51 +02:00
Albert Vaca Cintora
48dd405201 Request bluetooth permissions with an explanation
The Play Store requires an explanation before requesting any permissions
2024-10-13 22:17:48 +02:00
TPJ Schikhof
8cb9a1809d Migrate SettingsFragment to Kotlin 2024-10-03 03:07:41 +00:00
Mhammad Alloush
5f18cb571d Update MousePadActivity to support doubletap drag
This MR is a continuation of !439 , which changes the default 
behavior of the remote mouse plugin's drag and drop trigger
to be a double-tap to drag, and adds a new SwitchPreference
that toggles between the old (hold to drag) and new behavior.
2024-08-21 18:52:24 +00:00
ShellWen Chen
7686e012c3 feat: add custom author description for ShellWen Chen 2024-07-31 10:40:00 +00:00
Albert Vaca Cintora
440f1d4fa3 Filter device name
Following the spec: https://invent.kde.org/network/kdeconnect-meta/-/blob/master/protocol.md?ref_type=heads#kdeconnectidentity
2024-05-19 10:02:28 +00:00
Albert Vaca Cintora
343270c793 Shorten pairing key to 8 chars
The previous key was 64 freakin characters long which made it more prone
to being ignored, and thus less secure.
2024-05-18 20:40:54 +00:00
Albert Vaca Cintora
27075e89be Remove unneeded null check 2024-05-17 10:49:19 +02:00
Albert Vaca Cintora
3d166e6d4b Offer to "continue playing" media on this device after pausing
Based on the MR !249

Co-authored-by: Alex Gravenor <blazingkin@gmail.com>
2024-05-02 16:18:33 +02:00
Vala Zadeh
80106ccb81 Add option to cache URLs shared to unreachable devices 2024-04-16 07:10:42 +00:00
Albert Vaca Cintora
d1752ba53d Rename slideshow remote to presentation remote
To match the desktop app
2024-03-03 21:21:37 +01:00
Albert Vaca Cintora
8ffee90255 Accessibility improvements when using a screen reader
Fixes based on the report done by HAN University of Applied Sciences.
2024-03-01 00:18:02 +00:00
Matteo Princisgh
3cacafad29 Add scroll sensitivity option for MousePadPlugin
Added a seekbar to adjust the scrolling speed of the touchpad

BUG: 407293
2024-01-18 22:15:24 +00:00
Luigi Toscano
208c8c9dff Fix string: language teams are not national teams
Languages and nations don't always share the same boundaries.
2023-11-22 12:26:18 +01:00
Philip Cohn-Cort
548b636f32 Better device controls
## Summary

This contains some minor code quality improvements in
`RunCommandControlsProviderService`, as well as the following feature changes:

* If the device for a Device Control is reachable, clicking on the secondary
  space of the control will launch RunCommandActivity. If the device isn't
  reachable, we launch the MainActivity like usual.
* Pixel 7 and other modern Google devices can now show KDE Connect commands
  in the 'Home' quick access tile (you still have to 'add app')

## Test Plan

0. Make sure your Android OS supports Device Controls (Android 11+)
1. Choose a paired device to work with
2. Place at least one command in the Run Command list
3. Enable the command in the Device Controls screen
4. Test what happens when you click on the secondary space of the control
2023-10-23 21:58:08 +00:00
Albert Vaca Cintora
14e61246ff Add a per-device confirmation before copying the contacts
The contacts plugin is the only one that copies (and persists) data to the
remote device just by connecting. By adding this extra confirmation once
per device, we prevent this from happening in cases where someone paired
with a friend to transfer a file, or paired by accident.
2023-09-19 12:30:58 +00:00
Albert Vaca Cintora
d0931f28a9 Split file transfer error notification to a separate channel 2023-09-18 21:23:56 +00:00
Albert Vaca Cintora
3eedc88c3c Remove photo plugin
As discussed in Matrix and BUG: 474121 this plugin is confusing (because
it doesn't actually take a photo, it just launches the camera on your
phone) and its use case can be covered by taking a photo and sharing it,
which only requires a couple extra clicks.
2023-09-15 23:04:21 +00:00
Albert Vaca Cintora
17757908c4 Split notification channels for received and sent files
BUG: 433051
2023-09-12 05:14:37 +02:00
Simon Redman
1096ace12c Remove smsMmsChannel notification channel
## Summary

Remove the dead "New Message" notification channel.

This channel was used for a tiny period, probably around 4 years ago, when we thought the only way to support sending MMS on Android was to be the default SMS app, thus we wanted to show users a notification when they received messages while our app was in charge of handling them.

Thankfully, we do not need to be the default SMS app, so this notification channel should be removed.

## Test Plan

### Before:
Looking at the list of notification streams in the settings for KDE Connect will include a "New Message" channel. Notifications are never posted to this channel.

### After:
Users will not see a "New Message" channel. Note that it does show a count of deleted streams, to prevent spam. See [documentation](https://developer.android.com/develop/ui/views/notifications/channels#DeleteChannel) for explanation.
2023-09-12 02:31:52 +00:00
Albert Vaca Cintora
cd0ae95e58 Revert "Partially revert "Add MDNS discovery""
Adds back MDNS discovery and the setting to toggle UDP broacasts on/off.

We can probably remove the setting at some point, and just keep it enabled.

Another thing we can probably improve is the acquisition of the multicast
lock, so we only hold it when the app is open, or at least only when the
device is connected to Wifi (which we know). For more context, see commit
https://invent.kde.org/network/kdeconnect-android/-/merge_requests/375/diffs?commit_id=f71a3fe6b95af404d2a675afb78f24847064f8a9

This reverts commit 5da804939d.
2023-09-07 09:40:22 +02:00
Albert Vaca Cintora
5da804939d Partially revert "Add MDNS discovery"
This partially reverts commit 8f8a09a99a.

Removing MDNS to do one last bugfix-only release.
2023-09-07 09:27:55 +02:00
Albert Vaca Cintora
4d2efe6b89 Request notifications permission so we can target Android 13
Starting next month (September 2023) it will be required to target
Android 13 to publish to the Play Store.

On Android 13, we need to request the POST_NOTIFICATIONS permission. 

This change adds the permission as required/optional to the plugins
that do create notifications. It also adds a popup to request it the
first time you open the app.
2023-09-01 03:34:32 +00:00
Albert Vaca Cintora
8f8a09a99a Add MDNS discovery
Uses Android's `NsdManager` to announce a `_kdeconnect._udp` service using MDNS. This is done in addition to sending UDP broadcasts.

When we detect a device this way, we send a UDP identity packet to it (identical to the ones we broadcast but sent to a single device).

I also added a toggle in settings to disable the UDP broadcasts, so we can test MDNS by itself.
2023-08-28 21:37:55 +00:00
Albert Vaca Cintora
f825a37c8e Better explanation for the mouse receiver permissions 2023-07-18 11:14:15 +02:00
Albert Vaca Cintora
6fc5ae66b8 Add license headers to files missing it 2023-06-05 12:21:15 +02:00
Albert Vaca Cintora
1ccf15010e Compute total number of packets sent and received by type 2023-06-04 18:05:48 +00:00
Albert Vaca Cintora
537f2e35ac Add the option to cancel a pairing request we sent
BUG: 469877
2023-05-31 15:23:30 +00:00
Dmitry Yudin
e9bc90d91a Modernize ComposeSendActivity
* UI update for the old compose send screen.
* Introduces Jetpack Compose.
* Migrates activity to Kotlin.
* Fixes "send" button being next to "clear".
2023-04-26 20:16:08 +00:00
Dmitry Yudin
118a35c304 Merge remote-tracking branch 'kubawis/master' into mouse_pad_prefs_fix
# Conflicts:
#	res/values/strings.xml
#	res/xml/mousepadplugin_preferences.xml
#	src/org/kde/kdeconnect/Plugins/MousePadPlugin/MousePadActivity.java
2023-04-25 01:41:51 +02:00
Mhammad Alloush
65d706fd75 MousePadPlugin: Change the blurb to highlight gyro mouse.
This needs translations. But should do for now for English language for now.
2023-04-10 08:59:41 +00:00
Dmitry Yudin
b52fc8c3ec Add mouse buttons setting 2023-04-08 21:27:44 +00:00
Albert Vaca Cintora
5250fde0b1 Remove copyright and app description from About 2023-04-04 22:49:05 +00:00