nux-0.9.46
|
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