diff --git a/Video-Datenbank.ico b/Video-Datenbank.ico new file mode 100644 index 0000000..e587c06 Binary files /dev/null and b/Video-Datenbank.ico differ diff --git a/Video-Datenbank.pro b/Video-Datenbank.pro new file mode 100644 index 0000000..46a9b65 --- /dev/null +++ b/Video-Datenbank.pro @@ -0,0 +1,29 @@ +QT += core gui sql + +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets + +CONFIG += c++17 + +# You can make your code fail to compile if it uses deprecated APIs. +# In order to do so, uncomment the following line. +#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 + +SOURCES += \ + main.cpp \ + mainwindow.cpp + +HEADERS += \ + mainwindow.h + +FORMS += \ + mainwindow.ui + +RC_ICONS = Video-Datenbank.ico + +RESOURCES += \ + Video-Datenbank.qrc + +# Default rules for deployment. +qnx: target.path = /tmp/$${TARGET}/bin +else: unix:!android: target.path = /opt/$${TARGET}/bin +!isEmpty(target.path): INSTALLS += target diff --git a/Video-Datenbank.qrc b/Video-Datenbank.qrc new file mode 100644 index 0000000..6ebfcdb --- /dev/null +++ b/Video-Datenbank.qrc @@ -0,0 +1,5 @@ + + + Video-Datenbank.ico + + diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..493ec7f --- /dev/null +++ b/main.cpp @@ -0,0 +1,10 @@ +#include "mainwindow.h" + +#include + +int main(int argc, char *argv[]){ + QApplication a(argc, argv); + MainWindow w; + w.show(); + return a.exec(); +} diff --git a/mainwindow.cpp b/mainwindow.cpp new file mode 100644 index 0000000..0c828f2 --- /dev/null +++ b/mainwindow.cpp @@ -0,0 +1,487 @@ +#include "mainwindow.h" +#include "ui_mainwindow.h" + +MainWindow::MainWindow(QWidget *parent) + : QMainWindow(parent) + , ui(new Ui::MainWindow) +{ + Debug = 0; +if(Debug) qDebug() << "MainWindow"; + ui->setupUi(this); + + fileName = "Video-Datenbank.db"; + oeffneDatenbank(); + + /*qApp->setStyleSheet("QWidget { color: #0c4909; \ + background-color: #aaffaa; \ + selection-color: #ffffff; \ + selection-background-color: #002500; }");*/ + + ui->pushButton_pfad->setStyleSheet("text-align:left;"); + ui->comboBox_bildformat->addItems({"", "16:9", "4:3"}); + ui->comboBox_filmtyp->addItems({"", "Film", "Serie"}); + ui->comboBox_genre->addItems({"", "Abenteuer", "Action", "Alien", "Animation", "Boxerfilm", "Computer", "Drama", "Dystopie", "Endzeit", "Erotik", "Fantasy", "Horror", "Karate", "Katastrophen", "Komödie", "Krieg", "Krimi", "Märchen", "Mittelalter", "Monster", "Musik", "Parodie", "Piraten", "Psycho", "Religion", "Science-Fiction", "SuperHelden", "Szene", "Tanzfilm", "Thriller", "Vampir", "Weltraum", "Werwolf", "Western", "Zombie"}); + ui->comboBox_fsk->addItems({"", "0", "6", "12", "16", "18"}); + + ui->lineEdit_suchen->setText(""); + on_lineEdit_suchen_textChanged(); +if(Debug) qDebug() << "MainWindow-Ende"; +} + +void MainWindow::oeffneDatenbank(){ +if(Debug) qDebug() << "oeffneDatenbank"; + ui->tableWidget_Datenbank_ausgabe->clear(); + + QDateTime now = QDateTime::currentDateTime(); + QString newName = "Video-Datenbank-Backup-" + now.toString("yyyy.MM.dd-hh.mm.ss") + ".db"; + QFile file(fileName); + file.copy(newName); + + db = QSqlDatabase::addDatabase("QSQLITE"); + //db.setConnectOptions("QSQLITE_ENABLE_REGEXP"); + db.setDatabaseName("Video-Datenbank.db"); + + if(db.open()){ + ui->statusbar->showMessage("Datenbank Video-Datenbank.db geöffnet!"); + } else{ + ui->statusbar->showMessage("Datenbank Video-Datenbank.db nicht geöffnet!"); + return; + } + + query = QSqlQuery(db); + + query.exec("CREATE TABLE IF NOT EXISTS einstellungen(" + "pfad TEXT)"); + if(query.lastError().isValid()){ + ui->statusbar->showMessage("Fehler:" + query.lastError().databaseText()); + } + + query.exec("SELECT pfad FROM einstellungen"); + if(query.lastError().isValid()){ + ui->statusbar->showMessage("Fehler:" + query.lastError().databaseText()); + } + while(query.next()){ + datenPfad = query.value(0).toString(); + } + if(datenPfad == "" || datenPfad == "/"){ + datenPfad = "c:/"; + } + setWindowTitle("Video-Datenbank - Datenquelle: " + datenPfad); + + query.exec("CREATE TABLE IF NOT EXISTS video(" + "id INTEGER PRIMARY KEY, " + "pfad TEXT, " + "Titel TEXT, " + "Bildformat TEXT, " + "Filmtyp TEXT, " + "Teil TEXT, " + "Genre TEST, " + "Länge TEXT, " + "Jahr TEXT, " + "FSK TEXT, " + "Handlung TEXT, " + "Bild BLOB)"); + if(query.lastError().isValid()){ + ui->statusbar->showMessage("Fehler:" + query.lastError().databaseText()); + } +if(Debug) qDebug() << "oeffneDatenbank-Ende"; +} + +void MainWindow::schiesseDatenbank(){ +if(Debug) qDebug() << "schiesseDatenbank"; + db.close(); +if(Debug) qDebug() << "schiesseDatenbank-Ende"; +} + +void MainWindow::leseVerzeichnis(){ +if(Debug) qDebug() << "leseVerzeichnis"; + ui->tableWidget_Datenbank_ausgabe->clear(); + + QDirIterator it(datenPfad, QStringList() << "*.3gp" << "*.avi" << "*.divx" << "*.flv" << "*.m2ts" << "*.mpeg" << "*.mts" << "*.mkv" << "*.mov" << "*.mp4" << "*.mpg" << "*.ogv" << "*.qt" << "*.webm" << "*.wmv", QDir::Files, QDirIterator::Subdirectories); + while(it.hasNext()){ + QString pfad = it.next(); + pfad.replace(QString("'"), QString("''")); + + ui->statusbar->showMessage(pfad); + ui->statusbar->repaint(); + + query.exec(QString("SELECT * FROM video WHERE pfad == '%1'").arg(pfad)); + if(!query.next()){ + query.exec(QString("INSERT INTO video (pfad) VALUES('%1')").arg(pfad)); + if(query.lastError().isValid()){ + ui->statusbar->showMessage("Fehler:" + query.lastError().databaseText()); + } + } + } + ui->statusbar->showMessage("Daten eingelesen!"); + + ui->lineEdit_suchen->setText(""); + on_lineEdit_suchen_textChanged(); +if(Debug) qDebug() << "leseVerzeichnis-Ende"; +} + +MainWindow::~MainWindow(){ +if(Debug) qDebug() << "~MainWindow"; + schiesseDatenbank(); + delete ui; +if(Debug) qDebug() << "~MainWindow-Ende"; +} + +void MainWindow::on_actionDaten_aktualisieren_triggered(){ +if(Debug) qDebug() << "on_actionDaten_aktualisieren_triggered"; + leseVerzeichnis(); +if(Debug) qDebug() << "on_actionDaten_aktualisieren_triggered-Ende"; +} + + +void MainWindow::on_actionDaten_ausgeben_triggered(){ +if(Debug) qDebug() << "on_actionDaten_ausgeben_triggered"; + ui->lineEdit_suchen->setText(""); + on_lineEdit_suchen_textChanged(); + ui->statusbar->showMessage("Daten ausgegeben"); +if(Debug) qDebug() << "on_actionDaten_ausgeben_triggered-Ende"; +} + + +void MainWindow::on_actionBeenden_triggered(){ +if(Debug) qDebug() << "on_actionBeenden_triggered"; + MainWindow::close(); +if(Debug) qDebug() << "on_actionBeenden_triggered-Ende"; +} + + +void MainWindow::on_actionPfad_zu_den_Videos_triggered(){ +if(Debug) qDebug() << "on_actionPfad_zu_den_Videos_triggered"; + datenPfad = QFileDialog::getExistingDirectory(this, tr("Öffne Verzeichnis"), datenPfad, QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); + ui->statusbar->showMessage(datenPfad); + + if(datenPfad!=""){ + ui->tableWidget_Datenbank_ausgabe->clear(); + query.exec(QString("INSERT OR REPLACE INTO einstellungen VALUES ('%1')").arg(datenPfad)); + if(query.lastError().isValid()){ + ui->statusbar->showMessage("Fehler:" + query.lastError().databaseText()); + } + } else{ + query.exec("SELECT * FROM einstellungen"); + if(query.lastError().isValid()){ + ui->statusbar->showMessage("Fehler:" + query.lastError().databaseText()); + } + while(query.next()){ + datenPfad = query.value(0).toString(); + } + if(datenPfad == "" || datenPfad == "/"){ + datenPfad = "c:/"; + } + } + setWindowTitle("Video-Datenbank - Datenquelle: " + datenPfad); +if(Debug) qDebug() << "on_actionPfad_zu_den_Videos_triggered-Ende"; +} + +void MainWindow::on_pushButton_minus_clicked(){ +if(Debug) qDebug() << "on_pushButton_minus_clicked"; + if(ui->tableWidget_Datenbank_ausgabe->rowCount()<=0) return; + QString Zeile = ui->pushButton_id->text(); + int row = Zeile.toInt(); + row--; + if(row<1) return; + ui->statusbar->showMessage("Datensatz zurück"); + on_tableWidget_Datenbank_ausgabe_cellClicked(row-1, 0); +if(Debug) qDebug() << "on_pushButton_minus_clicked-Ende"; +} + +void MainWindow::on_pushButton_plus_clicked(){ +if(Debug) qDebug() << "on_pushButton_plus_clicked"; + if(ui->tableWidget_Datenbank_ausgabe->rowCount()<=0) return; + QString Zeile = ui->pushButton_id->text(); + QString Zeile_max = ui->pushButton_max->text(); + int row = Zeile.toInt(); + int row_max = Zeile_max.toInt(); + row++; + if(row>row_max) return; + ui->statusbar->showMessage("Datensatz vor"); + on_tableWidget_Datenbank_ausgabe_cellClicked(row-1, 0); +if(Debug) qDebug() << "on_pushButton_plus_clicked-Ende"; +} + +void MainWindow::on_lineEdit_suchen_textChanged(){ +if(Debug) qDebug() << "on_lineEdit_suchen_textChanged"; + + ui->tableWidget_Datenbank_ausgabe->clear(); + + int Zeile_max = 0; + QStringList sucheTabelleZeile; + QVector sucheTabelleIndex; + + QStringList suchenTextList = ui->lineEdit_suchen->text().replace(("$"),("")).replace("'","''").split(" "); + QString befehl_SQL; + QString befehl_SELECT_SQL = "SELECT * FROM video WHERE "; + QString befehl_LIKE_SQL = "(pfad LIKE '%$%' OR Titel LIKE '%$%' OR Bildformat LIKE '%$%' OR Filmtyp LIKE '%$%' OR Teil LIKE '%$%' OR Genre LIKE '%$%' OR Länge LIKE '%$%' OR Jahr LIKE '%$%' OR FSK LIKE '%$%' OR Handlung LIKE '%$%')"; + + for(int i=0; i< suchenTextList.length(); i++){ + if(i<1){ + befehl_SQL = befehl_SELECT_SQL + befehl_LIKE_SQL; + befehl_SQL.replace(QString("$"), QString(suchenTextList.at(i))); + } else{ + befehl_SQL = befehl_SQL + " AND " + befehl_LIKE_SQL; + befehl_SQL.replace(QString("$"), QString(suchenTextList.at(i))); + } + } + + query.exec(befehl_SQL); + if(query.lastError().isValid()){ + ui->statusbar->showMessage("Beim suchen ist ein Fehler aufgetreten:" + query.lastError().databaseText()); + } + + while(query.next()){ + sucheTabelleZeile << query.value(1).toString() << query.value(2).toString() << query.value(3).toString() << query.value(4).toString() << query.value(5).toString() << query.value(6).toString() << query.value(7).toString() << query.value(8).toString() << query.value(9).toString(); + sucheTabelleIndex.append(sucheTabelleZeile); + sucheTabelleZeile.clear(); + } + + if(sucheTabelleIndex.length()<=0){ + ui->tableWidget_Datenbank_ausgabe->setColumnCount(0); + ui->tableWidget_Datenbank_ausgabe->setRowCount(0); + return; + } + + for(int i=0; itableWidget_Datenbank_ausgabe->setColumnCount(10); // Table costructor + ui->tableWidget_Datenbank_ausgabe->setHorizontalHeaderLabels({tr("Pfad"), tr("Titel"), tr("Format"), tr("Typ"), tr("Teil"), tr("Genre"), tr("Länge"), tr("Jahr"), tr("FSK"), tr("Status")}); + ui->tableWidget_Datenbank_ausgabe->setRowCount(i+1); // neue Zeile + ui->tableWidget_Datenbank_ausgabe->setItem(i, 0, new QTableWidgetItem (QStringLiteral("%1").arg(sucheTabelleIndex[i][0]))); + ui->tableWidget_Datenbank_ausgabe->setItem(i, 1, new QTableWidgetItem (QStringLiteral("%1").arg(sucheTabelleIndex[i][1]))); + ui->tableWidget_Datenbank_ausgabe->setItem(i, 2, new QTableWidgetItem (QStringLiteral("%1").arg(sucheTabelleIndex[i][2]))); + ui->tableWidget_Datenbank_ausgabe->item(i, 2)->setTextAlignment(Qt::AlignCenter); + ui->tableWidget_Datenbank_ausgabe->setItem(i, 3, new QTableWidgetItem (QStringLiteral("%1").arg(sucheTabelleIndex[i][3]))); + ui->tableWidget_Datenbank_ausgabe->item(i, 3)->setTextAlignment(Qt::AlignCenter); + ui->tableWidget_Datenbank_ausgabe->setItem(i, 4, new QTableWidgetItem (QStringLiteral("%1").arg(sucheTabelleIndex[i][4]))); + ui->tableWidget_Datenbank_ausgabe->item(i, 4)->setTextAlignment(Qt::AlignCenter); + ui->tableWidget_Datenbank_ausgabe->setItem(i, 5, new QTableWidgetItem (QStringLiteral("%1").arg(sucheTabelleIndex[i][5]))); + ui->tableWidget_Datenbank_ausgabe->item(i, 5)->setTextAlignment(Qt::AlignCenter); + ui->tableWidget_Datenbank_ausgabe->setItem(i, 6, new QTableWidgetItem (QStringLiteral("%1").arg(sucheTabelleIndex[i][6]))); + ui->tableWidget_Datenbank_ausgabe->item(i, 6)->setTextAlignment(Qt::AlignCenter); + ui->tableWidget_Datenbank_ausgabe->setItem(i, 7, new QTableWidgetItem (QStringLiteral("%1").arg(sucheTabelleIndex[i][7]))); + ui->tableWidget_Datenbank_ausgabe->item(i, 7)->setTextAlignment(Qt::AlignCenter); + ui->tableWidget_Datenbank_ausgabe->setItem(i, 8, new QTableWidgetItem (QStringLiteral("%1").arg(sucheTabelleIndex[i][8]))); + ui->tableWidget_Datenbank_ausgabe->item(i, 8)->setTextAlignment(Qt::AlignCenter); + if(QFileInfo::exists(sucheTabelleIndex[i][0])){ + ui->tableWidget_Datenbank_ausgabe->setItem(i, 9, new QTableWidgetItem (QStringLiteral("%1").arg("Ok"))); + ui->tableWidget_Datenbank_ausgabe->item(i, 9)->setTextAlignment(Qt::AlignCenter); + ui->tableWidget_Datenbank_ausgabe->item(i, 9)->setBackground(QBrush(QColor("#88ff88"))); + } else{ + ui->tableWidget_Datenbank_ausgabe->setItem(i, 9, new QTableWidgetItem (QStringLiteral("%1").arg("kein Video"))); + ui->tableWidget_Datenbank_ausgabe->item(i, 9)->setTextAlignment(Qt::AlignCenter); + ui->tableWidget_Datenbank_ausgabe->item(i, 9)->setBackground(QBrush(QColor("#ff8888"))); + } + } + ui->pushButton_max->setText(QString::number(Zeile_max)); + ui->tableWidget_Datenbank_ausgabe->resizeColumnsToContents(); + if(ui->tableWidget_Datenbank_ausgabe->rowCount()>0) on_tableWidget_Datenbank_ausgabe_cellClicked(0, 0); + ui->tableWidget_Datenbank_ausgabe->setSortingEnabled(true); + ui->tableWidget_Datenbank_ausgabe->sortByColumn(0, Qt::AscendingOrder); +if(Debug) qDebug() << "on_lineEdit_suchen_textChanged-Ende"; +} + +void MainWindow::on_pushButton_abspielen_clicked(){ +if(Debug) qDebug() << "on_pushButton_abspielen_clicked"; + if(ui->tableWidget_Datenbank_ausgabe->rowCount()<=0) return; + if(QFileInfo::exists(ui->pushButton_pfad->text())){ + QProcess *explorer = new QProcess; + explorer->start("explorer", {ui->pushButton_pfad->text().replace(QString("/"), QString("\\"))}); + } + ui->statusbar->showMessage("Video abspielen"); +if(Debug) qDebug() << "on_pushButton_abspielen_clicked-Ende"; +} + +void MainWindow::on_pushButton_daten_loeschen_clicked(){ +if(Debug) qDebug() << "on_pushButton_daten_loeschen_clicked"; + if(ui->tableWidget_Datenbank_ausgabe->rowCount()<=0) return; + // id ermitteln + if(ui->pushButton_id->text()=="") return; + QString Zeile = ui->tableWidget_Datenbank_ausgabe->item(ui->pushButton_id->text().toInt()-1, 0)->text(); + int id=0; + query.exec(QString("SELECT * FROM video WHERE pfad LIKE '%1'").arg(Zeile.replace(QString("'"), QString("''")))); + if(query.lastError().isValid()){ + ui->statusbar->showMessage("Fehler:" + query.lastError().databaseText()); + } + + while(query.next()){ + id=query.value(0).toInt(); + } + // id ermitteln ende + if (QMessageBox::Yes == QMessageBox(QMessageBox::Warning, "Datensatz löschen!", "Willst du wirklich löschen?", QMessageBox::No|QMessageBox::Yes).exec()){ + query.exec(QString("DELETE FROM video WHERE _rowid_ IN ('%1')").arg(QString::number(id))); + if(query.lastError().isValid()){ + ui->statusbar->showMessage("Fehler:" + query.lastError().databaseText()); + } + on_lineEdit_suchen_textChanged(); + } + ui->statusbar->showMessage("Datensatz gelöscht!"); +if(Debug) qDebug() << "on_pushButton_daten_loeschen_clicked-Ende"; +} + +void MainWindow::on_tableWidget_Datenbank_ausgabe_cellClicked(int row, int column){ +if(Debug) qDebug() << "on_tableWidget_Datenbank_ausgabe_cellClicked"; + ui->tableWidget_Datenbank_ausgabe->selectRow(row); + QString Zeile = ui->tableWidget_Datenbank_ausgabe->item(row, 0)->text(); + ui->pushButton_id->setText(QString::number(row+1)); + + query.exec(QString("SELECT * FROM video WHERE pfad LIKE '%1'").arg(Zeile.replace(QString("'"), QString("''")))); + if(query.lastError().isValid()){ + ui->statusbar->showMessage("Fehler:" + query.lastError().databaseText()); + } + + while(query.next()){ + ui->pushButton_pfad->setText(query.value(1).toString()); + ui->lineEdit_titel->setText(query.value(2).toString()); + ui->comboBox_bildformat->setCurrentText(query.value(3).toString()); + ui->comboBox_filmtyp->setCurrentText(query.value(4).toString()); + ui->lineEdit_teil->setText(query.value(5).toString()); + ui->comboBox_genre->setCurrentText(query.value(6).toString()); + ui->lineEdit_laenge->setText(query.value(7).toString()); + ui->lineEdit_jahr->setText(query.value(8).toString()); + ui->comboBox_fsk->setCurrentText(query.value(9).toString()); + ui->plainTextEdit_handlung->document()->setPlainText(query.value(10).toString()); + + QByteArray outByteArray = query.value(11).toByteArray(); + QPixmap pixmap = QPixmap(); + pixmap.loadFromData(outByteArray); + ui->label_bild->setPixmap(pixmap.scaledToHeight(297)); + + if(QFileInfo::exists(query.value(1).toString())){ + ui->pushButton_status->setStyleSheet("background-color: #88ff88; border-radius: 3px;"); + } else{ + ui->pushButton_status->setStyleSheet("background-color: #ff8888; border-radius: 3px;"); + } + } +if(Debug) qDebug() << "on_tableWidget_Datenbank_ausgabe_cellClicked-Ende"; +} + +void MainWindow::on_pushButton_speichern_clicked(){ +if(Debug) qDebug() << "on_pushButton_speichern_clicked"; + if(ui->tableWidget_Datenbank_ausgabe->rowCount()<=0) return; + // id ermitteln + if(ui->pushButton_id->text()=="") return; + QString Zeile = ui->tableWidget_Datenbank_ausgabe->item(ui->pushButton_id->text().toInt()-1, 0)->text(); + int id=0; + query.exec(QString("SELECT * FROM video WHERE pfad LIKE '%1'").arg(Zeile.replace(QString("'"), QString("''")))); + if(query.lastError().isValid()){ + ui->statusbar->showMessage("Fehler:" + query.lastError().databaseText()); + } + + while(query.next()){ + id=query.value(0).toInt(); + } + // id ermitteln ende + // Titel speichern + QString Titel = ui->lineEdit_titel->text(); + query.exec(QString("UPDATE video SET Titel=('%1') WHERE id=('%2')").arg(Titel.replace(QString("'"), QString("''")), QString::number(id))); + if(query.lastError().isValid()){ + ui->statusbar->showMessage("Fehler:" + query.lastError().databaseText()); + } + // Bildformat speichern + QString Bildformat = ui->comboBox_bildformat->currentText(); + query.exec(QString("UPDATE video SET Bildformat=('%1') WHERE id=('%2')").arg(Bildformat.replace(QString("'"), QString("''")), QString::number(id))); + if(query.lastError().isValid()){ + ui->statusbar->showMessage("Fehler:" + query.lastError().databaseText()); + } + // Filmtyp speichern + QString Filmtyp = ui->comboBox_filmtyp->currentText(); + query.exec(QString("UPDATE video SET Filmtyp=('%1') WHERE id=('%2')").arg(Filmtyp.replace(QString("'"), QString("''")), QString::number(id))); + if(query.lastError().isValid()){ + ui->statusbar->showMessage("Fehler:" + query.lastError().databaseText()); + } + // Teil speichern + QString Teil = ui->lineEdit_teil->text(); + query.exec(QString("UPDATE video SET Teil=('%1') WHERE id=('%2')").arg(Teil.replace(QString("'"), QString("''")), QString::number(id))); + if(query.lastError().isValid()){ + ui->statusbar->showMessage("Fehler:" + query.lastError().databaseText()); + } + // Genre speichern + QString Genre = ui->comboBox_genre->currentText(); + query.exec(QString("UPDATE video SET Genre=('%1') WHERE id=('%2')").arg(Genre.replace(QString("'"), QString("''")), QString::number(id))); + if(query.lastError().isValid()){ + ui->statusbar->showMessage("Fehler:" + query.lastError().databaseText()); + } + // Länge speichern + QString Laenge = ui->lineEdit_laenge->text(); + query.exec(QString("UPDATE video SET Länge=('%1') WHERE id=('%2')").arg(Laenge.replace(QString("'"), QString("''")), QString::number(id))); + if(query.lastError().isValid()){ + ui->statusbar->showMessage("Fehler:" + query.lastError().databaseText()); + } + // Jahr speichern + QString Jahr = ui->lineEdit_jahr->text(); + query.exec(QString("UPDATE video SET Jahr=('%1') WHERE id=('%2')").arg(Jahr.replace(QString("'"), QString("''")), QString::number(id))); + if(query.lastError().isValid()){ + ui->statusbar->showMessage("Fehler:" + query.lastError().databaseText()); + } + // FSK speichern + QString FSK = ui->comboBox_fsk->currentText(); + query.exec(QString("UPDATE video SET FSK=('%1') WHERE id=('%2')").arg(FSK.replace(QString("'"), QString("''")), QString::number(id))); + if(query.lastError().isValid()){ + ui->statusbar->showMessage("Fehler:" + query.lastError().databaseText()); + } + // Handlung speichern + QString Handlung = ui->plainTextEdit_handlung->toPlainText(); + query.exec(QString("UPDATE video SET Handlung=('%1') WHERE id=('%2')").arg(Handlung.replace(QString("'"), QString("''")), QString::number(id))); + if(query.lastError().isValid()){ + ui->statusbar->showMessage("Fehler:" + query.lastError().databaseText()); + } + ui->statusbar->showMessage("Daten gespeichert"); + int row = ui->tableWidget_Datenbank_ausgabe->currentRow(); + on_lineEdit_suchen_textChanged(); + on_tableWidget_Datenbank_ausgabe_cellClicked(row, 0); +if(Debug) qDebug() << "on_pushButton_speichern_clicked-Ende"; +} + +void MainWindow::on_pushButton_bild_clicked(){ +if(Debug) qDebug() << "on_pushButton_bild_clicked"; + if(ui->tableWidget_Datenbank_ausgabe->rowCount()<=0) return; + // id ermitteln + if(ui->pushButton_id->text()=="") return; + QString Zeile = ui->tableWidget_Datenbank_ausgabe->item(ui->pushButton_id->text().toInt()-1, 0)->text(); + int id=0; + query.exec(QString("SELECT * FROM video WHERE pfad LIKE '%1'").arg(Zeile.replace(QString("'"), QString("''")))); + if(query.lastError().isValid()){ + ui->statusbar->showMessage("Fehler:" + query.lastError().databaseText()); + } + + while(query.next()){ + id=query.value(0).toInt(); + } + // id ermitteln ende + + fileName = QFileDialog::getOpenFileName(this, tr("Öffne Bild"), "c:", tr("Bild Datei (*.png *.jpg *.gif *.bmp)")); + + if(!(fileName=="")){ + QFile file(fileName); + if (!file.open(QIODevice::ReadOnly)) return; + QByteArray inByteArray = file.readAll(); + query.prepare(QString("UPDATE video SET Bild=(:imageData) WHERE id=('%1')").arg(QString::number(id))); + query.bindValue(":imageData", inByteArray); + if(!query.exec()){ + ui->statusbar->showMessage("Fehler:" + query.lastError().databaseText()); + } + on_tableWidget_Datenbank_ausgabe_cellClicked(ui->pushButton_id->text().toInt()-1, 0); + } + on_pushButton_speichern_clicked(); +if(Debug) qDebug() << "on_pushButton_bild_clicked-Ende"; +} + +void MainWindow::on_pushButton_pfad_clicked(){ +if(Debug) qDebug() << "on_pushButton_pfad_clicked"; + QStringList Datei_tmp = ui->pushButton_pfad->text().split("/"); + QString Datei = Datei_tmp.at(Datei_tmp.length()-1); + QStringList Dateiname_tmp = Datei.split("."); + QString Dateiname; + for(int i=0; ilineEdit_titel->setText(Dateiname); +if(Debug) qDebug() << "on_pushButton_pfad_clicked"; +} + diff --git a/mainwindow.h b/mainwindow.h new file mode 100644 index 0000000..65ff677 --- /dev/null +++ b/mainwindow.h @@ -0,0 +1,61 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE +namespace Ui { class MainWindow; } +QT_END_NAMESPACE + +class MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + MainWindow(QWidget *parent = nullptr); + ~MainWindow(); + +private slots: + // Menü + void on_actionDaten_aktualisieren_triggered(); + void on_actionDaten_ausgeben_triggered(); + void on_actionBeenden_triggered(); + void on_actionPfad_zu_den_Videos_triggered(); + // Navigation + Speichern + void on_pushButton_minus_clicked(); + void on_pushButton_plus_clicked(); + void on_pushButton_speichern_clicked(); + void on_pushButton_abspielen_clicked(); + void on_pushButton_bild_clicked(); + // Suchen + void on_lineEdit_suchen_textChanged(); + // Löschen + void on_pushButton_daten_loeschen_clicked(); + // Andere + void on_tableWidget_Datenbank_ausgabe_cellClicked(int row, int column); + // + + void on_pushButton_pfad_clicked(); + +private: + void oeffneDatenbank(); + void schiesseDatenbank(); + void leseVerzeichnis(); + int Debug; + QString fileName; + QString datenPfad; + Ui::MainWindow *ui; + QSqlDatabase db; + QSqlQuery query; +}; +#endif // MAINWINDOW_H diff --git a/mainwindow.ui b/mainwindow.ui new file mode 100644 index 0000000..fc507f8 --- /dev/null +++ b/mainwindow.ui @@ -0,0 +1,373 @@ + + + MainWindow + + + + 0 + 0 + 947 + 707 + + + + MainWindow + + + + + + + Ausgabe + + + + + + + + + + + + Videodaten + + + + + + + + + + + + + + + Status + + + + + + + Daten löschen + + + + + + + + + + Länge + + + + + + + + + + FSK + + + + + + + + + + + + + + + + Bild + + + + + + + + 210 + 297 + + + + + 210 + 297 + + + + + 0 + 0 + + + + + + + + + + + + + + Format + + + + + + + + + + + + + + + + Teil + + + + + + + Jahr + + + + + + + + + + Titel + + + + + + + Genre + + + + + + + Typ + + + + + + + + + + + + + / + + + + + + + < + + + + + + + Abspielen + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Speichern + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 75 + 23 + + + + + 75 + 23 + + + + + + + + + + + + 75 + 23 + + + + + 75 + 23 + + + + + + + + + + + > + + + + + + + + + + + + + + + + Pfad + + + + + + + + + + + + + + + + + Suchen + + + + + + + + + + + + + + 0 + 0 + 947 + 21 + + + + + Datei + + + + + + + + + Einstellungen + + + + + + + + + + Daten aktualisieren + + + + + Daten ausgeben + + + + + Pfad zu den Videos + + + + + Beenden + + + + + +