diff --git a/ground/openpilotgcs/src/plugins/opmap/opmapgadgetfactory.cpp b/ground/openpilotgcs/src/plugins/opmap/opmapgadgetfactory.cpp index c8c9e29cf..85a7a3ed2 100644 --- a/ground/openpilotgcs/src/plugins/opmap/opmapgadgetfactory.cpp +++ b/ground/openpilotgcs/src/plugins/opmap/opmapgadgetfactory.cpp @@ -1,58 +1,65 @@ -/** - ****************************************************************************** - * - * @file opmapgadgetfactory.cpp - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @addtogroup GCSPlugins GCS Plugins - * @{ - * @addtogroup OPMapPlugin OpenPilot Map Plugin - * @{ - * @brief The OpenPilot Map plugin - *****************************************************************************/ -/* - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#include "opmapgadgetfactory.h" -#include "opmapgadgetwidget.h" -#include "opmapgadget.h" -#include "opmapgadgetconfiguration.h" -#include "opmapgadgetoptionspage.h" -#include - -OPMapGadgetFactory::OPMapGadgetFactory(QObject *parent) : - IUAVGadgetFactory(QString("OPMapGadget"), tr("OPMap Gadget"), parent) -{ -} - -OPMapGadgetFactory::~OPMapGadgetFactory() -{ -} - -Core::IUAVGadget * OPMapGadgetFactory::createGadget(QWidget *parent) -{ - OPMapGadgetWidget *gadgetWidget = new OPMapGadgetWidget(parent); - return new OPMapGadget(QString("OPMapGadget"), gadgetWidget, parent); -} - -IUAVGadgetConfiguration *OPMapGadgetFactory::createConfiguration(QSettings* qSettings) -{ - return new OPMapGadgetConfiguration(QString("OPMapGadget"), qSettings); -} - -IOptionsPage * OPMapGadgetFactory::createOptionsPage(IUAVGadgetConfiguration *config) -{ - return new OPMapGadgetOptionsPage(qobject_cast(config)); -} - +/** + ****************************************************************************** + * + * @file opmapgadgetfactory.cpp + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. + * @addtogroup GCSPlugins GCS Plugins + * @{ + * @addtogroup OPMapPlugin OpenPilot Map Plugin + * @{ + * @brief The OpenPilot Map plugin + *****************************************************************************/ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#include "opmapgadgetfactory.h" +//#include "opmapgadgetwidget.h" +#include "opmapgadget.h" +#include "opmapgadgetconfiguration.h" +#include "opmapgadgetoptionspage.h" +#include + +OPMapGadgetFactory::OPMapGadgetFactory(QObject *parent) : + IUAVGadgetFactory(QString("OPMapGadget"), tr("OPMap Gadget"), parent), + gadgetWidget(NULL) +{ +} + +OPMapGadgetFactory::~OPMapGadgetFactory() +{ + if (gadgetWidget) + { + delete gadgetWidget; + gadgetWidget = NULL; + } +} + +Core::IUAVGadget * OPMapGadgetFactory::createGadget(QWidget *parent) +{ +// OPMapGadgetWidget *gadgetWidget = new OPMapGadgetWidget(parent); + gadgetWidget = new OPMapGadgetWidget(parent); + return new OPMapGadget(QString("OPMapGadget"), gadgetWidget, parent); +} + +IUAVGadgetConfiguration *OPMapGadgetFactory::createConfiguration(QSettings* qSettings) +{ + return new OPMapGadgetConfiguration(QString("OPMapGadget"), qSettings); +} + +IOptionsPage * OPMapGadgetFactory::createOptionsPage(IUAVGadgetConfiguration *config) +{ + return new OPMapGadgetOptionsPage(qobject_cast(config)); +} + diff --git a/ground/openpilotgcs/src/plugins/opmap/opmapgadgetfactory.h b/ground/openpilotgcs/src/plugins/opmap/opmapgadgetfactory.h index 07bb24e1f..c01604231 100644 --- a/ground/openpilotgcs/src/plugins/opmap/opmapgadgetfactory.h +++ b/ground/openpilotgcs/src/plugins/opmap/opmapgadgetfactory.h @@ -1,52 +1,58 @@ -/** - ****************************************************************************** - * - * @file opmapgadgetfactory.h - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @addtogroup GCSPlugins GCS Plugins - * @{ - * @addtogroup OPMapPlugin OpenPilot Map Plugin - * @{ - * @brief The OpenPilot Map plugin - *****************************************************************************/ -/* - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OPAMP_GADGETFACTORY_H_ -#define OPMAP_GADGETFACTORY_H_ - -#include - -namespace Core { -class IUAVGadget; -class IUAVGadgetFactory; -} - -using namespace Core; - -class OPMapGadgetFactory : public Core::IUAVGadgetFactory -{ - Q_OBJECT -public: - OPMapGadgetFactory(QObject *parent = 0); - ~OPMapGadgetFactory(); - - Core::IUAVGadget *createGadget(QWidget *parent); - IUAVGadgetConfiguration *createConfiguration(QSettings* qSettings); - IOptionsPage *createOptionsPage(IUAVGadgetConfiguration *config); -}; - -#endif // OPMAP_GADGETFACTORY_H_ +/** + ****************************************************************************** + * + * @file opmapgadgetfactory.h + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. + * @addtogroup GCSPlugins GCS Plugins + * @{ + * @addtogroup OPMapPlugin OpenPilot Map Plugin + * @{ + * @brief The OpenPilot Map plugin + *****************************************************************************/ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OPAMP_GADGETFACTORY_H_ +#define OPMAP_GADGETFACTORY_H_ + +#include + +#include "opmapgadgetwidget.h" + +namespace Core { + class IUAVGadget; + class IUAVGadgetFactory; +} + +using namespace Core; + +class OPMapGadgetFactory : public Core::IUAVGadgetFactory +{ + Q_OBJECT +public: + OPMapGadgetFactory(QObject *parent = 0); + ~OPMapGadgetFactory(); + + Core::IUAVGadget *createGadget(QWidget *parent); + IUAVGadgetConfiguration *createConfiguration(QSettings* qSettings); + IOptionsPage *createOptionsPage(IUAVGadgetConfiguration *config); + +protected: + OPMapGadgetWidget *gadgetWidget; + +}; + +#endif // OPMAP_GADGETFACTORY_H_ diff --git a/ground/openpilotgcs/src/plugins/opmap/opmapgadgetwidget.cpp b/ground/openpilotgcs/src/plugins/opmap/opmapgadgetwidget.cpp index c32bfe8c1..e49009443 100644 --- a/ground/openpilotgcs/src/plugins/opmap/opmapgadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/opmap/opmapgadgetwidget.cpp @@ -347,6 +347,13 @@ OPMapGadgetWidget::OPMapGadgetWidget(QWidget *parent) : QWidget(parent) // destructor OPMapGadgetWidget::~OPMapGadgetWidget() { + if (m_map) + { + disconnect(m_map, 0, 0, 0); + + m_map->SetShowHome(false); + m_map->SetShowUAV(false); + } // this destructor doesn't appear to be called at shutdown??? @@ -373,8 +380,7 @@ OPMapGadgetWidget::~OPMapGadgetWidget() if (m_zoom_slider_widget) delete m_zoom_slider_widget; if (m_statusbar_widget) delete m_statusbar_widget; - if (m_map) delete m_map; - if (m_widget) delete m_widget; + if (m_map) delete m_map; } // *************************************************************************************