parent
f62b1b08c0
commit
a591adf6ea
@ -0,0 +1,197 @@ |
||||
/*****************************************************************************
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*****************************************************************************/ |
||||
|
||||
#include "MapLocationDialog.h" |
||||
#include "ui_MapLocationDialog.h" |
||||
#include "IconLoader.h" |
||||
#include "AppEnv.h" |
||||
#include <QPainter> |
||||
#include <QDebug> |
||||
|
||||
MapLocationDialog::MapLocationDialog(double x, double y, QWidget *parent) : |
||||
QDialog(parent), xpos_old(x), ypos_old(y), |
||||
ui(new Ui::MapLocationDialog) |
||||
{ |
||||
// Set Window Flags
|
||||
setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint); |
||||
ui->setupUi(this); |
||||
ui->cmdDone->setVisible(false); |
||||
ui->cmdApply->setVisible(false); |
||||
ui->cmdRevert->setVisible(false); |
||||
ui->cmdDone->setCursor(Qt::ArrowCursor); |
||||
|
||||
// DPI calculation
|
||||
qreal screenRatio = AppEnv::screenRatio(); |
||||
int widgetMargin = qRound(3 * screenRatio); |
||||
ui->hlMapDialog->setContentsMargins(widgetMargin, widgetMargin, widgetMargin, widgetMargin); |
||||
ui->vlMapDialog->setSpacing(widgetMargin); |
||||
setMinimumSize(500 * screenRatio, 600 * screenRatio); |
||||
setMaximumSize(500 * screenRatio, 600 * screenRatio); |
||||
setFixedSize(500 * screenRatio, 600 * screenRatio); |
||||
setMouseTracking(true); |
||||
|
||||
changeMode = false; |
||||
propUpdate = false; |
||||
drawPointOnMap(xpos_old, ypos_old); |
||||
} |
||||
|
||||
MapLocationDialog::~MapLocationDialog() |
||||
{ |
||||
delete ui; |
||||
} |
||||
|
||||
void MapLocationDialog::drawPointOnMap(double xpos_d, double ypos_d) |
||||
{ |
||||
qreal screenRatio = AppEnv::screenRatio(); |
||||
int pointMakerSize = 8 * screenRatio; |
||||
QPixmap pointMakerPixmap = IconLoader::loadingPointmakerIcon().pixmap(QSize(pointMakerSize, pointMakerSize)); |
||||
QSize mapPixelSize = size(); |
||||
|
||||
int pointMakerHalfSize = pointMakerSize / 2; |
||||
long xpos_ms = qRound(xpos_d); |
||||
long ypos_ms = qRound(ypos_d); |
||||
double xpos_ma = xpos_ms + 4000; |
||||
double ypos_ma = ypos_ms + 4000; |
||||
double xrat = (double)mapPixelSize.width() / 10000; |
||||
double yrat = (double)mapPixelSize.height() / 12000; |
||||
long xpos_mp = qRound(xpos_ma * xrat); |
||||
long ypos_mp = qRound(ypos_ma * yrat); |
||||
long xpos_pr = xpos_mp - pointMakerHalfSize; |
||||
long ypos_pr = ypos_mp + pointMakerHalfSize; |
||||
|
||||
QPixmap mapPixmap(mapPixelSize); |
||||
QPainter mapPainter(&mapPixmap); |
||||
mapPainter.drawPixmap(0, 0, mapPixelSize.width(), mapPixelSize.height(), QPixmap(":/img/mappreview.jpg").scaled(mapPixelSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); |
||||
mapPainter.drawPixmap(xpos_pr, mapPixelSize.height() - ypos_pr, pointMakerSize, pointMakerSize, pointMakerPixmap); |
||||
mapPainter.end(); |
||||
|
||||
QPalette backgroundPalette; |
||||
backgroundPalette.setBrush(backgroundRole(), QBrush(mapPixmap)); |
||||
setPalette(backgroundPalette); |
||||
|
||||
xpos_new = xpos_d; |
||||
ypos_new = ypos_d; |
||||
ui->labPos->setText(tr("X: %1\nY: %2", "X and Y position").arg(QString::number(xpos_d), QString::number(ypos_d))); |
||||
} |
||||
|
||||
void MapLocationDialog::on_cmdChange_clicked() |
||||
{ |
||||
qreal screenRatio = AppEnv::screenRatio(); |
||||
int pointMakerSize = 8 * screenRatio; |
||||
QPixmap pointMakerPixmap = IconLoader::loadingPointmakerIcon().pixmap(QSize(pointMakerSize, pointMakerSize)); |
||||
QCursor pointMakerCursor(pointMakerPixmap); |
||||
ui->cmdDone->setVisible(true); |
||||
ui->cmdApply->setVisible(false); |
||||
ui->cmdChange->setVisible(false); |
||||
ui->cmdRevert->setVisible(false); |
||||
|
||||
setCursor(pointMakerCursor); |
||||
changeMode = true; |
||||
} |
||||
|
||||
void MapLocationDialog::on_cmdDone_clicked() |
||||
{ |
||||
ui->cmdDone->setVisible(false); |
||||
ui->cmdChange->setVisible(true); |
||||
if (xpos_new != xpos_old || ypos_new != ypos_old) |
||||
{ |
||||
ui->cmdApply->setVisible(true); |
||||
ui->cmdRevert->setVisible(true); |
||||
} |
||||
|
||||
setCursor(Qt::ArrowCursor); |
||||
changeMode = false; |
||||
} |
||||
|
||||
void MapLocationDialog::updatePosFromEvent(int x, int y) |
||||
{ |
||||
QSize mapPixelSize = size(); |
||||
int xpos_ad = x; |
||||
int ypos_ad = mapPixelSize.height() - y; |
||||
double xrat = 10000 / (double)mapPixelSize.width(); |
||||
double yrat = 12000 / (double)mapPixelSize.height(); |
||||
double xpos_rv = xrat * xpos_ad; |
||||
double ypos_rv = yrat * ypos_ad; |
||||
double xpos_fp = xpos_rv - 4000; |
||||
double ypos_fp = ypos_rv - 4000; |
||||
drawPointOnMap(xpos_fp, ypos_fp); |
||||
} |
||||
|
||||
void MapLocationDialog::mouseMoveEvent(QMouseEvent *ev) |
||||
{ |
||||
if (!changeMode) { ev->ignore(); } |
||||
else if (ev->buttons() & Qt::LeftButton) |
||||
{ |
||||
updatePosFromEvent(ev->x(), ev->y()); |
||||
ev->accept(); |
||||
} |
||||
else |
||||
{ |
||||
ev->ignore(); |
||||
} |
||||
} |
||||
|
||||
void MapLocationDialog::mouseReleaseEvent(QMouseEvent *ev) |
||||
{ |
||||
if (!changeMode) { ev->ignore(); } |
||||
else if (ev->button() == Qt::LeftButton) |
||||
{ |
||||
updatePosFromEvent(ev->x(), ev->y()); |
||||
ev->accept(); |
||||
} |
||||
else |
||||
{ |
||||
ev->ignore(); |
||||
} |
||||
} |
||||
|
||||
void MapLocationDialog::on_cmdApply_clicked() |
||||
{ |
||||
propUpdate = true; |
||||
xpos_old = xpos_new; |
||||
ypos_old = ypos_new; |
||||
ui->cmdApply->setVisible(false); |
||||
ui->cmdRevert->setVisible(false); |
||||
} |
||||
|
||||
void MapLocationDialog::on_cmdRevert_clicked() |
||||
{ |
||||
drawPointOnMap(xpos_old, ypos_old); |
||||
ui->cmdApply->setVisible(false); |
||||
ui->cmdRevert->setVisible(false); |
||||
} |
||||
|
||||
bool MapLocationDialog::propUpdated() |
||||
{ |
||||
return propUpdate; |
||||
} |
||||
|
||||
double MapLocationDialog::getXpos() |
||||
{ |
||||
return xpos_old; |
||||
} |
||||
|
||||
double MapLocationDialog::getYpos() |
||||
{ |
||||
return ypos_old; |
||||
} |
||||
|
||||
void MapLocationDialog::on_cmdClose_clicked() |
||||
{ |
||||
close(); |
||||
} |
@ -0,0 +1,218 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<ui version="4.0"> |
||||
<class>MapLocationDialog</class> |
||||
<widget class="QDialog" name="MapLocationDialog"> |
||||
<property name="geometry"> |
||||
<rect> |
||||
<x>0</x> |
||||
<y>0</y> |
||||
<width>500</width> |
||||
<height>600</height> |
||||
</rect> |
||||
</property> |
||||
<property name="minimumSize"> |
||||
<size> |
||||
<width>500</width> |
||||
<height>600</height> |
||||
</size> |
||||
</property> |
||||
<property name="maximumSize"> |
||||
<size> |
||||
<width>500</width> |
||||
<height>600</height> |
||||
</size> |
||||
</property> |
||||
<property name="windowTitle"> |
||||
<string>Snapmatic Map Viewer</string> |
||||
</property> |
||||
<layout class="QVBoxLayout" name="vlMapPreview"> |
||||
<property name="spacing"> |
||||
<number>0</number> |
||||
</property> |
||||
<property name="leftMargin"> |
||||
<number>0</number> |
||||
</property> |
||||
<property name="topMargin"> |
||||
<number>0</number> |
||||
</property> |
||||
<property name="rightMargin"> |
||||
<number>0</number> |
||||
</property> |
||||
<property name="bottomMargin"> |
||||
<number>0</number> |
||||
</property> |
||||
<item> |
||||
<layout class="QHBoxLayout" name="hlMapDialog"> |
||||
<property name="spacing"> |
||||
<number>0</number> |
||||
</property> |
||||
<property name="leftMargin"> |
||||
<number>3</number> |
||||
</property> |
||||
<property name="topMargin"> |
||||
<number>3</number> |
||||
</property> |
||||
<property name="rightMargin"> |
||||
<number>3</number> |
||||
</property> |
||||
<property name="bottomMargin"> |
||||
<number>3</number> |
||||
</property> |
||||
<item> |
||||
<layout class="QVBoxLayout" name="vlPosLayout"> |
||||
<property name="spacing"> |
||||
<number>0</number> |
||||
</property> |
||||
<property name="leftMargin"> |
||||
<number>0</number> |
||||
</property> |
||||
<property name="topMargin"> |
||||
<number>0</number> |
||||
</property> |
||||
<property name="rightMargin"> |
||||
<number>0</number> |
||||
</property> |
||||
<property name="bottomMargin"> |
||||
<number>0</number> |
||||
</property> |
||||
<item> |
||||
<widget class="QLabel" name="labPos"> |
||||
<property name="styleSheet"> |
||||
<string notr="true">QLabel{ |
||||
color: rgb(255, 255, 255); |
||||
}</string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item> |
||||
<spacer name="vsPosSpacer"> |
||||
<property name="orientation"> |
||||
<enum>Qt::Vertical</enum> |
||||
</property> |
||||
<property name="sizeHint" stdset="0"> |
||||
<size> |
||||
<width>20</width> |
||||
<height>40</height> |
||||
</size> |
||||
</property> |
||||
</spacer> |
||||
</item> |
||||
</layout> |
||||
</item> |
||||
<item> |
||||
<spacer name="hsMapDialog"> |
||||
<property name="orientation"> |
||||
<enum>Qt::Horizontal</enum> |
||||
</property> |
||||
<property name="sizeHint" stdset="0"> |
||||
<size> |
||||
<width>0</width> |
||||
<height>0</height> |
||||
</size> |
||||
</property> |
||||
</spacer> |
||||
</item> |
||||
<item> |
||||
<layout class="QVBoxLayout" name="vlMapDialog"> |
||||
<property name="spacing"> |
||||
<number>3</number> |
||||
</property> |
||||
<property name="leftMargin"> |
||||
<number>0</number> |
||||
</property> |
||||
<property name="topMargin"> |
||||
<number>0</number> |
||||
</property> |
||||
<property name="rightMargin"> |
||||
<number>0</number> |
||||
</property> |
||||
<property name="bottomMargin"> |
||||
<number>0</number> |
||||
</property> |
||||
<item> |
||||
<widget class="QPushButton" name="cmdClose"> |
||||
<property name="focusPolicy"> |
||||
<enum>Qt::NoFocus</enum> |
||||
</property> |
||||
<property name="text"> |
||||
<string>&Close</string> |
||||
</property> |
||||
<property name="autoDefault"> |
||||
<bool>false</bool> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item> |
||||
<spacer name="vsMapDialog"> |
||||
<property name="orientation"> |
||||
<enum>Qt::Vertical</enum> |
||||
</property> |
||||
<property name="sizeHint" stdset="0"> |
||||
<size> |
||||
<width>0</width> |
||||
<height>0</height> |
||||
</size> |
||||
</property> |
||||
</spacer> |
||||
</item> |
||||
<item> |
||||
<widget class="QPushButton" name="cmdApply"> |
||||
<property name="focusPolicy"> |
||||
<enum>Qt::NoFocus</enum> |
||||
</property> |
||||
<property name="text"> |
||||
<string>&Apply</string> |
||||
</property> |
||||
<property name="autoDefault"> |
||||
<bool>false</bool> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item> |
||||
<widget class="QPushButton" name="cmdRevert"> |
||||
<property name="focusPolicy"> |
||||
<enum>Qt::NoFocus</enum> |
||||
</property> |
||||
<property name="text"> |
||||
<string>&Revert</string> |
||||
</property> |
||||
<property name="autoDefault"> |
||||
<bool>false</bool> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item> |
||||
<widget class="QPushButton" name="cmdChange"> |
||||
<property name="focusPolicy"> |
||||
<enum>Qt::NoFocus</enum> |
||||
</property> |
||||
<property name="text"> |
||||
<string>&Set</string> |
||||
</property> |
||||
<property name="autoDefault"> |
||||
<bool>false</bool> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item> |
||||
<widget class="QPushButton" name="cmdDone"> |
||||
<property name="focusPolicy"> |
||||
<enum>Qt::NoFocus</enum> |
||||
</property> |
||||
<property name="text"> |
||||
<string>&Done</string> |
||||
</property> |
||||
<property name="autoDefault"> |
||||
<bool>false</bool> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
</layout> |
||||
</item> |
||||
</layout> |
||||
</item> |
||||
</layout> |
||||
</widget> |
||||
<resources/> |
||||
<connections/> |
||||
</ui> |
@ -1,73 +0,0 @@ |
||||
/*****************************************************************************
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*****************************************************************************/ |
||||
|
||||
#include "MapPreviewDialog.h" |
||||
#include "ui_MapPreviewDialog.h" |
||||
#include "IconLoader.h" |
||||
#include "AppEnv.h" |
||||
#include <QPainter> |
||||
#include <QDebug> |
||||
|
||||
MapPreviewDialog::MapPreviewDialog(QWidget *parent) : |
||||
QDialog(parent), |
||||
ui(new Ui::MapPreviewDialog) |
||||
{ |
||||
// Set Window Flags
|
||||
setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint); |
||||
|
||||
ui->setupUi(this); |
||||
|
||||
// DPI calculation
|
||||
qreal screenRatio = AppEnv::screenRatio(); |
||||
setMinimumSize(500 * screenRatio, 600 * screenRatio); |
||||
setMaximumSize(500 * screenRatio, 600 * screenRatio); |
||||
setFixedSize(500 * screenRatio, 600 * screenRatio); |
||||
} |
||||
|
||||
MapPreviewDialog::~MapPreviewDialog() |
||||
{ |
||||
delete ui; |
||||
} |
||||
|
||||
void MapPreviewDialog::drawPointOnMap(double xpos_d, double ypos_d) |
||||
{ |
||||
qreal screenRatio = AppEnv::screenRatio(); |
||||
int pointMakerSize = 8 * screenRatio; |
||||
QPixmap pointMakerPixmap = IconLoader::loadingPointmakerIcon().pixmap(QSize(pointMakerSize, pointMakerSize)); |
||||
QSize mapPixelSize = size(); |
||||
|
||||
int pointMakerHalfSize = pointMakerSize / 2; |
||||
long xpos_ms = qRound(xpos_d); |
||||
long ypos_ms = qRound(ypos_d); |
||||
double xpos_ma = xpos_ms + 4000; |
||||
double ypos_ma = ypos_ms + 4000; |
||||
double xrat = (double)mapPixelSize.width() / 10000; |
||||
double yrat = (double)mapPixelSize.height() / 12000; |
||||
long xpos_mp = qRound(xpos_ma * xrat); |
||||
long ypos_mp = qRound(ypos_ma * yrat); |
||||
long xpos_pr = xpos_mp - pointMakerHalfSize; |
||||
long ypos_pr = ypos_mp + pointMakerHalfSize; |
||||
|
||||
QPixmap mapPixmap(mapPixelSize); |
||||
QPainter mapPainter(&mapPixmap); |
||||
mapPainter.drawPixmap(0, 0, mapPixelSize.width(), mapPixelSize.height(), QPixmap(":/img/mappreview.jpg").scaled(mapPixelSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); |
||||
mapPainter.drawPixmap(xpos_pr, mapPixelSize.height() - ypos_pr, pointMakerSize, pointMakerSize, pointMakerPixmap); |
||||
mapPainter.end(); |
||||
|
||||
ui->labPicture->setPixmap(mapPixmap); |
||||
} |
@ -1,71 +0,0 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<ui version="4.0"> |
||||
<class>MapPreviewDialog</class> |
||||
<widget class="QDialog" name="MapPreviewDialog"> |
||||
<property name="geometry"> |
||||
<rect> |
||||
<x>0</x> |
||||
<y>0</y> |
||||
<width>500</width> |
||||
<height>600</height> |
||||
</rect> |
||||
</property> |
||||
<property name="minimumSize"> |
||||
<size> |
||||
<width>500</width> |
||||
<height>600</height> |
||||
</size> |
||||
</property> |
||||
<property name="maximumSize"> |
||||
<size> |
||||
<width>500</width> |
||||
<height>600</height> |
||||
</size> |
||||
</property> |
||||
<property name="windowTitle"> |
||||
<string>Snapmatic Map Viewer</string> |
||||
</property> |
||||
<layout class="QVBoxLayout" name="vlMapPreview"> |
||||
<property name="spacing"> |
||||
<number>0</number> |
||||
</property> |
||||
<property name="leftMargin"> |
||||
<number>0</number> |
||||
</property> |
||||
<property name="topMargin"> |
||||
<number>0</number> |
||||
</property> |
||||
<property name="rightMargin"> |
||||
<number>0</number> |
||||
</property> |
||||
<property name="bottomMargin"> |
||||
<number>0</number> |
||||
</property> |
||||
<item> |
||||
<widget class="UiModLabel" name="labPicture"> |
||||
<property name="text"> |
||||
<string/> |
||||
</property> |
||||
<property name="scaledContents"> |
||||
<bool>true</bool> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
</layout> |
||||
</widget> |
||||
<customwidgets> |
||||
<customwidget> |
||||
<class>UiModLabel</class> |
||||
<extends>QLabel</extends> |
||||
<header>uimod/UiModLabel.h</header> |
||||
<slots> |
||||
<signal>mouseMoved()</signal> |
||||
<signal>mouseReleased()</signal> |
||||
<signal>mousePressed()</signal> |
||||
<signal>mouseDoubleClicked()</signal> |
||||
</slots> |
||||
</customwidget> |
||||
</customwidgets> |
||||
<resources/> |
||||
<connections/> |
||||
</ui> |