nux-1.16.0
SpinBox_Logic.h
00001 /*
00002  * Copyright 2010 Inalogic® Inc.
00003  *
00004  * This program is free software: you can redistribute it and/or modify it
00005  * under the terms of the GNU Lesser General Public License, as
00006  * published by the  Free Software Foundation; either version 2.1 or 3.0
00007  * of the License.
00008  *
00009  * This program is distributed in the hope that it will be useful, but
00010  * WITHOUT ANY WARRANTY; without even the implied warranties of
00011  * MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
00012  * PURPOSE.  See the applicable version of the GNU Lesser General Public
00013  * License for more details.
00014  *
00015  * You should have received a copy of both the GNU Lesser General Public
00016  * License along with this program. If not, see <http://www.gnu.org/licenses/>
00017  *
00018  * Authored by: Jay Taoko <jaytaoko@inalogic.com>
00019  *
00020  */
00021 
00022 
00023 #ifndef SPINBOX_LOGIC_H
00024 #define SPINBOX_LOGIC_H
00025 
00026 #include "EditTextBox.h"
00027 #include "View.h"
00028 
00029 namespace nux
00030 {
00031 
00032   class SpinBox_Logic: public View
00033   {
00034   public:
00035     SpinBox_Logic (NUX_FILE_LINE_PROTO);
00036     virtual ~SpinBox_Logic ();
00037 
00038     virtual long ProcessEvent (IEvent &ievent, long TraverseInfo, long ProcessEventInfo) = 0;
00039     virtual void Draw (GraphicsEngine &GfxContext, bool force_draw) = 0;
00040     virtual void DrawContent (GraphicsEngine &GfxContext, bool force_draw) = 0;
00041     virtual void PostDraw (GraphicsEngine &GfxContext, bool force_draw) = 0;
00042 
00043     //  RECEIVERS
00044     void RecvMouseMove (int x, int y, unsigned long button_flags, unsigned long key_flags);
00045     void RecvIncrement (int x, int y, unsigned long button_flags, unsigned long key_flags);
00046     void RecvDecrement (int x, int y, unsigned long button_flags, unsigned long key_flags);
00047     void TimerSpinUpBtn (void *v);
00048     void TimerSpinDownBtn (void *v);
00049     void RecvMouseDrag (int x, int y, int dx, int dy, unsigned long button_flags, unsigned long key_flags);
00050     void RecvMouseEnter (int x, int y, unsigned long button_flags, unsigned long key_flags);
00051     void RecvMouseLeave (int x, int y, unsigned long button_flags, unsigned long key_flags);
00052     /*
00053         The spinner buttons need to be redrawn when they are released.
00054         Their color may have changed when the mouse down was initiated.
00055         This receiver is going to initiate the redraw of the whole SpinBox_Logic.
00056     */
00057     void RecvSpinnerMouseUp (int x, int y, unsigned long button_flags, unsigned long key_flags);
00058     void RecvStartKeyboardFocus (EditTextBox *textbox);
00059     void RecvEndKeyboardFocus (EditTextBox *textbox);
00060     void RecvEscapeKeyboardFocus (EditTextBox *textbox);
00061     void RecvEditChange (EditTextBox *textbox);
00062     void RecvValidateEntry (EditTextBox *textbox);
00063 
00064     virtual void ImplementIncrementBtn() = 0;
00065     virtual void ImplementDecrementBtn() = 0;
00066     virtual void ImplementValidateEntry() = 0;
00067 
00068 
00069     //  SIGNALS
00070     sigc::signal<void> sigClick;
00071     sigc::signal<void> sigIncrement;
00072     sigc::signal<void> sigDecrement;
00073     sigc::signal<void> sigValueChanged;
00074     sigc::signal<void, int> sigIntValueChanged;
00075 
00076   protected:
00077     EditTextBox    *m_EditLine;
00078     InputArea       *m_SpinnerUpBtn;
00079     InputArea       *m_SpinnerDownBtn;
00080 
00081     TimerFunctor *m_UpTimerCallback;
00082     TimerFunctor *m_DownTimerCallback;
00083     TimerHandle m_UpTimerHandler;
00084     TimerHandle m_DownTimerHandler;
00085   };
00086 
00087 }
00088 
00089 #endif // SPINBOX_LOGIC_H
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends