summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2016-08-20 18:29:52 +0200
committerArno <arno@disconnect.de>2016-08-20 18:29:52 +0200
commit32afa2c28aabe862bfca44dba24083ffd7db6721 (patch)
tree131e14e7bfb579a09275c1aa7d12d0113c343ab7
parent96c798d4e9ca91cade25aa6d38176714979685bc (diff)
downloadShemovCleaner-32afa2c28aabe862bfca44dba24083ffd7db6721.tar.gz
ShemovCleaner-32afa2c28aabe862bfca44dba24083ffd7db6721.tar.bz2
ShemovCleaner-32afa2c28aabe862bfca44dba24083ffd7db6721.zip
Added configration dialog
Database connection options are now configurable. Hopefully it doesn't end up in an infinite loop if the credentials are not corrent...
-rw-r--r--ShemovCleaner.pro6
-rw-r--r--chastity_belt.pngbin0 -> 850 bytes
-rw-r--r--configurationwidget.cpp67
-rw-r--r--configurationwidget.h27
-rw-r--r--shemovcleaner.cpp43
-rw-r--r--shemovcleaner.h2
-rw-r--r--shemovcleaner.qrc1
-rw-r--r--torrentwidget.cpp12
8 files changed, 147 insertions, 11 deletions
diff --git a/ShemovCleaner.pro b/ShemovCleaner.pro
index 4efb591..7b62158 100644
--- a/ShemovCleaner.pro
+++ b/ShemovCleaner.pro
@@ -19,14 +19,16 @@ SOURCES += main.cpp\
torrentparser.cpp \
torrentdisplay.cpp \
torrentwidget.cpp \
- shemovcleaner.cpp
+ shemovcleaner.cpp \
+ configurationwidget.cpp
HEADERS += \
filesorter.h \
torrentparser.h \
torrentdisplay.h \
torrentwidget.h \
- shemovcleaner.h
+ shemovcleaner.h \
+ configurationwidget.h
DISTFILES +=
diff --git a/chastity_belt.png b/chastity_belt.png
new file mode 100644
index 0000000..ebe3390
--- /dev/null
+++ b/chastity_belt.png
Binary files differ
diff --git a/configurationwidget.cpp b/configurationwidget.cpp
new file mode 100644
index 0000000..09a823b
--- /dev/null
+++ b/configurationwidget.cpp
@@ -0,0 +1,67 @@
+#include <QTabWidget>
+#include <QGridLayout>
+#include <QLabel>
+#include <QSettings>
+#include <QPushButton>
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+#include <QLineEdit>
+
+#include "configurationwidget.h"
+
+ConfigurationWidget::ConfigurationWidget(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f) {
+ //database setup
+ QGridLayout *dbLayout = new QGridLayout;
+ mDbHost = new QLineEdit;
+ dbLayout->addWidget(new QLabel(tr("Hostname")), 0, 0);
+ dbLayout->addWidget(mDbHost, 0, 1);
+ mDbUser = new QLineEdit;
+ dbLayout->addWidget(new QLabel(tr("Username")), 1, 0);
+ dbLayout->addWidget(mDbUser, 1, 1);
+ mDbPass = new QLineEdit;
+ mDbPass->setEchoMode(QLineEdit::Password);
+ dbLayout->addWidget(new QLabel(tr("Password")), 2, 0);
+ dbLayout->addWidget(mDbPass, 2, 1);
+ mDbName = new QLineEdit;
+ dbLayout->addWidget(new QLabel(tr("DB Name")), 3, 0);
+ dbLayout->addWidget(mDbName, 3, 1);
+ QWidget *dbWidget = new QWidget;
+ dbWidget->setLayout(dbLayout);
+
+ //buttons
+ mAccept = new QPushButton(tr("Save"));
+ connect(mAccept, SIGNAL(clicked()), this, SLOT(accept()));
+ mCancel = new QPushButton(tr("Cancel"));
+ connect(mCancel, SIGNAL(clicked()), this, SLOT(reject()));
+ QHBoxLayout *bLayout = new QHBoxLayout;
+ bLayout->addStretch();
+ bLayout->addWidget(mAccept);
+ bLayout->addWidget(mCancel);
+ bLayout->addStretch();
+
+ //dialog layout
+ QVBoxLayout *mainLayout = new QVBoxLayout;
+ QTabWidget *tab = new QTabWidget;
+ tab->addTab(dbWidget, tr("Database"));
+ mainLayout->addWidget(tab);
+ mainLayout->addLayout(bLayout);
+ readSettings();
+ setLayout(mainLayout);
+}
+
+void ConfigurationWidget::accept(){
+ QSettings s;
+ s.setValue("dbhost", mDbHost->text());
+ s.setValue("dbuser", mDbUser->text());
+ s.setValue("dbpass", mDbPass->text());
+ s.setValue("dbname", mDbName->text());
+ QDialog::accept();
+}
+
+void ConfigurationWidget::readSettings(){
+ QSettings s;
+ mDbHost->setText(s.value("dbhost").toString());
+ mDbUser->setText(s.value("dbuser").toString());
+ mDbPass->setText(s.value("dbpass").toString());
+ mDbName->setText(s.value("dbname").toString());
+}
diff --git a/configurationwidget.h b/configurationwidget.h
new file mode 100644
index 0000000..d5d6790
--- /dev/null
+++ b/configurationwidget.h
@@ -0,0 +1,27 @@
+#ifndef CONFIGURATIONWIDGET_H
+#define CONFIGURATIONWIDGET_H
+
+#include <QDialog>
+
+class QLineEdit;
+class QPushButton;
+
+class ConfigurationWidget : public QDialog {
+ Q_OBJECT
+ public:
+ explicit ConfigurationWidget(QWidget *parent = 0, Qt::WindowFlags f = 0);
+
+ public slots:
+ virtual void accept();
+
+ private:
+ void readSettings();
+ QLineEdit *mDbHost;
+ QLineEdit *mDbUser;
+ QLineEdit *mDbPass;
+ QLineEdit *mDbName;
+ QPushButton *mAccept;
+ QPushButton *mCancel;
+};
+
+#endif // CONFIGURATIONWIDGET_H
diff --git a/shemovcleaner.cpp b/shemovcleaner.cpp
index fb9b9e6..ec9d6e4 100644
--- a/shemovcleaner.cpp
+++ b/shemovcleaner.cpp
@@ -6,15 +6,21 @@
#include <QMenu>
#include <QMenuBar>
#include <QApplication>
+#include <QSettings>
+#include <QSqlDatabase>
+#include <QMessageBox>
#include "shemovcleaner.h"
#include "torrentwidget.h"
+#include "configurationwidget.h"
ShemovCleaner::ShemovCleaner(QWidget *parent, Qt::WindowFlags f) : QMainWindow(parent, f) {
//general setup
qApp->setWindowIcon(QIcon(":/clean_tampon.png"));
setMinimumWidth(800);
setMinimumHeight(600);
+ openDatabase();
+
mTorrentTab = new TorrentWidget;
mTab = new QTabWidget;
mTab->addTab(mTorrentTab, tr("Torrents"));
@@ -34,6 +40,14 @@ void ShemovCleaner::setSelectionCount(const QString &msg){
mSelected->setText(msg);
}
+void ShemovCleaner::configure(){
+ ConfigurationWidget w(this);
+ int res = w.exec();
+ if(res == QDialog::Accepted){
+ openDatabase();
+ }
+}
+
void ShemovCleaner::createStatusBar(){
QLabel *l1 = new QLabel(tr("Sel."));
mSelected = new QLabel("000/000");
@@ -46,6 +60,9 @@ void ShemovCleaner::createActions(){
//Application
QAction *quitA = new QAction(tr("Quit"), this);
connect(quitA, SIGNAL(triggered()), qApp, SLOT(closeAllWindows()));
+ QAction *configA = new QAction(QIcon(":/chastity_belt.png"), tr("Configure..."), this);
+ connect(configA, SIGNAL(triggered()), this, SLOT(configure()));
+
//TorrentWidget
mTorRefreshA = new QAction(QIcon(":/refresh.png"), tr("Refresh"), this);
connect(mTorRefreshA, SIGNAL(triggered()), mTorrentTab, SLOT(gatherData()));
@@ -64,6 +81,8 @@ void ShemovCleaner::createActions(){
mTorrentTab->toolBar()->addAction(mTorDeleteA);
mTorrentTab->toolBar()->addSeparator();
mTorrentTab->toolBar()->addAction(mTorInfoA);
+ mTorrentTab->toolBar()->addSeparator();
+ mTorrentTab->toolBar()->addAction(configA);
QMenu *torFileM = new QMenu(tr("File"));
torFileM->addAction(mTorDirA);
torFileM->addAction(mTorRefreshA);
@@ -74,6 +93,8 @@ void ShemovCleaner::createActions(){
torEditM->addAction(mTorDeleteA);
torEditM->addAction(mTorMoveA);
torEditM->addSeparator();
+ torEditM->addAction(configA);
+ torEditM->addSeparator();
torEditM->addAction(mTorInfoA);
mTorrentTab->menuBar()->addMenu(torEditM);
mTorrentTab->addAction(mTorInfoA);
@@ -86,6 +107,28 @@ void ShemovCleaner::createActions(){
mTorrentTab->addAction(mTorDirA);
}
+void ShemovCleaner::openDatabase(){
+ QSettings s;
+ QString dbhost = s.value("dbhost").toString();
+ QString dbuser = s.value("dbuser").toString();
+ QString dbpass = s.value("dbpass").toString();
+ QString dbname = s.value("dbname").toString();
+ QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL", "shemovdb");
+ db.setHostName(dbhost);
+ db.setUserName(dbuser);
+ db.setPassword(dbpass);
+ db.setDatabaseName(dbname);
+ if(!db.open()){
+ int res = ConfigurationWidget(this).exec();
+ if(res == QDialog::Accepted){
+ openDatabase();
+ }else{
+ QMessageBox::critical(this, tr("Error"), tr("Could not open database. Giving up!"));
+ qApp->closeAllWindows();
+ }
+ }
+}
+
QAction *ShemovCleaner::createSeparator(){
QAction *retval = new QAction(this);
retval->setSeparator(true);
diff --git a/shemovcleaner.h b/shemovcleaner.h
index 93b1581..d709858 100644
--- a/shemovcleaner.h
+++ b/shemovcleaner.h
@@ -16,10 +16,12 @@ class ShemovCleaner : public QMainWindow {
public slots:
void statusBarMessage(const QString &msg);
void setSelectionCount(const QString &msg);
+ void configure();
private:
void createStatusBar();
void createActions();
+ void openDatabase();
QAction *createSeparator();
QLabel *mSelected;
QTabWidget *mTab;
diff --git a/shemovcleaner.qrc b/shemovcleaner.qrc
index 0916a47..26b21fe 100644
--- a/shemovcleaner.qrc
+++ b/shemovcleaner.qrc
@@ -8,5 +8,6 @@
<file>diaper.png</file>
<file>folder.png</file>
<file>refresh.png</file>
+ <file>chastity_belt.png</file>
</qresource>
</RCC>
diff --git a/torrentwidget.cpp b/torrentwidget.cpp
index f184324..656870e 100644
--- a/torrentwidget.cpp
+++ b/torrentwidget.cpp
@@ -28,15 +28,6 @@
#include "torrentdisplay.h"
TorrentWidget::TorrentWidget(QWidget *parent) : QWidget(parent), mExt("*.torrent") {
- QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL", "shemovdb");
- db.setHostName("hadante.d-tor.org");
- db.setUserName("shemov");
- db.setPassword("shemov");
- db.setDatabaseName("shemov2");
- if(!db.open()){
- QMessageBox::critical(0, tr("Error"), tr("Could not open database!"));
- }
-
setupGui();
gatherData();
}
@@ -97,6 +88,9 @@ void TorrentWidget::setupGui(){
void TorrentWidget::gatherData(){
QSqlDatabase db = QSqlDatabase::database("shemovdb");
+ if(!db.isOpen()){
+ db.open();
+ }
QSqlQuery q(db);
q.prepare("SELECT COUNT(*) FROM metadata WHERE tsubject = :fn");
QDir d(mDir->text());