00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef GLUON_ENGINE_ASSET_H
00022 #define GLUON_ENGINE_ASSET_H
00023
00024 #include "core/gluonobject.h"
00025
00026 #include "gluon_engine_export.h"
00027
00028 #include <QtCore/QUrl>
00029 #include <QtCore/QSharedData>
00030 #include <QtPlugin>
00031 #include <QIcon>
00032
00033 class QAction;
00034 class QMimeData;
00035
00036 namespace GluonEngine
00037 {
00038 class AssetPrivate;
00039
00048 class GLUON_ENGINE_EXPORT AssetTemplate : public QObject
00049 {
00050 Q_OBJECT
00051 public:
00052 AssetTemplate( QString name, QString filename, QString pluginname, QObject* parent = 0 )
00053 : QObject( parent )
00054 , name( name )
00055 , filename( filename )
00056 , pluginname( pluginname )
00057 { }
00058 ~AssetTemplate() {};
00059
00060
00064 QString name;
00069 QString filename;
00073 QString pluginname;
00074 };
00075
00082 class GLUON_ENGINE_EXPORT Asset : public GluonCore::GluonObject
00083 {
00084 Q_OBJECT
00085 GLUON_OBJECT( GluonEngine::Asset );
00092 Q_PROPERTY( QUrl file READ file WRITE setFile )
00093
00094 public:
00095 Q_INVOKABLE Asset( QObject* parent = 0 );
00096 ~Asset();
00097
00109 virtual void setName( const QString& newName );
00110
00111 virtual void setFile( const QUrl& newFile );
00112 virtual QUrl file() const;
00113
00121 virtual QString absolutePath() const;
00122
00127 virtual QIcon icon() const;
00128
00134 virtual const QList<AssetTemplate*> templates();
00135
00142 virtual QList<QAction*> actions();
00143
00151 virtual const QMimeData* data() const;
00152
00158 virtual QString childrenToGDL( int indentLevel = 0 ) const;
00159
00163 virtual bool isLoaded() const;
00164
00165 public slots:
00166 virtual void load();
00167
00168 Q_SIGNALS:
00175 void dataChanged();
00176
00177 protected:
00178 QMimeData* mimeData() const;
00179 void setLoaded( bool loaded );
00180
00181 private:
00182 AssetPrivate* d;
00183 };
00184 }
00185
00186 Q_DECLARE_INTERFACE( GluonEngine::Asset, "com.gluon.Asset/1.0" )
00187 Q_DECLARE_METATYPE( GluonEngine::Asset )
00188 Q_DECLARE_METATYPE( GluonEngine::Asset* )
00189
00190 #endif // GLUON_ASSET_H