Diffstat (limited to 'noncore/applets/keyhelper/keyhelperapplet/anylnk/TextLnk.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/applets/keyhelper/keyhelperapplet/anylnk/TextLnk.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/noncore/applets/keyhelper/keyhelperapplet/anylnk/TextLnk.cpp b/noncore/applets/keyhelper/keyhelperapplet/anylnk/TextLnk.cpp new file mode 100644 index 0000000..abb432c --- a/dev/null +++ b/noncore/applets/keyhelper/keyhelperapplet/anylnk/TextLnk.cpp | |||
@@ -0,0 +1,34 @@ | |||
1 | #include "TextLnk.h" | ||
2 | |||
3 | void TextLnk::execute() | ||
4 | { | ||
5 | QClipboard* cb = QApplication::clipboard(); | ||
6 | parseText(); | ||
7 | cb->setText(m_params[1]); | ||
8 | QWSServer::sendKeyEvent('V'-'@',Qt::Key_V, Qt::ControlButton, | ||
9 | true, false); | ||
10 | QWSServer::sendKeyEvent('V'-'@',Qt::Key_V, Qt::ControlButton, | ||
11 | false, false); | ||
12 | } | ||
13 | |||
14 | void TextLnk::parse(QString& str) | ||
15 | { | ||
16 | replace(str, "\\\\", "\\"); | ||
17 | replace(str, "\\n", "\n"); | ||
18 | replace(str, "\\r", "\r"); | ||
19 | replace(str, "\\t", "\t"); | ||
20 | } | ||
21 | |||
22 | void TextLnk::replace(QString& str, const QString& s1, const QString& s2) | ||
23 | { | ||
24 | int index = 0; | ||
25 | int idx; | ||
26 | int len = s1.length(); | ||
27 | idx = str.find(s1, index); | ||
28 | for(;;){ | ||
29 | idx = str.find(s1, index); | ||
30 | if(idx < 0) break; | ||
31 | str.replace(idx, len, s2); | ||
32 | index = idx; | ||
33 | } | ||
34 | } | ||