Directories db table created

directories adding partially done
This commit is contained in:
danylo-nevidomiy 2022-01-31 09:16:48 +03:00
parent 196ee95aae
commit a13355662e
3 changed files with 72 additions and 5 deletions

View File

@ -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();
}

View File

@ -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

View File

@ -549,7 +549,7 @@
<property name="title">
<string/>
</property>
<widget class="QPushButton" name="pushButton_8">
<widget class="QPushButton" name="addDirectoryButton">
<property name="geometry">
<rect>
<x>0</x>
@ -562,7 +562,7 @@
<string>Add</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_9">
<widget class="QPushButton" name="deleteDirectoryButton">
<property name="geometry">
<rect>
<x>90</x>