summaryrefslogtreecommitdiffstats
path: root/src/libcommuni/examples/quick/qml/TextEntry.qml
diff options
context:
space:
mode:
authorMarkus Mittendrein <git@maxmitti.tk>2015-09-09 19:00:56 +0200
committerMarkus Mittendrein <git@maxmitti.tk>2015-09-09 19:02:23 +0200
commit8a6d4b06f2291c363f3dea17837ed20893852453 (patch)
treec091375499e35eaa1810586454e0834c06e6c9b2 /src/libcommuni/examples/quick/qml/TextEntry.qml
parentf554a27046f203e56a07baaf214d90834942e3f5 (diff)
downloadmanager-8a6d4b06f2291c363f3dea17837ed20893852453.tar.gz
manager-8a6d4b06f2291c363f3dea17837ed20893852453.zip
Cleanup repo with some directories
Diffstat (limited to 'src/libcommuni/examples/quick/qml/TextEntry.qml')
-rw-r--r--src/libcommuni/examples/quick/qml/TextEntry.qml77
1 files changed, 77 insertions, 0 deletions
diff --git a/src/libcommuni/examples/quick/qml/TextEntry.qml b/src/libcommuni/examples/quick/qml/TextEntry.qml
new file mode 100644
index 0000000..4201e86
--- /dev/null
+++ b/src/libcommuni/examples/quick/qml/TextEntry.qml
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2008-2014 The Communi Project
+ *
+ * This example is free, and not covered by the BSD license. There is no
+ * restriction applied to their modification, redistribution, using and so on.
+ * You can study them, modify them, use them in your own program - either
+ * completely or partially.
+ */
+
+import QtQuick 2.1
+import QtQuick.Controls 1.0
+import QtQuick.Controls.Styles 1.0
+import Communi 3.1
+
+TextField {
+ id: textField
+
+ property alias buffer: completer.buffer
+
+ signal messageSent(IrcMessage message)
+
+ focus: true
+ placeholderText: qsTr("...")
+
+ Keys.onTabPressed: completer.complete(text, cursorPosition)
+
+ IrcCompleter {
+ id: completer
+
+ onCompleted: {
+ textField.text = text
+ textField.cursorPosition = cursor
+ }
+
+ parser: IrcCommandParser {
+ id: parser
+
+ tolerant: true
+ triggers: ["/"]
+ channels: buffer ? buffer.model.channels : []
+ target: buffer ? buffer.title : ""
+
+ Component.onCompleted: {
+ parser.addCommand(IrcCommand.Join, "JOIN <#channel> (<key>)")
+ parser.addCommand(IrcCommand.CtcpAction, "ME [target] <message...>")
+ parser.addCommand(IrcCommand.Nick, "NICK <nick>")
+ parser.addCommand(IrcCommand.Part, "PART (<#channel>) (<message...>)")
+ }
+ }
+ }
+
+ style: TextFieldStyle {
+ background: Rectangle {
+ color: palette.base
+ Rectangle {
+ color: "transparent"
+ anchors.fill: parent
+ anchors.leftMargin: -1
+ border.color: "#aaa"
+ }
+ }
+ }
+
+ onAccepted: {
+ var cmd = parser.parse(text)
+ if (cmd) {
+ buffer.connection.sendCommand(cmd)
+ if (cmd.type === IrcCommand.Message
+ || cmd.type === IrcCommand.CtcpAction
+ || cmd.type === IrcCommand.Notice) {
+ var msg = cmd.toMessage(buffer.connection.nickName, buffer.connection)
+ textField.messageSent(msg)
+ }
+ textField.text = ""
+ }
+ }
+}