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