Diffstat (limited to 'noncore/applets/keyhelper/keyhelperapplet/anylnk/TextLnk.cpp') (more/less context) (ignore 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 @@ +#include "TextLnk.h" + +void TextLnk::execute() +{ + QClipboard* cb = QApplication::clipboard(); + parseText(); + cb->setText(m_params[1]); + QWSServer::sendKeyEvent('V'-'@',Qt::Key_V, Qt::ControlButton, + true, false); + QWSServer::sendKeyEvent('V'-'@',Qt::Key_V, Qt::ControlButton, + false, false); +} + +void TextLnk::parse(QString& str) +{ + replace(str, "\\\\", "\\"); + replace(str, "\\n", "\n"); + replace(str, "\\r", "\r"); + replace(str, "\\t", "\t"); +} + +void TextLnk::replace(QString& str, const QString& s1, const QString& s2) +{ + int index = 0; + int idx; + int len = s1.length(); + idx = str.find(s1, index); + for(;;){ + idx = str.find(s1, index); + if(idx < 0) break; + str.replace(idx, len, s2); + index = idx; + } +} |