Browse Source

Merge pull request #5327 from dogmaphobic/renameTileSet

Allow renaming a tile set
QGC4.4
Gus Grubba 8 years ago committed by GitHub
parent
commit
c539aad9b0
  1. 20
      src/QtLocationPlugin/QGCMapEngineData.h
  2. 3
      src/QtLocationPlugin/QGCMapTileSet.h
  3. 19
      src/QtLocationPlugin/QGCTileCacheWorker.cpp
  4. 1
      src/QtLocationPlugin/QGCTileCacheWorker.h
  5. 23
      src/QtLocationPlugin/QMLControl/OfflineMap.qml
  6. 18
      src/QtLocationPlugin/QMLControl/QGCMapEngineManager.cc
  7. 1
      src/QtLocationPlugin/QMLControl/QGCMapEngineManager.h

20
src/QtLocationPlugin/QGCMapEngineData.h

@ -118,6 +118,7 @@ public:
taskGetTileDownloadList, taskGetTileDownloadList,
taskUpdateTileDownloadState, taskUpdateTileDownloadState,
taskDeleteTileSet, taskDeleteTileSet,
taskRenameTileSet,
taskPruneCache, taskPruneCache,
taskReset, taskReset,
taskExport, taskExport,
@ -326,6 +327,25 @@ private:
}; };
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
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
{ {
Q_OBJECT Q_OBJECT

3
src/QtLocationPlugin/QGCMapTileSet.h

@ -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:
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);

19
src/QtLocationPlugin/QGCTileCacheWorker.cpp

@ -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;
@ -617,6 +620,22 @@ QGCCacheWorker::_deleteTileSet(QGCMapTask* mtask)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void 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
QGCCacheWorker::_resetCacheDatabase(QGCMapTask* mtask) QGCCacheWorker::_resetCacheDatabase(QGCMapTask* mtask)
{ {
if(!_testTask(mtask)) { if(!_testTask(mtask)) {

1
src/QtLocationPlugin/QGCTileCacheWorker.h

@ -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);

23
src/QtLocationPlugin/QMLControl/OfflineMap.qml

@ -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 {
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()

18
src/QtLocationPlugin/QMLControl/QGCMapEngineManager.cc

@ -251,6 +251,24 @@ QGCMapEngineManager::deleteTileSet(QGCCachedTileSet* tileSet)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void 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
QGCMapEngineManager::_resetCompleted() QGCMapEngineManager::_resetCompleted()
{ {
//-- Reload sets //-- Reload sets

1
src/QtLocationPlugin/QMLControl/QGCMapEngineManager.h

@ -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 ();

Loading…
Cancel
Save