diff options
| author | Markus Mittendrein <git@maxmitti.tk> | 2015-09-09 19:00:56 +0200 |
|---|---|---|
| committer | Markus Mittendrein <git@maxmitti.tk> | 2015-09-09 19:02:23 +0200 |
| commit | 8a6d4b06f2291c363f3dea17837ed20893852453 (patch) | |
| tree | c091375499e35eaa1810586454e0834c06e6c9b2 /src/libcommuni/examples/qmlbot | |
| parent | f554a27046f203e56a07baaf214d90834942e3f5 (diff) | |
| download | manager-8a6d4b06f2291c363f3dea17837ed20893852453.tar.gz manager-8a6d4b06f2291c363f3dea17837ed20893852453.zip | |
Cleanup repo with some directories
Diffstat (limited to 'src/libcommuni/examples/qmlbot')
| -rw-r--r-- | src/libcommuni/examples/qmlbot/main.cpp | 22 | ||||
| -rw-r--r-- | src/libcommuni/examples/qmlbot/qml/main.qml | 84 | ||||
| -rw-r--r-- | src/libcommuni/examples/qmlbot/qmlbot.pro | 22 | ||||
| -rw-r--r-- | src/libcommuni/examples/qmlbot/qmlbot.qrc | 5 |
4 files changed, 133 insertions, 0 deletions
diff --git a/src/libcommuni/examples/qmlbot/main.cpp b/src/libcommuni/examples/qmlbot/main.cpp new file mode 100644 index 0000000..d74e909 --- /dev/null +++ b/src/libcommuni/examples/qmlbot/main.cpp @@ -0,0 +1,22 @@ +/* + * 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. + */ + +#include <QCoreApplication> +#include <QQmlApplicationEngine> + +int main(int argc, char* argv[]) +{ + QCoreApplication app(argc, argv); + + // enable debug output + qputenv("IRC_DEBUG", "1"); + + QQmlApplicationEngine engine(QUrl("qrc:/main.qml")); + return app.exec(); +} diff --git a/src/libcommuni/examples/qmlbot/qml/main.qml b/src/libcommuni/examples/qmlbot/qml/main.qml new file mode 100644 index 0000000..2dad458 --- /dev/null +++ b/src/libcommuni/examples/qmlbot/qml/main.qml @@ -0,0 +1,84 @@ +/* + * 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 QtQml 2.0 +import Communi 3.0 + +QtObject { + id: bot + + property string channel: "#communi" + + property Irc irc: Irc { id: irc } + property IrcCommand command: IrcCommand { id: command } + + property IrcBufferModel model: IrcBufferModel { + id: model + +//! [connection] + connection: IrcConnection { + id: connection + + host: "irc.freenode.net" + userName: "communi" + nickName: "QmlBot" + Math.round(Math.random() * 9999) + realName: qsTr("Communi %1 QML bot example").arg(irc.version()) + + Component.onCompleted: { + // queue a command to automatically join a channel when connected + sendCommand(command.createJoin(channel)) + open() + } +//! [connection] + +//! [receive] + onMessageReceived: { + if (message.type === IrcMessage.Private) { + // - in private, reply to the message sender + // - on channel, reply to the target channel + parser.target = message.private ? message.nick : message.target + + var command = parser.parse(message.content) + if (command) { + // send the command to the IRC server + sendCommand(command) + if (command.type === IrcCommand.Quit) { + // close the connection & quit the app when a !quit command was received + close() + Qt.quit() + } + } + } + } +//! [receive] + } + } + +//! [parser] + property IrcCommandParser parser: IrcCommandParser { + id: parser + + // keep the parser aware of the context + channels: model.channels + + // - on channel, respond to: "!<command> <params>" and "bot: <command> <params>" + // - in query, respond to: "!<command> <params>" and "<command> <params>" + triggers: connection.network.isChannel(target) ? ["!", connection.nickName + ":"] : ["!", ""] + + Component.onCompleted: { + // teach the bot some commands + parser.addCommand(IrcCommand.Nick, "NICK <nick>"); + parser.addCommand(IrcCommand.Join, "JOIN <#channel> (<key>)"); + parser.addCommand(IrcCommand.Part, "PART (<#channel>) (<message...>)"); + parser.addCommand(IrcCommand.Quit, "QUIT (<message...>)"); + parser.addCommand(IrcCommand.Message, "SAY [target] <message...>"); + } + } +//! [parser] +} diff --git a/src/libcommuni/examples/qmlbot/qmlbot.pro b/src/libcommuni/examples/qmlbot/qmlbot.pro new file mode 100644 index 0000000..95c2961 --- /dev/null +++ b/src/libcommuni/examples/qmlbot/qmlbot.pro @@ -0,0 +1,22 @@ +###################################################################### +# Communi +###################################################################### + +TEMPLATE = app +TARGET = qmlbot +DEPENDPATH += . +INCLUDEPATH += . +CONFIG += console +CONFIG -= app_bundle +QT = core network qml + +lessThan(QT_MAJOR_VERSION, 5)|lessThan(QT_MINOR_VERSION, 1) { + error(The QML2 based example requires Qt 5.1 or newer but Qt $$[QT_VERSION] was detected.) +} + +# Input +SOURCES += main.cpp +RESOURCES += qmlbot.qrc +OTHER_FILES += qml/main.qml + +include(../examples.pri) diff --git a/src/libcommuni/examples/qmlbot/qmlbot.qrc b/src/libcommuni/examples/qmlbot/qmlbot.qrc new file mode 100644 index 0000000..5f94096 --- /dev/null +++ b/src/libcommuni/examples/qmlbot/qmlbot.qrc @@ -0,0 +1,5 @@ +<RCC> + <qresource prefix="/"> + <file alias="main.qml">qml/main.qml</file> + </qresource> +</RCC> |
