1/* 2 * Copyright 2004-2011, Haiku, Inc. All Rights Reserved. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * McCall <mccall@@digitalparadise.co.uk> 7 * Mike Berg <mike@berg-net.us> 8 * Julun <host.haiku@gmx.de> 9 * Hamish Morrison <hamish@lavabit.com> 10 */ 11#ifndef _DATE_TIME_EDIT_H 12#define _DATE_TIME_EDIT_H 13 14 15#include <DateTime.h> 16#include <Locale.h> 17#include <String.h> 18 19#include "SectionEdit.h" 20 21 22class TTimeEdit : public TSectionEdit { 23public: 24 TTimeEdit(const char* name, uint32 sections); 25 virtual ~TTimeEdit(); 26 27 virtual void KeyDown(const char* bytes, int32 numBytes); 28 29 virtual void InitView(); 30 virtual void DrawSection(uint32 index, BRect bounds, 31 bool isfocus); 32 virtual void DrawSeparator(uint32 index, BRect bounds); 33 34 virtual void SectionFocus(uint32 index); 35 virtual float MinSectionWidth(); 36 virtual float SeparatorWidth(); 37 38 virtual float PreferredHeight(); 39 virtual void DoUpPress(); 40 virtual void DoDownPress(); 41 42 virtual void BuildDispatch(BMessage* message); 43 44 void SetTime(int32 hour, int32 minute, int32 second); 45 46private: 47 void _UpdateFields(); 48 void _CheckRange(); 49 bool _IsValidDoubleDigit(int32 value); 50 int32 _SectionValue(int32 index) const; 51 52 BDateTime fTime; 53 bigtime_t fLastKeyDownTime; 54 int32 fLastKeyDownInt; 55 56 BString fText; 57 58 // TODO: morph the following into a proper class 59 BDateElement* fFields; 60 int fFieldCount; 61 int* fFieldPositions; 62 int fFieldPosCount; 63}; 64 65 66class TDateEdit : public TSectionEdit { 67public: 68 TDateEdit(const char* name, uint32 sections); 69 virtual ~TDateEdit(); 70 virtual void KeyDown(const char* bytes, int32 numBytes); 71 72 virtual void InitView(); 73 virtual void DrawSection(uint32 index, BRect bounds, 74 bool isfocus); 75 virtual void DrawSeparator(uint32 index, BRect bounds); 76 77 virtual void SectionFocus(uint32 index); 78 virtual float MinSectionWidth(); 79 virtual float SeparatorWidth(); 80 81 virtual float PreferredHeight(); 82 virtual void DoUpPress(); 83 virtual void DoDownPress(); 84 85 virtual void BuildDispatch(BMessage* message); 86 87 88 void SetDate(int32 year, int32 month, int32 day); 89 90private: 91 void _UpdateFields(); 92 void _CheckRange(); 93 bool _IsValidDoubleDigit(int32 value); 94 int32 _SectionValue(int32 index) const; 95 96 BDate fDate; 97 bigtime_t fLastKeyDownTime; 98 int32 fLastKeyDownInt; 99 100 BString fText; 101 102 // TODO: morph the following into a proper class 103 BDateElement* fFields; 104 int fFieldCount; 105 int* fFieldPositions; 106 int fFieldPosCount; 107}; 108 109 110#endif // _DATE_TIME_EDIT_H 111 112