X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7ff2dfbac2efa5ed3ac4bcc6ebc722edbb5c6813..3ff414ad4d9cecf9806fcc3b216f691beb72df58:/samples/calendar/calendar.cpp?ds=inline diff --git a/samples/calendar/calendar.cpp b/samples/calendar/calendar.cpp index 737db45395..6370bb2411 100644 --- a/samples/calendar/calendar.cpp +++ b/samples/calendar/calendar.cpp @@ -17,11 +17,6 @@ // headers // ---------------------------------------------------------------------------- -#if defined(__GNUG__) && !defined(__APPLE__) - #pragma implementation "calendar.cpp" - #pragma interface "calendar.cpp" -#endif - // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" @@ -39,11 +34,13 @@ #include "wx/menu.h" #include "wx/layout.h" #include "wx/msgdlg.h" + #include "wx/icon.h" + #include "wx/button.h" + #include "wx/sizer.h" + #include "wx/textctrl.h" + #include "wx/settings.h" #endif -#include "wx/sizer.h" -#include "wx/textctrl.h" - #include "wx/calctrl.h" #if wxUSE_DATEPICKCTRL @@ -53,6 +50,10 @@ #endif // wxUSE_DATEPICKCTRL_GENERIC #endif // wxUSE_DATEPICKCTRL +#include "../sample.xpm" + +#define USE_SIZABLE_CALENDAR 0 + // ---------------------------------------------------------------------------- // private classes // ---------------------------------------------------------------------------- @@ -90,7 +91,7 @@ public: void SetDate(); void Today(); - + private: wxCalendarCtrl *m_calendar; wxStaticText *m_date; @@ -103,7 +104,7 @@ class MyFrame : public wxFrame { public: // ctor(s) - MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size); + MyFrame(const wxString& title, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize); // event handlers (these functions should _not_ be virtual) void OnQuit(wxCommandEvent& event); @@ -181,6 +182,7 @@ enum Calendar_DatePicker_AskDate = 300, Calendar_DatePicker_ShowCentury, Calendar_DatePicker_DropDown, + Calendar_DatePicker_AllowNone, #if wxUSE_DATEPICKCTRL_GENERIC Calendar_DatePicker_Generic, #endif // wxUSE_DATEPICKCTRL_GENERIC @@ -255,8 +257,11 @@ IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { // Create the main application window - MyFrame *frame = new MyFrame(_T("Calendar wxWidgets sample"), - wxPoint(50, 50), wxSize(450, 340)); + MyFrame *frame = new MyFrame(_T("Calendar wxWidgets sample") +#ifndef __WXWINCE__ + ,wxPoint(50, 50), wxSize(450, 340) +#endif + ); frame->Show(true); @@ -274,6 +279,9 @@ bool MyApp::OnInit() MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) : wxFrame((wxFrame *)NULL, wxID_ANY, title, pos, size) { + // set the frame icon + SetIcon(wxIcon(sample_xpm)); + // create a menu bar wxMenu *menuFile = new wxMenu; menuFile->Append(Calendar_File_About, _T("&About...\tCtrl-A"), _T("Show about dialog")); @@ -316,6 +324,8 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) _T("Al&ways show century")); menuDate->AppendCheckItem(Calendar_DatePicker_DropDown, _T("Use &drop down control")); + menuDate->AppendCheckItem(Calendar_DatePicker_AllowNone, + _T("Allow &no date")); #if wxUSE_DATEPICKCTRL_GENERIC menuDate->AppendCheckItem(Calendar_DatePicker_Generic, _T("Use &generic version of the control")); @@ -436,22 +446,31 @@ void MyFrame::OnAskDate(wxCommandEvent& WXUNUSED(event)) style |= wxDP_SHOWCENTURY; if ( GetMenuBar()->IsChecked(Calendar_DatePicker_DropDown) ) style |= wxDP_DROPDOWN; + if ( GetMenuBar()->IsChecked(Calendar_DatePicker_AllowNone) ) + style |= wxDP_ALLOWNONE; MyDialog dlg(this, m_panel->GetCal()->GetDate(), style); if ( dlg.ShowModal() == wxID_OK ) { - const wxDateTime dt = dlg.GetDate(), - today = wxDateTime::Today(); - - if ( dt.GetDay() == today.GetDay() && - dt.GetMonth() == today.GetMonth() ) + const wxDateTime dt = dlg.GetDate(); + if ( dt.IsValid() ) { - wxMessageBox(_T("Happy birthday!"), _T("Calendar Sample")); - } + const wxDateTime today = wxDateTime::Today(); + + if ( dt.GetDay() == today.GetDay() && + dt.GetMonth() == today.GetMonth() ) + { + wxMessageBox(_T("Happy birthday!"), _T("Calendar Sample")); + } - m_panel->GetCal()->SetDate(dt); + m_panel->GetCal()->SetDate(dt); - wxLogStatus(_T("Changed the date to your birthday")); + wxLogStatus(_T("Changed the date to your input")); + } + else + { + wxLogStatus(_T("No date entered")); + } } } @@ -476,11 +495,21 @@ MyPanel::MyPanel(wxFrame *frame) wxCAL_SHOW_HOLIDAYS | wxRAISED_BORDER); - wxBoxSizer *m_sizer = new wxBoxSizer( wxHORIZONTAL ); +#if USE_SIZABLE_CALENDAR + wxCalendarCtrl *sizableCalendar = new wxCalendarCtrl(this, wxID_ANY); +#endif + + // adjust to vertical/horizontal display, check mostly dedicated to WinCE + bool horizontal = ( wxSystemSettings::GetMetric(wxSYS_SCREEN_X) > wxSystemSettings::GetMetric(wxSYS_SCREEN_Y) ); + wxBoxSizer *m_sizer = new wxBoxSizer( horizontal ? wxHORIZONTAL : wxVERTICAL ); m_sizer->Add(m_date, 0, wxALIGN_CENTER | wxALL, 10 ); m_sizer->Add(m_calendar, 0, wxALIGN_CENTER | wxALIGN_LEFT); +#if USE_SIZABLE_CALENDAR + m_sizer->Add(sizableCalendar, 1, wxEXPAND); +#endif + SetSizer( m_sizer ); m_sizer->SetSizeHints( this ); } @@ -569,23 +598,24 @@ void MyPanel::Today() #if wxUSE_DATEPICKCTRL MyDialog::MyDialog(wxWindow *parent, const wxDateTime& dt, int dtpStyle) - : wxDialog(parent, -1, wxString(_T("Calendar: Choose a date"))) + : wxDialog(parent, wxID_ANY, wxString(_T("Calendar: Choose a date"))) { wxStdDialogButtonSizer *sizerBtns = new wxStdDialogButtonSizer; sizerBtns->AddButton(new wxButton(this, wxID_OK)); sizerBtns->AddButton(new wxButton(this, wxID_CANCEL)); - sizerBtns->Finalise(); + sizerBtns->Realize(); wxSizer *sizerText = new wxBoxSizer(wxHORIZONTAL); - sizerText->Add(new wxStaticText(this, -1, _T("Date in ISO format: ")), - wxSizerFlags().Border()); - m_text = new wxTextCtrl(this, -1); - sizerText->Add(m_text, wxSizerFlags().Expand().Border()); + sizerText->Add(new wxStaticText(this, wxID_ANY, _T("Date in ISO format: ")), + wxSizerFlags().Border().Align(wxALIGN_CENTRE_VERTICAL)); + m_text = new wxTextCtrl(this, wxID_ANY); + sizerText->Add(m_text, wxSizerFlags(). + Expand().Border().Align(wxALIGN_CENTRE_VERTICAL)); wxSizer *sizerTop = new wxBoxSizer(wxVERTICAL); sizerTop->Add(new wxStaticText ( - this, -1, + this, wxID_ANY, _T("Enter your birthday date (not before 20th century):") ), wxSizerFlags().Border()); @@ -593,13 +623,13 @@ MyDialog::MyDialog(wxWindow *parent, const wxDateTime& dt, int dtpStyle) #if wxUSE_DATEPICKCTRL_GENERIC wxFrame *frame = (wxFrame *)wxGetTopLevelParent(parent); if ( frame && frame->GetMenuBar()->IsChecked(Calendar_DatePicker_Generic) ) - m_datePicker = new wxDatePickerCtrlGeneric(this, -1, dt, + m_datePicker = new wxDatePickerCtrlGeneric(this, wxID_ANY, dt, wxDefaultPosition, wxDefaultSize, dtpStyle); else #endif // wxUSE_DATEPICKCTRL_GENERIC - m_datePicker = new wxDatePickerCtrl(this, -1, dt, + m_datePicker = new wxDatePickerCtrl(this, wxID_ANY, dt, wxDefaultPosition, wxDefaultSize, dtpStyle); m_datePicker->SetRange(wxDateTime(1, wxDateTime::Jan, 1900), @@ -617,8 +647,11 @@ MyDialog::MyDialog(wxWindow *parent, const wxDateTime& dt, int dtpStyle) void MyDialog::OnDateChange(wxDateEvent& event) { - m_text->SetValue(event.GetDate().FormatISODate()); + const wxDateTime dt = event.GetDate(); + if(dt.IsValid()) + m_text->SetValue(dt.FormatISODate()); + else + m_text->SetValue(wxEmptyString); } #endif // wxUSE_DATEPICKCTRL -