diff --git a/PictureDialog.cpp b/PictureDialog.cpp
index 6cc14a1..ff675c0 100755
--- a/PictureDialog.cpp
+++ b/PictureDialog.cpp
@@ -17,6 +17,7 @@
*****************************************************************************/
#include "PictureDialog.h"
+#include "PictureWidget.h"
#include "ProfileDatabase.h"
#include "ui_PictureDialog.h"
#include "SidebarGenerator.h"
@@ -91,13 +92,21 @@ bool PictureDialog::eventFilter(QObject *obj, QEvent *ev)
return false;
}
+void PictureDialog::dialogNextPictureRequested()
+{
+ emit nextPictureRequested();
+}
+
+void PictureDialog::dialogPreviousPictureRequested()
+{
+ emit previousPictureRequested();
+}
+
void PictureDialog::setSnapmaticPicture(SnapmaticPicture *picture, QString picturePath, bool readOk, bool _indexed, int _index)
{
+ snapmaticPicture = QImage();
indexed = _indexed;
index = _index;
-
- // Showing error if reading error
- QImage snapmaticPicture;
picPath = picturePath;
smpic = picture;
if (!readOk)
@@ -105,7 +114,6 @@ void PictureDialog::setSnapmaticPicture(SnapmaticPicture *picture, QString pictu
QMessageBox::warning(this, tr("Snapmatic Picture Viewer"), tr("Failed at %1").arg(picture->getLastStep()));
return;
}
-
if (picture->isPicOk())
{
snapmaticPicture = picture->getPicture();
@@ -152,6 +160,7 @@ void PictureDialog::setSnapmaticPicture(SnapmaticPicture *picture, QString pictu
ui->labJSON->setText(jsonDrawString.arg("0.0", "0.0", "0.0", tr("No player"), tr("No crew")));
QMessageBox::warning(this,tr("Snapmatic Picture Viewer"),tr("Failed at %1").arg(picture->getLastStep()));
}
+ emit newPictureCommited(snapmaticPicture);
}
void PictureDialog::setSnapmaticPicture(SnapmaticPicture *picture, QString picPath, bool readOk)
@@ -224,33 +233,21 @@ void PictureDialog::copySnapmaticPicture()
void PictureDialog::on_labPicture_mouseDoubleClicked()
{
- QDialog *pictureWidget = new QDialog(this);
- QRect rec = QApplication::desktop()->screenGeometry();
- QHBoxLayout *widgetLayout = new QHBoxLayout(pictureWidget);
- widgetLayout->setSpacing(0);
- widgetLayout->setContentsMargins(0, 0, 0, 0);
-
- UiModLabel *pictureLabel = new UiModLabel(pictureWidget);
- pictureLabel->setPixmap(ui->labPicture->pixmap()->scaled(rec.width(), rec.height(), Qt::KeepAspectRatio, Qt::SmoothTransformation));
- pictureLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
- pictureLabel->setAlignment(Qt::AlignCenter);
- widgetLayout->addWidget(pictureLabel);
-
- QObject::connect(pictureLabel, SIGNAL(mouseDoubleClicked()), pictureWidget, SLOT(close()));
-
- pictureWidget->setLayout(widgetLayout);
+ QRect desktopRect = QApplication::desktop()->screenGeometry();
+ PictureWidget *pictureWidget = new PictureWidget(this);
pictureWidget->setWindowFlags(pictureWidget->windowFlags()^Qt::WindowContextHelpButtonHint);
pictureWidget->setWindowTitle(this->windowTitle());
pictureWidget->setStyleSheet("background-color: black;");
+ pictureWidget->setImage(snapmaticPicture, desktopRect);
+
+ QObject::connect(this, SIGNAL(newPictureCommited(QImage)), pictureWidget, SLOT(setImage(QImage)));
+ QObject::connect(pictureWidget, SIGNAL(nextPictureRequested()), this, SLOT(dialogNextPictureRequested()));
+ QObject::connect(pictureWidget, SIGNAL(previousPictureRequested()), this, SLOT(dialogPreviousPictureRequested()));
+
pictureWidget->showFullScreen();
pictureWidget->setModal(true);
pictureWidget->exec();
- widgetLayout->deleteLater();
- delete widgetLayout;
- pictureLabel->deleteLater();
- delete pictureLabel;
- pictureWidget->deleteLater();
delete pictureWidget;
}
diff --git a/PictureDialog.h b/PictureDialog.h
index b85103e..f52a9e1 100755
--- a/PictureDialog.h
+++ b/PictureDialog.h
@@ -46,6 +46,8 @@ public:
public slots:
void playerNameUpdated();
+ void dialogNextPictureRequested();
+ void dialogPreviousPictureRequested();
private slots:
void copySnapmaticPicture();
@@ -55,6 +57,7 @@ private slots:
signals:
void nextPictureRequested();
void previousPictureRequested();
+ void newPictureCommited(QImage picture);
protected:
bool eventFilter(QObject *obj, QEvent *ev);
@@ -63,6 +66,7 @@ private:
ProfileDatabase *profileDB;
Ui::PictureDialog *ui;
SnapmaticPicture *smpic;
+ QImage snapmaticPicture;
QString jsonDrawString;
QString windowTitleStr;
QStringList plyrsList;
diff --git a/PictureWidget.cpp b/PictureWidget.cpp
new file mode 100644
index 0000000..04d9ba1
--- /dev/null
+++ b/PictureWidget.cpp
@@ -0,0 +1,79 @@
+/*****************************************************************************
+* 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 "PictureWidget.h"
+#include "UiModLabel.h"
+#include
+#include
+#include
+#include
+
+PictureWidget::PictureWidget(QWidget *parent) : QDialog(parent)
+{
+ installEventFilter(this);
+
+ widgetLayout = new QHBoxLayout(this);
+ widgetLayout->setSpacing(0);
+ widgetLayout->setContentsMargins(0, 0, 0, 0);
+
+ pictureLabel = new UiModLabel(this);
+ pictureLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ pictureLabel->setAlignment(Qt::AlignCenter);
+ widgetLayout->addWidget(pictureLabel);
+
+ QObject::connect(pictureLabel, SIGNAL(mouseDoubleClicked()), this, SLOT(close()));
+
+ setLayout(widgetLayout);
+}
+
+PictureWidget::~PictureWidget()
+{
+ widgetLayout->removeWidget(pictureLabel);
+ delete pictureLabel;
+ delete widgetLayout;
+}
+
+bool PictureWidget::eventFilter(QObject *obj, QEvent *ev)
+{
+ if (obj == this)
+ {
+ if (ev->type() == QEvent::KeyPress)
+ {
+ QKeyEvent *keyEvent = (QKeyEvent*)ev;
+ switch (keyEvent->key()){
+ case Qt::Key_Left:
+ emit previousPictureRequested();
+ break;
+ case Qt::Key_Right:
+ emit nextPictureRequested();
+ break;
+ }
+ }
+ }
+ return false;
+}
+
+void PictureWidget::setImage(QImage image, QRect rec)
+{
+ pictureLabel->setPixmap(QPixmap::fromImage(image.scaled(rec.width(), rec.height(), Qt::KeepAspectRatio, Qt::SmoothTransformation)));
+}
+
+void PictureWidget::setImage(QImage image)
+{
+ pictureLabel->setPixmap(QPixmap::fromImage(image.scaled(geometry().width(), geometry().height(), Qt::KeepAspectRatio, Qt::SmoothTransformation)));
+}
diff --git a/PictureWidget.h b/PictureWidget.h
new file mode 100644
index 0000000..2fd76b1
--- /dev/null
+++ b/PictureWidget.h
@@ -0,0 +1,51 @@
+/*****************************************************************************
+* 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 PICTUREWIDGET_H
+#define PICTUREWIDGET_H
+
+#include "UiModLabel.h"
+#include
+#include
+#include
+#include
+
+class PictureWidget : public QDialog
+{
+ Q_OBJECT
+public:
+ explicit PictureWidget(QWidget *parent = 0);
+ void setImage(QImage image, QRect rec);
+ ~PictureWidget();
+
+public slots:
+ void setImage(QImage image);
+
+protected:
+ bool eventFilter(QObject *obj, QEvent *ev);
+
+private:
+ QHBoxLayout *widgetLayout;
+ UiModLabel *pictureLabel;
+
+signals:
+ void nextPictureRequested();
+ void previousPictureRequested();
+};
+
+#endif // PICTUREWIDGET_H
diff --git a/gta5sync.pro b/gta5sync.pro
index c94c22e..b0df3a0 100755
--- a/gta5sync.pro
+++ b/gta5sync.pro
@@ -1,144 +1,146 @@
-#/*****************************************************************************
-#* gta5sync GRAND THEFT AUTO V SYNC
-#* Copyright (C) 2015-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 .
-#*****************************************************************************/
-
-QT += core gui network
-
-greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
-
-TARGET = gta5sync
-TEMPLATE = app
-
-SOURCES += main.cpp \
- AboutDialog.cpp \
- AppEnv.cpp \
- CrewDatabase.cpp \
- DatabaseThread.cpp \
- ExportThread.cpp \
- IconLoader.cpp \
- OptionsDialog.cpp \
- PictureCopy.cpp \
- PictureDialog.cpp \
- PictureExport.cpp \
- ProfileDatabase.cpp \
- ProfileInterface.cpp \
- ProfileLoader.cpp \
- ProfileWidget.cpp \
- SavegameCopy.cpp \
- SavegameData.cpp \
- SavegameDialog.cpp \
- SavegameWidget.cpp \
- SidebarGenerator.cpp \
- SnapmaticPicture.cpp \
- SnapmaticWidget.cpp \
- StandardPaths.cpp \
- StringParser.cpp \
- UserInterface.cpp \
- uimod/UiModLabel.cpp
-
-HEADERS += \
- AboutDialog.h \
- AppEnv.h \
- CrewDatabase.h \
- DatabaseThread.h \
- ExportThread.h \
- IconLoader.h \
- OptionsDialog.h \
- PictureCopy.h \
- PictureDialog.h \
- PictureExport.h \
- ProfileDatabase.h \
- ProfileInterface.h \
- ProfileLoader.h \
- ProfileWidget.h \
- SavegameCopy.h \
- SavegameData.h \
- SavegameDialog.h \
- SavegameWidget.h \
- SidebarGenerator.h \
- SnapmaticPicture.h \
- SnapmaticWidget.h \
- StandardPaths.h \
- StringParser.h \
- UserInterface.h \
- uimod/UiModLabel.h
-
-FORMS += \
- AboutDialog.ui \
- OptionsDialog.ui \
- PictureDialog.ui \
- ProfileInterface.ui \
- SavegameDialog.ui \
- SavegameWidget.ui \
- SnapmaticWidget.ui \
- UserInterface.ui
-
-TRANSLATIONS += \
- res/gta5sync_de.ts \
- lang/gta5sync_ru.ts
-
-RESOURCES += \
- res/app.qrc
-
-DISTFILES += res/app.rc \
- res/gta5sync.desktop \
- res/gta5sync_de.ts \
- lang/gta5sync_ru.qm \
- lang/qtbase_ru.qm \
- lang/README.txt \
- lang/gta5sync_ru.ts \
- lang/qt_ru.qm
-
-INCLUDEPATH += ./uimod
-
-# WINDOWS ONLY
-
-win32: DEFINES += GTA5SYNC_WIN
-win32: RC_FILE += res/app.rc
-win32: LIBS += -luser32
-
-# QT4 ONLY STUFF
-
-isEqual(QT_MAJOR_VERSION, 4): INCLUDEPATH += ./qjson4
-isEqual(QT_MAJOR_VERSION, 4): HEADERS += qjson4/QJsonArray.h \
- qjson4/QJsonDocument.h \
- qjson4/QJsonObject.h \
- qjson4/QJsonParseError.h \
- qjson4/QJsonValue.h \
- qjson4/QJsonValueRef.h \
- qjson4/QJsonParser.h \
- qjson4/QJsonRoot.h
-
-isEqual(QT_MAJOR_VERSION, 4): SOURCES += qjson4/QJsonArray.cpp \
- qjson4/QJsonDocument.cpp \
- qjson4/QJsonObject.cpp \
- qjson4/QJsonParseError.cpp \
- qjson4/QJsonValue.cpp \
- qjson4/QJsonValueRef.cpp \
- qjson4/QJsonParser.cpp
-
-# UNIX SYSTEM STUFF
-
-unix: !macx: appfiles.path = $$(INSTALL_PATH)/share/applications
-unix: !macx: appfiles.files = $$PWD/res/gta5sync.desktop
-unix: !macx: pixmaps.path = $$(INSTALL_PATH)/share/pixmaps
-unix: !macx: pixmaps.files = $$PWD/res/gta5sync.xpm
-unix: !macx: target.path = $$(INSTALL_PATH)/bin
-unix: !macx: INSTALLS += target pixmaps appfiles
-
-# STATIC BUILD STUFF
-static: isEqual(QT_MAJOR_VERSION, 4): QTPLUGIN += qjpcodecs
+#/*****************************************************************************
+#* gta5sync GRAND THEFT AUTO V SYNC
+#* Copyright (C) 2015-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 .
+#*****************************************************************************/
+
+QT += core gui network
+
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
+
+TARGET = gta5sync
+TEMPLATE = app
+
+SOURCES += main.cpp \
+ AboutDialog.cpp \
+ AppEnv.cpp \
+ CrewDatabase.cpp \
+ DatabaseThread.cpp \
+ ExportThread.cpp \
+ IconLoader.cpp \
+ OptionsDialog.cpp \
+ PictureCopy.cpp \
+ PictureDialog.cpp \
+ PictureExport.cpp \
+ PictureWidget.cpp \
+ ProfileDatabase.cpp \
+ ProfileInterface.cpp \
+ ProfileLoader.cpp \
+ ProfileWidget.cpp \
+ SavegameCopy.cpp \
+ SavegameData.cpp \
+ SavegameDialog.cpp \
+ SavegameWidget.cpp \
+ SidebarGenerator.cpp \
+ SnapmaticPicture.cpp \
+ SnapmaticWidget.cpp \
+ StandardPaths.cpp \
+ StringParser.cpp \
+ UserInterface.cpp \
+ uimod/UiModLabel.cpp
+
+HEADERS += \
+ AboutDialog.h \
+ AppEnv.h \
+ CrewDatabase.h \
+ DatabaseThread.h \
+ ExportThread.h \
+ IconLoader.h \
+ OptionsDialog.h \
+ PictureCopy.h \
+ PictureDialog.h \
+ PictureExport.h \
+ PictureWidget.h \
+ ProfileDatabase.h \
+ ProfileInterface.h \
+ ProfileLoader.h \
+ ProfileWidget.h \
+ SavegameCopy.h \
+ SavegameData.h \
+ SavegameDialog.h \
+ SavegameWidget.h \
+ SidebarGenerator.h \
+ SnapmaticPicture.h \
+ SnapmaticWidget.h \
+ StandardPaths.h \
+ StringParser.h \
+ UserInterface.h \
+ uimod/UiModLabel.h
+
+FORMS += \
+ AboutDialog.ui \
+ OptionsDialog.ui \
+ PictureDialog.ui \
+ ProfileInterface.ui \
+ SavegameDialog.ui \
+ SavegameWidget.ui \
+ SnapmaticWidget.ui \
+ UserInterface.ui
+
+TRANSLATIONS += \
+ res/gta5sync_de.ts \
+ lang/gta5sync_ru.ts
+
+RESOURCES += \
+ res/app.qrc
+
+DISTFILES += res/app.rc \
+ res/gta5sync.desktop \
+ res/gta5sync_de.ts \
+ lang/gta5sync_ru.qm \
+ lang/qtbase_ru.qm \
+ lang/README.txt \
+ lang/gta5sync_ru.ts \
+ lang/qt_ru.qm
+
+INCLUDEPATH += ./uimod
+
+# WINDOWS ONLY
+
+win32: DEFINES += GTA5SYNC_WIN
+win32: RC_FILE += res/app.rc
+win32: LIBS += -luser32
+
+# QT4 ONLY STUFF
+
+isEqual(QT_MAJOR_VERSION, 4): INCLUDEPATH += ./qjson4
+isEqual(QT_MAJOR_VERSION, 4): HEADERS += qjson4/QJsonArray.h \
+ qjson4/QJsonDocument.h \
+ qjson4/QJsonObject.h \
+ qjson4/QJsonParseError.h \
+ qjson4/QJsonValue.h \
+ qjson4/QJsonValueRef.h \
+ qjson4/QJsonParser.h \
+ qjson4/QJsonRoot.h
+
+isEqual(QT_MAJOR_VERSION, 4): SOURCES += qjson4/QJsonArray.cpp \
+ qjson4/QJsonDocument.cpp \
+ qjson4/QJsonObject.cpp \
+ qjson4/QJsonParseError.cpp \
+ qjson4/QJsonValue.cpp \
+ qjson4/QJsonValueRef.cpp \
+ qjson4/QJsonParser.cpp
+
+# UNIX SYSTEM STUFF
+
+unix: !macx: appfiles.path = $$(INSTALL_PATH)/share/applications
+unix: !macx: appfiles.files = $$PWD/res/gta5sync.desktop
+unix: !macx: pixmaps.path = $$(INSTALL_PATH)/share/pixmaps
+unix: !macx: pixmaps.files = $$PWD/res/gta5sync.xpm
+unix: !macx: target.path = $$(INSTALL_PATH)/bin
+unix: !macx: INSTALLS += target pixmaps appfiles
+
+# STATIC BUILD STUFF
+static: isEqual(QT_MAJOR_VERSION, 4): QTPLUGIN += qjpcodecs