From a13355662e36d79b34df3983f90663e86e4c4fb5 Mon Sep 17 00:00:00 2001 From: danylo-nevidomiy Date: Mon, 31 Jan 2022 09:16:48 +0300 Subject: [PATCH] Directories db table created directories adding partially done --- PasswordManager/mainwindow.cpp | 69 ++++++++++++++++++++++++++++++++-- PasswordManager/mainwindow.h | 4 ++ PasswordManager/mainwindow.ui | 4 +- 3 files changed, 72 insertions(+), 5 deletions(-) diff --git a/PasswordManager/mainwindow.cpp b/PasswordManager/mainwindow.cpp index 8fee663..5709114 100644 --- a/PasswordManager/mainwindow.cpp +++ b/PasswordManager/mainwindow.cpp @@ -61,6 +61,7 @@ void MainWindow::createRecordsModel() ui->tableViewRecords->horizontalHeader()->hideSection(0); ui->tableViewRecords->horizontalHeader()->hideSection(3); ui->tableViewRecords->horizontalHeader()->hideSection(7); + ui->tableViewRecords->horizontalHeader()->hideSection(8); QString f = QString("status LIKE '%"); f+= QString("true") + QString("%'"); recordsModel->setFilter(f); @@ -101,6 +102,7 @@ bool MainWindow::initAppWithDatabaseFile(const QString &dbLogin, const QString & } createRecordsModel(); createCardsModel(); + createDirectoriesModel(); return true; // setUserInterfaceEnabled(true); } @@ -265,7 +267,8 @@ void MainWindow::createDatabase(const QString &password) " url TEXT, /* web url */" \ " note TEXT, /* примечания */" \ " time INTEGER, /* дата добавления */" \ - " status TEXT /* статус удаления */" \ + " status TEXT, /* статус удаления */" \ + " directory TEXT /* папка хранения */" \ ");"); // исполнение запроса на добавление записи. query->clear(); // очистка запроса. @@ -281,17 +284,21 @@ void MainWindow::createDatabase(const QString &password) " pin TEXT, /* PIN код */" \ " note TEXT, /* примечания */" \ " time INTEGER, /* дата добавления */" \ - " status TEXT /* статус удаления */" \ + " status TEXT, /* статус удаления */" \ + " directory TEXT /* папка хранения */" \ ");"); // исполнение запроса на добавление записи. delete crypto; crypto = new SimpleCrypt(convertPassword(password)); + query->clear(); query->exec("CREATE TABLE keys(id TEXT PRIMARY KEY NOT NULL, word TEXT);"); query->prepare("INSERT INTO keys(id, word)" \ "VALUES(:id, :word)"); query->bindValue(":id", 0); query->bindValue(":word", crypto->encryptToString(QString::fromStdString((checkpoint)))); query->exec(); + query->clear(); + query->exec("CREATE TABLE directories(id TEXT PRIMARY KEY NOT NULL, name TEXT);"); } bool MainWindow::checkPassoword(QString word) @@ -348,6 +355,7 @@ void MainWindow::createCardsModel() ui->tableViewCards->horizontalHeader()->hideSection(6); ui->tableViewCards->horizontalHeader()->hideSection(7); ui->tableViewCards->horizontalHeader()->hideSection(10); + ui->tableViewCards->horizontalHeader()->hideSection(11); QString f = QString("status LIKE '%"); f+= QString("true") + QString("%'"); cardsModel->setFilter(f); @@ -432,7 +440,7 @@ void MainWindow::deleteCard() query->clear(); qDebug() << "Удаление строки:"; -// query->exec(QString("DELETE FROM cards WHERE id = %1;").arg(id)); + // query->exec(QString("DELETE FROM cards WHERE id = %1;").arg(id)); query->prepare("UPDATE cards SET status=:status WHERE id=:id"); query->bindValue(":id", id); query->bindValue(":status", QString("false")); @@ -461,7 +469,47 @@ int MainWindow::getCardsCount() qDebug() << "max" << max; return max; } +int MainWindow::getDirectoriesCount() +{ + query->clear(); + qDebug() << "query->clear();"; + query->prepare("SELECT * FROM directories"); + query->exec(); + QSqlRecord rec = query->record(); + query->next(); + int max = query->value(rec.indexOf("id")).toInt(); + int cur = max; + while(query->next()) + { + cur = query->value(rec.indexOf("id")).toInt(); + if(max < cur) + { + max = cur; + } + } + qDebug() << "max" << max; + return max; +} +void MainWindow::createDirectoriesModel() +{ + directoriesModel = new QSqlTableModel(this, m_db); // создание редактируемой модели базы данных. + + directoriesModel->setTable("directories"); // создание модели таблицы directories. + directoriesModel->select(); // заполнение модели данными. + + // Выбор стратегии сохранения изменений в базе данных: + directoriesModel->setEditStrategy(QSqlTableModel::OnFieldChange); // сохранение происходит при переходе к другому полю. + + + ui->direcoriesTable->setModel(directoriesModel); // соединение модели и ее табличного представления в форме. + + directoriesModel->setHeaderData(0, Qt::Horizontal, tr("number")); + directoriesModel->setHeaderData(1, Qt::Horizontal, tr("directories")); + + ui->direcoriesTable->setCurrentIndex(ui->direcoriesTable->model()->index(0,1)); + +} // Метод показывающий диалоговое окно для выбора файла для новой базы данных: void MainWindow::on_actionCreateNewDatabase_triggered() { @@ -747,3 +795,18 @@ void MainWindow::on_cardEditCancelButton_clicked() ui->stackedWidget->setCurrentIndex(2); } + +void MainWindow::on_addDirectoryButton_clicked() +{ + query->clear(); + + query->prepare("INSERT INTO directories(id, name)" \ + "VALUES(:id, :name)"); + // query->bindValue(":id", getDirectoriesCount()); + // query->bindValue(":name", "dir"); + query->bindValue(":id", getDirectoriesCount()+1); + query->bindValue(":name", "dir"); + query->exec(); + directoriesModel->select(); +} + diff --git a/PasswordManager/mainwindow.h b/PasswordManager/mainwindow.h index 7f40080..4e6841d 100644 --- a/PasswordManager/mainwindow.h +++ b/PasswordManager/mainwindow.h @@ -43,6 +43,8 @@ public: void updateCard(Card* r); void deleteCard(); int getCardsCount(); + int getDirectoriesCount(); + void createDirectoriesModel(); private: // Manager* manager; Ui::MainWindow *ui; @@ -56,6 +58,7 @@ private: QSqlQuery *query; // указатель на запрос. QSqlTableModel *recordsModel; // указатель на таблицу данных в приложении. QSqlTableModel *cardsModel; + QSqlTableModel *directoriesModel; Del* del; // AddSt addst; @@ -118,5 +121,6 @@ private slots: void on_deleteButton_3_clicked(); void on_cardEditOkButton_clicked(); void on_cardEditCancelButton_clicked(); + void on_addDirectoryButton_clicked(); }; #endif // MAINWINDOW_H diff --git a/PasswordManager/mainwindow.ui b/PasswordManager/mainwindow.ui index 5d9b9f1..e9853d4 100644 --- a/PasswordManager/mainwindow.ui +++ b/PasswordManager/mainwindow.ui @@ -549,7 +549,7 @@ - + 0 @@ -562,7 +562,7 @@ Add - + 90