1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2024-10-06 06:43:22 +02:00

Added initial open file paths configuration

This commit is contained in:
Martin Tůma 2021-07-12 00:21:21 +02:00
parent 3644ed3b1f
commit 5b3b7128f6
7 changed files with 141 additions and 10 deletions

View File

@ -19,6 +19,7 @@ CONFIG += object_parallel_to_source
INCLUDEPATH += ./src
HEADERS += src/common/config.h \
src/GUI/axislabelitem.h \
src/GUI/dirselectwidget.h \
src/GUI/graphicsscene.h \
src/GUI/mapaction.h \
src/GUI/mapitem.h \
@ -228,6 +229,7 @@ HEADERS += src/common/config.h \
SOURCES += src/main.cpp \
src/GUI/axislabelitem.cpp \
src/GUI/dirselectwidget.cpp \
src/GUI/mapitem.cpp \
src/GUI/marginswidget.cpp \
src/GUI/markerinfoitem.cpp \

View File

@ -0,0 +1,42 @@
#include <QPushButton>
#include <QToolButton>
#include <QFileDialog>
#include <QHBoxLayout>
#include <QFileInfo>
#include <QFontMetrics>
#include <QApplication>
#include "dirselectwidget.h"
DirSelectWidget::DirSelectWidget(QWidget *parent) : QWidget(parent)
{
QFontMetrics fm(QApplication::font());
_edit = new QLineEdit();
_edit->setMinimumWidth(fm.averageCharWidth() * (QDir::homePath().length()
+ 12));
#ifdef Q_OS_WIN32
_button = new QPushButton("...");
_button->setMaximumWidth(_button->sizeHint().width() / 2);
#else // Q_OS_WIN32
_button = new QToolButton();
_button->setText("...");
#endif // Q_OS_WIN32
connect(_button, &QToolButton::clicked, this, &DirSelectWidget::browse);
QHBoxLayout *layout = new QHBoxLayout();
layout->setContentsMargins(QMargins());
layout->addWidget(_edit);
layout->addWidget(_button);
setLayout(layout);
QSizePolicy p(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
setSizePolicy(p);
}
void DirSelectWidget::browse()
{
QString dir(QFileDialog::getExistingDirectory(this, tr("Select directory"),
_edit->text()));
if (!dir.isEmpty())
_edit->setText(dir);
}

30
src/GUI/dirselectwidget.h Normal file
View File

@ -0,0 +1,30 @@
#ifndef DIRSELECTWIDGET_H
#define DIRSELECTWIDGET_H
#include <QWidget>
#include <QLineEdit>
class DirSelectWidget : public QWidget
{
Q_OBJECT
public:
DirSelectWidget(QWidget *parent = 0);
QString dir() const {return _edit->text();}
void setDir(const QString &path) {_edit->setText(path);}
bool checkDir(QString &error) const;
private slots:
void browse();
private:
QLineEdit *_edit;
#ifdef Q_OS_WIN32
QPushButton *_button;
#else // Q_OS_WIN32
QToolButton *_button;
#endif // Q_OS_WIN32
};
#endif // DIRSELECTWIDGET_H

View File

@ -96,12 +96,12 @@ GUI::GUI()
_movingTime = 0;
_lastTab = 0;
_dataDir = QDir::homePath();
_mapDir = QDir::homePath();
_poiDir = QDir::homePath();
readSettings();
_dataDir = _options.dataPath;
_mapDir = _options.mapsPath;
_poiDir = _options.poiPath;
updateGraphTabs();
updateStatusBarInfo();
}
@ -2262,6 +2262,13 @@ void GUI::writeSettings()
settings.setValue(INPUT_PROJECTION_SETTING, _options.inputProjection);
if (_options.hidpiMap != HIDPI_MAP_DEFAULT)
settings.setValue(HIDPI_MAP_SETTING, _options.hidpiMap);
if (_options.dataPath != DATA_PATH_DEFAULT)
settings.setValue(DATA_PATH_SETTING, _options.dataPath);
if (_options.mapsPath != MAPS_PATH_DEFAULT)
settings.setValue(MAPS_PATH_SETTING, _options.mapsPath);
if (_options.poiPath != POI_PATH_DEFAULT)
settings.setValue(POI_PATH_SETTING, _options.poiPath);
settings.endGroup();
}
@ -2563,8 +2570,14 @@ void GUI::readSettings()
OUTPUT_PROJECTION_DEFAULT).toInt();
_options.inputProjection = settings.value(INPUT_PROJECTION_SETTING,
INPUT_PROJECTION_DEFAULT).toInt();
_options.hidpiMap = settings.value(HIDPI_MAP_SETTING, HIDPI_MAP_SETTING)
_options.hidpiMap = settings.value(HIDPI_MAP_SETTING, HIDPI_MAP_DEFAULT)
.toBool();
_options.dataPath = settings.value(DATA_PATH_SETTING, DATA_PATH_DEFAULT)
.toString();
_options.mapsPath = settings.value(MAPS_PATH_SETTING, MAPS_PATH_DEFAULT)
.toString();
_options.poiPath = settings.value(POI_PATH_SETTING, POI_PATH_DEFAULT)
.toString();
_mapView->setPalette(_options.palette);
_mapView->setMapOpacity(_options.mapOpacity);

