UniWidgets  1.0.0
TypicalMultiState.h
00001 #ifndef _TYPICALMULTISTATE_H
00002 #define _TYPICALMULTISTATE_H
00003 // -------------------------------------------------------------------------
00004 #include <map>
00005 #include "AbstractTypical.h"
00006 // #include "USignals.h"
00007 #include <global_macros.h>
00008 #include <objects/StateMultiLogic.h>
00009 #include <objects/ShowLogic.h>
00010 // -------------------------------------------------------------------------
00011 namespace UniWidgets
00012 {
00013 class Image;
00014 // class ShowLogic;
00015 // class StateMultiLogic;
00022 class TypicalMultiState : public AbstractTypical
00023 {
00024 public:
00025     TypicalMultiState();
00026     explicit TypicalMultiState(AbstractTypical::BaseObjectType* gobject);
00027     virtual ~TypicalMultiState();
00028 
00029     /* FIXME: Move this types to private or into include/types.h */
00030     /* Types */
00031     typedef std::map<long, Image*> ModeImageMap;
00032     typedef std::pair<long, Image*> ModeImagePair;
00033     typedef std::map<long, Glib::ustring > ModePathMap;
00034     typedef std::pair<long, Glib::ustring > ModePathPair;
00035 
00036     /* Methods */
00037     void configure();
00038 
00039     void set_rect(const Gdk::Rectangle rect);
00040     void set_path(const long mode, const Glib::ustring& path);
00041     void set_path2(const long mode, const Glib::ustring& path);
00042 
00043     void set_firststate_ai(const UniSetTypes::ObjectId sensor);
00044     void set_firststate_node(const UniSetTypes::ObjectId node);
00045     void set_firststate_mode(const long mode);
00046     void add_firststate_ignoremode(const long mode);
00047     void add_firststate_blinkoff_mode(const long mode);
00048 
00049     void set_secondstate_ai(const UniSetTypes::ObjectId sensor);
00050     void set_secondstate_node(const UniSetTypes::ObjectId node);
00051     void set_secondstate_mode(const long mode);
00052     void add_secondstate_ignoremode(const long mode);
00053     void add_secondstate_blinkoff_mode(const long mode);
00054 
00055     void set_thirdstate_ai(const UniSetTypes::ObjectId sensor);
00056     void set_thirdstate_node(const UniSetTypes::ObjectId node);
00057     void set_thirdstate_mode(const long mode);
00058     void add_thirdstate_ignoremode(const long mode);
00059     void add_thirdstate_blinkoff_mode(const long mode);
00060 
00061     void set_fourthstate_ai(const UniSetTypes::ObjectId sensor);
00062     void set_fourthstate_node(const UniSetTypes::ObjectId node);
00063     void set_fourthstate_mode(const long mode);
00064     void add_fourthstate_ignoremode(const long mode);
00065     void add_fourthstate_blinkoff_mode(const long mode);
00066 
00067     virtual void set_lock_view(const bool lock);
00068 
00069     void set_state_obj(const UniSetTypes::ObjectId sensor);
00070     void insert_mode(const long mode, const long priority, const long blink);   
00072     Glib::ustring get_path(const long mode, bool is_back = false);
00073 
00074     Gdk::Rectangle* get_rect();
00075 
00076 private:
00077     /* Variables */
00078     Gdk::Rectangle rect_;
00079     ShowLogic *showlogic_;
00080     StateMultiLogic statemultilogic_firststate_;
00081     StateMultiLogic statemultilogic_secondstate_;
00082     StateMultiLogic statemultilogic_thirdstate_;
00083     StateMultiLogic statemultilogic_fourthstate_;
00084     ModeImageMap images_;
00085     ModePathMap paths_;
00086     ModePathMap paths_2;
00087 
00088     /* Methods */
00089     void constructor();
00090 
00091     DISALLOW_COPY_AND_ASSIGN(TypicalMultiState);
00092 };
00093 
00094 }
00095 #endif