Abandoning postgresql due to driver errors.
This commit is contained in:
parent
fcf26bc929
commit
29666b187c
|
@ -522,9 +522,7 @@ if(WIN32)
|
||||||
resources/binaries/windows/deployment/qt4-msvc2010/QtWebKit4.dll
|
resources/binaries/windows/deployment/qt4-msvc2010/QtWebKit4.dll
|
||||||
resources/binaries/windows/deployment/qt4-msvc2010/QtXml4.dll
|
resources/binaries/windows/deployment/qt4-msvc2010/QtXml4.dll
|
||||||
resources/binaries/windows/deployment/qt4-msvc2010/ssleay32.dll
|
resources/binaries/windows/deployment/qt4-msvc2010/ssleay32.dll
|
||||||
resources/binaries/windows/deployment/qt4-msvc2010/libintl.dll
|
|
||||||
resources/binaries/windows/deployment/qt4-msvc2010/libmysql.dll
|
resources/binaries/windows/deployment/qt4-msvc2010/libmysql.dll
|
||||||
resources/binaries/windows/deployment/qt4-msvc2010/libpq.dll
|
|
||||||
)
|
)
|
||||||
|
|
||||||
set(APP_DLLS_QT4_MSVC2010_IMAGEFORMATS
|
set(APP_DLLS_QT4_MSVC2010_IMAGEFORMATS
|
||||||
|
@ -540,7 +538,6 @@ if(WIN32)
|
||||||
set(APP_DLLS_QT4_MSVC2010_SQLDRIVERS
|
set(APP_DLLS_QT4_MSVC2010_SQLDRIVERS
|
||||||
resources/binaries/windows/deployment/qt4-msvc2010/sqldrivers/qsqlite4.dll
|
resources/binaries/windows/deployment/qt4-msvc2010/sqldrivers/qsqlite4.dll
|
||||||
resources/binaries/windows/deployment/qt4-msvc2010/sqldrivers/qsqlmysql4.dll
|
resources/binaries/windows/deployment/qt4-msvc2010/sqldrivers/qsqlmysql4.dll
|
||||||
resources/binaries/windows/deployment/qt4-msvc2010/sqldrivers/qsqlpsql4.dll
|
|
||||||
)
|
)
|
||||||
endif(WIN32)
|
endif(WIN32)
|
||||||
|
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,85 +0,0 @@
|
||||||
DROP DATABASE IF EXISTS rssguard;
|
|
||||||
-- !
|
|
||||||
CREATE DATABASE IF NOT EXISTS rssguard CHARACTER SET utf8 COLLATE utf8_general_ci;
|
|
||||||
-- !
|
|
||||||
USE rssguard;
|
|
||||||
-- !
|
|
||||||
DROP TABLE IF EXISTS Information;
|
|
||||||
-- !
|
|
||||||
CREATE TABLE IF NOT EXISTS Information (
|
|
||||||
id INTEGER AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
inf_key TEXT NOT NULL,
|
|
||||||
inf_value TEXT NOT NULL
|
|
||||||
);
|
|
||||||
-- !
|
|
||||||
INSERT INTO Information VALUES (1, 'schema_version', '0.0.1');
|
|
||||||
-- !
|
|
||||||
DROP TABLE IF EXISTS Categories;
|
|
||||||
-- !
|
|
||||||
CREATE TABLE IF NOT EXISTS Categories (
|
|
||||||
id INTEGER AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
parent_id INTEGER NOT NULL,
|
|
||||||
title VARCHAR(100) NOT NULL UNIQUE CHECK (title != ''),
|
|
||||||
description TEXT,
|
|
||||||
date_created BIGINT NOT NULL CHECK (date_created != 0),
|
|
||||||
icon BLOB
|
|
||||||
);
|
|
||||||
-- !
|
|
||||||
DROP TABLE IF EXISTS Feeds;
|
|
||||||
-- !
|
|
||||||
CREATE TABLE IF NOT EXISTS Feeds (
|
|
||||||
id INTEGER AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
title TEXT NOT NULL CHECK (title != ''),
|
|
||||||
description TEXT,
|
|
||||||
date_created BIGINT NOT NULL CHECK (date_created != 0),
|
|
||||||
icon BLOB,
|
|
||||||
category INTEGER NOT NULL CHECK (category >= -1),
|
|
||||||
encoding TEXT NOT NULL CHECK (encoding != ''),
|
|
||||||
url VARCHAR(100) NOT NULL UNIQUE CHECK (url != ''),
|
|
||||||
protected INTEGER(1) NOT NULL CHECK (protected >= 0 AND protected <= 1),
|
|
||||||
username TEXT,
|
|
||||||
password TEXT,
|
|
||||||
update_type INTEGER(1) NOT NULL CHECK (update_type >= 0),
|
|
||||||
update_interval INTEGER NOT NULL DEFAULT 15 CHECK (update_interval >= 5),
|
|
||||||
type INTEGER NOT NULL CHECK (type >= 0)
|
|
||||||
);
|
|
||||||
-- !
|
|
||||||
DROP TABLE IF EXISTS FeedsData;
|
|
||||||
-- !
|
|
||||||
CREATE TABLE IF NOT EXISTS FeedsData (
|
|
||||||
feed_id INTEGER NOT NULL,
|
|
||||||
feed_key VARCHAR(100) NOT NULL,
|
|
||||||
feed_value TEXT,
|
|
||||||
|
|
||||||
PRIMARY KEY (feed_id, feed_key),
|
|
||||||
FOREIGN KEY (feed_id) REFERENCES Feeds (id)
|
|
||||||
);
|
|
||||||
-- !
|
|
||||||
DROP TABLE IF EXISTS Messages;
|
|
||||||
-- !
|
|
||||||
CREATE TABLE IF NOT EXISTS Messages (
|
|
||||||
id INTEGER AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
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,
|
|
||||||
title TEXT NOT NULL CHECK (title != ''),
|
|
||||||
url TEXT NOT NULL,
|
|
||||||
author TEXT NOT NULL,
|
|
||||||
date_created BIGINT NOT NULL CHECK (date_created != 0),
|
|
||||||
contents TEXT,
|
|
||||||
|
|
||||||
FOREIGN KEY (feed) REFERENCES Feeds (id)
|
|
||||||
);
|
|
||||||
-- !
|
|
||||||
INSERT INTO Categories (id, parent_id, title, description, date_created, icon) VALUES (1, -1, 'Linux', 'Collections of GNU/Linux-related feeds.', 1388678961000, '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');
|
|
||||||
-- !
|
|
||||||
INSERT INTO Categories (id, parent_id, title, description, date_created, icon) VALUES (2, -1, 'RSS Guard', 'News and updates on RSS Guard.', 1388678961000, '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');
|
|
||||||
-- !
|
|
||||||
INSERT INTO Feeds (title, description, date_created, category, encoding, url, protected, update_type, type) VALUES ('Linux Today', 'Linux Today - Linux News on Internet Time.', 1388678961000, 1, 'UTF-8', 'http://feeds.feedburner.com/linuxtoday/linux?format=xml', 0, 1, 1);
|
|
||||||
-- !
|
|
||||||
INSERT INTO Feeds (title, description, date_created, category, encoding, url, protected, update_type, type) VALUES ('LinuxInsider', 'LinuxInsider: Linux News & Information from Around the World.', 1388678961000, 1, 'UTF-8', 'http://www.linuxinsider.com/perl/syndication/rssfull.pl', 0, 1, 1);
|
|
||||||
-- !
|
|
||||||
INSERT INTO Feeds (title, description, date_created, category, encoding, url, protected, update_type, type) VALUES ('LXer: Linux News', 'The world is talking about GNU/Linux and Free/Open Source Software.', 1388678961000, 1, 'UTF-8', 'http://lxer.com/module/newswire/headlines.rss', 0, 1, 2);
|
|
||||||
-- !
|
|
||||||
INSERT INTO Feeds (title, description, date_created, category, encoding, url, protected, update_type, update_interval, type) VALUES ('Recent Commits', 'Recent commits for RSS Guard project.', 1388678961000, 2, 'UTF-8', 'http://bitbucket.org/skunkos/rssguard/rss', 0, 2, 30, 1);
|
|
|
@ -67,12 +67,6 @@
|
||||||
#define FILTER_WIDTH 150
|
#define FILTER_WIDTH 150
|
||||||
#define FILTER_RIGHT_MARGIN 5
|
#define FILTER_RIGHT_MARGIN 5
|
||||||
|
|
||||||
#define APP_DB_PSQL_DRIVER "QPSQL"
|
|
||||||
#define APP_DB_PSQL_PORT 5432
|
|
||||||
#define APP_DB_PSQL_FALLBACK_DB "postgres"
|
|
||||||
#define APP_DB_PSQL_INIT "db_init_postgresql.sql"
|
|
||||||
#define APP_DB_PSQL_TEST "PostgreSQLTest"
|
|
||||||
|
|
||||||
#define APP_DB_MYSQL_DRIVER "QMYSQL"
|
#define APP_DB_MYSQL_DRIVER "QMYSQL"
|
||||||
#define APP_DB_MYSQL_INIT "db_init_mysql.sql"
|
#define APP_DB_MYSQL_INIT "db_init_mysql.sql"
|
||||||
#define APP_DB_MYSQL_TEST "MySQLTest"
|
#define APP_DB_MYSQL_TEST "MySQLTest"
|
||||||
|
|
|
@ -106,36 +106,22 @@ FormSettings::FormSettings(QWidget *parent) : QDialog(parent), m_ui(new Ui::Form
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Establish needed connections.
|
// Establish needed connections.
|
||||||
connect(m_ui->m_buttonBox, SIGNAL(accepted()),
|
connect(m_ui->m_buttonBox, SIGNAL(accepted()), this, SLOT(saveSettings()));
|
||||||
this, SLOT(saveSettings()));
|
connect(m_ui->m_cmbProxyType, SIGNAL(currentIndexChanged(int)), this, SLOT(onProxyTypeChanged(int)));
|
||||||
connect(m_ui->m_cmbProxyType, SIGNAL(currentIndexChanged(int)),
|
connect(m_ui->m_checkShowPassword, SIGNAL(stateChanged(int)), this, SLOT(displayProxyPassword(int)));
|
||||||
this, SLOT(onProxyTypeChanged(int)));
|
connect(m_ui->m_treeSkins, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), this, SLOT(onSkinSelected(QTreeWidgetItem*,QTreeWidgetItem*)));
|
||||||
connect(m_ui->m_checkShowPassword, SIGNAL(stateChanged(int)),
|
connect(m_ui->m_cmbExternalBrowserPreset, SIGNAL(currentIndexChanged(int)), this, SLOT(changeDefaultBrowserArguments(int)));
|
||||||
this, SLOT(displayProxyPassword(int)));
|
connect(m_ui->m_btnExternalBrowserExecutable, SIGNAL(clicked()), this, SLOT(selectBrowserExecutable()));
|
||||||
connect(m_ui->m_treeSkins, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)),
|
connect(m_ui->m_txtMysqlUsername->lineEdit(), SIGNAL(textChanged(QString)), this, SLOT(onMysqlUsernameChanged(QString)));
|
||||||
this, SLOT(onSkinSelected(QTreeWidgetItem*,QTreeWidgetItem*)));
|
connect(m_ui->m_txtMysqlHostname->lineEdit(), SIGNAL(textChanged(QString)), this, SLOT(onMysqlHostnameChanged(QString)));
|
||||||
connect(m_ui->m_cmbExternalBrowserPreset, SIGNAL(currentIndexChanged(int)),
|
connect(m_ui->m_txtMysqlPassword->lineEdit(), SIGNAL(textChanged(QString)), this, SLOT(onMysqlPasswordChanged(QString)));
|
||||||
this, SLOT(changeDefaultBrowserArguments(int)));
|
connect(m_ui->m_btnMysqlTestSetup, SIGNAL(clicked()), this, SLOT(mysqlTestConnection()));
|
||||||
connect(m_ui->m_btnExternalBrowserExecutable, SIGNAL(clicked()),
|
connect(m_ui->m_spinMysqlPort, SIGNAL(editingFinished()), this, SLOT(onMysqlDataStorageEdited()));
|
||||||
this, SLOT(selectBrowserExecutable()));
|
connect(m_ui->m_txtMysqlHostname->lineEdit(), SIGNAL(textEdited(QString)), this, SLOT(onMysqlDataStorageEdited()));
|
||||||
connect(m_ui->m_txtMysqlUsername->lineEdit(), SIGNAL(textChanged(QString)),
|
connect(m_ui->m_txtMysqlPassword->lineEdit(), SIGNAL(textEdited(QString)), this, SLOT(onMysqlDataStorageEdited()));
|
||||||
this, SLOT(onMysqlUsernameChanged(QString)));
|
connect(m_ui->m_txtMysqlUsername->lineEdit(), SIGNAL(textEdited(QString)), this, SLOT(onMysqlDataStorageEdited()));
|
||||||
connect(m_ui->m_txtMysqlHostname->lineEdit(), SIGNAL(textChanged(QString)),
|
connect(m_ui->m_cmbSelectToolBar, SIGNAL(currentIndexChanged(int)), m_ui->m_stackedToolbars, SLOT(setCurrentIndex(int)));
|
||||||
this, SLOT(onMysqlHostnameChanged(QString)));
|
connect(m_ui->m_cmbDatabaseDriver, SIGNAL(currentIndexChanged(int)), this, SLOT(selectSqlBackend(int)));
|
||||||
connect(m_ui->m_txtMysqlPassword->lineEdit(), SIGNAL(textChanged(QString)),
|
|
||||||
this, SLOT(onMysqlPasswordChanged(QString)));
|
|
||||||
connect(m_ui->m_btnMysqlTestSetup, SIGNAL(clicked()),
|
|
||||||
this, SLOT(mysqlTestConnection()));
|
|
||||||
connect(m_ui->m_spinMysqlPort, SIGNAL(editingFinished()),
|
|
||||||
this, SLOT(onMysqlDataStorageEdited()));
|
|
||||||
connect(m_ui->m_txtMysqlHostname->lineEdit(), SIGNAL(textEdited(QString)),
|
|
||||||
this, SLOT(onMysqlDataStorageEdited()));
|
|
||||||
connect(m_ui->m_txtMysqlPassword->lineEdit(), SIGNAL(textEdited(QString)),
|
|
||||||
this, SLOT(onMysqlDataStorageEdited()));
|
|
||||||
connect(m_ui->m_txtMysqlUsername->lineEdit(), SIGNAL(textEdited(QString)),
|
|
||||||
this, SLOT(onMysqlDataStorageEdited()));
|
|
||||||
connect(m_ui->m_cmbSelectToolBar, SIGNAL(currentIndexChanged(int)),
|
|
||||||
m_ui->m_stackedToolbars, SLOT(setCurrentIndex(int)));
|
|
||||||
|
|
||||||
// Load all settings.
|
// Load all settings.
|
||||||
loadGeneral();
|
loadGeneral();
|
||||||
|
@ -446,17 +432,12 @@ void FormSettings::saveShortcuts() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void FormSettings::loadDataStorage() {
|
void FormSettings::loadDataStorage() {
|
||||||
onMysqlHostnameChanged(QString());
|
|
||||||
onMysqlUsernameChanged(QString());
|
|
||||||
onMysqlPasswordChanged(QString());
|
|
||||||
|
|
||||||
m_ui->m_lblMysqlTestResult->setStatus(WidgetWithStatus::Information,
|
m_ui->m_lblMysqlTestResult->setStatus(WidgetWithStatus::Information,
|
||||||
tr("No connection test triggered so far."),
|
tr("No connection test triggered so far."),
|
||||||
tr("You did not executed any connection test yet."));
|
tr("You did not executed any connection test yet."));
|
||||||
|
|
||||||
// Load SQLite.
|
// Load SQLite.
|
||||||
m_ui->m_cmbDatabaseDriver->addItem(
|
m_ui->m_cmbDatabaseDriver->addItem(tr("SQLite (embedded database)"), APP_DB_SQLITE_DRIVER);
|
||||||
tr("SQLite (embedded database)"), APP_DB_SQLITE_DRIVER);
|
|
||||||
|
|
||||||
// Load in-memory database status.
|
// Load in-memory database status.
|
||||||
Settings *settings = qApp->settings();
|
Settings *settings = qApp->settings();
|
||||||
|
@ -464,6 +445,10 @@ void FormSettings::loadDataStorage() {
|
||||||
m_ui->m_checkSqliteUseInMemoryDatabase->setChecked(settings->value(APP_CFG_DB, "use_in_memory_db", false).toBool());
|
m_ui->m_checkSqliteUseInMemoryDatabase->setChecked(settings->value(APP_CFG_DB, "use_in_memory_db", false).toBool());
|
||||||
|
|
||||||
if (QSqlDatabase::isDriverAvailable(APP_DB_MYSQL_DRIVER)) {
|
if (QSqlDatabase::isDriverAvailable(APP_DB_MYSQL_DRIVER)) {
|
||||||
|
onMysqlHostnameChanged(QString());
|
||||||
|
onMysqlUsernameChanged(QString());
|
||||||
|
onMysqlPasswordChanged(QString());
|
||||||
|
|
||||||
// Load MySQL.
|
// Load MySQL.
|
||||||
m_ui->m_cmbDatabaseDriver->addItem(tr("MySQL/MariaDB (dedicated database)"), APP_DB_MYSQL_DRIVER);
|
m_ui->m_cmbDatabaseDriver->addItem(tr("MySQL/MariaDB (dedicated database)"), APP_DB_MYSQL_DRIVER);
|
||||||
|
|
||||||
|
@ -478,8 +463,7 @@ void FormSettings::loadDataStorage() {
|
||||||
m_ui->m_spinMysqlPort->setValue(settings->value(APP_CFG_DB, "mysql_port", APP_DB_MYSQL_PORT).toInt());
|
m_ui->m_spinMysqlPort->setValue(settings->value(APP_CFG_DB, "mysql_port", APP_DB_MYSQL_PORT).toInt());
|
||||||
}
|
}
|
||||||
|
|
||||||
int index_current_backend = m_ui->m_cmbDatabaseDriver->findData(settings->value(APP_CFG_DB,
|
int index_current_backend = m_ui->m_cmbDatabaseDriver->findData(settings->value(APP_CFG_DB, "database_driver",
|
||||||
"database_driver",
|
|
||||||
APP_DB_SQLITE_DRIVER).toString());
|
APP_DB_SQLITE_DRIVER).toString());
|
||||||
|
|
||||||
if (index_current_backend >= 0) {
|
if (index_current_backend >= 0) {
|
||||||
|
@ -516,7 +500,7 @@ void FormSettings::saveDataStorage() {
|
||||||
settings->setValue(APP_CFG_DB, "database_driver", selected_db_driver);
|
settings->setValue(APP_CFG_DB, "database_driver", selected_db_driver);
|
||||||
|
|
||||||
if (original_db_driver != selected_db_driver ||
|
if (original_db_driver != selected_db_driver ||
|
||||||
m_initialSettings.m_mysqlDataStorageChanged) {
|
m_initialSettings.m_dataStorageDataChanged) {
|
||||||
m_changedDataTexts.append(tr("data storage backend changed"));
|
m_changedDataTexts.append(tr("data storage backend changed"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -540,8 +524,6 @@ void FormSettings::mysqlTestConnection() {
|
||||||
interpretation,
|
interpretation,
|
||||||
interpretation);
|
interpretation);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -579,7 +561,21 @@ void FormSettings::onMysqlPasswordChanged(const QString &new_password) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void FormSettings::onMysqlDataStorageEdited() {
|
void FormSettings::onMysqlDataStorageEdited() {
|
||||||
m_initialSettings.m_mysqlDataStorageChanged = true;
|
m_initialSettings.m_dataStorageDataChanged = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FormSettings::selectSqlBackend(int index) {
|
||||||
|
QString selected_db_driver = m_ui->m_cmbDatabaseDriver->itemData(index).toString();
|
||||||
|
|
||||||
|
if (selected_db_driver == APP_DB_SQLITE_DRIVER) {
|
||||||
|
m_ui->m_stackedDatabaseDriver->setCurrentIndex(0);
|
||||||
|
}
|
||||||
|
else if (selected_db_driver == APP_DB_MYSQL_DRIVER) {
|
||||||
|
m_ui->m_stackedDatabaseDriver->setCurrentIndex(1);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
qWarning("GUI for given database driver '%s' is not available.", qPrintable(selected_db_driver));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FormSettings::loadGeneral() {
|
void FormSettings::loadGeneral() {
|
||||||
|
|
|
@ -31,10 +31,10 @@ namespace Ui {
|
||||||
struct TemporarySettings {
|
struct TemporarySettings {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TemporarySettings() : m_mysqlDataStorageChanged(false) {
|
TemporarySettings() : m_dataStorageDataChanged(false) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool m_mysqlDataStorageChanged;
|
bool m_dataStorageDataChanged;
|
||||||
};
|
};
|
||||||
|
|
||||||
class FormSettings : public QDialog {
|
class FormSettings : public QDialog {
|
||||||
|
@ -70,6 +70,7 @@ class FormSettings : public QDialog {
|
||||||
void onMysqlUsernameChanged(const QString &new_username);
|
void onMysqlUsernameChanged(const QString &new_username);
|
||||||
void onMysqlPasswordChanged(const QString &new_password);
|
void onMysqlPasswordChanged(const QString &new_password);
|
||||||
void onMysqlDataStorageEdited();
|
void onMysqlDataStorageEdited();
|
||||||
|
void selectSqlBackend(int index);
|
||||||
|
|
||||||
void loadLanguage();
|
void loadLanguage();
|
||||||
void saveLanguage();
|
void saveLanguage();
|
||||||
|
|
|
@ -17,11 +17,20 @@
|
||||||
<item row="0" column="1">
|
<item row="0" column="1">
|
||||||
<widget class="QStackedWidget" name="m_stackedSettings">
|
<widget class="QStackedWidget" name="m_stackedSettings">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>0</number>
|
<number>1</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="m_pageGeneral">
|
<widget class="QWidget" name="m_pageGeneral">
|
||||||
<layout class="QFormLayout" name="formLayout_5">
|
<layout class="QFormLayout" name="formLayout_5">
|
||||||
<property name="margin">
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
|
@ -35,7 +44,19 @@
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="m_pageDataStorage">
|
<widget class="QWidget" name="m_pageDataStorage">
|
||||||
<layout class="QFormLayout" name="formLayout_14">
|
<layout class="QFormLayout" name="formLayout_14">
|
||||||
<property name="margin">
|
<property name="fieldGrowthPolicy">
|
||||||
|
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item row="0" column="0" colspan="2">
|
<item row="0" column="0" colspan="2">
|
||||||
|
@ -64,14 +85,23 @@
|
||||||
<item row="2" column="0" colspan="2">
|
<item row="2" column="0" colspan="2">
|
||||||
<widget class="QStackedWidget" name="m_stackedDatabaseDriver">
|
<widget class="QStackedWidget" name="m_stackedDatabaseDriver">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>0</number>
|
<number>1</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="m_pageSqlite">
|
<widget class="QWidget" name="m_pageSqlite">
|
||||||
<layout class="QFormLayout" name="formLayout_15">
|
<layout class="QFormLayout" name="formLayout_15">
|
||||||
<property name="fieldGrowthPolicy">
|
<property name="fieldGrowthPolicy">
|
||||||
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
|
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="margin">
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item row="0" column="0" colspan="2">
|
<item row="0" column="0" colspan="2">
|
||||||
|
@ -111,7 +141,19 @@ Authors of this application are NOT responsible for lost data.</string>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="m_pageMysql">
|
<widget class="QWidget" name="m_pageMysql">
|
||||||
<layout class="QFormLayout" name="formLayout_16">
|
<layout class="QFormLayout" name="formLayout_16">
|
||||||
<property name="margin">
|
<property name="fieldGrowthPolicy">
|
||||||
|
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
|
@ -225,7 +267,16 @@ Authors of this application are NOT responsible for lost data.</string>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="m_pageShortcuts">
|
<widget class="QWidget" name="m_pageShortcuts">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||||
<property name="margin">
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
|
@ -241,12 +292,21 @@ Authors of this application are NOT responsible for lost data.</string>
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>588</width>
|
<width>100</width>
|
||||||
<height>390</height>
|
<height>30</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||||
<property name="margin">
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
|
@ -260,7 +320,16 @@ Authors of this application are NOT responsible for lost data.</string>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="m_pageUi">
|
<widget class="QWidget" name="m_pageUi">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
<property name="margin">
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
|
@ -276,7 +345,16 @@ Authors of this application are NOT responsible for lost data.</string>
|
||||||
<string>Icons && skins</string>
|
<string>Icons && skins</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_8">
|
<layout class="QHBoxLayout" name="horizontalLayout_8">
|
||||||
<property name="margin">
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
|
@ -292,8 +370,8 @@ Authors of this application are NOT responsible for lost data.</string>
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>580</width>
|
<width>167</width>
|
||||||
<height>361</height>
|
<height>219</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QFormLayout" name="formLayout">
|
<layout class="QFormLayout" name="formLayout">
|
||||||
|
@ -533,7 +611,16 @@ Authors of this application are NOT responsible for lost data.</string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="m_pageFeedsToolbar">
|
<widget class="QWidget" name="m_pageFeedsToolbar">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_13">
|
<layout class="QHBoxLayout" name="horizontalLayout_13">
|
||||||
<property name="margin">
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
|
@ -543,7 +630,16 @@ Authors of this application are NOT responsible for lost data.</string>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="m_pageMessagesToolbar">
|
<widget class="QWidget" name="m_pageMessagesToolbar">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_14">
|
<layout class="QHBoxLayout" name="horizontalLayout_14">
|
||||||
<property name="margin">
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
|
@ -575,7 +671,16 @@ Authors of this application are NOT responsible for lost data.</string>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="m_pageLanguages">
|
<widget class="QWidget" name="m_pageLanguages">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
<property name="margin">
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
|
@ -604,7 +709,16 @@ Authors of this application are NOT responsible for lost data.</string>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="m_pageProxy">
|
<widget class="QWidget" name="m_pageProxy">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
||||||
<property name="margin">
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
|
@ -923,7 +1037,16 @@ Authors of this application are NOT responsible for lost data.</string>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="m_pageFeedsMessages">
|
<widget class="QWidget" name="m_pageFeedsMessages">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_9">
|
<layout class="QHBoxLayout" name="horizontalLayout_9">
|
||||||
<property name="margin">
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
|
@ -1230,22 +1353,6 @@ Authors of this application are NOT responsible for lost data.</string>
|
||||||
</hint>
|
</hint>
|
||||||
</hints>
|
</hints>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
|
||||||
<sender>m_cmbDatabaseDriver</sender>
|
|
||||||
<signal>currentIndexChanged(int)</signal>
|
|
||||||
<receiver>m_stackedDatabaseDriver</receiver>
|
|
||||||
<slot>setCurrentIndex(int)</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>558</x>
|
|
||||||
<y>50</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>516</x>
|
|
||||||
<y>154</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
<connection>
|
||||||
<sender>m_radioTrayOn</sender>
|
<sender>m_radioTrayOn</sender>
|
||||||
<signal>toggled(bool)</signal>
|
<signal>toggled(bool)</signal>
|
||||||
|
|
|
@ -28,7 +28,6 @@
|
||||||
DatabaseFactory::DatabaseFactory(QObject *parent)
|
DatabaseFactory::DatabaseFactory(QObject *parent)
|
||||||
: QObject(parent),
|
: QObject(parent),
|
||||||
m_mysqlDatabaseInitialized(false),
|
m_mysqlDatabaseInitialized(false),
|
||||||
m_postgresqlDatabaseInitialized(false),
|
|
||||||
m_sqliteFileBasedDatabaseinitialized(false),
|
m_sqliteFileBasedDatabaseinitialized(false),
|
||||||
m_sqliteInMemoryDatabaseInitialized(false) {
|
m_sqliteInMemoryDatabaseInitialized(false) {
|
||||||
setObjectName("DatabaseFactory");
|
setObjectName("DatabaseFactory");
|
||||||
|
@ -280,9 +279,6 @@ QSqlDatabase DatabaseFactory::connection(const QString &connection_name,
|
||||||
case MYSQL:
|
case MYSQL:
|
||||||
return mysqlConnection(connection_name);
|
return mysqlConnection(connection_name);
|
||||||
|
|
||||||
case POSTGRESQL:
|
|
||||||
return postgresqlConnection(connection_name);
|
|
||||||
|
|
||||||
case SQLITE:
|
case SQLITE:
|
||||||
case SQLITE_MEMORY:
|
case SQLITE_MEMORY:
|
||||||
default:
|
default:
|
||||||
|
@ -460,63 +456,6 @@ QSqlDatabase DatabaseFactory::mysqlInitializeDatabase(const QString &connection_
|
||||||
return database;
|
return database;
|
||||||
}
|
}
|
||||||
|
|
||||||
QSqlDatabase DatabaseFactory::postgresqlConnection(const QString& connection_name) {
|
|
||||||
if (!m_postgresqlDatabaseInitialized) {
|
|
||||||
// Return initialized database.
|
|
||||||
return postgresqlInitializeDatabase(connection_name);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
QSqlDatabase database;
|
|
||||||
|
|
||||||
if (QSqlDatabase::contains(connection_name)) {
|
|
||||||
qDebug("PostgreSQL connection '%s' is already active.",
|
|
||||||
qPrintable(connection_name));
|
|
||||||
|
|
||||||
// This database connection was added previously, no need to
|
|
||||||
// setup its properties.
|
|
||||||
database = QSqlDatabase::database(connection_name);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// Database connection with this name does not exist
|
|
||||||
// yet, add it and set it up.
|
|
||||||
database = QSqlDatabase::addDatabase(APP_DB_PSQL_DRIVER, connection_name);
|
|
||||||
|
|
||||||
database.setHostName(qApp->settings()->value(APP_CFG_DB, "postgresql_hostname").toString());
|
|
||||||
database.setPort(qApp->settings()->value(APP_CFG_DB, "postgresql_port", APP_DB_PSQL_PORT).toInt());
|
|
||||||
database.setUserName(qApp->settings()->value(APP_CFG_DB, "postgresql_username").toString());
|
|
||||||
database.setPassword(qApp->settings()->value(APP_CFG_DB, "postgresql_password").toString());
|
|
||||||
database.setDatabaseName(APP_LOW_NAME);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!database.isOpen() && !database.open()) {
|
|
||||||
qFatal("MySQL database was NOT opened. Delivered error message: '%s'.",
|
|
||||||
qPrintable(database.lastError().text()));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
qDebug("MySQL database connection '%s' to file '%s' seems to be established.",
|
|
||||||
qPrintable(connection_name),
|
|
||||||
qPrintable(QDir::toNativeSeparators(database.databaseName())));
|
|
||||||
}
|
|
||||||
|
|
||||||
return database;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QSqlDatabase DatabaseFactory::postgresqlInitializeDatabase(const QString& connection_name) {
|
|
||||||
// Try to connect to "rssguard" database.
|
|
||||||
// If connection fails due to rssguard db does not exist
|
|
||||||
// then join to fallback database and create "rssguard" database
|
|
||||||
// the rejoin to rssguard database and create needed schema.
|
|
||||||
return QSqlDatabase();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool DatabaseFactory::postgresqlVacuumDatabase() {
|
|
||||||
QSqlDatabase database = postgresqlConnection(objectName());
|
|
||||||
QSqlQuery query_vacuum(database);
|
|
||||||
|
|
||||||
return query_vacuum.exec("VACUUM;");
|
|
||||||
}
|
|
||||||
|
|
||||||
QSqlDatabase DatabaseFactory::sqliteConnection(const QString &connection_name,
|
QSqlDatabase DatabaseFactory::sqliteConnection(const QString &connection_name,
|
||||||
DatabaseFactory::DesiredType desired_type) {
|
DatabaseFactory::DesiredType desired_type) {
|
||||||
if (desired_type == DatabaseFactory::StrictlyInMemory ||
|
if (desired_type == DatabaseFactory::StrictlyInMemory ||
|
||||||
|
@ -611,9 +550,6 @@ bool DatabaseFactory::vacuumDatabase() {
|
||||||
case SQLITE:
|
case SQLITE:
|
||||||
return sqliteVacuumDatabase();
|
return sqliteVacuumDatabase();
|
||||||
|
|
||||||
case POSTGRESQL:
|
|
||||||
return postgresqlVacuumDatabase();
|
|
||||||
|
|
||||||
case MYSQL:
|
case MYSQL:
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -30,8 +30,7 @@ class DatabaseFactory : public QObject {
|
||||||
enum UsedDriver {
|
enum UsedDriver {
|
||||||
SQLITE,
|
SQLITE,
|
||||||
SQLITE_MEMORY,
|
SQLITE_MEMORY,
|
||||||
MYSQL,
|
MYSQL
|
||||||
POSTGRESQL
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Describes what type of database user wants.
|
// Describes what type of database user wants.
|
||||||
|
@ -82,8 +81,7 @@ class DatabaseFactory : public QObject {
|
||||||
// Tests if database connection with given data
|
// Tests if database connection with given data
|
||||||
// can be established and returns 0 if it can.
|
// can be established and returns 0 if it can.
|
||||||
// Otherwise returns MySQL-specific error code.
|
// Otherwise returns MySQL-specific error code.
|
||||||
MySQLError mysqlTestConnection(const QString &hostname, int port,
|
MySQLError mysqlTestConnection(const QString &hostname, int port, const QString &username, const QString &password);
|
||||||
const QString &username, const QString &password);
|
|
||||||
|
|
||||||
QString mysqlInterpretErrorCode(MySQLError error_code);
|
QString mysqlInterpretErrorCode(MySQLError error_code);
|
||||||
|
|
||||||
|
@ -113,16 +111,6 @@ class DatabaseFactory : public QObject {
|
||||||
// otherwise false.
|
// otherwise false.
|
||||||
bool m_mysqlDatabaseInitialized;
|
bool m_mysqlDatabaseInitialized;
|
||||||
|
|
||||||
//
|
|
||||||
// POSTGRESQL stuff.
|
|
||||||
//
|
|
||||||
|
|
||||||
QSqlDatabase postgresqlConnection(const QString &connection_name);
|
|
||||||
QSqlDatabase postgresqlInitializeDatabase(const QString &connection_name);
|
|
||||||
bool postgresqlVacuumDatabase();
|
|
||||||
bool m_postgresqlDatabaseInitialized;
|
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// SQLITE stuff.
|
// SQLITE stuff.
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in New Issue