Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members

FXClockButton.h

Go to the documentation of this file.
00001 /********************************************************************************
00002 *                                                                               *
00003 *                  Digital clock                                                *
00004 *                                                                               *
00005 *********************************************************************************
00006 * Copyright (C) 2003 by Mathew Robertson.   All Rights Reserved.                *
00007 *********************************************************************************
00008 * This library is free software; you can redistribute it and/or                 *
00009 * modify it under the terms of the GNU Lesser General Public                    *
00010 * License as published by the Free Software Foundation; either                  *
00011 * version 2.1 of the License, or (at your option) any later version.            *
00012 *                                                                               *
00013 * This library is distributed in the hope that it will be useful,               *
00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of                *
00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU             *
00016 * Lesser General Public License for more details.                               *
00017 *                                                                               *
00018 * You should have received a copy of the GNU Lesser General Public              *
00019 * License along with this library; if not, write to the Free Software           *
00020 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.    *
00021 *********************************************************************************/
00022 #ifndef FXCLOCKBUTTON_H
00023 #define FXCLOCKBUTTON_H
00024 
00025 #ifndef FXBUTTON_H
00026 #include <fox/FXButton.h>
00027 using namespace FX;
00028 #endif
00029 namespace FXEX {
00030 
00031 /// ClockButton styles
00032 enum {
00033   CLOCKBUTTON_SECONDS = 0x10000000,  /// show the 'seconds' value
00034   CLOCKBUTTON_SYMBOL  = 0x20000000,  /// show the am/pm symbol
00035   CLOCKBUTTON_24HOUR  = 0x40000000,  /// use 24 hour clock
00036   };
00037 
00038 /**
00039  * A plain old digital clock - eg. for use in the status line of your app.
00040  * you can click on it to generate the appropriate FOX events.
00041  */
00042 class FXAPI FXClockButton : public FXButton {
00043   FXDECLARE(FXClockButton)
00044 
00045 protected:
00046   FXString   timeFormat;
00047 
00048 protected:
00049   /// serialisation
00050   FXClockButton();
00051 
00052   /// Set the time/date format to that defined by FXTime
00053   void setFormat();
00054 
00055 public:
00056   enum {
00057     ID_CLOCK_UPDATE=FXButton::ID_LAST,
00058     ID_TOGGLE_SECONDS,
00059     ID_TOGGLE_HOURMODE,
00060     ID_TOGGLE_SYMBOL,
00061     ID_LAST
00062     };
00063 
00064 public:
00065   long onClockTimeout(FXObject*,FXSelector,void*);
00066   long onCmdToggleSeconds(FXObject*,FXSelector,void*);
00067   long onUpdToggleSeconds(FXObject*,FXSelector,void*);
00068   long onCmdToggleHourMode(FXObject*,FXSelector,void*);
00069   long onUpdToggleHourMode(FXObject*,FXSelector,void*);
00070   long onCmdToggleSymbol(FXObject*,FXSelector,void*);
00071   long onUpdToggleSymbol(FXObject*,FXSelector,void*);
00072 
00073 public:
00074   /// Make a new ClockButton
00075   FXClockButton(FXComposite* p,FXObject* tgt=NULL,FXSelector sel=0,
00076                 FXuint opts=BUTTON_TOOLBAR|FRAME_RAISED|FRAME_THICK|JUSTIFY_NORMAL|ICON_BEFORE_TEXT,
00077                 FXint x=0,FXint y=0,FXint w=0,FXint h=0,FXint pl=DEFAULT_PAD,FXint pr=DEFAULT_PAD,
00078                 FXint pt=DEFAULT_PAD,FXint pb=DEFAULT_PAD);
00079 
00080   /// create
00081   virtual void create();
00082 
00083   /// get the current format, as defined by FXTime
00084   FXString getFormat() { return timeFormat; }
00085 
00086   /// Show seconds
00087   void seconds(FXbool mode);
00088 
00089   /// are we showing the seconds?
00090   FXbool seconds() { return (options&CLOCKBUTTON_SECONDS)!=0; }
00091 
00092   /// set the time format to 24 hour time
00093   void hourMode(FXbool mode);
00094 
00095   /// is the time set at 24 hour time
00096   FXbool hourMode() { return (options&CLOCKBUTTON_24HOUR)!=0; }
00097 
00098   /// Show the AM/PM symbol
00099   void symbol(FXbool mode);
00100 
00101   /// is the AM/PM symbol showing
00102   FXbool symbol() { return (options&CLOCKBUTTON_SYMBOL)!=0; }
00103 
00104   /// save to stream
00105   virtual void save(FXStream& store) const;
00106 
00107   /// load from stream
00108   virtual void load(FXStream& store);
00109 
00110   /// destructor
00111   virtual ~FXClockButton();
00112   };
00113 
00114 } // namespace FXEX
00115 #endif // FXCLOCKBUTTON_H