//
//     Copyright 2009 Simon Edwards

//                 Generated by twine

// This file is part of PyKDE4.

// PyKDE4 is free software; you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation; either version 2.1 of
// the License, or (at your option) any later version.

// PyKDE4 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, see <http://www.gnu.org/licenses/>.


%ModuleHeaderCode
//ctscc
#include <AbstractDataPlugin.h>
#include <AbstractDataPluginItem.h>
#include <AbstractDataPluginModel.h>
#include <AbstractFloatItem.h>
#include <AbstractWorkerThread.h>
#include <routing/AlternativeRoutesModel.h>
#include <AutoNavigation.h>
#include <BookmarkManager.h>
#include <CurrentLocationWidget.h>
#include <DownloadRegion.h>
#include <DownloadRegionDialog.h>
#include <ElevationModel.h>
#include <FileViewWidget.h>
#include <GeoDataTreeModel.h>
#include <GeoGraphicsScene.h>
#include <LatLonBoxWidget.h>
#include <LatLonEdit.h>
#include <LegendWidget.h>
#include <MapThemeDownloadDialog.h>
#include <MapThemeManager.h>
#include <MapViewWidget.h>
#include <MapWizard.h>
#include <MarbleAboutDialog.h>
#include <MarbleControlBox.h>
#include <MarbleMap.h>
#include <MarbleModel.h>
#include <MarbleNavigator.h>
#include <MarbleRunnerManager.h>
#include <MarbleWidget.h>
#include <NavigationWidget.h>
#include <ParseRunnerPlugin.h>
#include <ParsingRunner.h>
#include <PluginAboutDialog.h>
#include <PositionTracking.h>
#include <QtMarbleConfigDialog.h>
#include <RenderPlugin.h>
#include <ReverseGeocodingRunner.h>
#include <ReverseGeocodingRunnerPlugin.h>
#include <routing/RouteRequest.h>
#include <routing/RoutingModel.h>
#include <RoutingRunner.h>
#include <RoutingRunnerPlugin.h>
#include <SearchRunner.h>
#include <SearchRunnerPlugin.h>
#include <SunLocator.h>
#include <TileCreator.h>
#include <TileLevelRangeWidget.h>
#include <TinyWebBrowser.h>
#include <qobject.h>
%End

namespace Marble
{

class AbstractDataPluginItem : QObject /Abstract/
{
%TypeHeaderCode
#include <AbstractDataPluginItem.h>
%End

public:
                            AbstractDataPluginItem (QObject* parent /TransferThis/ = 0);
    QString                 target ();
    void                    setTarget (const QString& target);
    QString                 id () const;
    void                    setId (const QString& id);
    qreal                   addedAngularResolution () const;
    void                    setAddedAngularResolution (qreal resolution);
    virtual QAction*        action ()=0;
    virtual QString         itemType () const=0;
    virtual void            addDownloadedFile (const QString& url, const QString& type)=0;
//ig    virtual bool            operator < (const Marble::AbstractDataPluginItem* other) const;


//  Subclasses of QObject

%ConvertToSubClassCode
    // CTSCC for subclasses of 'QObject'
    sipType = NULL;

