Commit c539aad9 authored by Gus Grubba's avatar Gus Grubba Committed by GitHub

Merge pull request #5327 from dogmaphobic/renameTileSet

Allow renaming a tile set
parents 97bbb8d2 eacffcd0
...@@ -118,6 +118,7 @@ public: ...@@ -118,6 +118,7 @@ public:
taskGetTileDownloadList, taskGetTileDownloadList,
taskUpdateTileDownloadState, taskUpdateTileDownloadState,
taskDeleteTileSet, taskDeleteTileSet,
taskRenameTileSet,
taskPruneCache, taskPruneCache,
taskReset, taskReset,
taskExport, taskExport,
...@@ -325,6 +326,25 @@ private: ...@@ -325,6 +326,25 @@ private:
qulonglong _setID; qulonglong _setID;
}; };
//-----------------------------------------------------------------------------
class QGCRenameTileSetTask : public QGCMapTask
{
Q_OBJECT
public:
QGCRenameTileSetTask(qulonglong setID, QString newName)
: QGCMapTask(QGCMapTask::taskRenameTileSet)
, _setID(setID)
, _newName(newName)
{}
qulonglong setID () { return _setID; }
QString newName () { return _newName; }
private:
qulonglong _setID;
QString _newName;
};
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
class QGCPruneCacheTask : public QGCMapTask class QGCPruneCacheTask : public QGCMapTask
{ {
......
...@@ -42,7 +42,7 @@ public: ...@@ -42,7 +42,7 @@ public:
QGCCachedTileSet (const QString& name); QGCCachedTileSet (const QString& name);
~QGCCachedTileSet (); ~QGCCachedTileSet ();
Q_PROPERTY(QString name READ name CONSTANT) Q_PROPERTY(QString name READ name NOTIFY nameChanged)
Q_PROPERTY(QString mapTypeStr READ mapTypeStr CONSTANT) Q_PROPERTY(QString mapTypeStr READ mapTypeStr CONSTANT)
Q_PROPERTY(double topleftLon READ topleftLon CONSTANT) Q_PROPERTY(double topleftLon READ topleftLon CONSTANT)
Q_PROPERTY(double topleftLat READ topleftLat CONSTANT) Q_PROPERTY(double topleftLat READ topleftLat CONSTANT)
...@@ -147,6 +147,7 @@ signals: ...@@ -147,6 +147,7 @@ signals:
void completeChanged (); void completeChanged ();
void errorCountChanged (); void errorCountChanged ();
void selectedChanged (); void selectedChanged ();
void nameChanged ();
private slots: private slots:
void _tileListFetched (QList<QGCTile*> tiles); void _tileListFetched (QList<QGCTile*> tiles);
......
...@@ -148,6 +148,9 @@ QGCCacheWorker::run() ...@@ -148,6 +148,9 @@ QGCCacheWorker::run()
case QGCMapTask::taskDeleteTileSet: case QGCMapTask::taskDeleteTileSet:
_deleteTileSet(task); _deleteTileSet(task);
break; break;
case QGCMapTask::taskRenameTileSet:
_renameTileSet(task);
break;
case QGCMapTask::taskPruneCache: case QGCMapTask::taskPruneCache:
_pruneCache(task); _pruneCache(task);
break; break;
...@@ -615,6 +618,22 @@ QGCCacheWorker::_deleteTileSet(QGCMapTask* mtask) ...@@ -615,6 +618,22 @@ QGCCacheWorker::_deleteTileSet(QGCMapTask* mtask)
task->setTileSetDeleted(); task->setTileSetDeleted();
} }
//-----------------------------------------------------------------------------
void
QGCCacheWorker::_renameTileSet(QGCMapTask* mtask)
{
if(!_testTask(mtask)) {
return;
}
QGCRenameTileSetTask* task = static_cast<QGCRenameTileSetTask*>(mtask);
QSqlQuery query(*_db);
QString s;
s = QString("UPDATE TileSets SET name = \"%1\" WHERE setID = %2").arg(task->newName()).arg(task->setID());
if(!query.exec(s)) {
task->setError("Error renaming tile set");
}
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void void
QGCCacheWorker::_resetCacheDatabase(QGCMapTask* mtask) QGCCacheWorker::_resetCacheDatabase(QGCMapTask* mtask)
......
...@@ -57,6 +57,7 @@ private: ...@@ -57,6 +57,7 @@ private:
void _getTileDownloadList (QGCMapTask* mtask); void _getTileDownloadList (QGCMapTask* mtask);
void _updateTileDownloadState(QGCMapTask* mtask); void _updateTileDownloadState(QGCMapTask* mtask);
void _deleteTileSet (QGCMapTask* mtask); void _deleteTileSet (QGCMapTask* mtask);
void _renameTileSet (QGCMapTask* mtask);
void _resetCacheDatabase (QGCMapTask* mtask); void _resetCacheDatabase (QGCMapTask* mtask);
void _pruneCache (QGCMapTask* mtask); void _pruneCache (QGCMapTask* mtask);
void _exportSets (QGCMapTask* mtask); void _exportSets (QGCMapTask* mtask);
......
...@@ -405,6 +405,14 @@ QGCView { ...@@ -405,6 +405,14 @@ QGCView {
text: offlineMapView._currentSelection ? offlineMapView._currentSelection.name : "" text: offlineMapView._currentSelection ? offlineMapView._currentSelection.name : ""
font.pointSize: _saveRealEstate ? ScreenTools.defaultFontPointSize : ScreenTools.mediumFontPointSize font.pointSize: _saveRealEstate ? ScreenTools.defaultFontPointSize : ScreenTools.mediumFontPointSize
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
visible: _defaultSet
}
QGCTextField {
id: editSetName
anchors.left: parent.left
anchors.right: parent.right
visible: !_defaultSet
text: offlineMapView._currentSelection ? offlineMapView._currentSelection.name : ""
} }
QGCLabel { QGCLabel {
anchors.left: parent.left anchors.left: parent.left
...@@ -500,7 +508,20 @@ QGCView { ...@@ -500,7 +508,20 @@ QGCView {
onClicked: showDialog(deleteConfirmationDialogComponent, qsTr("Confirm Delete"), qgcView.showDialogDefaultWidth, StandardButton.Yes | StandardButton.No) onClicked: showDialog(deleteConfirmationDialogComponent, qsTr("Confirm Delete"), qgcView.showDialogDefaultWidth, StandardButton.Yes | StandardButton.No)
} }
QGCButton { QGCButton {
text: qsTr("Close") text: qsTr("Ok")
width: ScreenTools.defaultFontPixelWidth * (infoView._extraButton ? 6 : 10)
visible: !_defaultSet
enabled: editSetName.text !== ""
onClicked: {
if(editSetName.text !== _currentSelection.name) {
QGroundControl.mapEngineManager.renameTileSet(_currentSelection, editSetName.text)
}
leaveInfoView()
showList()
}
}
QGCButton {
text: _defaultSet ? qsTr("Close") : qsTr("Cancel")
width: ScreenTools.defaultFontPixelWidth * (infoView._extraButton ? 6 : 10) width: ScreenTools.defaultFontPixelWidth * (infoView._extraButton ? 6 : 10)
onClicked: { onClicked: {
leaveInfoView() leaveInfoView()
......
...@@ -249,6 +249,24 @@ QGCMapEngineManager::deleteTileSet(QGCCachedTileSet* tileSet) ...@@ -249,6 +249,24 @@ QGCMapEngineManager::deleteTileSet(QGCCachedTileSet* tileSet)
} }
} }
//-----------------------------------------------------------------------------
void
QGCMapEngineManager::renameTileSet(QGCCachedTileSet* tileSet, QString newName)
{
//-- Name must be unique
int idx = 1;
QString name = newName;
while(findName(name)) {
name = QString("%1 (%2)").arg(newName).arg(idx++);
}
qCDebug(QGCMapEngineManagerLog) << "Renaming tile set " << tileSet->name() << "to" << name;
tileSet->setName(name);
QGCRenameTileSetTask* task = new QGCRenameTileSetTask(tileSet->setID(), name);
connect(task, &QGCMapTask::error, this, &QGCMapEngineManager::taskError);
getQGCMapEngine()->addTask(task);
emit tileSet->nameChanged();
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void void
QGCMapEngineManager::_resetCompleted() QGCMapEngineManager::_resetCompleted()
......
...@@ -66,6 +66,7 @@ public: ...@@ -66,6 +66,7 @@ public:
Q_INVOKABLE void saveSetting (const QString& key, const QString& value); Q_INVOKABLE void saveSetting (const QString& key, const QString& value);
Q_INVOKABLE QString loadSetting (const QString& key, const QString& defaultValue); Q_INVOKABLE QString loadSetting (const QString& key, const QString& defaultValue);
Q_INVOKABLE void deleteTileSet (QGCCachedTileSet* tileSet); Q_INVOKABLE void deleteTileSet (QGCCachedTileSet* tileSet);
Q_INVOKABLE void renameTileSet (QGCCachedTileSet* tileSet, QString newName);
Q_INVOKABLE QString getUniqueName (); Q_INVOKABLE QString getUniqueName ();
Q_INVOKABLE bool findName (const QString& name); Q_INVOKABLE bool findName (const QString& name);
Q_INVOKABLE void selectAll (); Q_INVOKABLE void selectAll ();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment