mirror of
https://bitbucket.org/smil3y/kde-workspace.git
synced 2025-02-25 11:22:52 +00:00
137 lines
4.2 KiB
C++
137 lines
4.2 KiB
C++
/***************************************************************************
|
|
* Copyright (C) 2007-2009 by Shawn Starr <shawn.starr@rogers.com> *
|
|
* *
|
|
* 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 2 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., *
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA *
|
|
***************************************************************************/
|
|
|
|
#ifndef WEATHERENGINE_H
|
|
#define WEATHERENGINE_H
|
|
|
|
#include <QTimer>
|
|
|
|
#include <Solid/Networking>
|
|
|
|
#include <Plasma/DataEngine>
|
|
|
|
#include "ions/ion.h"
|
|
|
|
|
|
/**
|
|
* @author Shawn Starr
|
|
* This class is DataEngine. It handles loading, unloading, updating any data the ions wish to send. It is a gateway for datasources (ions) to
|
|
* communicate with the WeatherEngine.
|
|
*/
|
|
|
|
class WeatherEngine : public Plasma::DataEngine
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
/** Constructor
|
|
* @param parent The parent object.
|
|
* @param args Argument list, unused.
|
|
*/
|
|
WeatherEngine(QObject *parent, const QVariantList &args);
|
|
|
|
// Destructor
|
|
~WeatherEngine();
|
|
|
|
// initialization
|
|
void init();
|
|
|
|
/**
|
|
* Load a plugin
|
|
* @arg pluginName Name of the plugin
|
|
* @return IonInterface returns an instance of the loaded plugin
|
|
*/
|
|
DataEngine* loadIon(const QString& pluginName);
|
|
|
|
/**
|
|
* Unload a plugin.
|
|
* @arg name Name of the plugin.
|
|
*/
|
|
void unloadIon(const QString& name);
|
|
|
|
protected:
|
|
/**
|
|
* Reimplemented from Plasma::DataEngine. We use it to communicate to the Ion plugins to set the data sources.
|
|
* @param source The datasource name.
|
|
*/
|
|
bool sourceRequestEvent(const QString &source);
|
|
|
|
protected Q_SLOTS:
|
|
/**
|
|
* Reimplemented from Plasma::DataEngine.
|
|
* @param source The datasource to be updated.
|
|
* @param data The new data updated.
|
|
*/
|
|
void dataUpdated(const QString& source, Plasma::DataEngine::Data data);
|
|
|
|
void forceUpdate(IonInterface *ion, const QString &source);
|
|
|
|
/**
|
|
* Notify WeatherEngine a new ion has data sources.
|
|
* @arg source datasource name.
|
|
*/
|
|
void newIonSource(const QString& source);
|
|
/**
|
|
* Notify WeatherEngine a datasource is being removed.
|
|
* @arg source datasource name.
|
|
*/
|
|
void removeIonSource(const QString& source);
|
|
/**
|
|
* Reimplemented from Plasma::DataEngine.
|
|
* @param source The datasource to update.
|
|
*/
|
|
bool updateSourceEvent(const QString& source);
|
|
|
|
/**
|
|
* Whenever networking changes, take action
|
|
*/
|
|
void networkStatusChanged(Solid::Networking::Status);
|
|
void startReconnect();
|
|
|
|
/**
|
|
* Cleans up the ions that are currently loaded
|
|
*/
|
|
void unloadIons(void);
|
|
|
|
/**
|
|
* updates the list of ions whenever KSycoca changes (as well as on init
|
|
*/
|
|
void updateIonList(const QStringList &changedResources = QStringList());
|
|
|
|
private:
|
|
/**
|
|
* Get instance of a loaded ion.
|
|
* @returns a IonInterface instance of a loaded plugin.
|
|
*/
|
|
IonInterface* ionForSource(const QString& name) const;
|
|
|
|
/**
|
|
* Get plugin name from datasource.
|
|
* @returns The plugin name given a datasource.
|
|
*/
|
|
QString ionNameForSource(const QString& source) const;
|
|
|
|
QStringList m_ions;
|
|
bool m_networkAvailable;
|
|
QTimer m_reconnectTimer;
|
|
};
|
|
|
|
K_EXPORT_PLASMA_DATAENGINE(weather, WeatherEngine)
|
|
|
|
#endif
|