    if (dynamic_cast<Marble::AbstractDataPluginItem*>(sipCpp))
        sipType = sipType_Marble_AbstractDataPluginItem;
    else if (dynamic_cast<Marble::AbstractDataPluginModel*>(sipCpp))
        sipType = sipType_Marble_AbstractDataPluginModel;
    else if (dynamic_cast<Marble::AutoNavigation*>(sipCpp))
        sipType = sipType_Marble_AutoNavigation;
    else if (dynamic_cast<Marble::BookmarkManager*>(sipCpp))
        sipType = sipType_Marble_BookmarkManager;
    else if (dynamic_cast<Marble::DownloadRegion*>(sipCpp))
        sipType = sipType_Marble_DownloadRegion;
    else if (dynamic_cast<Marble::ElevationModel*>(sipCpp))
        sipType = sipType_Marble_ElevationModel;
    else if (dynamic_cast<Marble::GeoGraphicsScene*>(sipCpp))
        sipType = sipType_Marble_GeoGraphicsScene;
    else if (dynamic_cast<Marble::MapThemeManager*>(sipCpp))
        sipType = sipType_Marble_MapThemeManager;
    else if (dynamic_cast<Marble::MarbleMap*>(sipCpp))
        sipType = sipType_Marble_MarbleMap;
    else if (dynamic_cast<Marble::MarbleModel*>(sipCpp))
        sipType = sipType_Marble_MarbleModel;
    else if (dynamic_cast<Marble::MarbleRunnerManager*>(sipCpp))
        sipType = sipType_Marble_MarbleRunnerManager;
    else if (dynamic_cast<Marble::ParseRunnerPlugin*>(sipCpp))
        sipType = sipType_Marble_ParseRunnerPlugin;
    else if (dynamic_cast<Marble::ParsingRunner*>(sipCpp))
        sipType = sipType_Marble_ParsingRunner;
    else if (dynamic_cast<Marble::PositionTracking*>(sipCpp))
        sipType = sipType_Marble_PositionTracking;
    else if (dynamic_cast<Marble::RenderPlugin*>(sipCpp))
        {
        sipType = sipType_Marble_RenderPlugin;
        if (dynamic_cast<Marble::AbstractDataPlugin*>(sipCpp))
            sipType = sipType_Marble_AbstractDataPlugin;
        else if (dynamic_cast<Marble::AbstractFloatItem*>(sipCpp))
            sipType = sipType_Marble_AbstractFloatItem;
        }
    else if (dynamic_cast<Marble::ReverseGeocodingRunner*>(sipCpp))
        sipType = sipType_Marble_ReverseGeocodingRunner;
    else if (dynamic_cast<Marble::ReverseGeocodingRunnerPlugin*>(sipCpp))
        sipType = sipType_Marble_ReverseGeocodingRunnerPlugin;
    else if (dynamic_cast<Marble::RouteRequest*>(sipCpp))
        sipType = sipType_Marble_RouteRequest;
    else if (dynamic_cast<Marble::RoutingRunner*>(sipCpp))
        sipType = sipType_Marble_RoutingRunner;
    else if (dynamic_cast<Marble::RoutingRunnerPlugin*>(sipCpp))
        sipType = sipType_Marble_RoutingRunnerPlugin;
    else if (dynamic_cast<Marble::SearchRunner*>(sipCpp))
        sipType = sipType_Marble_SearchRunner;
    else if (dynamic_cast<Marble::SearchRunnerPlugin*>(sipCpp))
        sipType = sipType_Marble_SearchRunnerPlugin;
    else if (dynamic_cast<Marble::SunLocator*>(sipCpp))
        sipType = sipType_Marble_SunLocator;
    else if (dynamic_cast<Marble::GeoDataTreeModel*>(sipCpp))
        sipType = sipType_Marble_GeoDataTreeModel;
    else if (dynamic_cast<Marble::AlternativeRoutesModel*>(sipCpp))
        sipType = sipType_Marble_AlternativeRoutesModel;
    else if (dynamic_cast<Marble::RoutingModel*>(sipCpp))
        sipType = sipType_Marble_RoutingModel;
    else if (dynamic_cast<Marble::AbstractWorkerThread*>(sipCpp))
        sipType = sipType_Marble_AbstractWorkerThread;
    else if (dynamic_cast<Marble::TileCreator*>(sipCpp))
        sipType = sipType_Marble_TileCreator;
    else if (dynamic_cast<Marble::CurrentLocationWidget*>(sipCpp))
        sipType = sipType_Marble_CurrentLocationWidget;
    else if (dynamic_cast<Marble::FileViewWidget*>(sipCpp))
        sipType = sipType_Marble_FileViewWidget;
    else if (dynamic_cast<Marble::LatLonBoxWidget*>(sipCpp))
        sipType = sipType_Marble_LatLonBoxWidget;
    else if (dynamic_cast<Marble::LatLonEdit*>(sipCpp))
        sipType = sipType_Marble_LatLonEdit;
    else if (dynamic_cast<Marble::LegendWidget*>(sipCpp))
        sipType = sipType_Marble_LegendWidget;
    else if (dynamic_cast<Marble::MapViewWidget*>(sipCpp))
        sipType = sipType_Marble_MapViewWidget;
    else if (dynamic_cast<Marble::MarbleControlBox*>(sipCpp))
        sipType = sipType_Marble_MarbleControlBox;
    else if (dynamic_cast<Marble::MarbleNavigator*>(sipCpp))
        sipType = sipType_Marble_MarbleNavigator;
    else if (dynamic_cast<Marble::MarbleWidget*>(sipCpp))
        sipType = sipType_Marble_MarbleWidget;
    else if (dynamic_cast<Marble::NavigationWidget*>(sipCpp))
        sipType = sipType_Marble_NavigationWidget;
    else if (dynamic_cast<Marble::TileLevelRangeWidget*>(sipCpp))
        sipType = sipType_Marble_TileLevelRangeWidget;
    else if (dynamic_cast<Marble::DownloadRegionDialog*>(sipCpp))
        sipType = sipType_Marble_DownloadRegionDialog;
    else if (dynamic_cast<Marble::MapThemeDownloadDialog*>(sipCpp))
        sipType = sipType_Marble_MapThemeDownloadDialog;
    else if (dynamic_cast<Marble::MarbleAboutDialog*>(sipCpp))
        sipType = sipType_Marble_MarbleAboutDialog;
    else if (dynamic_cast<Marble::PluginAboutDialog*>(sipCpp))
        sipType = sipType_Marble_PluginAboutDialog;
    else if (dynamic_cast<Marble::QtMarbleConfigDialog*>(sipCpp))
        sipType = sipType_Marble_QtMarbleConfigDialog;
    else if (dynamic_cast<Marble::MapWizard*>(sipCpp))
        sipType = sipType_Marble_MapWizard;
    else if (dynamic_cast<Marble::TinyWebBrowser*>(sipCpp))
        sipType = sipType_Marble_TinyWebBrowser;
%End

    virtual ~AbstractDataPluginItem ();
signals:
    void                    updated ();
public:
    virtual void            setSettings (const QHash<QString,QVariant>& settings);
    bool                    isFavorite () const;
    virtual void            setFavorite (bool favorite);
    virtual QList<QAction*>  actions ();
signals:
    void                    favoriteChanged (const QString& id, bool favorite);
public:
    void                    toggleFavorite ();
    QString                 toolTip () const;
    void                    setToolTip (const QString& toolTip);
    bool                    isSticky () const;
    void                    setSticky (bool sticky);
signals:
    void                    idChanged ();
    void                    stickyChanged ();
public:
    virtual bool            initialized () const=0;
};
// AbstractDataPluginItem

};
// Marble


