diff --git a/SnapmaticEditor.cpp b/SnapmaticEditor.cpp new file mode 100644 index 0000000..47e10aa --- /dev/null +++ b/SnapmaticEditor.cpp @@ -0,0 +1,212 @@ +/***************************************************************************** +* gta5sync GRAND THEFT AUTO V SYNC +* Copyright (C) 2016 Syping +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "SnapmaticEditor.h" +#include "ui_SnapmaticEditor.h" +#include "SnapmaticPicture.h" +#include +#include +#include + +SnapmaticEditor::SnapmaticEditor(QWidget *parent) : + QDialog(parent), + ui(new Ui::SnapmaticEditor) +{ + ui->setupUi(this); + smpic = 0; +} + +SnapmaticEditor::~SnapmaticEditor() +{ + delete ui; +} + +void SnapmaticEditor::on_cbSelfie_toggled(bool checked) +{ + if (checked) + { + ui->cbMugshot->setEnabled(false); + ui->cbEditor->setEnabled(false); + } + else if (!ui->cbDirector->isChecked()) + { + ui->cbMugshot->setEnabled(true); + ui->cbEditor->setEnabled(true); + } +} + + +void SnapmaticEditor::on_cbMugshot_toggled(bool checked) +{ + if (checked) + { + ui->cbSelfie->setEnabled(false); + ui->cbEditor->setEnabled(false); + ui->cbDirector->setEnabled(false); + } + else + { + ui->cbSelfie->setEnabled(true); + ui->cbEditor->setEnabled(true); + ui->cbDirector->setEnabled(true); + } +} + +void SnapmaticEditor::on_cbDirector_toggled(bool checked) +{ + if (checked) + { + ui->cbMugshot->setEnabled(false); + ui->cbEditor->setEnabled(false); + } + else if (!ui->cbSelfie->isChecked()) + { + ui->cbMugshot->setEnabled(true); + ui->cbEditor->setEnabled(true); + } +} + +void SnapmaticEditor::on_cbEditor_toggled(bool checked) +{ + if (checked) + { + ui->cbSelfie->setEnabled(false); + ui->cbMugshot->setEnabled(false); + ui->cbDirector->setEnabled(false); + } + else + { + ui->cbSelfie->setEnabled(true); + ui->cbMugshot->setEnabled(true); + ui->cbDirector->setEnabled(true); + } +} + +void SnapmaticEditor::on_rbSelfie_toggled(bool checked) +{ + if (checked) + { + ui->cbSelfie->setChecked(true); + ui->cbMugshot->setChecked(false); + ui->cbEditor->setChecked(false); + ui->cbDirector->setChecked(false); + ui->cbMeme->setChecked(false); + ui->cbSelfie->setEnabled(false); + ui->cbMugshot->setEnabled(false); + ui->cbEditor->setEnabled(false); + ui->cbDirector->setEnabled(false); + ui->cbMeme->setEnabled(false); + } +} + +void SnapmaticEditor::on_rbMugshot_toggled(bool checked) +{ + if (checked) + { + ui->cbSelfie->setChecked(false); + ui->cbMugshot->setChecked(true); + ui->cbEditor->setChecked(false); + ui->cbDirector->setChecked(false); + ui->cbMeme->setChecked(false); + ui->cbSelfie->setEnabled(false); + ui->cbMugshot->setEnabled(false); + ui->cbEditor->setEnabled(false); + ui->cbDirector->setEnabled(false); + ui->cbMeme->setEnabled(false); + } +} + +void SnapmaticEditor::on_rbEditor_toggled(bool checked) +{ + if (checked) + { + ui->cbSelfie->setChecked(false); + ui->cbMugshot->setChecked(false); + ui->cbEditor->setChecked(true); + ui->cbDirector->setChecked(false); + ui->cbMeme->setChecked(false); + ui->cbSelfie->setEnabled(false); + ui->cbMugshot->setEnabled(false); + ui->cbEditor->setEnabled(false); + ui->cbDirector->setEnabled(false); + ui->cbMeme->setEnabled(false); + } +} + +void SnapmaticEditor::on_rbCustom_toggled(bool checked) +{ + if (checked) + { + ui->cbSelfie->setChecked(false); + ui->cbMugshot->setChecked(false); + ui->cbEditor->setChecked(false); + ui->cbDirector->setChecked(false); + ui->cbMeme->setChecked(false); + ui->cbSelfie->setEnabled(true); + ui->cbMugshot->setEnabled(true); + ui->cbEditor->setEnabled(true); + ui->cbDirector->setEnabled(true); + ui->cbMeme->setEnabled(true); + } +} + +void SnapmaticEditor::setSnapmaticPicture(SnapmaticPicture *picture) +{ + smpic = picture; + localSpJson = smpic->getSnapmaticProperties(); + ui->rbCustom->setChecked(true); + ui->cbSelfie->setChecked(localSpJson.isSelfie); + ui->cbMugshot->setChecked(localSpJson.isMug); + ui->cbEditor->setChecked(localSpJson.isFromRSEditor); + ui->cbDirector->setChecked(localSpJson.isFromDirector); + ui->cbMeme->setChecked(localSpJson.isMeme); +} + +void SnapmaticEditor::on_cmdCancel_clicked() +{ + close(); +} + +void SnapmaticEditor::on_cmdApply_clicked() +{ + localSpJson.isSelfie = ui->cbSelfie->isChecked(); + localSpJson.isMug = ui->cbMugshot->isChecked(); + localSpJson.isFromRSEditor = ui->cbEditor->isChecked(); + localSpJson.isFromDirector = ui->cbDirector->isChecked(); + localSpJson.isMeme = ui->cbMeme->isChecked(); + if (smpic) + { + QString originalFileName = smpic->getPictureFileName(); + QString adjustedFileName = originalFileName; + QString backupFileName = originalFileName + ".bak"; + if (adjustedFileName.right(7) == ".hidden") // for the hidden file system + { + adjustedFileName.remove(adjustedFileName.length() - 7, 7); + } + if (!QFile::exists(backupFileName)) + { + QFile::copy(adjustedFileName, backupFileName); + } + smpic->setSnapmaticProperties(localSpJson); + if (!smpic->exportPicture(adjustedFileName)) + { + QMessageBox::warning(this, tr("Snapmatic Properties"), tr("Patching of Snapmatic Properties failed because of I/O Error")); + } + } + close(); +} diff --git a/SnapmaticEditor.h b/SnapmaticEditor.h new file mode 100644 index 0000000..f17a738 --- /dev/null +++ b/SnapmaticEditor.h @@ -0,0 +1,56 @@ +/***************************************************************************** +* gta5sync GRAND THEFT AUTO V SYNC +* Copyright (C) 2016 Syping +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef SNAPMATICEDITOR_H +#define SNAPMATICEDITOR_H + +#include +#include "SnapmaticPicture.h" + +namespace Ui { +class SnapmaticEditor; +} + +class SnapmaticEditor : public QDialog +{ + Q_OBJECT + +public: + explicit SnapmaticEditor(QWidget *parent = 0); + void setSnapmaticPicture(SnapmaticPicture *picture); + ~SnapmaticEditor(); + +private slots: + void on_cbSelfie_toggled(bool checked); + void on_cbMugshot_toggled(bool checked); + void on_cbDirector_toggled(bool checked); + void on_cbEditor_toggled(bool checked); + void on_rbSelfie_toggled(bool checked); + void on_rbMugshot_toggled(bool checked); + void on_rbEditor_toggled(bool checked); + void on_rbCustom_toggled(bool checked); + void on_cmdCancel_clicked(); + void on_cmdApply_clicked(); + +private: + Ui::SnapmaticEditor *ui; + SnapmaticProperties localSpJson; + SnapmaticPicture *smpic; +}; + +#endif // SNAPMATICEDITOR_H diff --git a/SnapmaticEditor.ui b/SnapmaticEditor.ui new file mode 100644 index 0000000..9ff3309 --- /dev/null +++ b/SnapmaticEditor.ui @@ -0,0 +1,152 @@ + + + SnapmaticEditor + + + + 0 + 0 + 350 + 250 + + + + Snapmatic Properties + + + + + + Snapmatic Type + + + + + + Editor + + + + + + + Selfie + + + + + + + Mugshot + + + + + + + Custom + + + + + + + + + + Snapmatic Properties + + + + + + Selfie + + + + + + + Director + + + + + + + Meme + + + + + + + Mugshot + + + + + + + Editor + + + + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + + + Qt::Horizontal + + + + 0 + 0 + + + + + + + + &Apply + + + + + + + + + + &Cancel + + + + + + + + + + + + +