Native PalmOS wxLongLong. Introduction of wxULongLong_t due to 'unsigned' not working on internally typedefed wxLongLong_t (both unsigned wxLongLong_t and wxULongLong_t should work for other platforms). Improvements in wxDatePicker control on PalmOS.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32092 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -849,10 +849,11 @@ inline void *wxUIntToPtr(wxUIntPtr p)
|
|||||||
|
|
||||||
/* 64 bit */
|
/* 64 bit */
|
||||||
|
|
||||||
/* NB: we #define and not typedef wxLongLong_t because we want to be able to */
|
/* NB: we #define and not typedef wxLongLong_t because we use "#ifdef */
|
||||||
/* use 'unsigned wxLongLong_t' as well and because we use "#ifdef */
|
|
||||||
/* wxLongLong_t" in wx/longlong.h */
|
/* wxLongLong_t" in wx/longlong.h */
|
||||||
|
|
||||||
|
/* wxULongLong_t is set later (usually to unsigned wxLongLong_t) */
|
||||||
|
|
||||||
/* to avoid compilation problems on 64bit machines with ambiguous method calls */
|
/* to avoid compilation problems on 64bit machines with ambiguous method calls */
|
||||||
/* we will need to define this */
|
/* we will need to define this */
|
||||||
#undef wxLongLongIsLong
|
#undef wxLongLongIsLong
|
||||||
@@ -864,6 +865,10 @@ inline void *wxUIntToPtr(wxUIntPtr p)
|
|||||||
#define wxLongLongSuffix l
|
#define wxLongLongSuffix l
|
||||||
#define wxLongLongFmtSpec _T("l")
|
#define wxLongLongFmtSpec _T("l")
|
||||||
#define wxLongLongIsLong
|
#define wxLongLongIsLong
|
||||||
|
#elif defined(__WXPALMOS__)
|
||||||
|
#define wxLongLong_t int64_t
|
||||||
|
#define wxLongLongSuffix ll
|
||||||
|
#define wxLongLongFmtSpec _T("ll")
|
||||||
#elif (defined(__VISUALC__) && defined(__WIN32__))
|
#elif (defined(__VISUALC__) && defined(__WIN32__))
|
||||||
#define wxLongLong_t __int64
|
#define wxLongLong_t __int64
|
||||||
#define wxLongLongSuffix i64
|
#define wxLongLongSuffix i64
|
||||||
@@ -904,12 +909,19 @@ inline void *wxUIntToPtr(wxUIntPtr p)
|
|||||||
|
|
||||||
|
|
||||||
#ifdef wxLongLong_t
|
#ifdef wxLongLong_t
|
||||||
|
|
||||||
|
#ifdef __WXPALMOS__
|
||||||
|
#define wxULongLong_t uint64_t
|
||||||
|
#else
|
||||||
|
#define wxULongLong_t unsigned wxLongLong_t
|
||||||
|
#endif
|
||||||
|
|
||||||
/* these macros allow to definea 64 bit constants in a portable way */
|
/* these macros allow to definea 64 bit constants in a portable way */
|
||||||
#define wxLL(x) wxCONCAT(x, wxLongLongSuffix)
|
#define wxLL(x) wxCONCAT(x, wxLongLongSuffix)
|
||||||
#define wxULL(x) wxCONCAT(x, wxCONCAT(u, wxLongLongSuffix))
|
#define wxULL(x) wxCONCAT(x, wxCONCAT(u, wxLongLongSuffix))
|
||||||
|
|
||||||
typedef wxLongLong_t wxInt64;
|
typedef wxLongLong_t wxInt64;
|
||||||
typedef unsigned wxLongLong_t wxUint64;
|
typedef wxULongLong_t wxUint64;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@@ -320,13 +320,13 @@ public:
|
|||||||
// default ctor initializes to 0
|
// default ctor initializes to 0
|
||||||
wxULongLongNative() : m_ll(0) { }
|
wxULongLongNative() : m_ll(0) { }
|
||||||
// from long long
|
// from long long
|
||||||
wxULongLongNative(unsigned wxLongLong_t ll) : m_ll(ll) { }
|
wxULongLongNative(wxULongLong_t ll) : m_ll(ll) { }
|
||||||
// from 2 longs
|
// from 2 longs
|
||||||
wxULongLongNative(unsigned long hi, unsigned long lo) : m_ll(0)
|
wxULongLongNative(unsigned long hi, unsigned long lo) : m_ll(0)
|
||||||
{
|
{
|
||||||
// assign first to avoid precision loss!
|
// assign first to avoid precision loss!
|
||||||
m_ll = ((unsigned wxLongLong_t) hi) << 32;
|
m_ll = ((wxULongLong_t) hi) << 32;
|
||||||
m_ll |= (unsigned wxLongLong_t) lo;
|
m_ll |= (wxULongLong_t) lo;
|
||||||
}
|
}
|
||||||
|
|
||||||
// default copy ctor is ok
|
// default copy ctor is ok
|
||||||
@@ -335,7 +335,7 @@ public:
|
|||||||
|
|
||||||
// assignment operators
|
// assignment operators
|
||||||
// from native 64 bit integer
|
// from native 64 bit integer
|
||||||
wxULongLongNative& operator=(unsigned wxLongLong_t ll)
|
wxULongLongNative& operator=(wxULongLong_t ll)
|
||||||
{ m_ll = ll; return *this; }
|
{ m_ll = ll; return *this; }
|
||||||
|
|
||||||
// assignment operators from wxULongLongNative is ok
|
// assignment operators from wxULongLongNative is ok
|
||||||
@@ -349,7 +349,7 @@ public:
|
|||||||
{ return (unsigned long)m_ll; }
|
{ return (unsigned long)m_ll; }
|
||||||
|
|
||||||
// convert to native ulong long
|
// convert to native ulong long
|
||||||
unsigned wxLongLong_t GetValue() const { return m_ll; }
|
wxULongLong_t GetValue() const { return m_ll; }
|
||||||
|
|
||||||
// convert to ulong with range checking in the debug mode (only!)
|
// convert to ulong with range checking in the debug mode (only!)
|
||||||
unsigned long ToULong() const
|
unsigned long ToULong() const
|
||||||
@@ -367,9 +367,9 @@ public:
|
|||||||
wxULongLongNative& operator+=(const wxULongLongNative& ll)
|
wxULongLongNative& operator+=(const wxULongLongNative& ll)
|
||||||
{ m_ll += ll.m_ll; return *this; }
|
{ m_ll += ll.m_ll; return *this; }
|
||||||
|
|
||||||
wxULongLongNative operator+(const unsigned wxLongLong_t ll) const
|
wxULongLongNative operator+(const wxULongLong_t ll) const
|
||||||
{ return wxULongLongNative(m_ll + ll); }
|
{ return wxULongLongNative(m_ll + ll); }
|
||||||
wxULongLongNative& operator+=(const unsigned wxLongLong_t ll)
|
wxULongLongNative& operator+=(const wxULongLong_t ll)
|
||||||
{ m_ll += ll; return *this; }
|
{ m_ll += ll; return *this; }
|
||||||
|
|
||||||
// pre increment
|
// pre increment
|
||||||
@@ -386,9 +386,9 @@ public:
|
|||||||
wxULongLongNative& operator-=(const wxULongLongNative& ll)
|
wxULongLongNative& operator-=(const wxULongLongNative& ll)
|
||||||
{ m_ll -= ll.m_ll; return *this; }
|
{ m_ll -= ll.m_ll; return *this; }
|
||||||
|
|
||||||
wxULongLongNative operator-(const unsigned wxLongLong_t ll) const
|
wxULongLongNative operator-(const wxULongLong_t ll) const
|
||||||
{ return wxULongLongNative(m_ll - ll); }
|
{ return wxULongLongNative(m_ll - ll); }
|
||||||
wxULongLongNative& operator-=(const unsigned wxLongLong_t ll)
|
wxULongLongNative& operator-=(const wxULongLong_t ll)
|
||||||
{ m_ll -= ll; return *this; }
|
{ m_ll -= ll; return *this; }
|
||||||
|
|
||||||
// pre decrement
|
// pre decrement
|
||||||
@@ -496,7 +496,7 @@ public:
|
|||||||
wxString& operator<<(wxString&, const wxULongLongNative&);
|
wxString& operator<<(wxString&, const wxULongLongNative&);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
unsigned wxLongLong_t m_ll;
|
wxULongLong_t m_ll;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // wxUSE_LONGLONG_NATIVE
|
#endif // wxUSE_LONGLONG_NATIVE
|
||||||
@@ -889,7 +889,7 @@ private:
|
|||||||
wxASSERT( (m_ll >> 32) == m_hi && (unsigned long)m_ll == m_lo );
|
wxASSERT( (m_ll >> 32) == m_hi && (unsigned long)m_ll == m_lo );
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned wxLongLong_t m_ll;
|
wxULongLong_t m_ll;
|
||||||
#endif // wxLONGLONG_TEST_MODE
|
#endif // wxLONGLONG_TEST_MODE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -20,7 +20,7 @@ class WXDLLIMPEXP_ADV wxDatePickerCtrl : public wxDatePickerCtrlBase
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// ctors
|
// ctors
|
||||||
wxDatePickerCtrl() { }
|
wxDatePickerCtrl() { Init(); }
|
||||||
|
|
||||||
wxDatePickerCtrl(wxWindow *parent,
|
wxDatePickerCtrl(wxWindow *parent,
|
||||||
wxWindowID id,
|
wxWindowID id,
|
||||||
@@ -31,6 +31,7 @@ public:
|
|||||||
const wxValidator& validator = wxDefaultValidator,
|
const wxValidator& validator = wxDefaultValidator,
|
||||||
const wxString& name = wxDatePickerCtrlNameStr)
|
const wxString& name = wxDatePickerCtrlNameStr)
|
||||||
{
|
{
|
||||||
|
Init();
|
||||||
Create(parent, id, dt, pos, size, style, validator, name);
|
Create(parent, id, dt, pos, size, style, validator, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,6 +60,11 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
virtual wxSize DoGetBestSize() const;
|
virtual wxSize DoGetBestSize() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
wxDateTime m_dt;
|
||||||
|
|
||||||
|
void Init() { m_dt = wxDateTime::Today(); }
|
||||||
|
|
||||||
DECLARE_NO_COPY_CLASS(wxDatePickerCtrl)
|
DECLARE_NO_COPY_CLASS(wxDatePickerCtrl)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -751,7 +751,7 @@ wxULongLongWx& wxULongLongWx::operator*=(const wxULongLongWx& ll)
|
|||||||
m_hi = m_lo = 0;
|
m_hi = m_lo = 0;
|
||||||
|
|
||||||
#ifdef wxLONGLONG_TEST_MODE
|
#ifdef wxLONGLONG_TEST_MODE
|
||||||
unsigned wxLongLong_t llOld = m_ll;
|
wxULongLong_t llOld = m_ll;
|
||||||
m_ll = 0;
|
m_ll = 0;
|
||||||
#endif // wxLONGLONG_TEST_MODE
|
#endif // wxLONGLONG_TEST_MODE
|
||||||
|
|
||||||
|
@@ -240,7 +240,19 @@ wxLongLong wxGetLocalTimeMillis()
|
|||||||
// If possible, use a function which avoids conversions from
|
// If possible, use a function which avoids conversions from
|
||||||
// broken-up time structures to milliseconds
|
// broken-up time structures to milliseconds
|
||||||
|
|
||||||
#if defined(__WXMSW__) && (defined(__WINE__) || defined(__MWERKS__))
|
#if defined(__WXPALMOS__)
|
||||||
|
DateTimeType thenst;
|
||||||
|
thenst.second = 0;
|
||||||
|
thenst.minute = 0;
|
||||||
|
thenst.hour = 0;
|
||||||
|
thenst.day = 1;
|
||||||
|
thenst.month = 1;
|
||||||
|
thenst.year = 1970;
|
||||||
|
thenst.weekDay = 5;
|
||||||
|
uint32_t now = TimGetSeconds();
|
||||||
|
uint32_t then = TimDateTimeToSeconds (&thenst);
|
||||||
|
return SysTimeToMilliSecs(SysTimeInSecs(now - then));
|
||||||
|
#elif defined(__WXMSW__) && (defined(__WINE__) || defined(__MWERKS__))
|
||||||
// This should probably be the way all WXMSW compilers should do it
|
// This should probably be the way all WXMSW compilers should do it
|
||||||
// Go direct to the OS for time
|
// Go direct to the OS for time
|
||||||
|
|
||||||
|
@@ -59,7 +59,10 @@ bool wxDatePickerCtrl::Create(wxWindow *parent,
|
|||||||
wxString label;
|
wxString label;
|
||||||
|
|
||||||
if ( dt.IsValid() )
|
if ( dt.IsValid() )
|
||||||
|
{
|
||||||
label = dt.FormatDate();
|
label = dt.FormatDate();
|
||||||
|
m_dt = dt;
|
||||||
|
}
|
||||||
|
|
||||||
if(!wxControl::PalmCreateControl(selectorTriggerCtl, label, pos, size))
|
if(!wxControl::PalmCreateControl(selectorTriggerCtl, label, pos, size))
|
||||||
return false;
|
return false;
|
||||||
@@ -83,16 +86,14 @@ wxSize wxDatePickerCtrl::DoGetBestSize() const
|
|||||||
void wxDatePickerCtrl::SetValue(const wxDateTime& dt)
|
void wxDatePickerCtrl::SetValue(const wxDateTime& dt)
|
||||||
{
|
{
|
||||||
if ( dt.IsValid() )
|
if ( dt.IsValid() )
|
||||||
SetLabel(dt.FormatDate());
|
m_dt = dt;
|
||||||
else
|
|
||||||
SetLabel(wxEmptyString);
|
SetLabel(m_dt.FormatDate());
|
||||||
}
|
}
|
||||||
|
|
||||||
wxDateTime wxDatePickerCtrl::GetValue() const
|
wxDateTime wxDatePickerCtrl::GetValue() const
|
||||||
{
|
{
|
||||||
wxDateTime dt;
|
return m_dt;
|
||||||
// TODO
|
|
||||||
return dt;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxDatePickerCtrl::SetRange(const wxDateTime& dt1, const wxDateTime& dt2)
|
void wxDatePickerCtrl::SetRange(const wxDateTime& dt1, const wxDateTime& dt2)
|
||||||
@@ -112,12 +113,16 @@ bool wxDatePickerCtrl::GetRange(wxDateTime *dt1, wxDateTime *dt2) const
|
|||||||
|
|
||||||
bool wxDatePickerCtrl::SendClickEvent()
|
bool wxDatePickerCtrl::SendClickEvent()
|
||||||
{
|
{
|
||||||
wxDateTime dt(wxDateTime::Today());
|
int16_t month = m_dt.GetMonth();
|
||||||
int16_t month = dt.GetMonth();
|
int16_t day = m_dt.GetDay();
|
||||||
int16_t day = dt.GetDay();
|
int16_t year = m_dt.GetYear();
|
||||||
int16_t year = dt.GetYear();
|
|
||||||
|
|
||||||
if(SelectDay(selectDayByMonth,&month,&day,&year,_T("Pick date")));
|
if(!SelectDay(selectDayByDay,&month,&day,&year,_T("Pick date")))
|
||||||
|
return false;
|
||||||
|
wxDateTime dt(m_dt);
|
||||||
|
dt.Set((wxDateTime::wxDateTime_t)day, (wxDateTime::Month)month, (int)year);
|
||||||
|
SetValue(dt);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // wxUSE_DATEPICKCTRL
|
#endif // wxUSE_DATEPICKCTRL
|
||||||
|
Reference in New Issue
Block a user