From 3d026ec9557beafe5f279180726b66d07209231b Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Sun, 6 Dec 2015 19:50:58 +0100 Subject: [PATCH] Feed column in Messages table is now TEXT. --- resources/misc/db_init_mysql.sql | 2 +- resources/misc/db_init_sqlite.sql | 2 +- resources/misc/db_update_mysql_3_4.sql | 3 +++ resources/misc/db_update_sqlite_3_4.sql | 27 +++++++++++++++++++ src/gui/labelwithstatus.cpp | 2 -- src/services/standard/standardfeed.cpp | 8 +++--- .../standardfeedsimportexportmodel.cpp | 2 +- src/services/standard/standardserviceroot.cpp | 10 ++----- 8 files changed, 39 insertions(+), 17 deletions(-) diff --git a/resources/misc/db_init_mysql.sql b/resources/misc/db_init_mysql.sql index fb10284de..1931751fa 100644 --- a/resources/misc/db_init_mysql.sql +++ b/resources/misc/db_init_mysql.sql @@ -74,7 +74,7 @@ CREATE TABLE IF NOT EXISTS Messages ( is_read INTEGER(1) NOT NULL DEFAULT 0 CHECK (is_read >= 0 AND is_read <= 1), is_deleted INTEGER(1) NOT NULL DEFAULT 0 CHECK (is_deleted >= 0 AND is_deleted <= 1), is_important INTEGER(1) NOT NULL DEFAULT 0 CHECK (is_important >= 0 AND is_important <= 1), - feed INTEGER NOT NULL, + feed TEXT, title TEXT NOT NULL CHECK (title != ''), url TEXT NOT NULL, author TEXT NOT NULL, diff --git a/resources/misc/db_init_sqlite.sql b/resources/misc/db_init_sqlite.sql index 41e5945c4..ce8eced60 100644 --- a/resources/misc/db_init_sqlite.sql +++ b/resources/misc/db_init_sqlite.sql @@ -69,7 +69,7 @@ CREATE TABLE IF NOT EXISTS Messages ( is_read INTEGER(1) NOT NULL CHECK (is_read >= 0 AND is_read <= 1) DEFAULT (0), is_deleted INTEGER(1) NOT NULL CHECK (is_deleted >= 0 AND is_deleted <= 1) DEFAULT (0), is_important INTEGER(1) NOT NULL CHECK (is_important >= 0 AND is_important <= 1) DEFAULT (0), - feed INTEGER NOT NULL, + feed TEXT, title TEXT NOT NULL CHECK (title != ''), url TEXT NOT NULL, author TEXT NOT NULL, diff --git a/resources/misc/db_update_mysql_3_4.sql b/resources/misc/db_update_mysql_3_4.sql index 0c05416e2..d1526931a 100644 --- a/resources/misc/db_update_mysql_3_4.sql +++ b/resources/misc/db_update_mysql_3_4.sql @@ -37,4 +37,7 @@ ADD COLUMN custom_id TEXT; ALTER TABLE Messages DROP FOREIGN KEY feed; -- ! +ALTER TABLE Messages +MODIFY Feeds TEXT; +-- ! UPDATE Information SET inf_value = '4' WHERE inf_key = 'schema_version'; \ No newline at end of file diff --git a/resources/misc/db_update_sqlite_3_4.sql b/resources/misc/db_update_sqlite_3_4.sql index eb283ab1c..f70192ac4 100644 --- a/resources/misc/db_update_sqlite_3_4.sql +++ b/resources/misc/db_update_sqlite_3_4.sql @@ -34,4 +34,31 @@ ADD COLUMN custom_id TEXT; ALTER TABLE Categories ADD COLUMN custom_id TEXT; -- ! +CREATE TABLE backup_Messages AS SELECT * FROM Messages; +-- ! +DROP TABLE Messages; +-- ! +CREATE TABLE Messages ( + id INTEGER PRIMARY KEY, + is_read INTEGER(1) NOT NULL CHECK (is_read >= 0 AND is_read <= 1) DEFAULT (0), + is_deleted INTEGER(1) NOT NULL CHECK (is_deleted >= 0 AND is_deleted <= 1) DEFAULT (0), + is_important INTEGER(1) NOT NULL CHECK (is_important >= 0 AND is_important <= 1) DEFAULT (0), + feed TEXT, + title TEXT NOT NULL CHECK (title != ''), + url TEXT NOT NULL, + author TEXT NOT NULL, + date_created INTEGER NOT NULL CHECK (date_created != 0), + contents TEXT, + is_pdeleted INTEGER(1) NOT NULL DEFAULT 0 CHECK (is_pdeleted >= 0 AND is_pdeleted <= 1), + enclosures TEXT, + account_id INTEGER NOT NULL, + custom_id TEXT, + + FOREIGN KEY (account_id) REFERENCES Accounts (id) +); +-- ! +INSERT INTO Messages SELECT * FROM backup_Messages; +-- ! +DROP TABLE backup_Messages; +-- ! UPDATE Information SET inf_value = '4' WHERE inf_key = 'schema_version'; \ No newline at end of file diff --git a/src/gui/labelwithstatus.cpp b/src/gui/labelwithstatus.cpp index 90db3a608..5f15541b3 100755 --- a/src/gui/labelwithstatus.cpp +++ b/src/gui/labelwithstatus.cpp @@ -26,8 +26,6 @@ LabelWithStatus::LabelWithStatus(QWidget *parent) : WidgetWithStatus(parent) { m_wdgInput = new QLabel(this); - qobject_cast(m_wdgInput)->setWordWrap(true); - // Set correct size for the tool button. int label_height = m_wdgInput->sizeHint().height(); m_btnStatus->setFixedSize(label_height, label_height); diff --git a/src/services/standard/standardfeed.cpp b/src/services/standard/standardfeed.cpp index 09107d65f..6b56fd004 100755 --- a/src/services/standard/standardfeed.cpp +++ b/src/services/standard/standardfeed.cpp @@ -189,15 +189,15 @@ void StandardFeed::updateCounts(bool including_total_count) { query_all.setForwardOnly(true); if (including_total_count) { - if (query_all.exec(QString("SELECT count(*) FROM Messages WHERE feed = %1 AND is_deleted = 0 AND account_id = %2;").arg(QString::number(id()), - QString::number(const_cast(this)->serviceRoot()->accountId()))) && query_all.next()) { + if (query_all.exec(QString("SELECT count(*) FROM Messages WHERE feed = '%1' AND is_deleted = 0 AND account_id = %2;").arg(QString::number(id()), + QString::number(const_cast(this)->serviceRoot()->accountId()))) && query_all.next()) { m_totalCount = query_all.value(0).toInt(); } } // Obtain count of unread messages. - if (query_all.exec(QString("SELECT count(*) FROM Messages WHERE feed = %1 AND is_deleted = 0 AND is_read = 0 AND account_id = %2;").arg(QString::number(id()), - QString::number(const_cast(this)->serviceRoot()->accountId()))) && query_all.next()) { + if (query_all.exec(QString("SELECT count(*) FROM Messages WHERE feed = '%1' AND is_deleted = 0 AND is_read = 0 AND account_id = %2;").arg(QString::number(id()), + QString::number(const_cast(this)->serviceRoot()->accountId()))) && query_all.next()) { int new_unread_count = query_all.value(0).toInt(); if (status() == NewMessages && new_unread_count < m_unreadCount) { diff --git a/src/services/standard/standardfeedsimportexportmodel.cpp b/src/services/standard/standardfeedsimportexportmodel.cpp index fd74f1ed8..7a7f1a156 100755 --- a/src/services/standard/standardfeedsimportexportmodel.cpp +++ b/src/services/standard/standardfeedsimportexportmodel.cpp @@ -167,7 +167,7 @@ bool FeedsImportExportModel::importAsOPML20(const QByteArray &data) { return false; } - StandardServiceRoot *root_item = new StandardServiceRoot(false); + StandardServiceRoot *root_item = new StandardServiceRoot(); QStack model_items; model_items.push(root_item); QStack elements_to_process; elements_to_process.push(opml_document.documentElement().elementsByTagName(QSL("body")).at(0).toElement()); diff --git a/src/services/standard/standardserviceroot.cpp b/src/services/standard/standardserviceroot.cpp index a6c779566..89c8af3ef 100755 --- a/src/services/standard/standardserviceroot.cpp +++ b/src/services/standard/standardserviceroot.cpp @@ -586,7 +586,7 @@ QStringList StandardServiceRoot::textualFeedIds(const QList &feeds) { stringy_ids.reserve(feeds.size()); foreach (Feed *feed, feeds) { - stringy_ids.append(QString::number(feed->id())); + stringy_ids.append(QString("'%1'").arg(QString::number(feed->id()))); } return stringy_ids; @@ -632,13 +632,7 @@ bool StandardServiceRoot::loadMessagesForItem(RootItem *item, QSqlTableModel *mo } else { QList children = item->getSubTreeFeeds(); - QStringList stringy_ids; - - foreach (Feed *child, children) { - stringy_ids.append(QString::number(child->id())); - } - - QString filter_clause = stringy_ids.join(QSL(", ")); + QString filter_clause = textualFeedIds(children).join(QSL(", ")); model->setFilter(QString(QSL("feed IN (%1) AND is_deleted = 0 AND is_pdeleted = 0")).arg(filter_clause)); qDebug("Loading messages from feeds: %s.", qPrintable(filter_clause));