Added marking
This commit is contained in:
+14
-4
@@ -23,7 +23,7 @@ bool Database::init()
|
||||
m_database.setDatabaseName(dir.absoluteFilePath("database.db"));
|
||||
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();
|
||||
|
||||
if(error.type() == QSqlError::NoError)
|
||||
@@ -31,7 +31,9 @@ bool Database::init()
|
||||
m_markQuery = QSqlQuery(m_database);
|
||||
m_markQuery.prepare("INSERT INTO files (file) VALUES (?)");
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -41,20 +43,28 @@ bool Database::init()
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Database::mark(QString &filename)
|
||||
bool Database::mark(const QString &filename)
|
||||
{
|
||||
m_markQuery.bindValue(0, filename);
|
||||
m_markQuery.exec();
|
||||
return checkError();
|
||||
}
|
||||
|
||||
bool Database::unmark(QString &filename)
|
||||
bool Database::unmark(const QString &filename)
|
||||
{
|
||||
m_unmarkQuery.bindValue(0, filename);
|
||||
m_unmarkQuery.exec();
|
||||
return checkError();
|
||||
}
|
||||
|
||||
bool Database::isMarked(const QString &filename)
|
||||
{
|
||||
m_isMarkedQuery.bindValue(":name", filename);
|
||||
m_isMarkedQuery.exec();
|
||||
checkError();
|
||||
return m_isMarkedQuery.next();
|
||||
}
|
||||
|
||||
bool Database::checkError()
|
||||
{
|
||||
QSqlError error = m_database.lastError();
|
||||
|
||||
+4
-2
@@ -11,11 +11,13 @@ class Database : public QObject
|
||||
QSqlDatabase m_database;
|
||||
QSqlQuery m_markQuery;
|
||||
QSqlQuery m_unmarkQuery;
|
||||
QSqlQuery m_isMarkedQuery;
|
||||
public:
|
||||
explicit Database(QObject *parent = 0);
|
||||
bool init();
|
||||
bool mark(QString &filename);
|
||||
bool unmark(QString &filename);
|
||||
bool mark(const QString &filename);
|
||||
bool unmark(const QString &filename);
|
||||
bool isMarked(const QString &filename);
|
||||
protected:
|
||||
bool checkError();
|
||||
};
|
||||
|
||||
+34
-1
@@ -35,7 +35,8 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),
|
||||
|
||||
QMenu *selectMenu = new QMenu(tr("Select"), this);
|
||||
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);
|
||||
if(!m_database->init())
|
||||
@@ -67,6 +68,9 @@ void MainWindow::keyPressEvent(QKeyEvent *event)
|
||||
{
|
||||
event->ignore();
|
||||
}
|
||||
|
||||
if(event->isAccepted())
|
||||
updateWindowTitle();
|
||||
}
|
||||
|
||||
void MainWindow::keyReleaseEvent(QKeyEvent *event)
|
||||
@@ -91,6 +95,7 @@ void MainWindow::openFile()
|
||||
{
|
||||
QFileInfo info(file);
|
||||
m_ringList->setDir(info.dir().absolutePath());
|
||||
updateWindowTitle();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,5 +107,33 @@ void MainWindow::markImage()
|
||||
QString file = ptr->name();
|
||||
if(!file.isEmpty())
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,10 +20,12 @@ public:
|
||||
protected:
|
||||
void keyPressEvent(QKeyEvent *event);
|
||||
void keyReleaseEvent(QKeyEvent *event);
|
||||
void updateWindowTitle();
|
||||
protected slots:
|
||||
void pixmapLoaded(QPixmap pix);
|
||||
void openFile();
|
||||
void markImage();
|
||||
void unmarkImage();
|
||||
};
|
||||
|
||||
#endif // MAINWINDOW_H
|
||||
|
||||
Reference in New Issue
Block a user