diff --git a/ImportDialog.cpp b/ImportDialog.cpp
new file mode 100644
index 0000000..e8d2ac6
--- /dev/null
+++ b/ImportDialog.cpp
@@ -0,0 +1,164 @@
+/*****************************************************************************
+* gta5sync GRAND THEFT AUTO V SYNC
+* Copyright (C) 2017 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 "ImportDialog.h"
+#include "ui_ImportDialog.h"
+#include
+#include
+#include
+#include
+
+ImportDialog::ImportDialog(QWidget *parent) :
+ QDialog(parent),
+ ui(new Ui::ImportDialog)
+{
+ ui->setupUi(this);
+ doImport = false;
+ avatarAreaImage = QImage(":/img/avatarareaimport.png");
+
+ if (QIcon::hasThemeIcon("dialog-ok"))
+ {
+ ui->cmdOK->setIcon(QIcon::fromTheme("dialog-ok"));
+ }
+ if (QIcon::hasThemeIcon("dialog-cancel"))
+ {
+ ui->cmdCancel->setIcon(QIcon::fromTheme("dialog-cancel"));
+ }
+
+ ui->rbKeep->setChecked(true);
+}
+
+ImportDialog::~ImportDialog()
+{
+ delete ui;
+}
+
+void ImportDialog::processImage()
+{
+ QImage snapmaticImage = workImage;
+ QPixmap snapmaticPixmap(960, 536);
+ snapmaticPixmap.fill(Qt::black);
+ QPainter snapmaticPainter(&snapmaticPixmap);
+ if (ui->cbAvatar->isChecked())
+ {
+ // Avatar mode
+ int diffWidth = 0;
+ int diffHeight = 0;
+ if (ui->rbKeep->isChecked())
+ {
+ snapmaticImage = snapmaticImage.scaled(470, 470, Qt::KeepAspectRatio, Qt::SmoothTransformation);
+ if (snapmaticImage.width() > snapmaticImage.height())
+ {
+ diffHeight = 470 - snapmaticImage.height();
+ diffHeight = diffHeight / 2;
+ }
+ else if (snapmaticImage.width() < snapmaticImage.height())
+ {
+ diffWidth = 470 - snapmaticImage.width();
+ diffWidth = diffWidth / 2;
+ }
+ }
+ else
+ {
+ snapmaticImage = snapmaticImage.scaled(470, 470, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
+ }
+ snapmaticPainter.drawImage(0, 0, avatarAreaImage);
+ snapmaticPainter.drawImage(145 + diffWidth, 66 + diffHeight, snapmaticImage);
+ imageTitle = "Custom Avatar";
+ }
+ else
+ {
+ // Picture mode
+ int diffWidth = 0;
+ int diffHeight = 0;
+ if (ui->rbKeep->isChecked())
+ {
+ snapmaticImage = snapmaticImage.scaled(960, 536, Qt::KeepAspectRatio, Qt::SmoothTransformation);
+ if (snapmaticImage.width() != 960)
+ {
+ diffWidth = 960 - snapmaticImage.width();
+ diffWidth = diffWidth / 2;
+ }
+ else if (snapmaticImage.height() != 536)
+ {
+ diffHeight = 536 - snapmaticImage.height();
+ diffHeight = diffHeight / 2;
+ }
+ }
+ else
+ {
+ snapmaticImage = snapmaticImage.scaled(960, 536, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
+ }
+ snapmaticPainter.drawImage(0 + diffWidth, 0 + diffHeight, snapmaticImage);
+ imageTitle = "Custom Picture";
+ }
+ snapmaticPainter.end();
+ newImage = snapmaticPixmap.toImage();
+ ui->labPicture->setPixmap(snapmaticPixmap.scaled(430, 240, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
+}
+
+QImage ImportDialog::image()
+{
+ return newImage;
+}
+
+void ImportDialog::setImage(const QImage &image_)
+{
+ workImage = image_;
+ if (workImage.width() == workImage.height())
+ {
+ ui->cbAvatar->setChecked(true);
+ }
+ processImage();
+}
+
+bool ImportDialog::isDoImport()
+{
+ return doImport;
+}
+
+QString ImportDialog::getImageTitle()
+{
+ return imageTitle;
+}
+
+void ImportDialog::on_rbIgnore_clicked()
+{
+ processImage();
+}
+
+void ImportDialog::on_rbKeep_clicked()
+{
+ processImage();
+}
+
+void ImportDialog::on_cbAvatar_clicked()
+{
+ processImage();
+}
+
+void ImportDialog::on_cmdCancel_clicked()
+{
+ close();
+}
+
+void ImportDialog::on_cmdOK_clicked()
+{
+ doImport = true;
+ close();
+}
diff --git a/ImportDialog.h b/ImportDialog.h
new file mode 100644
index 0000000..ae4b72b
--- /dev/null
+++ b/ImportDialog.h
@@ -0,0 +1,57 @@
+/*****************************************************************************
+* gta5sync GRAND THEFT AUTO V SYNC
+* Copyright (C) 2017 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 IMPORTDIALOG_H
+#define IMPORTDIALOG_H
+
+#include
+
+namespace Ui {
+class ImportDialog;
+}
+
+class ImportDialog : public QDialog
+{
+ Q_OBJECT
+
+public:
+ explicit ImportDialog(QWidget *parent = 0);
+ ~ImportDialog();
+ QImage image();
+ QString getImageTitle();
+ void setImage(const QImage &image);
+ bool isDoImport();
+
+private slots:
+ void processImage();
+ void on_rbIgnore_clicked();
+ void on_rbKeep_clicked();
+ void on_cbAvatar_clicked();
+ void on_cmdCancel_clicked();
+ void on_cmdOK_clicked();
+
+private:
+ Ui::ImportDialog *ui;
+ QImage avatarAreaImage;
+ QString imageTitle;
+ QImage workImage;
+ QImage newImage;
+ bool doImport;
+};
+
+#endif // IMPORTDIALOG_H
diff --git a/ImportDialog.ui b/ImportDialog.ui
new file mode 100644
index 0000000..231c71a
--- /dev/null
+++ b/ImportDialog.ui
@@ -0,0 +1,180 @@
+
+
+ ImportDialog
+
+
+
+ 0
+ 0
+ 430
+ 380
+
+
+
+
+ 430
+ 380
+
+
+
+
+ 430
+ 380
+
+
+
+ Import...
+
+
+ true
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+
+ 430
+ 240
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::NoFrame
+
+
+ QFrame::Plain
+
+
+ 0
+
+
+
+ 9
+
+
+ 6
+
+
+ 9
+
+
+ 9
+
+
-
+
+
+ Settings
+
+
+
-
+
+
+ &Keep Aspect Ratio
+
+
+
+ -
+
+
+ &Ignore Aspect Ratio
+
+
+
+ -
+
+
+ &Avatar
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
-
+
+
+ Qt::Horizontal
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ &OK
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ &Cancel
+
+
+
+
+
+
+
+
+
+
+
+
+