diff --git a/ground/openpilotgcs/src/plugins/uavobjectutil/uavobjectutilmanager.cpp b/ground/openpilotgcs/src/plugins/uavobjectutil/uavobjectutilmanager.cpp index cad88b25c..029f9f77f 100644 --- a/ground/openpilotgcs/src/plugins/uavobjectutil/uavobjectutilmanager.cpp +++ b/ground/openpilotgcs/src/plugins/uavobjectutil/uavobjectutilmanager.cpp @@ -172,6 +172,7 @@ void UAVObjectUtilManager::objectPersistenceOperationFailed() obj->disconnect(this); queue.dequeue(); // We can now remove the object, it failed anyway. saveState = IDLE; + emit saveCompleted(obj->getField("ObjectID")->getValue().toInt(), false); saveNextObject(); } } @@ -199,6 +200,7 @@ void UAVObjectUtilManager::objectPersistenceUpdated(UAVObject * obj) obj->disconnect(this); queue.dequeue(); // We can now remove the object, it's done. saveState = IDLE; + emit saveCompleted(obj->getField("ObjectID")->getValue().toInt(), true); saveNextObject(); } } diff --git a/ground/openpilotgcs/src/plugins/uavobjectutil/uavobjectutilmanager.h b/ground/openpilotgcs/src/plugins/uavobjectutil/uavobjectutilmanager.h index a9cf6d5fb..de61068ca 100644 --- a/ground/openpilotgcs/src/plugins/uavobjectutil/uavobjectutilmanager.h +++ b/ground/openpilotgcs/src/plugins/uavobjectutil/uavobjectutilmanager.h @@ -67,6 +67,8 @@ public: UAVObjectManager* getObjectManager(); void saveObjectToSD(UAVObject *obj); +signals: + void saveCompleted(int objectID, bool status); private: QMutex *mutex; diff --git a/ground/openpilotgcs/src/plugins/uavsettingsimportexport/importsummary.cpp b/ground/openpilotgcs/src/plugins/uavsettingsimportexport/importsummary.cpp index 0d007bd17..f9d96bf09 100644 --- a/ground/openpilotgcs/src/plugins/uavsettingsimportexport/importsummary.cpp +++ b/ground/openpilotgcs/src/plugins/uavsettingsimportexport/importsummary.cpp @@ -84,6 +84,7 @@ void ImportSummaryDialog::doTheSaving() ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); UAVObjectManager *objManager = pm->getObject(); UAVObjectUtilManager *utilManager = pm->getObject(); + connect(utilManager, SIGNAL(saveCompleted(int,bool)), this, SLOT(updateSaveCompletion())); for(int i=0; i < ui->importSummaryList->rowCount(); i++) { QString uavObjectName = ui->importSummaryList->item(i,1)->text(); @@ -91,12 +92,17 @@ void ImportSummaryDialog::doTheSaving() if (box->isChecked()) { UAVObject* obj = objManager->getObject(uavObjectName); utilManager->saveObjectToSD(obj); - ui->progressBar->setValue(i); this->repaint(); } } } + +void ImportSummaryDialog::updateSaveCompletion() +{ + ui->progressBar->setValue(ui->progressBar->value()+1); +} + void ImportSummaryDialog::changeEvent(QEvent *e) { QDialog::changeEvent(e); diff --git a/ground/openpilotgcs/src/plugins/uavsettingsimportexport/importsummary.h b/ground/openpilotgcs/src/plugins/uavsettingsimportexport/importsummary.h index 391ff0ff6..defc824b1 100644 --- a/ground/openpilotgcs/src/plugins/uavsettingsimportexport/importsummary.h +++ b/ground/openpilotgcs/src/plugins/uavsettingsimportexport/importsummary.h @@ -57,8 +57,10 @@ protected: private: Ui::ImportSummaryDialog *ui; -private slots: +public slots: + void updateSaveCompletion(); +private slots: void doTheSaving(); };