Added marking

This commit is contained in:
2016-07-31 14:34:58 +02:00
parent 3f226eb952
commit 941119d174
4 changed files with 54 additions and 7 deletions
+14 -4
View File
@@ -23,7 +23,7 @@ bool Database::init()
m_database.setDatabaseName(dir.absoluteFilePath("database.db")); m_database.setDatabaseName(dir.absoluteFilePath("database.db"));
if(m_database.open()) if(m_database.open())
{ {
m_database.exec("CREATE TABLE IF NOT EXISTS files (id INTEGER PRIMARY KEY AUTOINCREMENT, file VARCHAR(255));"); m_database.exec("CREATE TABLE IF NOT EXISTS files (id INTEGER PRIMARY KEY AUTOINCREMENT, file VARCHAR(255) UNIQUE);");
QSqlError error = m_database.lastError(); QSqlError error = m_database.lastError();
if(error.type() == QSqlError::NoError) if(error.type() == QSqlError::NoError)
@@ -31,7 +31,9 @@ bool Database::init()
m_markQuery = QSqlQuery(m_database); m_markQuery = QSqlQuery(m_database);
m_markQuery.prepare("INSERT INTO files (file) VALUES (?)"); m_markQuery.prepare("INSERT INTO files (file) VALUES (?)");
m_unmarkQuery = QSqlQuery(m_database); m_unmarkQuery = QSqlQuery(m_database);
m_unmarkQuery.prepare("DELETE FROM files WHERE file = '?'"); m_unmarkQuery.prepare("DELETE FROM files WHERE file = (?)");
m_isMarkedQuery = QSqlQuery(m_database);
m_isMarkedQuery.prepare("SELECT * FROM files WHERE file = (:name)");
return true; return true;
} }
@@ -41,20 +43,28 @@ bool Database::init()
return false; return false;
} }
bool Database::mark(QString &filename) bool Database::mark(const QString &filename)
{ {
m_markQuery.bindValue(0, filename); m_markQuery.bindValue(0, filename);
m_markQuery.exec(); m_markQuery.exec();
return checkError(); return checkError();
} }
bool Database::unmark(QString &filename) bool Database::unmark(const QString &filename)
{ {
m_unmarkQuery.bindValue(0, filename); m_unmarkQuery.bindValue(0, filename);
m_unmarkQuery.exec(); m_unmarkQuery.exec();
return checkError(); return checkError();
} }
bool Database::isMarked(const QString &filename)
{
m_isMarkedQuery.bindValue(":name", filename);
m_isMarkedQuery.exec();
checkError();
return m_isMarkedQuery.next();
}
bool Database::checkError() bool Database::checkError()
{ {
QSqlError error = m_database.lastError(); QSqlError error = m_database.lastError();
+4 -2
View File
@@ -11,11 +11,13 @@ class Database : public QObject
QSqlDatabase m_database; QSqlDatabase m_database;
QSqlQuery m_markQuery; QSqlQuery m_markQuery;
QSqlQuery m_unmarkQuery; QSqlQuery m_unmarkQuery;
QSqlQuery m_isMarkedQuery;
public: public:
explicit Database(QObject *parent = 0); explicit Database(QObject *parent = 0);
bool init(); bool init();
bool mark(QString &filename); bool mark(const QString &filename);
bool unmark(QString &filename); bool unmark(const QString &filename);
bool isMarked(const QString &filename);
protected: protected:
bool checkError(); bool checkError();
}; };
+34 -1
View File
@@ -35,7 +35,8 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),
QMenu *selectMenu = new QMenu(tr("Select"), this); QMenu *selectMenu = new QMenu(tr("Select"), this);
selectMenu->addAction(tr("Mark"), this, SLOT(markImage()), Qt::Key_F5); selectMenu->addAction(tr("Mark"), this, SLOT(markImage()), Qt::Key_F5);
//menuBar()->addMenu(selectMenu); selectMenu->addAction(tr("Unmark"), this, SLOT(unmarkImage()), Qt::Key_F8);
menuBar()->addMenu(selectMenu);
m_database = new Database(this); m_database = new Database(this);
if(!m_database->init()) if(!m_database->init())
@@ -67,6 +68,9 @@ void MainWindow::keyPressEvent(QKeyEvent *event)
{ {
event->ignore(); event->ignore();
} }
if(event->isAccepted())
updateWindowTitle();
} }
void MainWindow::keyReleaseEvent(QKeyEvent *event) void MainWindow::keyReleaseEvent(QKeyEvent *event)
@@ -91,6 +95,7 @@ void MainWindow::openFile()
{ {
QFileInfo info(file); QFileInfo info(file);
m_ringList->setDir(info.dir().absolutePath()); m_ringList->setDir(info.dir().absolutePath());
updateWindowTitle();
} }
} }
@@ -102,5 +107,33 @@ void MainWindow::markImage()
QString file = ptr->name(); QString file = ptr->name();
if(!file.isEmpty()) if(!file.isEmpty())
m_database->mark(file); m_database->mark(file);
updateWindowTitle();
}
}
void MainWindow::unmarkImage()
{
ImagePtr ptr = m_ringList->currentImage();
if(ptr)
{
QString file = ptr->name();
if(!file.isEmpty())
m_database->unmark(file);
updateWindowTitle();
}
}
void MainWindow::updateWindowTitle()
{
ImagePtr ptr = m_ringList->currentImage();
if(ptr)
{
QFileInfo info(ptr->name());
QString title = info.fileName();
if(m_database->isMarked(ptr->name()))
title += " *";
setWindowTitle(title);
} }
} }
+2
View File
@@ -20,10 +20,12 @@ public:
protected: protected:
void keyPressEvent(QKeyEvent *event); void keyPressEvent(QKeyEvent *event);
void keyReleaseEvent(QKeyEvent *event); void keyReleaseEvent(QKeyEvent *event);
void updateWindowTitle();
protected slots: protected slots:
void pixmapLoaded(QPixmap pix); void pixmapLoaded(QPixmap pix);
void openFile(); void openFile();
void markImage(); void markImage();
void unmarkImage();
}; };
#endif // MAINWINDOW_H #endif // MAINWINDOW_H