mirror of
https://github.com/tumic0/GPXSee.git
synced 2024-11-24 03:35:53 +01:00
Added map opacity (brightness) settings
This commit is contained in:
parent
7b6789e78d
commit
f3e4719439
@ -96,7 +96,8 @@ HEADERS += src/config.h \
|
||||
src/albersequal.h \
|
||||
src/oddspinbox.h \
|
||||
src/rectc.h \
|
||||
src/searchpointer.h
|
||||
src/searchpointer.h \
|
||||
src/percentslider.h
|
||||
SOURCES += src/main.cpp \
|
||||
src/gui.cpp \
|
||||
src/poi.cpp \
|
||||
@ -165,7 +166,8 @@ SOURCES += src/main.cpp \
|
||||
src/maplist.cpp \
|
||||
src/albersequal.cpp \
|
||||
src/oddspinbox.cpp \
|
||||
src/rectc.cpp
|
||||
src/rectc.cpp \
|
||||
src/percentslider.cpp
|
||||
RESOURCES += gpxsee.qrc
|
||||
TRANSLATIONS = lang/gpxsee_cs.ts \
|
||||
lang/gpxsee_sv.ts \
|
||||
|
@ -877,6 +877,8 @@ void GUI::openOptions()
|
||||
for (int i = 0; i < _tabs.count(); i++)
|
||||
_tabs.at(i)->setPalette(options.palette);
|
||||
}
|
||||
if (options.mapOpacity != _options.mapOpacity)
|
||||
_pathView->setMapOpacity(options.mapOpacity);
|
||||
if (options.trackWidth != _options.trackWidth)
|
||||
_pathView->setTrackWidth(options.trackWidth);
|
||||
if (options.routeWidth != _options.routeWidth)
|
||||
@ -1598,6 +1600,8 @@ void GUI::writeSettings()
|
||||
settings.setValue(PALETTE_COLOR_SETTING, _options.palette.color());
|
||||
if (_options.palette.shift() != PALETTE_SHIFT_DEFAULT)
|
||||
settings.setValue(PALETTE_SHIFT_SETTING, _options.palette.shift());
|
||||
if (_options.mapOpacity != MAP_OPACITY_DEFAULT)
|
||||
settings.setValue(MAP_OPACITY_SETTING, _options.mapOpacity);
|
||||
if (_options.trackWidth != TRACK_WIDTH_DEFAULT)
|
||||
settings.setValue(TRACK_WIDTH_SETTING, _options.trackWidth);
|
||||
if (_options.routeWidth != ROUTE_WIDTH_DEFAULT)
|
||||
@ -1793,6 +1797,8 @@ void GUI::readSettings()
|
||||
qreal ps = settings.value(PALETTE_SHIFT_SETTING, PALETTE_SHIFT_DEFAULT)
|
||||
.toDouble();
|
||||
_options.palette = Palette(pc, ps);
|
||||
_options.mapOpacity = settings.value(MAP_OPACITY_SETTING,
|
||||
MAP_OPACITY_DEFAULT).toInt();
|
||||
_options.trackWidth = settings.value(TRACK_WIDTH_SETTING,
|
||||
TRACK_WIDTH_DEFAULT).toInt();
|
||||
_options.routeWidth = settings.value(ROUTE_WIDTH_SETTING,
|
||||
@ -1845,6 +1851,7 @@ void GUI::readSettings()
|
||||
SEPARATE_GRAPH_PAGE_DEFAULT).toBool();
|
||||
|
||||
_pathView->setPalette(_options.palette);
|
||||
_pathView->setMapOpacity(_options.mapOpacity);
|
||||
_pathView->setTrackWidth(_options.trackWidth);
|
||||
_pathView->setRouteWidth(_options.routeWidth);
|
||||
_pathView->setTrackStyle(_options.trackStyle);
|
||||
|
@ -16,12 +16,13 @@
|
||||
#include "colorbox.h"
|
||||
#include "stylecombobox.h"
|
||||
#include "oddspinbox.h"
|
||||
#include "percentslider.h"
|
||||
#include "optionsdialog.h"
|
||||
|
||||
|
||||
#define MENU_MARGIN 20
|
||||
#define MENU_ICON_SIZE 32
|
||||
|
||||
|
||||
QWidget *OptionsDialog::createAppearancePage()
|
||||
{
|
||||
_baseColor = new ColorBox();
|
||||
@ -31,14 +32,39 @@ QWidget *OptionsDialog::createAppearancePage()
|
||||
_colorOffset->setMaximum(1.0);
|
||||
_colorOffset->setSingleStep(0.01);
|
||||
_colorOffset->setValue(_options->palette.shift());
|
||||
|
||||
QFormLayout *paletteLayout = new QFormLayout();
|
||||
paletteLayout->addRow(tr("Base color:"), _baseColor);
|
||||
paletteLayout->addRow(tr("Palette shift:"), _colorOffset);
|
||||
#ifndef Q_OS_MAC
|
||||
QGroupBox *pathsBox = new QGroupBox(tr("Paths"));
|
||||
pathsBox->setLayout(paletteLayout);
|
||||
#endif
|
||||
|
||||
_mapOpacity = new PercentSlider();
|
||||
_mapOpacity->setValue(_options->mapOpacity);
|
||||
QFormLayout *mapLayout = new QFormLayout();
|
||||
mapLayout->addRow(tr("Map opacity:"), _mapOpacity);
|
||||
#ifndef Q_OS_MAC
|
||||
QGroupBox *mapBox = new QGroupBox(tr("Map"));
|
||||
mapBox->setLayout(mapLayout);
|
||||
#endif
|
||||
|
||||
QWidget *colorTab = new QWidget();
|
||||
colorTab->setLayout(paletteLayout);
|
||||
QVBoxLayout *colorTabLayout = new QVBoxLayout();
|
||||
#ifdef Q_OS_MAC
|
||||
QFrame *l0 = new QFrame();
|
||||
l0->setFrameShape(QFrame::HLine);
|
||||
l0->setFrameShadow(QFrame::Sunken);
|
||||
|
||||
colorTabLayout->addLayout(paletteLayout);
|
||||
colorTabLayout->addWidget(l0);
|
||||
colorTabLayout->addLayout(mapLayout);
|
||||
#else // Q_OS_MAC
|
||||
colorTabLayout->addWidget(pathsBox);
|
||||
colorTabLayout->addWidget(mapBox);
|
||||
#endif // O_OS_MAC
|
||||
colorTabLayout->addStretch();
|
||||
colorTab->setLayout(colorTabLayout);
|
||||
|
||||
_trackWidth = new QSpinBox();
|
||||
_trackWidth->setValue(_options->trackWidth);
|
||||
@ -369,6 +395,7 @@ void OptionsDialog::accept()
|
||||
{
|
||||
_options->palette.setColor(_baseColor->color());
|
||||
_options->palette.setShift(_colorOffset->value());
|
||||
_options->mapOpacity = _mapOpacity->value();
|
||||
_options->trackWidth = _trackWidth->value();
|
||||
_options->trackStyle = (Qt::PenStyle) _trackStyle->itemData(
|
||||
_trackStyle->currentIndex()).toInt();
|
||||
|
@ -12,10 +12,12 @@ class QSpinBox;
|
||||
class QDoubleSpinBox;
|
||||
class QComboBox;
|
||||
class QCheckBox;
|
||||
class PercentSlider;
|
||||
|
||||
struct Options {
|
||||
// Appearance
|
||||
Palette palette;
|
||||
int mapOpacity;
|
||||
int trackWidth;
|
||||
int routeWidth;
|
||||
Qt::PenStyle trackStyle;
|
||||
@ -71,6 +73,7 @@ private:
|
||||
// Appearance
|
||||
ColorBox *_baseColor;
|
||||
QDoubleSpinBox *_colorOffset;
|
||||
PercentSlider *_mapOpacity;
|
||||
QSpinBox *_trackWidth;
|
||||
StyleComboBox *_trackStyle;
|
||||
QSpinBox *_routeWidth;
|
||||
|
@ -46,6 +46,7 @@ PathView::PathView(Map *map, POI *poi, QWidget *parent)
|
||||
connect(_poi, SIGNAL(pointsChanged()), this, SLOT(updatePOI()));
|
||||
|
||||
_units = Metric;
|
||||
_opacity = 1.0;
|
||||
|
||||
_showMap = true;
|
||||
_showTracks = true;
|
||||
@ -637,11 +638,21 @@ void PathView::setRouteStyle(Qt::PenStyle style)
|
||||
_routes.at(i)->setStyle(style);
|
||||
}
|
||||
|
||||
void PathView::setMapOpacity(int opacity)
|
||||
{
|
||||
_opacity = opacity / 100.0;
|
||||
resetCachedContent();
|
||||
}
|
||||
|
||||
void PathView::drawBackground(QPainter *painter, const QRectF &rect)
|
||||
{
|
||||
if (_showMap)
|
||||
if (_showMap) {
|
||||
if (_opacity < 1.0) {
|
||||
painter->fillRect(rect, Qt::white);
|
||||
painter->setOpacity(_opacity);
|
||||
}
|
||||
_map->draw(painter, rect);
|
||||
else
|
||||
} else
|
||||
painter->fillRect(rect, Qt::white);
|
||||
}
|
||||
|
||||
|
@ -63,6 +63,7 @@ public slots:
|
||||
void setRouteWidth(int width);
|
||||
void setTrackStyle(Qt::PenStyle style);
|
||||
void setRouteStyle(Qt::PenStyle style);
|
||||
void setMapOpacity(int opacity);
|
||||
|
||||
private slots:
|
||||
void updatePOI();
|
||||
@ -106,6 +107,7 @@ private:
|
||||
POI *_poi;
|
||||
Palette _palette;
|
||||
Units _units;
|
||||
qreal _opacity;
|
||||
|
||||
bool _showMap;
|
||||
bool _showTracks;
|
||||
|
48
src/percentslider.cpp
Normal file
48
src/percentslider.cpp
Normal file
@ -0,0 +1,48 @@
|
||||
#include <QSlider>
|
||||
#include <QLabel>
|
||||
#include <QHBoxLayout>
|
||||
#include "units.h"
|
||||
#include "percentslider.h"
|
||||
|
||||
|
||||
static QString format(int value)
|
||||
{
|
||||
return QString::number(value) + UNIT_SPACE + QString("%");
|
||||
}
|
||||
|
||||
PercentSlider::PercentSlider(QWidget *parent) : QWidget(parent)
|
||||
{
|
||||
_slider = new QSlider(Qt::Horizontal);
|
||||
_label = new QLabel();
|
||||
|
||||
_slider->setMinimum(0);
|
||||
_slider->setMaximum(100);
|
||||
|
||||
QFontMetrics fm(_label->font());
|
||||
_label->setFixedWidth(fm.boundingRect(format(_slider->maximum())).width());
|
||||
_label->setAlignment(Qt::AlignRight);
|
||||
|
||||
connect(_slider, SIGNAL(sliderMoved(int)), this, SLOT(updateLabel(int)));
|
||||
|
||||
QHBoxLayout *layout = new QHBoxLayout();
|
||||
layout->addWidget(_slider);
|
||||
layout->addWidget(_label);
|
||||
|
||||
setLayout(layout);
|
||||
}
|
||||
|
||||
void PercentSlider::updateLabel(int value)
|
||||
{
|
||||
_label->setText(format(value));
|
||||
}
|
||||
|
||||
int PercentSlider::value() const
|
||||
{
|
||||
return _slider->value();
|
||||
}
|
||||
|
||||
void PercentSlider::setValue(int value)
|
||||
{
|
||||
_slider->setValue(value);
|
||||
_label->setText(format(value));
|
||||
}
|
29
src/percentslider.h
Normal file
29
src/percentslider.h
Normal file
@ -0,0 +1,29 @@
|
||||
#ifndef PERCENTSLIDER_H
|
||||
#define PERCENTSLIDER_H
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
class QSlider;
|
||||
class QLabel;
|
||||
|
||||
class PercentSlider : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
PercentSlider(QWidget *parent = 0);
|
||||
|
||||
int value() const;
|
||||
|
||||
public slots:
|
||||
void setValue(int value);
|
||||
|
||||
private slots:
|
||||
void updateLabel(int value);
|
||||
|
||||
private:
|
||||
QSlider *_slider;
|
||||
QLabel *_label;
|
||||
};
|
||||
|
||||
#endif // PERCENTSLIDER_H
|
@ -76,6 +76,8 @@
|
||||
#define PALETTE_COLOR_DEFAULT QColor(Qt::blue)
|
||||
#define PALETTE_SHIFT_SETTING "paletteShift"
|
||||
#define PALETTE_SHIFT_DEFAULT 0.62
|
||||
#define MAP_OPACITY_SETTING "mapOpacity"
|
||||
#define MAP_OPACITY_DEFAULT 100
|
||||
#define TRACK_WIDTH_SETTING "trackWidth"
|
||||
#define TRACK_WIDTH_DEFAULT 3
|
||||
#define ROUTE_WIDTH_SETTING "routeWidth"
|
||||
|
Loading…
Reference in New Issue
Block a user