View File

@ -19,6 +19,7 @@
#include "oddspinbox.h"
#include "percentslider.h"
#include "projectioncombobox.h"
#include "dirselectwidget.h"
#include "optionsdialog.h"
@ -539,12 +540,12 @@ QWidget *OptionsDialog::createDataPage()
sourceTab->setLayout(sourceTabLayout);
QTabWidget *filterPage = new QTabWidget();
filterPage->addTab(filterTab, tr("Filtering"));
filterPage->addTab(sourceTab, tr("Sources"));
filterPage->addTab(pauseTab, tr("Pause detection"));
QTabWidget *dataPage = new QTabWidget();
dataPage->addTab(filterTab, tr("Filtering"));
dataPage->addTab(sourceTab, tr("Sources"));
dataPage->addTab(pauseTab, tr("Pause detection"));
return filterPage;
return dataPage;
}
QWidget *OptionsDialog::createPOIPage()
@ -683,8 +684,35 @@ QWidget *OptionsDialog::createSystemPage()
systemTabLayout->addStretch();
systemTab->setLayout(systemTabLayout);
_dataPath = new DirSelectWidget();
_dataPath->setDir(_options.dataPath);
_mapsPath = new DirSelectWidget();
_mapsPath->setDir(_options.mapsPath);
_poiPath = new DirSelectWidget();
_poiPath->setDir(_options.poiPath);
QLabel *info = new QLabel(tr("Select the initial paths of the file open"
" dialogues. Leave the field empty for the system default."));
QFont f = info->font();
f.setPointSize(f.pointSize() - 1);
info->setFont(f);
info->setWordWrap(true);
QFormLayout *pathsFormLayout = new QFormLayout();
pathsFormLayout->addRow(tr("Data:"), _dataPath);
pathsFormLayout->addRow(tr("Maps:"), _mapsPath);
pathsFormLayout->addRow(tr("POI:"), _poiPath);
QWidget *pathsTab = new QWidget();
QVBoxLayout *pathsTabLayout = new QVBoxLayout();
pathsTabLayout->addWidget(info);
pathsTabLayout->addLayout(pathsFormLayout);
pathsTabLayout->addStretch();
pathsTab->setLayout(pathsTabLayout);
QTabWidget *systemPage = new QTabWidget();
systemPage->addTab(systemTab, tr("System"));
systemPage->addTab(pathsTab, tr("Initial paths"));
return systemPage;
}
@ -807,6 +835,9 @@ void OptionsDialog::accept()
_options.enableHTTP2 = _enableHTTP2->isChecked();
_options.pixmapCache = _pixmapCache->value();
_options.connectionTimeout = _connectionTimeout->value();
_options.dataPath = _dataPath->dir();
_options.mapsPath = _mapsPath->dir();
_options.poiPath = _poiPath->dir();
_options.hiresPrint = _hires->isChecked();
_options.printName = _name->isChecked();

View File

@ -16,6 +16,7 @@ class QCheckBox;
class QRadioButton;
class PercentSlider;
class ProjectionComboBox;
class DirSelectWidget;
struct Options {
@ -65,6 +66,9 @@ struct Options {
bool enableHTTP2;
int pixmapCache;
int connectionTimeout;
QString dataPath;
QString mapsPath;
QString poiPath;
// Print/Export
bool hiresPrint;
bool printName;
@ -154,6 +158,9 @@ private:
QSpinBox *_connectionTimeout;
QCheckBox *_useOpenGL;
QCheckBox *_enableHTTP2;
DirSelectWidget *_dataPath;
DirSelectWidget *_mapsPath;
DirSelectWidget *_poiPath;
// Print/Export
QRadioButton *_wysiwyg;
QRadioButton *_hires;

View File

@ -205,5 +205,11 @@
#define INPUT_PROJECTION_DEFAULT 4326
#define HIDPI_MAP_SETTING "HiDPIMap"
#define HIDPI_MAP_DEFAULT true
#define DATA_PATH_SETTING "dataPath"
#define DATA_PATH_DEFAULT QString()
#define MAPS_PATH_SETTING "mapsPath"
#define MAPS_PATH_DEFAULT QString()
#define POI_PATH_SETTING "poiPath"
#define POI_PATH_DEFAULT QString()
#endif // SETTINGS_H