Skip to content
Commits on Source (4)
......@@ -21,7 +21,7 @@ endif()
# Define project name and version tags
###############################################################################################
# this is not only the QMS version it will be the package version, too.
project(QMapShack VERSION 1.12.1)
project(QMapShack VERSION 1.12.2)
# FOR A RELEASE:
# remove "development" for a release
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.8.0, 2018-12-21T15:16:30. -->
<!-- Written by QtCreator 4.8.0, 2019-02-04T18:35:12. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
......@@ -67,7 +67,7 @@
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{ddf2b166-ef7e-4686-9e42-3b0477c5244f}</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">4</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">5</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">BUILD_FOR_LOCAL_SYSTEM:BOOL=ON</value>
......
V 1.12.2
[Issue #419] Add option to project to receive all newly created items
[Issue #417] Only one line of Geocache description
[Issue #421] Improve "edit" view of Geocaches
[Issue #425] Add option to disable device support
Fix: Garmin IMG: Fix type parser to accept sections with zero size
Fix: Plot: make left click more robust to small mouse moves
V 1.12.1
[Issue #390] Ruler: Add steps for distance and angle
[Issue #393] Some Linux dsitributions do not have planetsplitter but routino-planetsplitter
......
qmapshack (1.12.1-2) UNRELEASED; urgency=medium
qmapshack (1.12.2-1) unstable; urgency=medium
* New upstream release.
* Bump Standards-Version to 4.3.0, no changes.
-- Bas Couwenberg <sebastic@debian.org> Tue, 25 Dec 2018 23:11:35 +0100
-- Bas Couwenberg <sebastic@debian.org> Mon, 04 Feb 2019 19:42:41 +0100
qmapshack (1.12.1-1) unstable; urgency=medium
......
......@@ -116,6 +116,7 @@ Section "QMapShack" QMapShack
;File Files\*.png
SetOutPath "$INSTDIR\translations"
File Files\translations\qmapshack_*.qm
File Files\translations\qmaptool_*.qm
;END QMapShack Files
;BEGIN Qt Files
......
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="586.7984"
height="559.57147"
id="svg2861"
version="1.1"
inkscape:version="0.47pre4 r22446"
sodipodi:docname="star.svg">
<defs
id="defs2863">
<linearGradient
inkscape:collect="always"
id="linearGradient5079">
<stop
style="stop-color:#fff400;stop-opacity:1"
offset="0"
id="stop5081" />
<stop
style="stop-color:#fffffe;stop-opacity:1"
offset="1"
id="stop5083" />
</linearGradient>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective2869" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5079"
id="linearGradient5085"
x1="-109.15551"
y1="675.67841"
x2="479.14285"
y2="114.6069"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.35"
inkscape:cx="-613.73734"
inkscape:cy="265.42334"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1280"
inkscape:window-height="948"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1" />
<metadata
id="metadata2866">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-40.165918,-238.21404)">
<path
sodipodi:type="star"
style="fill:url(#linearGradient5085);fill-opacity:1;stroke:#000000;stroke-width:6;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path2871"
sodipodi:sides="5"
sodipodi:cx="185.71429"
sodipodi:cy="423.79074"
sodipodi:r1="307.19269"
sodipodi:r2="122.87707"
sodipodi:arg1="-0.32175055"
sodipodi:arg2="0.30656798"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="M 477.14287,326.64788 302.86221,460.87362 368.15902,670.93699 186.64708,546.66427 7.0427646,673.67838 69.142873,462.64788 -107.15551,331.08355 l 219.89192,-6.1513 70.64592,-208.32535 73.80057,207.22879 219.95997,2.81219 z"
transform="translate(148.57143,122.85714)" />
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="586.7984"
height="559.57147"
id="svg2861"
version="1.1"
inkscape:version="0.46"
sodipodi:docname="star_empty.svg"
sodipodi:version="0.32"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
id="defs2863">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective2869" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.35"
inkscape:cx="-152.30878"
inkscape:cy="265.42334"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1024"
inkscape:window-height="710"
inkscape:window-x="0"
inkscape:window-y="437"
inkscape:window-maximized="1" />
<metadata
id="metadata2866">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-40.165918,-238.21404)">
<path
sodipodi:type="star"
style="fill:#cccccc;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path2871"
sodipodi:sides="5"
sodipodi:cx="185.71429"
sodipodi:cy="423.79074"
sodipodi:r1="307.19269"
sodipodi:r2="122.87707"
sodipodi:arg1="-0.32175055"
sodipodi:arg2="0.30656798"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="M 477.14287,326.64788 302.86221,460.87362 368.15902,670.93699 186.64708,546.66427 7.0427646,673.67838 69.142873,462.64788 -107.15551,331.08355 l 219.89192,-6.1513 70.64592,-208.32535 73.80057,207.22879 219.95997,2.81219 z"
transform="translate(148.57143,122.85714)" />
</g>
</svg>
......@@ -193,7 +193,7 @@ set( SRCS
gis/wpt/CProjWpt.cpp
gis/wpt/CScrOptWpt.cpp
gis/wpt/CScrOptWptRadius.cpp
gis/wpt/CSetupNewWpt.cpp
gis/wpt/CSetupIconAndName.cpp
grid/CGrid.cpp
grid/CGridSetup.cpp
grid/CProjWizard.cpp
......@@ -518,7 +518,7 @@ set( HDRS
gis/wpt/CProjWpt.h
gis/wpt/CScrOptWpt.h
gis/wpt/CScrOptWptRadius.h
gis/wpt/CSetupNewWpt.h
gis/wpt/CSetupIconAndName.h
grid/CGrid.h
grid/CGridSetup.h
grid/CProjWizard.h
......@@ -751,7 +751,7 @@ set( UIS
gis/wpt/IProjWpt.ui
gis/wpt/IScrOptWpt.ui
gis/wpt/IScrOptWptRadius.ui
gis/wpt/ISetupNewWpt.ui
gis/wpt/ISetupIconAndName.ui
grid/IGridSetup.ui
grid/IProjWizard.ui
helpers/IElevationDialog.ui
......
......@@ -69,7 +69,7 @@
using std::bind;
#undef DB_VERSION
#define DB_VERSION 3
#define DB_VERSION 4
class CGisListWksEditLock
{
......@@ -115,6 +115,8 @@ CGisListWks::CGisListWks(QWidget *parent)
actionSortByName = addSortAction(this, actionGroupSort, "://icons/32x32/SortName.png", tr("Sort by Name"), IGisProject::eSortFolderName);
actionAutoSave = addAction(QIcon("://icons/32x32/AutoSave.png"), tr("Autom. Save"), this, SLOT(slotAutoSaveProject(bool)));
actionAutoSave->setCheckable(true);
actionUserFocusPrj = addAction(QIcon("://icons/32x32/Focus.png"), tr("Active Project"), this, SLOT(slotUserFocusPrj(bool)));
actionUserFocusPrj->setCheckable(true);
actionSave = addAction(QIcon("://icons/32x32/SaveGIS.png"), tr("Save"), this, SLOT(slotSaveProject()));
actionSaveAs = addAction(QIcon("://icons/32x32/SaveGISAs.png"), tr("Save as..."), this, SLOT(slotSaveAsProject()));
actionSaveAsStrict = addAction(QIcon("://icons/32x32/SaveGISAsGpx11.png"), tr("Save as GPX 1.1 w/o ext..."), this, SLOT(slotSaveAsStrictGpx11Project()));
......@@ -164,7 +166,7 @@ CGisListWks::CGisListWks(QWidget *parent)
actionNogoRte = addAction(QIcon("://icons/32x32/NoGo.png"), tr("Toggle Nogo-Line"), this, SLOT(slotNogoItem()));
actionNogoRte->setCheckable(true);
// are related actions
// area related actions
actionEditArea = addAction(QIcon("://icons/32x32/AreaMove.png"),tr("Edit Area Points"), this, SLOT(slotEditArea()));
actionNogoArea = addAction(QIcon("://icons/32x32/NoGo.png"),tr("Toggle Nogo-Area"), this, SLOT(slotNogoItem()));
actionNogoArea->setCheckable(true);
......@@ -187,6 +189,9 @@ CGisListWks::CGisListWks(QWidget *parent)
QTimer::singleShot(saveEvery * 60000, this, SLOT(slotSaveWorkspace()));
}
if(cfg.value("Database/device support", true).toBool())
{
qDebug() << "Device support enabled";
#ifdef Q_OS_MAC
deviceWatcher = new CDeviceWatcherMac(this);
connect(deviceWatcher, &CDeviceWatcherMac::sigChanged, this, &CGisListWks::sigChanged);
......@@ -202,6 +207,7 @@ CGisListWks::CGisListWks(QWidget *parent)
#endif // Q_OS_WIN
#endif // Q_OS_MAC
}
}
CGisListWks::~CGisListWks()
{
......@@ -265,6 +271,13 @@ void CGisListWks::initDB()
"visible BOOLEAN DEFAULT TRUE,"
"data BLOB NOT NULL"
")", NO_CMD)
if(query.exec( "CREATE TABLE userfocus ( focus TEXT )"))
{
query.prepare( "INSERT INTO userfocus (focus) VALUES(:focus)");
query.bindValue(":focus", "");
QUERY_EXEC();
}
}
void CGisListWks::migrateDB(int version)
......@@ -280,6 +293,10 @@ void CGisListWks::migrateDB(int version)
{
migrateDB2to3();
}
if(version < 4)
{
migrateDB3to4();
}
// save the new version to the database
QSqlQuery query(db);
......@@ -318,6 +335,18 @@ void CGisListWks::migrateDB2to3()
QUERY_RUN("DROP TABLE tmp_workspace;", return )
}
void CGisListWks::migrateDB3to4()
{
QSqlQuery query(db);
if(query.exec( "CREATE TABLE userfocus ( focus TEXT )"))
{
query.prepare( "INSERT INTO userfocus (focus) VALUES(:focus)");
query.bindValue(":focus", "");
QUERY_EXEC();
}
}
void CGisListWks::setExternalMenu(QMenu * project)
{
menuNone = project;
......@@ -789,6 +818,10 @@ void CGisListWks::slotSaveWorkspace()
QUERY_EXEC(continue);
}
query.prepare( "UPDATE userfocus set focus=:focus");
query.bindValue(":focus", IGisProject::getUserFocus());
QUERY_EXEC();
if(saveEvery)
{
QTimer::singleShot(saveEvery * 60000, this, SLOT(slotSaveWorkspace()));
......@@ -938,6 +971,17 @@ void CGisListWks::slotLoadWorkspace()
CGisWorkspace::self().loadGisProject(filename);
}
QUERY_RUN("SELECT focus FROM userfocus",);
if(query.next())
{
QString key = query.value(0).toString();
IGisProject * project = getProjectByKey(key);
if(project != nullptr)
{
project->gainUserFocus(true);
}
}
emit sigChanged();
}
......@@ -953,6 +997,7 @@ void CGisListWks::showMenuProjectWks(const QPoint& p)
menu.addAction(actionSortByName);
menu.addSeparator();
menu.addAction(actionAutoSave);
menu.addAction(actionUserFocusPrj);
menu.addSeparator();
menu.addAction(actionSave);
menu.addAction(actionSaveAs);
......@@ -1150,6 +1195,7 @@ void CGisListWks::slotContextMenu(const QPoint& point)
actionSyncWksDev->setEnabled(IDevice::count());
actionSyncDB->setEnabled(project->getType() == IGisProject::eTypeDb);
actionAutoSave->setVisible(false);
actionUserFocusPrj->setVisible(false);
showMenuProjectWks(p);
}
return;
......@@ -1224,9 +1270,15 @@ void CGisListWks::slotContextMenu(const QPoint& point)
blockSorting = false;
bool hasUserFocus = project->hasUserFocus();
actionAutoSave->setVisible(true);
actionAutoSave->setEnabled(project->canSave());
actionAutoSave->setChecked(project->isAutoSave());
actionUserFocusPrj->setVisible(true);
actionUserFocusPrj->setChecked(hasUserFocus);
const QIcon& icon = hasUserFocus ? QIcon("://icons/32x32/Focus.png") : QIcon("://icons/32x32/UnFocus.png");
actionUserFocusPrj->setIcon(icon);
showMenuProjectWks(p);
}
}
......@@ -1470,6 +1522,27 @@ void CGisListWks::slotAutoSaveProject(bool on)
}
}
void CGisListWks::slotUserFocusPrj(bool yes)
{
CGisListWksEditLock lock(false, IGisItem::mutexItems);
const int N = topLevelItemCount();
for(int n = 0; n < N; n++)
{
IGisProject * project = dynamic_cast<IGisProject*>(topLevelItem(n));
if(project != nullptr)
{
project->gainUserFocus(false);
}
}
IGisProject * project = dynamic_cast<IGisProject*>(currentItem());
if(project != nullptr)
{
project->gainUserFocus(yes);
}
}
void CGisListWks::slotEditPrj()
{
CGisListWksEditLock lock(false, IGisItem::mutexItems);
......
......@@ -124,6 +124,7 @@ private slots:
void slotSymWpt();
void slotEleWptTrk();
void slotAutoSaveProject(bool on);
void slotUserFocusPrj(bool yes);
private:
void configDB();
......@@ -131,6 +132,7 @@ private:
void migrateDB(int version);
void migrateDB1to2();
void migrateDB2to3();
void migrateDB3to4();
void setVisibilityOnMap(bool visible);
QAction * addSortAction(QObject *parent, QActionGroup *actionGroup, const QString& icon, const QString& text, IGisProject::sorting_folder_e mode);
QAction * addAction(const QIcon& icon, const QString& name, QObject * parent, const char * slot);
......@@ -151,6 +153,7 @@ private:
QAction * actionSaveAs;
QAction * actionSaveAsStrict;
QAction * actionAutoSave;
QAction * actionUserFocusPrj;
QAction * actionCopyPrj;
QAction * actionEditPrj;
QAction * actionCloseProj;
......
......@@ -320,16 +320,20 @@ void CGisWorkspace::slotActivityTrkByKey(const QList<IGisItem::key_t>& keys, trk
}
}
IGisProject * CGisWorkspace::selectProject()
IGisProject * CGisWorkspace::selectProject(bool forceSelect)
{
QString key, name;
QString key = IGisProject::getUserFocus();
QString name;
IGisProject::type_e type = IGisProject::eTypeQms;
if(key.isEmpty() || forceSelect)
{
CSelectProjectDialog dlg(key, name, type, treeWks);
if(dlg.exec() == QDialog::Rejected)
{
return nullptr;
}
}
IGisProject *project = nullptr;
if(!key.isEmpty())
......@@ -687,7 +691,7 @@ void CGisWorkspace::copyItemByKey(const IGisItem::key_t &key)
return;
}
IGisProject *project = selectProject();
IGisProject *project = selectProject(true);
if(nullptr == project)
{
return;
......@@ -704,7 +708,7 @@ void CGisWorkspace::copyItemsByKey(const QList<IGisItem::key_t> &keys)
{
QMutexLocker lock(&IGisItem::mutexItems);
IGisProject * project = selectProject();
IGisProject * project = selectProject(true);
if(nullptr == project)
{
return;
......@@ -914,28 +918,17 @@ void CGisWorkspace::editWptRadius(const IGisItem::key_t &key)
}
}
void CGisWorkspace::addWptByPos(QPointF pt, const QString& label, const QString& desc) const
{
QString name = label;
QString icon;
if(!CGisItemWpt::getNewWptData(pt, icon, name))
void CGisWorkspace::addWptByPos(QPointF pt, const QString& name, const QString& desc) const
{
return;
}
QMutexLocker lock(&IGisItem::mutexItems);
IGisProject * project = CGisWorkspace::self().selectProject();
IGisProject * project = CGisWorkspace::self().selectProject(false);
if(nullptr == project)
{
return;
}
QMutexLocker lock(&IGisItem::mutexItems);
CGisItemWpt * wpt = new CGisItemWpt(pt, name, icon, project);
if(!desc.isEmpty())
{
wpt->setDescription(desc);
}
wpt->edit();
CGisItemWpt::newWpt(pt, name, desc, project);
}
void CGisWorkspace::focusTrkByKey(bool yes, const IGisItem::key_t& key)
......
......@@ -336,7 +336,7 @@ public:
@brief Add a new waypoint by Position
@param pt the position in [?]
*/
void addWptByPos(QPointF pt, const QString& label = QString::Null(), const QString& desc = QString::Null()) const;
void addWptByPos(QPointF pt, const QString& name = QString::Null(), const QString& desc = QString::Null()) const;
void toggleWptBubble(const IGisItem::key_t &key);
......@@ -415,7 +415,7 @@ public:
@return 0 if no project was selected.
*/
IGisProject * selectProject();
IGisProject * selectProject(bool forceSelect);
void postEventForWks(QEvent * event);
......
......@@ -533,6 +533,30 @@ void IGisItem::cutHistoryBefore()
}
}
void IGisItem::squashHistory()
{
if(history.events.size() < 2)
{
return;
}
history_event_t& first = history.events.first();
history_event_t& last = history.events.last();
last.time = first.time;
last.who = first.who;
last.icon = first.icon;
last.comment = first.comment;
history.histIdxCurrent = 0;
history.histIdxInitial = 0;
while(history.events.size() > 1)
{
history.events.pop_front();
}
}
bool IGisItem::isReadOnly() const
{
return !(flags & eFlagWriteAllowed) || isOnDevice();
......@@ -783,11 +807,7 @@ QString IGisItem::createText(bool isReadOnly, const QString& cmt, const QString&
if(!isReadOnly || !isEmpty)
{
str += toLink(isReadOnly, "description", tr("<h4>Description:</h4>"), key);
if(removeHtml(desc).simplified().isEmpty())
{
str += tr("<p>--- no description ---</p>");
}
else
if(!removeHtml(desc).simplified().isEmpty())
{
str += desc;
}
......@@ -797,11 +817,7 @@ QString IGisItem::createText(bool isReadOnly, const QString& cmt, const QString&
if(!isReadOnly || !isEmpty)
{
str += toLink(isReadOnly, "comment", tr("<h4>Comment:</h4>"), key);
if(isEmpty)
{
str += tr("<p>--- no comment ---</p>");
}
else
if(!isEmpty)
{
str += cmt;
}
......@@ -811,11 +827,7 @@ QString IGisItem::createText(bool isReadOnly, const QString& cmt, const QString&
if(!isReadOnly || !isEmpty)
{
str += toLink(isReadOnly, "links", tr("<h4>Links:</h4>"), key);
if(isEmpty)
{
str += tr("<p>--- no links ---</p>");
}
else
if(!isEmpty)
{
for(const link_t &link : links)
{
......@@ -993,7 +1005,7 @@ bool IGisItem::getNameAndProject(QString &name, IGisProject *&project, const QSt
return false;
}
project = CGisWorkspace::self().selectProject();
project = CGisWorkspace::self().selectProject(false);
return nullptr != project;
}
......
......@@ -478,6 +478,13 @@ public:
*/
void cutHistoryBefore();
/**
@brief Take data of the most recent entry and apply meta information of first one
All other entries are lost
*/
void squashHistory();
/**
@brief Create a clone of itself and pass back the pointer
......
......@@ -33,6 +33,7 @@ CSetupWorkspace::CSetupWorkspace(QWidget *parent)
spinSaveEvery->setValue(cfg.value("saveEvery",5).toInt());
checkDbUpdate->setChecked(cfg.value("listenUpdate", false).toBool());
linePort->setText(cfg.value("port", "34123").toString());
checkDeviceSupport->setChecked(cfg.value("device support", true).toBool());
cfg.endGroup();
connect(checkSaveOnExit, &QCheckBox::toggled, spinSaveEvery, &QSpinBox::setEnabled);
......@@ -50,6 +51,7 @@ void CSetupWorkspace::accept()
cfg.setValue("saveEvery", spinSaveEvery->value());
cfg.setValue("listenUpdate", checkDbUpdate->isChecked());
cfg.setValue("port", linePort->text());
cfg.setValue("device support", checkDeviceSupport->isChecked());
cfg.endGroup();
QMessageBox::information(this, tr("Setup database..."), tr("Changes will become active after an application's restart."), QMessageBox::Ok);
......
......@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>624</width>
<height>107</height>
<height>212</height>
</rect>
</property>
<property name="windowTitle">
......@@ -66,6 +66,78 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="spacing">
<number>3</number>
</property>
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="topMargin">
<number>3</number>
</property>
<item>
<widget class="QCheckBox" name="checkDeviceSupport">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>5</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="label">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Enable device support. When enabled the device will be automatically detected when plugged in. It's file structure will be parsed and all projects will be loaded and listed. Depending on the device QMapShack will add the necessary glue logic like to link pictures with waypoints, etc.</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
......