Aleix Pol
a164983b6f
Revert "kdeconnect-kde: Add remotekeyboard plugin"
...
This reverts commit 040ad7357b
.
Sorry, didn't mean to push that myself ^^'
2017-01-11 17:20:22 +01:00
Holger Kaelberer
040ad7357b
kdeconnect-kde: Add remotekeyboard plugin
...
Allow to inject keypress events to remote peers (most notably Android devices)
Notes / open issues / possible improvements:
- For the json-payload I used the syntax of the key-events as sent by mousepad-plugin with the addition of a "sendAck"-flag. If "sendAck" is set to true the remote peer should echo a key-event if it could be handled, thus allowing the local client to find out whether the key was accepted. For performance reasons, it's allowed to send multi-char strings in the "key" property (performs much better if you send a whole string via "echo '...' | kdeconnect-cli ..." e.g.)
- kdeconnect-cli: For now takes a string and transforms it into single key-events for visible characters only. In a first implementation I used a kbhit() helper that used termios.h to catch and relay keypresses interactively (including some special-events), which was not optimal. A better approch might be to use linux input-api directly. Would this be an option regarding cross-platform compatibility or can I assume to develop for Linux only? Being a command-line guy, I'd really like to have a fully featured kdeconnect-cli interface ;-)
- Factor out the Qt::Key-to-internal keymap to some core-helper because it corresponds to the mapping in the mousepad-plugin?
- The plasmoid is not perfect as it is: A single line containing a non-echoing TextField (i.e. it eats all the KeyPress events), and only ack-ed keypress-packets from the peer device are injected if they contain visible keys. Advantage: the user sees whether his key-presses are accepted by the peer device. Disadvantage: The echoed text does not correspond 1:1 to what is shown on the peer's display, user might be confused when typing without success. I played around with different variations each of which with its proper shortcomings:
1. An echoing Textfield for typing: Has the advantage that the user can directly see what he is typing, which makes interaction in the typing field easier, BUT messes up interaction if the Editor on the peer is changed silently and does not notify the user if his keypresses are not handled by the peer.
2. A non-echoing TextField for typing PLUS a readonly one for printing visible echoed keys. Disadvantage: same as for the previous one and uses more space on the plasmoid.
Comments? Ideas?
REVIEW: 129727
BUG: 370919
2017-01-10 21:12:42 +01:00
l10n daemon script
e6a7df25aa
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2016-12-20 12:45:03 +01:00
l10n daemon script
5279a64e05
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2016-12-02 04:30:30 +01:00
l10n daemon script
eabdfc892b
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2016-11-30 04:24:23 +01:00
Albert Vaca
6a2a0b1c76
Merge branch '1.x'
...
# Conflicts:
# plugins/mpriscontrol/mpriscontrolplugin.cpp
# plugins/sendnotifications/kdeconnect_sendnotifications.json
2016-11-26 16:40:24 +01:00
Albert Vaca
60331ccbf1
Clazy says all this QStringLiteral and QLatin1String were missing/wrong
2016-11-26 16:21:29 +01:00
l10n daemon script
b4e008847a
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2016-11-25 04:58:17 +01:00
l10n daemon script
73c6e1a306
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2016-11-24 05:29:38 +01:00
l10n daemon script
f0eb32c350
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2016-10-19 09:02:51 +00:00
l10n daemon script
3be06839a8
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2016-10-11 13:08:45 +00:00
l10n daemon script
ec0ca3976d
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2016-09-29 12:27:06 +00:00
Albert Vaca
d6355ab0ce
Detect left handed mouse configurations and swap faked buttons
...
BUG: 368953
2016-09-29 10:54:33 +02:00
Albert Vaca
0dbaceafa3
Merge branch 'master' into 1.x
...
# Conflicts:
# plugins/battery/kdeconnect_battery.json
# plugins/clipboard/kdeconnect_clipboard.json
# plugins/findmyphone/kdeconnect_findmyphone.json
# plugins/kdeconnect.notifyrc
# plugins/lockdevice/kdeconnect_lockdevice.json
# plugins/mousepad/kdeconnect_mousepad.json
# plugins/mpriscontrol/kdeconnect_mpriscontrol.json
# plugins/mprisremote/kdeconnect_mprisremote.json
# plugins/notifications/kdeconnect_notifications.json
# plugins/pausemusic/kdeconnect_pausemusic.json
# plugins/ping/kdeconnect_ping.json
# plugins/remotecommands/kdeconnect_remotecommands.json
# plugins/remotecontrol/kdeconnect_remotecontrol.json
# plugins/runcommand/kdeconnect_runcommand.json
# plugins/screensaver-inhibit/kdeconnect_screensaver_inhibit.json
# plugins/sendnotifications/kdeconnect_sendnotifications.json
# plugins/sendnotifications/kdeconnect_sendnotifications_config.desktop
# plugins/sftp/kdeconnect_sftp.json
# plugins/share/kdeconnect_share.json
# plugins/telephony/kdeconnect_telephony.json
2016-09-29 10:53:29 +02:00
l10n daemon script
167fd6cf59
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2016-09-28 11:51:45 +00:00
l10n daemon script
e884c4a9ac
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2016-09-18 09:32:51 +00:00
l10n daemon script
2d56c59386
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2016-09-14 09:17:50 +00:00
Aleix Pol
596e4484f4
Clean up use of virtual and override keywords
...
Only use virtual when actually virtual, to override just use override.
2016-06-20 19:22:29 +02:00
Albert Vaca
73f5996f14
Consistent naming of _REQUEST package type macros
2016-06-03 00:47:03 +02:00
Albert Vaca
5f8356b6db
Renaming a package type was a bad call
2016-06-03 00:47:03 +02:00
Aleix Pol
e7578cc129
Refactor capabilities together with Albert
...
He is committing a similar patch to kdeconnect-android
2016-05-31 17:16:01 +02:00
l10n daemon script
45d5068143
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2016-01-05 13:22:15 +00:00
Albert Vaca
517c02451b
Merge branch '0.9'
...
# Conflicts:
# kdeconnect.appdata.xml
# plugins/mprisremote/kdeconnect_mprisremote.json
# plugins/ping/kdeconnect_ping.json
# plugins/remotecontrol/kdeconnect_remotecontrol.json
2016-01-02 12:51:30 -08:00
l10n daemon script
a0c1a57999
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2015-12-30 09:23:05 +00:00
l10n daemon script
6434909e79
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2015-12-29 11:22:52 +00:00
l10n daemon script
1473868bc8
SVN_SILENT made messages (.desktop file)
2015-11-17 15:24:49 +00:00
l10n daemon script
fc2bd97e69
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2015-11-17 12:54:36 +00:00
l10n daemon script
eed4eb66fd
SVN_SILENT made messages (.desktop file)
2015-11-13 13:01:51 +00:00
l10n daemon script
04d52fb022
SVN_SILENT made messages (.desktop file)
2015-11-11 13:05:11 +00:00
l10n daemon script
0145c837db
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2015-11-11 10:30:30 +00:00
l10n daemon script
0b4d36546c
SVN_SILENT made messages (.desktop file)
2015-11-04 19:54:08 +00:00
l10n daemon script
e424bcec1a
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2015-11-04 17:00:05 +00:00
l10n daemon script
7bbd93c024
SVN_SILENT made messages (.desktop file)
2015-10-27 14:38:42 +00:00
l10n daemon script
47ee991548
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2015-10-01 10:36:43 +00:00
l10n daemon script
f9db1e0fa5
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2015-09-22 12:23:31 +00:00
l10n daemon script
5795e27191
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2015-09-10 11:33:23 +00:00
Aleix Pol
d58f6314fe
run Clang Modernize
...
Minus the auto change
2015-09-08 10:47:37 +02:00
David Edmundson
9ca9833e9c
Handle strings and better utf8 in mousepad plugin
2015-09-08 10:27:41 +02:00
l10n daemon script
eb5c099661
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2015-07-22 10:07:40 +00:00
Aleix Pol
c98413d5d1
Fix capabilities of the mousepad plugin
...
It doesn't send packages, so no need to require kdeconnect.mousepad.
2015-07-22 03:21:28 +02:00
Alexander Potashev
ca1d99e261
plugins/mousepad: At least KF5::Wayland 5.3.90 is required
...
Fake input interface was added to KF5::Wayland only a couple of weeks
ago, it has not been released yet with this feature.
CCMAIL: mgraesslin@kde.org
2015-07-21 04:48:29 +03:00
Martin Gräßlin
2506f0e78a
[mousepad] Integrate with KWayland for fake input support
...
KWayland provides a FakeInput interface which KWin as a compositor
supports. This can be used to fake input events on Wayland. As it's
a KWin specific interface it won't work with other Wayland compositors.
If the compositor does not support the required interface, the
module just doesn't do anything. Support in the implementation is
completely optional.
Adding fake input events circumvents the Wayland security model.
Because of that the interface is designed in a way that the security
decision can be done by the compositor and can be delegated to the
user.
On first input event kdeconnect tries to "authenticate" with the
compositor. This gives the compositor the possibility to e.g. ask
the user whether it should be allowed. It's not done on startup or
of load module as that would show such a message way to early and
the user would not be able to connect it with his action on the
smartphone.
REVIEW: 124238
2015-07-09 10:48:00 +02:00
Martin Gräßlin
415412e15d
[mousepad] Split X11 implementation into dedicated method
2015-07-09 10:48:00 +02:00
Martin Gräßlin
ab5438d338
[mousepad] Use QX11Info to get the Display
...
Don't open a second Display, we can use the one used by Qt.
Advantages are: we are on the correct Display, we don't open a Display
connection on e.g. Wayland (it would succeed but not work as a connection
to Xwayland would be opened) and we can drop the copy of fixx11h.
It's also a prerequisite to properly split the implementation to support
Wayland in a later change.
REVIEW: 124230
2015-07-03 09:43:01 +02:00
l10n daemon script
69d8a40aa6
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2015-06-24 10:38:32 +00:00
l10n daemon script
4ed16c9f49
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2015-06-17 10:08:57 +00:00
l10n daemon script
7546118157
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2015-05-18 10:02:50 +00:00
Albert Vaca
5582c479b6
Input plugin icon was not from Breeze
2015-05-17 23:24:25 -07:00
Aleix Pol
509ab4ce02
Remove unneeded dependency link
2015-04-10 18:03:49 +02:00
l10n daemon script
aa91c6bbd6
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2015-04-10 10:24:31 +00:00
l10n daemon script
8349588c77
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2015-04-06 09:54:12 +00:00
Albert Vaca Cintora
70e3aec278
Fixed potential array out of bounds crash
2015-04-04 10:17:08 -07:00
l10n daemon script
8e729f3ab2
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2015-04-04 11:03:11 +00:00
l10n daemon script
ff9d6b336b
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2015-04-03 10:36:58 +00:00
l10n daemon script
cda092d2bb
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2015-03-31 13:16:15 +00:00
l10n daemon script
92cd693566
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2015-03-29 09:58:52 +00:00
l10n daemon script
98bb1ee564
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2015-03-27 09:50:58 +00:00
l10n daemon script
2cb090d2c9
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2015-03-26 10:12:56 +00:00
l10n daemon script
08eaaf11e1
SVN_SILENT made messages (.desktop file) - always resolve ours
...
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2015-03-25 09:09:47 +00:00
Albert Vaca
b38939fce8
Renamed "touchpad" plugin to "virtual input"
2015-03-22 22:08:30 -07:00
Aleix Pol
c7cee37330
Port away from KServiceTrader
...
Uses KPluginLoader+KPluginMetadata instead.
Describes plugins in json instead of desktop files. These desktop files are
then embedded into the .so file. All the plugins will be in a kdeconnect/
directory, and those will be the ones to look for.
Note it doesn't drop the KService dependency as KIOCore is a KDE Connect
dependency as well.
REVIEW: 123042
2015-03-19 16:36:53 +01:00
Albert Vaca
d8a2aac952
Merge branch 'master' into frameworks
2015-03-01 21:33:47 -08:00
l10n daemon script
d2e973b351
SVN_SILENT made messages (.desktop file)
2015-02-28 04:22:03 +00:00
l10n daemon script
5f0811dff8
SVN_SILENT made messages (.desktop file)
2015-02-21 04:46:14 +00:00
Albert Vaca
c7c1974ea9
Merge branch 'master' into frameworks
...
Conflicts:
core/backends/lan/lanlinkprovider.cpp
plugins/ping/pingplugin.h
plugins/telephony/telephonyplugin.cpp
2015-01-10 20:14:01 -08:00
Albert Vaca
127a117c62
Added support for Ctrl, Alt and Shift combinations and F keys to keyboard.
2015-01-06 00:11:58 -08:00
l10n daemon script
73e3a1d683
SVN_SILENT made messages (.desktop file)
2015-01-02 04:06:52 +00:00
l10n daemon script
917104ff99
SVN_SILENT made messages (.desktop file)
2014-12-26 04:20:08 +00:00
l10n daemon script
365b2c55b2
SVN_SILENT made messages (.desktop file)
2014-12-25 04:06:46 +00:00
Michael Hathaway
88a33ae242
Implemented drag'n drop in the mousepad plugin.
...
REVIEW: 121414
CCMAIL: michael@hathaways.me.uk
2014-12-10 23:40:28 -08:00
Aleix Pol
21ab5a4f81
Merge branch 'master' into frameworks
...
Mostly kDebug -> qCDebug
Also some KCmdLineArgs -> QCommandLineParser
Conflicts:
cli/kdeconnect-cli.cpp
core/CMakeLists.txt
core/backends/lan/lanlinkprovider.cpp
core/daemon.cpp
core/pluginloader.cpp
interfaces/CMakeLists.txt
kio/kiokdeconnect.cpp
plugins/mousepad/CMakeLists.txt
plugins/mousepad/mousepadplugin.h
plugins/mpriscontrol/mpriscontrolplugin.cpp
plugins/sftp/sftpplugin.cpp
2014-11-04 19:12:29 +01:00
l10n daemon script
3b192ea18e
SVN_SILENT made messages (.desktop file)
2014-11-02 04:01:28 +00:00
Albert Vaca
279dbe5598
Minor changes
2014-10-10 11:47:35 -07:00
l10n daemon script
0b511a73cc
SVN_SILENT made messages (.desktop file)
2014-10-05 04:22:42 +00:00
Àlex Fiestas
74382f09d2
Port mousepad to CMake that does not need KDELibs4Support
2014-09-23 19:45:08 +02:00
l10n daemon script
3ea4264652
SVN_SILENT made messages (.desktop file)
2014-09-23 04:52:04 +00:00
Àlex Fiestas
dbea3171bd
Make kdeconnect core compile without KDELibs4Support
...
This meant to add a lot of dependencies to each plugin since we had
KDELibs4support as PUBLIC link meaning that anything linking against
kdeconnectcore was linking at the same time to mostly all frameworks.
Now each plugin has more or less its dependencies in the CMake some
still depend on KDELibs4Support.
For the mousepad plugin I needed to add a fixX11.h file that basically
undefines/defines again some stuff xlib has that conflcits with normal
C++ and Qt.
Before it was not conflicting because some lib within KDELibs4Support
was including this file, but now we have to do it ourselves.
2014-09-22 02:40:51 +02:00
Àlex Fiestas
677f650216
Removed K_EXPORT_PLUGIN, no longer needed
...
With kf5 this is not longer needed. removing it!
2014-09-22 02:40:51 +02:00
l10n daemon script
afc3c33f99
SVN_SILENT made messages (.desktop file)
2014-09-11 04:17:22 +00:00
Christophe Giboudeaux
5bf93af31e
Add FindLibFakeKey.cmake.
...
The build system cannot guess that a new build dependency was added.
2014-08-27 15:35:21 +02:00
Albert Vaca
ea5d9c8eca
MousePad: Added support for any UTF character and more special keys.
...
I've also removed modifiers like Shift and Ctrl by now.
LibFakeKey is now a dependency of this plugin, as it allows us to send UTF
characters as X11 keys in a simple and convenient way. Internally it uses a
convention in Xlib, that allows to pass UTF characters as keycodes just by
adding 0x01000000 to the keycode number.
CCMAIL: saiarcot895@gmail.com
2014-08-14 21:35:23 +02:00
Saikrishna Arcot
05fdbe0e5b
Add support for receiving keyboard entries.
...
This patch gets the keyboard entries from the Android client and passes
along the keycode.
REVIEW: 119254
2014-08-14 18:01:31 +02:00
l10n daemon script
ee4f486516
SVN_SILENT made messages (.desktop file)
2014-08-07 04:18:55 +00:00
l10n daemon script
23728bb7e5
SVN_SILENT made messages (.desktop file)
2014-07-25 05:45:47 +00:00
l10n daemon script
dccd749948
SVN_SILENT made messages (.desktop file)
2014-07-16 05:02:58 +00:00
l10n daemon script
fbc749d4cd
SVN_SILENT made messages (.desktop file)
2014-07-07 04:35:28 +00:00
l10n daemon script
48c0f6be0d
SVN_SILENT made messages (.desktop file)
2014-07-03 04:24:38 +00:00
l10n daemon script
3cfe911049
SVN_SILENT made messages (.desktop file)
2014-07-02 04:31:45 +00:00
Aleix Pol
a8fb015a22
Fix compilation after merge
2014-07-02 01:39:38 +02:00
l10n daemon script
b2d50aaf9a
SVN_SILENT made messages (.desktop file)
2014-07-01 06:21:38 +00:00
l10n daemon script
b18276f44e
SVN_SILENT made messages (.desktop file)
2014-06-30 04:42:38 +00:00
Albert Vaca
c32ff31516
Should not scroll if dy is 0
2014-06-29 17:52:07 +02:00
Albert Vaca
9cba780f75
Added right and middle click, even though it's not implemented in Android yet
...
CCMAIL: ahmedibrahimkhali@gmail.com
2014-06-29 17:30:24 +02:00
Ahmed Ibrahim Khalil
178fcc128d
Implemented scrolling, by sending scroll down or scroll up button events,
...
according to the difference value.
REVIEW: 119006
2014-06-29 17:22:31 +02:00
Albert Vaca
4132f0c373
Renamed mousepad -> touchad
2014-06-29 16:14:31 +02:00
l10n daemon script
a48b066ab4
SVN_SILENT made messages (.desktop file)
2014-06-29 04:35:25 +00:00
l10n daemon script
7ff09fe2bb
SVN_SILENT made messages (.desktop file)
2014-06-28 04:21:58 +00:00
Ahmed Ibrahim Khalil
d14b4411cd
Implementation of mousepad plugin
...
CCMAIL: ahmedibrahimkhali@gmail.com
2014-06-27 15:43:34 +02:00