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