defuze.me  Client
module.hpp
00001 /**************************************************************************
00002 ** defuze.me Epitech Innovative Project
00003 **
00004 ** Copyright 2010-2011
00005 **   Athena Calmettes - Jocelyn De La Rosa - Francois Gaillard
00006 **   Adrien Jarthon - Alexandre Moore - Luc Peres - Arnaud Sellier
00007 **
00008 ** All rights reserved.
00009 **************************************************************************/
00010 
00011 namespace Gui
00012 {
00013     class Module;
00014 }
00015 
00016 #ifndef MODULE_HPP
00017 #define MODULE_HPP
00018 
00019 #include "modulewidget.hpp"
00020 #include "parameterscategory.hpp"
00021 #include "parameterspage.hpp"
00022 #include <QtCore/QString>
00023 #include <QMap>
00024 
00025 namespace Params
00026 {
00027     class Parameterizable;
00028 }
00029 
00030 namespace Gui
00031 {
00032     class GuiCore;
00033 
00040     class Module : public QObject
00041     {
00042         Q_OBJECT
00043         friend class ModuleFactory;
00044         friend class GridElement;
00045         friend class GuiCore;
00046         friend class Tab;
00047 
00048     public:
00049         void                                submitForDisplay(ModuleWidget* widget);
00050         void                                submitForDisplay();
00051         const QString&                      getUniqId() const;
00052         void                                addParametersPage(ParametersPage *parameterPage);
00053         bool                                hasParameters() const;
00054         void                                setSizePolicy(const QSizePolicy::Policy &sizePolicy, const QSizePolicy::Policy &colSizePolicy = QSizePolicy::Expanding);
00055 
00056     private:
00057         Module(GuiCore* guiCore);
00058         void                                setTabIndex(int tabIndex);
00059         void                                setPosition(QPoint position);
00060         void                                setTitle(const QString &title);
00061         void                                setUniqId(const QString &uniqId);
00062         void                                setWidget(ModuleWidget *widget);
00063         int                                 getTabIndex() const;
00064         const QPoint&                       getPosition() const;
00065         int                                 getRow() const;
00066         int                                 getColumn() const;
00067         ModuleWidget*                       getWidget() const;
00068         ModuleWidget                        *widget;
00069         GuiCore                             *guiCore;
00070         QString                             title;
00071         QString                             uniqId;
00072         QPoint                              position;
00073         QMap<QString, ParametersPage*>      parametersPages;
00074         ParametersCategory*                 parametersCategory;
00075         QSizePolicy::Policy                 sizePolicy, colSizePolicy;
00076         int                                 tabIndex;
00077 
00078     signals:
00079         void displayPending();
00080     };
00081 }
00082 
00083 #endif // MODULE_HPP