v1.17.2: Fix wrong message pop up + load settings
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Installer>
|
||||
<Name>ProjektManager</Name>
|
||||
<Version>1.17.1</Version>
|
||||
<Version>1.17.2</Version>
|
||||
<Title><Name>ProjektManager</Name> Installer</Title>
|
||||
<InstallerApplicationIcon>installerIcon1</InstallerApplicationIcon>
|
||||
<InstallerWindowIcon>installerIcon2</InstallerWindowIcon>
|
||||
|
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Package>
|
||||
<DisplayName>ProjektManager 1.17.1</DisplayName>
|
||||
<DisplayName>ProjektManager 1.17.2</DisplayName>
|
||||
<Description>aaaaa</Description>
|
||||
<Version>1.17.1</Version>
|
||||
<Version>1.17.2</Version>
|
||||
<Default>true</Default>
|
||||
<ReleaseDate>2025-04-09</ReleaseDate>
|
||||
<Operations>
|
||||
|
@@ -4,7 +4,7 @@
|
||||
#include <QStyle>
|
||||
|
||||
|
||||
QString MainWindow::version = "1.17.1";
|
||||
QString MainWindow::version = "1.17.2";
|
||||
QString MainWindow::appName = "ProjektManager";
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
|
@@ -5,6 +5,7 @@
|
||||
#include "newprojektdialog.h"
|
||||
#include "mainsettingsdialog.h"
|
||||
#include <QList>
|
||||
#include <iostream>
|
||||
|
||||
|
||||
MainWindow::MainWindow(QWidget *parent)
|
||||
@@ -98,29 +99,57 @@ MainWindow::~MainWindow()
|
||||
|
||||
qDebug() << "~MainWindow()";
|
||||
}
|
||||
|
||||
void MainWindow::createNewProjektEntry()
|
||||
{
|
||||
std::cout << "test3" << std::endl;
|
||||
|
||||
if(!mainsettingsDialog->checkDefPaths()) {
|
||||
QMessageBox::critical(this, "Pfadeinstellungen ungültig oder nicht gesetzt!", "Pfadeinstellungen ungültig oder nicht gesetzt!");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
NewProjektDialog * npd = new NewProjektDialog();
|
||||
|
||||
if(npd->exec() == QDialog::Accepted) {
|
||||
auto data = npd->getProjektStruct(projects);
|
||||
createNewtask(CREATE_NEW_PROJECT, data);
|
||||
|
||||
// Use addProject to handle both adding to list and saving to file
|
||||
projects->addProject(data);
|
||||
// Prüfen ob das Projekt bereits in der Liste existiert
|
||||
bool projectExists = false;
|
||||
for (int i = 0; i < projects->size(); i++) {
|
||||
if (projects->at(i)->getPath() == data->getPath()) {
|
||||
// Das Projekt existiert bereits in der Liste
|
||||
projectExists = true;
|
||||
|
||||
addProjectToListWidget(data);
|
||||
// Zeige eine Benachrichtigung, dass das Projekt bereits existiert
|
||||
if (QMessageBox::question(this, "Projekt bereits vorhanden",
|
||||
"Dieses Projekt ist bereits in der Liste vorhanden.\n"
|
||||
"Möchten Sie es aktualisieren?",
|
||||
QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) {
|
||||
|
||||
// Projekt aktualisieren
|
||||
projects->replaceProject(i, data);
|
||||
createNewtask(S_TASK::UPDATE_PROJECT_DATA, data);
|
||||
} else {
|
||||
// Wenn der Benutzer "Nein" wählt, brich ab und lösche das neu erstellte Objekt
|
||||
delete data;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Wenn das Projekt noch nicht existiert, füge es hinzu
|
||||
if (!projectExists) {
|
||||
createNewtask(CREATE_NEW_PROJECT, data);
|
||||
|
||||
// Projekt zur Liste hinzufügen und in die UI einfügen
|
||||
projects->addProject(data);
|
||||
addProjectToListWidget(data);
|
||||
} else {
|
||||
// Die Projektliste aktualisieren, falls ein bestehendes Projekt aktualisiert wurde
|
||||
reloadEntryList();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void MainWindow::reloadEntryList()
|
||||
@@ -151,6 +180,7 @@ void MainWindow::createNewtask(S_TASK task, ProjektData *data)
|
||||
void MainWindow::on_pushButton_clicked()
|
||||
{
|
||||
//Create-Dialog & reload
|
||||
std::cout << "test" << std::endl;
|
||||
createNewProjektEntry();
|
||||
|
||||
}
|
||||
@@ -205,10 +235,21 @@ void MainWindow::projectSettings_clicked(unsigned long long id)
|
||||
|
||||
for(int i = 0; i < projects->size(); i++) {
|
||||
if(projects->at(i)->getId() == id) {
|
||||
std::cout << "id: " << projects->at(i)->getId() << " -> " << std::endl;
|
||||
|
||||
|
||||
NewProjektDialog * npd = new NewProjektDialog(projects->at(i));
|
||||
|
||||
std::cout << "id2: " << projects->at(i)->getId() << " -> " << std::endl;
|
||||
|
||||
connect(npd, SIGNAL(removeClicked(unsigned long long)), this, SLOT(projectSettings_remove_clicked(unsigned long long)));
|
||||
|
||||
if(npd->exec() == QDialog::Accepted) {
|
||||
|
||||
std::cout << "getProjektStruct: " << projects->at(i)->getId() << " -> " << std::endl;
|
||||
|
||||
auto data = npd->getProjektStruct(projects);
|
||||
std::cout << "..getProjektStruct: " << projects->at(i)->getId() << " -> " << std::endl;
|
||||
|
||||
// Replace project at index i with the updated data
|
||||
projects->replaceProject(i, data);
|
||||
@@ -267,6 +308,8 @@ void MainWindow::closeEvent(QCloseEvent *event)
|
||||
|
||||
void MainWindow::on_actionNeues_Projekt_hinzuf_gen_triggered()
|
||||
{
|
||||
std::cout << "test2" << std::endl;
|
||||
|
||||
//Create-Dialog & reload
|
||||
createNewProjektEntry();
|
||||
}
|
||||
|
@@ -10,7 +10,8 @@
|
||||
|
||||
NewProjektDialog::NewProjektDialog(QWidget *parent)
|
||||
: QDialog(parent)
|
||||
, ui(new Ui::NewProjektDialog)
|
||||
, ui(new Ui::NewProjektDialog),
|
||||
lookForExistingSettingsFile(true)
|
||||
{
|
||||
qDebug() << " NewProjektDialog()";
|
||||
|
||||
@@ -30,7 +31,9 @@ NewProjektDialog::NewProjektDialog(QWidget *parent)
|
||||
NewProjektDialog::NewProjektDialog(ProjektData *projektData, QWidget *parent)
|
||||
: NewProjektDialog(parent)
|
||||
{
|
||||
qDebug() << " NewProjektDialog()";
|
||||
qDebug() << " NewProjektDialog(ProjektData)";
|
||||
|
||||
lookForExistingSettingsFile = false;
|
||||
|
||||
//load settings!
|
||||
loadSettingsFromProjektData(projektData);
|
||||
@@ -104,11 +107,47 @@ void NewProjektDialog::loadSettingsFromProjektData(ProjektData *projektData) {
|
||||
this->id = projektData->getId();
|
||||
}
|
||||
|
||||
ProjektData *NewProjektDialog::getProjektStruct(ProjektDataList *projektDataParent)
|
||||
ProjektData *NewProjektDialog::getProjektStruct(ProjektDataList *projektDataParent, bool checkExisting)
|
||||
{
|
||||
QString name = ui->lineEditProjektName->text();
|
||||
QString path = ui->lineEdit_path->text();
|
||||
|
||||
qDebug() << "getProjektStruct()";
|
||||
|
||||
// Prüfen, ob bereits eine .prjctmngr-Datei für dieses Projekt existiert
|
||||
ProjektData* existingProject = ProjektData::checkExistingSettings(path, projektDataParent);
|
||||
if (existingProject && checkExisting) {
|
||||
// Wenn ein bestehendes Projekt gefunden wurde, aktualisiere einige wichtige Felder
|
||||
// basierend auf den Benutzereingaben im Dialog
|
||||
existingProject->setParentList(projektDataParent);
|
||||
|
||||
// Aktualisiere das bestehende Projekt mit den neuen Werten aus dem Dialog
|
||||
// (nur die wichtigsten Felder, Rest bleibt erhalten)
|
||||
|
||||
// Wenn wir das Projekt bearbeiten (und nicht neu erstellen)
|
||||
// und der Pfad ändert sich nicht, behalte die bestehenden Einstellungen bei
|
||||
if (this->id == existingProject->getId()) {
|
||||
return existingProject;
|
||||
}
|
||||
|
||||
// Zeige dem Benutzer eine Abfrage, ob die bestehenden Einstellungen verwendet werden sollen
|
||||
QMessageBox msgBox;
|
||||
msgBox.setIcon(QMessageBox::Question);
|
||||
msgBox.setText("Projekteinstellungen gefunden");
|
||||
msgBox.setInformativeText("Für dieses Projekt wurden bereits Einstellungen gefunden.\n"
|
||||
"Möchten Sie diese bestehenden Einstellungen verwenden?");
|
||||
msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
|
||||
msgBox.setDefaultButton(QMessageBox::Yes);
|
||||
|
||||
if (msgBox.exec() == QMessageBox::Yes) {
|
||||
// Bestehende Einstellungen verwenden, nur ID aktualisieren
|
||||
existingProject->setId( (this->id == 0) ? QDateTime::currentMSecsSinceEpoch() : this->id );
|
||||
return existingProject;
|
||||
}
|
||||
|
||||
// Wenn der Benutzer "Nein" wählt, machen wir mit der Erstellung eines neuen Projekts weiter
|
||||
}
|
||||
|
||||
QString qt_installer_name = ui->lineEdit_qt_installer_name->text();
|
||||
QString qt_installer_version = ui->lineEdit_qt_installer_version->text();
|
||||
QString qt_installer_titel = ui->lineEdit_qt_titel->text();
|
||||
@@ -185,12 +224,41 @@ void NewProjektDialog::on_pushButton_browse_clicked()
|
||||
}
|
||||
|
||||
|
||||
|
||||
void NewProjektDialog::on_lineEdit_path_textChanged(const QString &arg1)
|
||||
{
|
||||
bool ok = arg1.endsWith(".pro") && QFile(arg1).exists();
|
||||
QPalette p = ui->lineEdit_path->palette();
|
||||
p.setColor(QPalette::Text, ok? qApp->palette().buttonText().color() : Qt::red);
|
||||
ui->lineEdit_path->setPalette(p);
|
||||
|
||||
// Wenn ein gültiger .pro-Pfad eingegeben wurde, prüfe auf vorhandene Einstellungen
|
||||
if (ok && this->lookForExistingSettingsFile) {
|
||||
ProjektData* existingProject = ProjektData::checkExistingSettings(arg1);
|
||||
if (existingProject) {
|
||||
// Wenn bestehende Einstellungen gefunden wurden, frage den Benutzer
|
||||
QMessageBox msgBox;
|
||||
msgBox.setIcon(QMessageBox::Question);
|
||||
msgBox.setText("Projekteinstellungen gefunden");
|
||||
msgBox.setInformativeText("Für dieses Projekt wurden bereits Einstellungen gefunden.\n"
|
||||
"Möchten Sie diese bestehenden Einstellungen laden?");
|
||||
msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
|
||||
msgBox.setDefaultButton(QMessageBox::Yes);
|
||||
|
||||
if (msgBox.exec() == QMessageBox::Yes) {
|
||||
// Wenn der Benutzer zustimmt, lade die bestehenden Einstellungen in den Dialog
|
||||
loadSettingsFromProjektData(existingProject);
|
||||
this->id = existingProject->getId(); // ID übernehmen
|
||||
|
||||
// Wir benötigen das Objekt nicht mehr, da wir die Daten bereits in den Dialog geladen haben
|
||||
delete existingProject;
|
||||
} else {
|
||||
// Bei Ablehnung, lösche das geladene Objekt
|
||||
delete existingProject;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
checkIfNeccessaryFieldAreFilled();
|
||||
}
|
||||
|
||||
|
@@ -20,7 +20,7 @@ public:
|
||||
|
||||
~NewProjektDialog();
|
||||
|
||||
ProjektData * getProjektStruct(ProjektDataList *projektDataParent = nullptr);
|
||||
ProjektData * getProjektStruct(ProjektDataList *projektDataParent = nullptr, bool checkExisting = true);
|
||||
private slots:
|
||||
void on_pushButton_browse_clicked();
|
||||
|
||||
@@ -67,6 +67,7 @@ private:
|
||||
QPair<QString, QString> searchForVersionString(bool messageBox = true);
|
||||
|
||||
size_t id;
|
||||
bool lookForExistingSettingsFile;
|
||||
|
||||
};
|
||||
|
||||
|
@@ -114,6 +114,41 @@ QString ProjektData::getConfigFilePath() const
|
||||
}
|
||||
|
||||
|
||||
ProjektData* ProjektData::checkExistingSettings(const QString& proFilePath, ProjektDataList* parentList)
|
||||
{
|
||||
QFileInfo fileInfo(proFilePath);
|
||||
QString configPath = fileInfo.absolutePath() + "/.prjctmngr";
|
||||
|
||||
// Prüfen, ob eine .prjctmngr-Datei existiert
|
||||
if (QFile::exists(configPath)) {
|
||||
qDebug() << "Bestehende .prjctmngr-Datei gefunden im Verzeichnis:" << fileInfo.absolutePath();
|
||||
|
||||
// Versuche, die existierende Projekt-Konfiguration zu laden
|
||||
ProjektData* existingProject = ProjektData::load(proFilePath);
|
||||
|
||||
if (existingProject) {
|
||||
// Stelle sicher, dass der Pfad zur .pro-Datei korrekt ist
|
||||
// (falls die .prjctmngr-Datei von einem anderen System kommt)
|
||||
if (existingProject->getPath() != proFilePath) {
|
||||
qDebug() << "Aktualisiere Projekt-Pfad von" << existingProject->getPath() << "zu" << proFilePath;
|
||||
existingProject->path = proFilePath;
|
||||
existingProject->save(); // Speichere die aktualisierte Version
|
||||
}
|
||||
|
||||
// Setze die Parent-Liste
|
||||
if (parentList) {
|
||||
existingProject->setParentList(parentList);
|
||||
}
|
||||
|
||||
return existingProject;
|
||||
}
|
||||
}
|
||||
|
||||
// Keine existierende Konfiguration gefunden oder Laden fehlgeschlagen
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
||||
bool ProjektData::save()
|
||||
{
|
||||
QFile file(getConfigFilePath());
|
||||
@@ -242,6 +277,11 @@ ProjektData* ProjektData::readFromStream(QDataStream& in, const QString& project
|
||||
return data;
|
||||
}
|
||||
|
||||
void ProjektData::setId(size_t newId)
|
||||
{
|
||||
id = newId;
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool ProjektData::dataValid() const {
|
||||
|
@@ -45,6 +45,8 @@ public:
|
||||
QString getConfigFilePath() const;
|
||||
|
||||
|
||||
// Prüft, ob für einen bestimmten .pro-Pfad bereits eine .prjctmngr-Datei existiert
|
||||
static ProjektData* checkExistingSettings(const QString& proFilePath, ProjektDataList* parentList = nullptr);
|
||||
|
||||
bool dataValid() const;
|
||||
QString getProjectDirPath() const;
|
||||
@@ -111,6 +113,8 @@ public:
|
||||
|
||||
bool getGit_lfs() const;
|
||||
|
||||
void setId(size_t newId);
|
||||
|
||||
private:
|
||||
// Helper method to write project data to a QDataStream
|
||||
void writeToStream(QDataStream &out) const;
|
||||
|
Reference in New Issue
Block a user