This commit is contained in:
Thomas resiX 2025-02-15 08:35:11 +01:00
parent 17d7e6e28c
commit 8bc21103f6
7 changed files with 965 additions and 0 deletions

BIN
Video-Datenbank.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

29
Video-Datenbank.pro Normal file
View file

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

5
Video-Datenbank.qrc Normal file
View file

@ -0,0 +1,5 @@
<RCC>
<qresource prefix="/">
<file>Video-Datenbank.ico</file>
</qresource>
</RCC>

10
main.cpp Normal file
View file

@ -0,0 +1,10 @@
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[]){
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}

487
mainwindow.cpp Normal file
View file

@ -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<QStringList> 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; i<sucheTabelleIndex.length(); ++i){
Zeile_max++;
ui->tableWidget_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; i<Dateiname_tmp.length()-1; i++){
if(i<1)
Dateiname = Dateiname + Dateiname_tmp[i];
else
Dateiname = Dateiname + "." + Dateiname_tmp[i];
}
ui->lineEdit_titel->setText(Dateiname);
if(Debug) qDebug() << "on_pushButton_pfad_clicked";
}

61
mainwindow.h Normal file
View file

@ -0,0 +1,61 @@
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QDirIterator>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QFileDialog>
#include <QProcess>
#include <QMessageBox>
#include <QDateTime>
#include <QDebug>
#include <QTableWidgetItem>
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

373
mainwindow.ui Normal file
View file

@ -0,0 +1,373 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>947</width>
<height>707</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout_5">
<item row="4" column="0">
<widget class="QGroupBox" name="groupBox_Ausgabe">
<property name="title">
<string>Ausgabe</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="2" column="0">
<widget class="QTableWidget" name="tableWidget_Datenbank_ausgabe"/>
</item>
</layout>
</widget>
</item>
<item row="0" column="0">
<widget class="QGroupBox" name="groupBox_Videodaten">
<property name="title">
<string>Videodaten</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="5" column="7">
<widget class="QLineEdit" name="lineEdit_teil"/>
</item>
<item row="10" column="16" colspan="3">
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
<string/>
</property>
<layout class="QGridLayout" name="gridLayout_7">
<item row="0" column="0">
<widget class="QPushButton" name="pushButton_status">
<property name="text">
<string>Status</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="pushButton_daten_loeschen">
<property name="text">
<string>Daten löschen</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="5" column="10">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Länge</string>
</property>
</widget>
</item>
<item row="5" column="5">
<widget class="QComboBox" name="comboBox_filmtyp"/>
</item>
<item row="5" column="14">
<widget class="QLabel" name="label_4">
<property name="text">
<string>FSK</string>
</property>
</widget>
</item>
<item row="5" column="11">
<widget class="QLineEdit" name="lineEdit_laenge"/>
</item>
<item row="1" column="16" rowspan="9" colspan="3">
<widget class="QGroupBox" name="groupBox_Bild">
<property name="title">
<string/>
</property>
<layout class="QGridLayout" name="gridLayout_4">
<item row="1" column="0">
<widget class="QPushButton" name="pushButton_bild">
<property name="text">
<string>Bild</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_bild">
<property name="minimumSize">
<size>
<width>210</width>
<height>297</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>210</width>
<height>297</height>
</size>
</property>
<property name="baseSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="5" column="1">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Format</string>
</property>
</widget>
</item>
<item row="5" column="9">
<widget class="QComboBox" name="comboBox_genre"/>
</item>
<item row="4" column="3" colspan="13">
<widget class="QLineEdit" name="lineEdit_titel"/>
</item>
<item row="7" column="0" colspan="16">
<widget class="QPlainTextEdit" name="plainTextEdit_handlung"/>
</item>
<item row="5" column="6">
<widget class="QLabel" name="label">
<property name="text">
<string>Teil</string>
</property>
</widget>
</item>
<item row="5" column="12">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Jahr</string>
</property>
</widget>
</item>
<item row="5" column="15">
<widget class="QComboBox" name="comboBox_fsk"/>
</item>
<item row="4" column="1">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Titel</string>
</property>
</widget>
</item>
<item row="5" column="8">
<widget class="QLabel" name="label_10">
<property name="text">
<string>Genre</string>
</property>
</widget>
</item>
<item row="5" column="4">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Typ</string>
</property>
</widget>
</item>
<item row="10" column="0" colspan="16">
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string/>
</property>
<layout class="QGridLayout" name="gridLayout_6">
<item row="0" column="3">
<widget class="QLabel" name="label_9">
<property name="text">
<string>/</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="pushButton_minus">
<property name="text">
<string>&lt;</string>
</property>
</widget>
</item>
<item row="0" column="7">
<widget class="QPushButton" name="pushButton_abspielen">
<property name="text">
<string>Abspielen</string>
</property>
</widget>
</item>
<item row="0" column="8">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="6">
<widget class="QPushButton" name="pushButton_speichern">
<property name="text">
<string>Speichern</string>
</property>
</widget>
</item>
<item row="0" column="0">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="4">
<widget class="QPushButton" name="pushButton_max">
<property name="minimumSize">
<size>
<width>75</width>
<height>23</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>75</width>
<height>23</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="pushButton_id">
<property name="minimumSize">
<size>
<width>75</width>
<height>23</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>75</width>
<height>23</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="0" column="5">
<widget class="QPushButton" name="pushButton_plus">
<property name="text">
<string>&gt;</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="5" column="3">
<widget class="QComboBox" name="comboBox_bildformat"/>
</item>
<item row="5" column="13">
<widget class="QLineEdit" name="lineEdit_jahr"/>
</item>
<item row="3" column="1">
<widget class="QLabel" name="label_8">
<property name="text">
<string>Pfad</string>
</property>
</widget>
</item>
<item row="3" column="3" colspan="13">
<widget class="QPushButton" name="pushButton_pfad">
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="2" column="0">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Suchen</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<widget class="QLineEdit" name="lineEdit_suchen"/>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>947</width>
<height>21</height>
</rect>
</property>
<widget class="QMenu" name="menuDatei">
<property name="title">
<string>Datei</string>
</property>
<addaction name="actionDaten_aktualisieren"/>
<addaction name="actionDaten_ausgeben"/>
<addaction name="separator"/>
<addaction name="actionBeenden"/>
</widget>
<widget class="QMenu" name="menuEinstellungen">
<property name="title">
<string>Einstellungen</string>
</property>
<addaction name="actionPfad_zu_den_Videos"/>
</widget>
<addaction name="menuDatei"/>
<addaction name="menuEinstellungen"/>
</widget>
<widget class="QStatusBar" name="statusbar"/>
<action name="actionDaten_aktualisieren">
<property name="text">
<string>Daten aktualisieren</string>
</property>
</action>
<action name="actionDaten_ausgeben">
<property name="text">
<string>Daten ausgeben</string>
</property>
</action>
<action name="actionPfad_zu_den_Videos">
<property name="text">
<string>Pfad zu den Videos</string>
</property>
</action>
<action name="actionBeenden">
<property name="text">
<string>Beenden</string>
</property>
</action>
</widget>
<resources/>
<connections/>
</ui>