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