Minor improvements

This commit is contained in:
Bart De Vries 2021-04-02 15:53:51 +02:00
parent 514dc1fa51
commit 03573e69c2
6 changed files with 55 additions and 6 deletions

View File

@ -56,4 +56,10 @@ Kirigami.ScrollablePage {
else entry.enclosure.deleteFile() else entry.enclosure.deleteFile()
} }
} }
actions.right: Kirigami.Action {
text: "Add to queue"
icon.name: "media-playlist-append"
visible: entry.enclosure
onTriggered: { queueModel.addEntry(entry.feed.url, entry.id) }
}
} }

View File

@ -14,7 +14,7 @@ import org.kde.kirigami 2.12 as Kirigami
import org.kde.alligator 1.0 import org.kde.alligator 1.0
Kirigami.ScrollablePage { Kirigami.ScrollablePage {
title: "Subscriptions" title: i18n("Subscriptions")
property var lastFeed: "" property var lastFeed: ""

View File

@ -14,7 +14,7 @@ import org.kde.alligator 1.0
Kirigami.ScrollablePage { Kirigami.ScrollablePage {
id: queuepage id: queuepage
title: "Queue" title: i18n("Queue")
Component { Component {
id: delegateComponent id: delegateComponent
Kirigami.SwipeListItem { Kirigami.SwipeListItem {
@ -55,12 +55,10 @@ Kirigami.ScrollablePage {
} }
} }
QueueModel { id: queueModel }
ListView { ListView {
id: mainList id: mainList
model: queueModel model: root.queueModel
moveDisplaced: Transition { moveDisplaced: Transition {
YAnimator { YAnimator {

View File

@ -40,6 +40,7 @@ Kirigami.ApplicationWindow {
pageStack.push(feedList) pageStack.push(feedList)
} }
}, },
Kirigami.Action{ separator: true },
Kirigami.Action { Kirigami.Action {
text: i18n("Settings") text: i18n("Settings")
iconName: "settings-configure" iconName: "settings-configure"
@ -70,6 +71,10 @@ Kirigami.ApplicationWindow {
id: feedList id: feedList
} }
QueueModel {
id: queueModel
}
QueuePage { QueuePage {
id: queuelist id: queuelist
} }

View File

@ -32,6 +32,8 @@ QueueModel::QueueModel(QObject *parent)
void QueueModel::updateQueue() void QueueModel::updateQueue()
{ {
/*
QSqlQuery query; QSqlQuery query;
query.prepare(QStringLiteral("SELECT * FROM Enclosures")); query.prepare(QStringLiteral("SELECT * FROM Enclosures"));
Database::instance().execute(query); Database::instance().execute(query);
@ -89,6 +91,7 @@ void QueueModel::updateQueue()
m_entries.append(entry); m_entries.append(entry);
} }
} }
*/
} }
QueueModel::~QueueModel() QueueModel::~QueueModel()
@ -140,3 +143,39 @@ bool QueueModel::moveRows(const QModelIndex &sourceParent, int sourceRow, int co
return true; return true;
} }
void QueueModel::addEntry(QString feedurl, QString id) {
qDebug() << feedurl << id;
QSqlQuery feedQuery;
feedQuery.prepare(QStringLiteral("SELECT * FROM Feeds WHERE url=:feedurl"));
feedQuery.bindValue(QStringLiteral(":feedurl"), feedurl);
Database::instance().execute(feedQuery);
if (!feedQuery.next()) {
qWarning() << "Feed not found:" << feedurl;
// TODO: remove enclosures belonging to non-existent feed
return;
}
int feed_index = feedQuery.value(QStringLiteral("rowid")).toInt() - 1;
qDebug() << feed_index << feedurl;
Feed* feed = new Feed(feed_index);
// Find query index
QSqlQuery entryQuery;
entryQuery.prepare(QStringLiteral("SELECT rowid FROM Entries WHERE feed=:feedurl ORDER BY updated;"));
entryQuery.bindValue(QStringLiteral(":feedurl"), feedurl);
Database::instance().execute(entryQuery);
int counter = -1;
int entry_index = -1;
while (entryQuery.next()) {
counter++;
QString idquery = entryQuery.value(QStringLiteral("id")).toString();
if (idquery == id) entry_index = counter;
}
if (entry_index == -1) return;
beginInsertRows(QModelIndex(), rowCount(QModelIndex()) - 1, rowCount(QModelIndex()) - 1);
m_entries.append(new Entry(feed, entry_index));
endInsertRows();
return;
}

View File

@ -26,9 +26,10 @@ public:
Q_INVOKABLE bool move(int from, int to); Q_INVOKABLE bool move(int from, int to);
Q_INVOKABLE bool moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild) override; Q_INVOKABLE bool moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild) override;
Q_INVOKABLE void addEntry(QString feedurl, QString id);
private: private:
void updateQueue(); void updateQueue();
mutable QList<Entry *> m_entries; mutable QVector<Entry *> m_entries;
}; };