diff --git a/ground/src/plugins/importexport/importexport.pro b/ground/src/plugins/importexport/importexport.pro index 11d0934bd..a76b14b96 100644 --- a/ground/src/plugins/importexport/importexport.pro +++ b/ground/src/plugins/importexport/importexport.pro @@ -5,17 +5,20 @@ QT += svg include(../../openpilotgcsplugin.pri) include(importexport_dependencies.pri) HEADERS += importexportplugin.h \ - importexportgadgetwidget.h + importexportgadgetwidget.h \ + importexportdialog.h HEADERS += importexportgadget.h HEADERS += importexportgadgetfactory.h HEADERS += importexportgadgetconfiguration.h HEADERS += importexportgadgetoptionspage.h SOURCES += importexportplugin.cpp \ - importexportgadgetwidget.cpp + importexportgadgetwidget.cpp \ + importexportdialog.cpp SOURCES += importexportgadget.cpp SOURCES += importexportgadgetfactory.cpp SOURCES += importexportgadgetconfiguration.cpp SOURCES += importexportgadgetoptionspage.cpp OTHER_FILES += ImportExportGadget.pluginspec FORMS += importexportgadgetoptionspage.ui \ - importexportgadgetwidget.ui + importexportgadgetwidget.ui \ + importexportdialog.ui diff --git a/ground/src/plugins/importexport/importexportdialog.cpp b/ground/src/plugins/importexport/importexportdialog.cpp new file mode 100644 index 000000000..74efb81e1 --- /dev/null +++ b/ground/src/plugins/importexport/importexportdialog.cpp @@ -0,0 +1,30 @@ +#include "importexportdialog.h" +#include "ui_importexportdialog.h" + +ImportExportDialog::ImportExportDialog( ImportExportGadgetConfiguration *config, QWidget *parent) : + QDialog(parent), + ui(new Ui::ImportExportDialog) +{ + ui->setupUi(this); + ui->widget->loadConfiguration(config); + setWindowTitle(tr("Import Export Settings")); + + connect( ui->widget, SIGNAL(done()), this, SLOT(close())); +} + +ImportExportDialog::~ImportExportDialog() +{ + delete ui; +} + +void ImportExportDialog::changeEvent(QEvent *e) +{ + QDialog::changeEvent(e); + switch (e->type()) { + case QEvent::LanguageChange: + ui->retranslateUi(this); + break; + default: + break; + } +} diff --git a/ground/src/plugins/importexport/importexportdialog.h b/ground/src/plugins/importexport/importexportdialog.h new file mode 100644 index 000000000..569a93c1b --- /dev/null +++ b/ground/src/plugins/importexport/importexportdialog.h @@ -0,0 +1,26 @@ +#ifndef IMPORTEXPORTDIALOG_H +#define IMPORTEXPORTDIALOG_H + +#include +#include "importexportgadgetconfiguration.h" + +namespace Ui { + class ImportExportDialog; +} + +class ImportExportDialog : public QDialog +{ + Q_OBJECT + +public: + explicit ImportExportDialog( ImportExportGadgetConfiguration *config, QWidget *parent = 0); + ~ImportExportDialog(); + +protected: + void changeEvent(QEvent *e); + +private: + Ui::ImportExportDialog *ui; +}; + +#endif // IMPORTEXPORTDIALOG_H diff --git a/ground/src/plugins/importexport/importexportdialog.ui b/ground/src/plugins/importexport/importexportdialog.ui new file mode 100644 index 000000000..eca016fc4 --- /dev/null +++ b/ground/src/plugins/importexport/importexportdialog.ui @@ -0,0 +1,75 @@ + + + ImportExportDialog + + + + 0 + 0 + 400 + 300 + + + + Dialog + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel + + + + + + + + ImportExportGadgetWidget + QWidget +
importexportgadgetwidget.h
+ 1 +
+
+ + + + buttonBox + accepted() + ImportExportDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + ImportExportDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + +
diff --git a/ground/src/plugins/importexport/importexportgadget.cpp b/ground/src/plugins/importexport/importexportgadget.cpp index 624e0229a..d676ba782 100644 --- a/ground/src/plugins/importexport/importexportgadget.cpp +++ b/ground/src/plugins/importexport/importexportgadget.cpp @@ -49,8 +49,7 @@ ImportExportGadget::~ImportExportGadget() */ void ImportExportGadget::loadConfiguration(IUAVGadgetConfiguration* config) { - ImportExportGadgetConfiguration *m = qobject_cast(config); - m_widget->setDialFile(m->getDialFile()); + m_widget->loadConfiguration(qobject_cast(config)); } /** * @} diff --git a/ground/src/plugins/importexport/importexportgadgetconfiguration.h b/ground/src/plugins/importexport/importexportgadgetconfiguration.h index 5fd12e4e2..9c68f7ca4 100644 --- a/ground/src/plugins/importexport/importexportgadgetconfiguration.h +++ b/ground/src/plugins/importexport/importexportgadgetconfiguration.h @@ -47,7 +47,7 @@ public: } //get dial configuration functions - QString getDialFile() { + QString getDialFile() const{ return dialFile; } diff --git a/ground/src/plugins/importexport/importexportgadgetfactory.cpp b/ground/src/plugins/importexport/importexportgadgetfactory.cpp index 68b44ff85..338d1b15e 100644 --- a/ground/src/plugins/importexport/importexportgadgetfactory.cpp +++ b/ground/src/plugins/importexport/importexportgadgetfactory.cpp @@ -52,7 +52,8 @@ Core::IUAVGadget* ImportExportGadgetFactory::createGadget(QWidget *parent) IUAVGadgetConfiguration *ImportExportGadgetFactory::createConfiguration(const QByteArray &state) { - return new ImportExportGadgetConfiguration(QString("ImportExportGadget"), state); + lastConfig = new ImportExportGadgetConfiguration(QString("ImportExportGadget"), state); + return lastConfig; } IOptionsPage *ImportExportGadgetFactory::createOptionsPage(IUAVGadgetConfiguration *config) diff --git a/ground/src/plugins/importexport/importexportgadgetfactory.h b/ground/src/plugins/importexport/importexportgadgetfactory.h index f4c697cec..b93f3a836 100644 --- a/ground/src/plugins/importexport/importexportgadgetfactory.h +++ b/ground/src/plugins/importexport/importexportgadgetfactory.h @@ -28,7 +28,7 @@ #define IMPORTEXPORTGADGETFACTORY_H_ #include -#include "importexport_global.h" +#include "importexportgadgetconfiguration.h" namespace Core { @@ -44,10 +44,14 @@ class IMPORTEXPORT_EXPORT ImportExportGadgetFactory : public IUAVGadgetFactory public: ImportExportGadgetFactory(QObject *parent = 0); ~ImportExportGadgetFactory(); + ImportExportGadgetConfiguration *getLastConfig(){ return lastConfig;} Core::IUAVGadget *createGadget(QWidget *parent); IUAVGadgetConfiguration *createConfiguration(const QByteArray &state); IOptionsPage *createOptionsPage(IUAVGadgetConfiguration *config); + +private: + ImportExportGadgetConfiguration *lastConfig; }; #endif // IMPORTEXPORTGADGETFACTORY_H_ diff --git a/ground/src/plugins/importexport/importexportgadgetwidget.cpp b/ground/src/plugins/importexport/importexportgadgetwidget.cpp index 2995955ee..a7542c428 100644 --- a/ground/src/plugins/importexport/importexportgadgetwidget.cpp +++ b/ground/src/plugins/importexport/importexportgadgetwidget.cpp @@ -62,10 +62,12 @@ void ImportExportGadgetWidget::changeEvent(QEvent *e) break; } } - -void ImportExportGadgetWidget::setDialFile(const QString& filename) +void ImportExportGadgetWidget::loadConfiguration(const ImportExportGadgetConfiguration* config) { - ui->configFile->setText(filename); + if ( !config ) + return; + + ui->configFile->setText(config->getDialFile()); } void ImportExportGadgetWidget::on_exportButton_clicked() @@ -85,6 +87,7 @@ void ImportExportGadgetWidget::on_exportButton_clicked() msgBox.setText(tr("The settings have been exported to ") + QFileInfo(file).absoluteFilePath()); msgBox.exec(); + emit done(); } @@ -127,6 +130,7 @@ void ImportExportGadgetWidget::on_importButton_clicked() msgBox.setText(tr("The settings have been imported from ") + QFileInfo(file).absoluteFilePath() + tr(". Restart the application.")); msgBox.exec(); + emit done(); } void ImportExportGadgetWidget::importConfiguration(const QString& fileName) @@ -143,12 +147,12 @@ void ImportExportGadgetWidget::importConfiguration(const QString& fileName) Core::ICore::instance()->readMainSettings(&qs); } - qDebug() << "Import ended"; } void ImportExportGadgetWidget::on_helpButton_clicked() { + qDebug() << "Show Help"; QDesktopServices::openUrl(QUrl("http://wiki.openpilot.org/Import_Export_plugin")); } /** diff --git a/ground/src/plugins/importexport/importexportgadgetwidget.h b/ground/src/plugins/importexport/importexportgadgetwidget.h index 7cbf454d1..776953f7c 100644 --- a/ground/src/plugins/importexport/importexportgadgetwidget.h +++ b/ground/src/plugins/importexport/importexportgadgetwidget.h @@ -13,7 +13,7 @@ #include #include -#include "importexport_global.h" +#include "importexportgadgetconfiguration.h" namespace Ui { @@ -27,7 +27,10 @@ public: ImportExportGadgetWidget(QWidget *parent = 0); ~ImportExportGadgetWidget(); - void setDialFile(const QString& filename); + void loadConfiguration(const ImportExportGadgetConfiguration* config); + +signals: + void done(); protected: void changeEvent(QEvent *e); diff --git a/ground/src/plugins/importexport/importexportplugin.cpp b/ground/src/plugins/importexport/importexportplugin.cpp index b2162ce56..fdd0d3329 100644 --- a/ground/src/plugins/importexport/importexportplugin.cpp +++ b/ground/src/plugins/importexport/importexportplugin.cpp @@ -29,11 +29,17 @@ #include "importexportplugin.h" #include "importexportgadgetfactory.h" +#include "importexportdialog.h" #include #include #include #include +#include +#include +#include +#include + ImportExportPlugin::ImportExportPlugin() { @@ -52,9 +58,31 @@ bool ImportExportPlugin::initialize(const QStringList& args, QString *errMsg) mf = new ImportExportGadgetFactory(this); addAutoReleasedObject(mf); + // Add Menu entry + Core::ActionManager* am = Core::ICore::instance()->actionManager(); + Core::ActionContainer* ac = am->actionContainer(Core::Constants::M_FILE); + + Core::Command* cmd = am->registerAction(new QAction(this), + "ImportExportPlugin.ImportExport", + QList() << + Core::Constants::C_GLOBAL_ID); + cmd->setDefaultKeySequence(QKeySequence("Ctrl+I")); + cmd->action()->setText("Import/Export..."); + + ac->menu()->addSeparator(); + ac->appendGroup("ImportExport"); + ac->addAction(cmd, "ImportExport"); + + connect(cmd->action(), SIGNAL(triggered(bool)), this, SLOT(importExport())); + return true; } +void ImportExportPlugin::importExport() +{ + ImportExportDialog(mf->getLastConfig()).exec(); +} + void ImportExportPlugin::extensionsInitialized() { // Do nothing diff --git a/ground/src/plugins/importexport/importexportplugin.h b/ground/src/plugins/importexport/importexportplugin.h index ec6529e22..91b3ed901 100644 --- a/ground/src/plugins/importexport/importexportplugin.h +++ b/ground/src/plugins/importexport/importexportplugin.h @@ -34,6 +34,8 @@ class ImportExportGadgetFactory; class IMPORTEXPORT_EXPORT ImportExportPlugin : public ExtensionSystem::IPlugin { + Q_OBJECT + public: ImportExportPlugin(); ~ImportExportPlugin(); @@ -43,6 +45,10 @@ public: void shutdown(); private: ImportExportGadgetFactory *mf; + +private slots: + void importExport(); + }; #endif /* IMPORTEXPORTPLUGIN_H_ */ /**