X-Git-Url: http://Server1/repobrowser/?p=xestiacalendar%2F.git;a=blobdiff_plain;f=source%2Fwidgets%2FXCCalendarManipulator.cpp;h=81843b5b8939aa45a5cdaff93619a8a96c8cfeec;hp=131146f334acf6964a2892cfff1630b7ed1cf66d;hb=902d948e5e45ad483c8e235690dda8f2bf596ad5;hpb=7fd3615231b1780c3d5304e17f09d2c5ebb9a6f5 diff --git a/source/widgets/XCCalendarManipulator.cpp b/source/widgets/XCCalendarManipulator.cpp index 131146f..81843b5 100644 --- a/source/widgets/XCCalendarManipulator.cpp +++ b/source/widgets/XCCalendarManipulator.cpp @@ -27,7 +27,11 @@ XCCalendarManipulator::XCCalendarManipulator(wxWindow* parent, const wxString& t : wxPanel(parent, wxID_ANY, pos, size, wxTAB_TRAVERSAL, title){ szrMain = new wxBoxSizer( wxVERTICAL ); pnlMain = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(500, 50), wxTAB_TRAVERSAL); +#if defined(__APPLE__) + pnlMain->SetBackgroundColour(wxColour(120,120,120)); +#else pnlMain->SetBackgroundColour(wxColour(40,40,40)); +#endif this->SetSizer(szrMain); szrMain->Add(pnlMain, 0, wxEXPAND, 0); @@ -89,7 +93,7 @@ XCCalendarManipulator::XCCalendarManipulator(wxWindow* parent, const wxString& t wxDateTime dtNow = wxDateTime::Now(); -#if defined(WIN32) +#if defined(WIN32) || defined(__APPLE__) moo = new frmCalendarSelectMonth(this); #else moo = new XCCalendarMonthSelect(this); @@ -110,17 +114,21 @@ XCCalendarManipulator::XCCalendarManipulator(wxWindow* parent, const wxString& t // Setup the event controls. dateButton->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(XCCalendarManipulator::DateTextClick), NULL, this); + nextButton->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(XCCalendarManipulator::NextMonth), NULL, this); + calendarsButton->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(XCCalendarManipulator::ShowCalendarsList), NULL, this); + previousButton->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(XCCalendarManipulator::PreviousMonth), NULL, this); + +#if defined(WIN32) dateButton->Connect(wxEVT_ENTER_WINDOW, wxMouseEventHandler(XCCalendarManipulator::ButtonMouseover), NULL, this); dateButton->Connect(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(XCCalendarManipulator::ButtonMouseout), NULL, this); - nextButton->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(XCCalendarManipulator::NextMonth), NULL, this); nextButton->Connect(wxEVT_ENTER_WINDOW, wxMouseEventHandler(XCCalendarManipulator::ButtonMouseover), NULL, this); nextButton->Connect(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(XCCalendarManipulator::ButtonMouseout), NULL, this); - calendarsButton->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(XCCalendarManipulator::ShowCalendarsList), NULL, this); calendarsButton->Connect(wxEVT_ENTER_WINDOW, wxMouseEventHandler(XCCalendarManipulator::ButtonMouseover), NULL, this); calendarsButton->Connect(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(XCCalendarManipulator::ButtonMouseout), NULL, this); - previousButton->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(XCCalendarManipulator::PreviousMonth), NULL, this); previousButton->Connect(wxEVT_ENTER_WINDOW, wxMouseEventHandler(XCCalendarManipulator::ButtonMouseover), NULL, this); previousButton->Connect(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(XCCalendarManipulator::ButtonMouseout), NULL, this); +#endif + Bind(XCCALENDARMANIPULATOR_CHANGEGRID, &XCCalendarManipulator::ChangeGrid, this, ID_CHANGEGRID); this->Refresh(); @@ -129,6 +137,62 @@ XCCalendarManipulator::XCCalendarManipulator(wxWindow* parent, const wxString& t XCCalendarManipulator::~XCCalendarManipulator(){ // Destory the controls from the widget. + + dateButton->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(XCCalendarManipulator::DateTextClick), NULL, this); + nextButton->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(XCCalendarManipulator::NextMonth), NULL, this); + calendarsButton->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(XCCalendarManipulator::ShowCalendarsList), NULL, this); + previousButton->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(XCCalendarManipulator::PreviousMonth), NULL, this); + +#if defined(WIN32) + dateButton->Disconnect(wxEVT_ENTER_WINDOW, wxMouseEventHandler(XCCalendarManipulator::ButtonMouseover), NULL, this); + dateButton->Disconnect(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(XCCalendarManipulator::ButtonMouseout), NULL, this); + nextButton->Disconnect(wxEVT_ENTER_WINDOW, wxMouseEventHandler(XCCalendarManipulator::ButtonMouseover), NULL, this); + nextButton->Disconnect(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(XCCalendarManipulator::ButtonMouseout), NULL, this); + calendarsButton->Disconnect(wxEVT_ENTER_WINDOW, wxMouseEventHandler(XCCalendarManipulator::ButtonMouseover), NULL, this); + calendarsButton->Disconnect(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(XCCalendarManipulator::ButtonMouseout), NULL, this); + previousButton->Disconnect(wxEVT_ENTER_WINDOW, wxMouseEventHandler(XCCalendarManipulator::ButtonMouseover), NULL, this); + previousButton->Disconnect(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(XCCalendarManipulator::ButtonMouseout), NULL, this); +#endif + + Unbind(XCCALENDARMANIPULATOR_CHANGEGRID, &XCCalendarManipulator::ChangeGrid, this, ID_CHANGEGRID); + + // Delete the buttons in pnlMain. + + szrNavigation->Clear(); + + delete previousButton; + previousButton = nullptr; + + delete nextButton; + nextButton = nullptr; + + delete calendarsButton; + calendarsButton = nullptr; + + delete dateButton; + dateButton = nullptr; + + // Delete szrNavigation. + + szrMain->Clear(); + pnlMain->SetSizer(nullptr, true); + + // Delete pnlMain itself; + + delete pnlMain; + pnlMain = nullptr; + + delete moo; + moo = nullptr; + + delete calendarList; + calendarList = nullptr; + + // Delete szrMain itself; + + this->SetSizer(nullptr, true); + + dataStorage = nullptr; } @@ -136,11 +200,11 @@ void XCCalendarManipulator::DateTextClick(wxCommandEvent &event){ // Bring up a popup control to select the month and year. - // TODO: Do something different for Win32. + // Do something different for Win32 and macOS. moo->SetPosition(wxPoint(dateButton->GetScreenRect().GetLeft(), dateButton->GetScreenRect().GetBottom())); moo->UpdateDate(month, year); -#if defined(WIN32) +#if defined(WIN32) || defined(__APPLE__) moo->ShowModal(); #else moo->Popup(); @@ -237,8 +301,22 @@ void XCCalendarManipulator::ShowCalendarsList(wxCommandEvent &event){ calendarList->SetPosition(wxPoint(calendarsButton->GetScreenRect().GetLeft(), calendarsButton->GetScreenRect().GetBottom())); calendarList->UpdateCalendarList(dataStorage); +#if defined(__APPLE__) + + if (calendarListShow == false) + { + calendarList->Show(); + calendarListShow = true; + } + else + { + calendarList->Hide(); + calendarListShow = false; + } +#else calendarList->Popup(); - +#endif + } void XCCalendarManipulator::UpdateDateButtonText(){