From 307b8ffae0b1ea00f7df5d34e498f3651229b460 Mon Sep 17 00:00:00 2001 From: Jeena Date: Wed, 7 Jan 2015 19:38:43 +0100 Subject: [PATCH] new ttrss stuff --- .gitignore | 2 +- FeedMonkey.pro | 6 ++++- Login.qml | 62 +++++++++++++++++++++++++++++++++++++++++++++++++ TheMenuBar.qml | 52 +++++++++++++++++++++++++---------------- main.qml | 6 +++++ qml.qrc | 1 + tinytinyrss.cpp | 44 +++++++++++++++++++++++++++++++++++ tinytinyrss.h | 25 ++++++++++++++++++++ 8 files changed, 176 insertions(+), 22 deletions(-) create mode 100644 Login.qml create mode 100644 tinytinyrss.cpp create mode 100644 tinytinyrss.h diff --git a/.gitignore b/.gitignore index 7978b34..7058f39 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ .DS_Store -FeedMonkey.pro.user +FeedMonkey.pro.user* diff --git a/FeedMonkey.pro b/FeedMonkey.pro index d71c6f4..f714892 100644 --- a/FeedMonkey.pro +++ b/FeedMonkey.pro @@ -2,7 +2,8 @@ TEMPLATE = app QT += qml quick -SOURCES += main.cpp +SOURCES += main.cpp \ + tinytinyrss.cpp RESOURCES += qml.qrc \ html.qrc @@ -20,3 +21,6 @@ OTHER_FILES += \ content.html \ content.css \ content.js + +HEADERS += \ + tinytinyrss.h diff --git a/Login.qml b/Login.qml new file mode 100644 index 0000000..70ba396 --- /dev/null +++ b/Login.qml @@ -0,0 +1,62 @@ +import QtQuick 2.0 +import QtQuick.Controls 1.2 + +Rectangle { + color: "white" + anchors.fill: parent + + function login() { + + } + + Column { + width: parent.width + anchors.margins: 20 + + Text { + text: qsTr("Please specify a server url, a username and a password.") + wrapMode: Text.WordWrap + anchors.left: parent.left + anchors.right: parent.right + anchors.margins: 20 + } + + TextField { + id: serverUrl + placeholderText: "http://example.com/ttrss/" + anchors.left: parent.left + anchors.right: parent.right + anchors.margins: 20 + validator: RegExpValidator { regExp: /https?:\/\/.+/ } + onAccepted: login() + } + + TextField { + id: userName + placeholderText: qsTr("username") + anchors.left: parent.left + anchors.right: parent.right + anchors.margins: 20 + onAccepted: login() + } + + TextField { + id: password + placeholderText: qsTr("password") + anchors.left: parent.left + anchors.right: parent.right + anchors.margins: 20 + echoMode: TextInput.Password + onAccepted: login() + } + + Button { + id: loginButton + text: "Ok" + anchors.right: parent.right + anchors.margins: 20 + onClicked: login() + } + } + +} diff --git a/TheMenuBar.qml b/TheMenuBar.qml index d2bca2f..82bc800 100644 --- a/TheMenuBar.qml +++ b/TheMenuBar.qml @@ -2,83 +2,95 @@ import QtQuick.Controls 1.2 MenuBar { + function loggedIn() { + return false; + } + Menu { - title: "File" + title: qsTr("File") MenuItem { - text: "Close" + text: qsTr("Close") shortcut: "Ctrl+W" } MenuItem { - text: "Log Out" + text: qsTr("Log Out") + enabled: loggedIn() } MenuSeparator { } MenuItem { - text: "Exit" + text: qsTr("Exit") shortcut: "Ctrl+Q" onTriggered: Qt.quit() } } Menu { - title: "Action" + title: qsTr("Action") MenuItem { - text: "Reload" + text: qsTr("Reload") shortcut: "R" + enabled: loggedIn() } MenuItem { - text: "Show &Starred" + text: qsTr("Show &Starred") shortcut: "Ctrl+S" + enabled: loggedIn() } MenuItem { - text: "Set &Starred" + text: qsTr("Set &Starred") shortcut: "S" + enabled: loggedIn() } MenuItem { - text: "Set &Unread" + text: qsTr("Set &Unread") shortcut: "U" + enabled: loggedIn() } MenuItem { - text: "Next" + text: qsTr("Next") shortcut: "J" + enabled: loggedIn() } MenuItem { - text: "Previous" + text: qsTr("Previous") shortcut: "K" + enabled: loggedIn() } MenuItem { - text: "Open in Browser" + text: qsTr("Open in Browser") shortcut: "N" + enabled: loggedIn() } } Menu { - title: "View" + title: qsTr("View") MenuItem { - text: "Zoom In" + text: qsTr("Zoom In") shortcut: "Ctrl++" } MenuItem { - text: "Zoom Out" + text: qsTr("Zoom Out") shortcut: "Ctrl+-" } MenuItem { - text: "Reset" + text: qsTr("Reset") shortcut: "Ctrl+0" } } Menu { - title: "Window" + title: qsTr("Window") MenuItem { - text: "Reset to default" + text: qsTr("Reset to default") shortcut: "Ctrl+D" } } Menu { - title: "Help" + title: qsTr("Help") MenuItem { - text: "About" + text: qsTr("About") onTriggered: Qt.openUrlExternally("http://jabs.nu/feedthemonkey"); } } diff --git a/main.qml b/main.qml index 7b4488a..94aad2a 100644 --- a/main.qml +++ b/main.qml @@ -11,5 +11,11 @@ ApplicationWindow { Content { anchors.fill: parent + visible: false + } + + Login { + anchors.fill: parent + visible: true } } diff --git a/qml.qrc b/qml.qrc index 2b1e823..857d910 100644 --- a/qml.qrc +++ b/qml.qrc @@ -3,5 +3,6 @@ main.qml TheMenuBar.qml Content.qml + Login.qml diff --git a/tinytinyrss.cpp b/tinytinyrss.cpp new file mode 100644 index 0000000..ee7ed8d --- /dev/null +++ b/tinytinyrss.cpp @@ -0,0 +1,44 @@ +#include "tinytinyrss.h" +#include +#include +#include +#include + +TinyTinyRSS::TinyTinyRSS(QString serverUrl, QString sessionId) +{ + this->serverUrl = serverUrl; + this->sessionId = sessionId; +} + +TinyTinyRSS::~TinyTinyRSS() +{ + +} + +void TinyTinyRSS::doOperation(QString operation, QVariantMap opts) { + QVariantMap options; + options.insert("sid", this->sessionId); + options.insert("op", operation); + + QMapIterator i(opts); + while (i.hasNext()) { + i.next(); + options.insert(i.key(), i.value()); + } + + QJsonObject jsonobj = QJsonObject::fromVariantMap(options); + QJsonDocument json = QJsonDocument(jsonobj); + + QNetworkAccessManager *manager = new QNetworkAccessManager(this); + + QUrl url(this->serverUrl + "/api/"); + QNetworkRequest request(url); + request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); + + QObject::connect(manager, &QNetworkAccessManager::finished, this, &TinyTinyRSS::replyFinishedOperation); + manager->post(request, json); +} + +void TinyTinyRSS::replyFinishedOperation(QNetworkReply *reply) { + +} diff --git a/tinytinyrss.h b/tinytinyrss.h new file mode 100644 index 0000000..114687b --- /dev/null +++ b/tinytinyrss.h @@ -0,0 +1,25 @@ +#ifndef TINYTINYRSS_H +#define TINYTINYRSS_H + +#include +#include +#include +#include + +class TinyTinyRSS : QObject +{ + Q_OBJECT + +public: + TinyTinyRSS(QString serverUrl, QString sessionId); + ~TinyTinyRSS(); + +private: + QString serverUrl; + QString sessionId; + + void doOperation(QString operation, QVariantMap opts); + void replyFinishedOperation(QNetworkReply *reply); +}; + +#endif // TINYTINYRSS_H