Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
widgets: Cleanup objects in destructors and minor code cleanup
[xestiacalendar/.git] / source / widgets / XCCalendarDayEntry.cpp
index 0aede56..034e5e7 100644 (file)
@@ -21,7 +21,6 @@
 wxDEFINE_EVENT(XCCALENDARDAYENTRY_DESELECT, wxCommandEvent);
 
 BEGIN_EVENT_TABLE(XCCalendarDayEntry, wxPanel)
-EVT_PAINT(XCCalendarDayEntry::PaintFrameEvent)
 EVT_SIZE(XCCalendarDayEntry::ResizeFrameEvent)
 EVT_LEFT_UP(XCCalendarDayEntry::LeftClick)
 EVT_RIGHT_UP(XCCalendarDayEntry::RightClick)
@@ -35,15 +34,29 @@ XCCalendarDayEntry::XCCalendarDayEntry(wxWindow* parent, const wxString& title,
        eventID = id;
        
        this->SetMinSize(wxSize(65, 30));
+
+       // Setup the main panel and main sizer.
+       
+       mainPanel = new wxPanel(this, wxID_ANY, wxPoint(0,0), this->GetSize(), wxTAB_TRAVERSAL|wxSIMPLE_BORDER);
+       mainSizer = new wxBoxSizer( wxVERTICAL );
+               
+       // Setup the calendar colour.
        
+       calendarColour = new wxPanel(mainPanel, wxID_ANY, wxPoint(0,0), wxSize(10, 30), wxTAB_TRAVERSAL|wxEXPAND, "Calendar Colour");
+       calendarColour->SetBackgroundColour(wxColour(80, 40, 40, 100));
+               
+       // Setup the event text.
+               
        eventTextData = title.mb_str();
-       eventText = new wxStaticText(this, wxID_ANY, title, wxPoint(49, 14), wxDefaultSize, wxST_ELLIPSIZE_END);
-       eventTime = new wxStaticText(this, wxID_ANY, wxT("Time"), wxPoint(49,3), wxDefaultSize, 0);
+       eventText = new wxStaticText(mainPanel, wxID_ANY, title, wxPoint(49, 14), wxDefaultSize, wxST_ELLIPSIZE_END);
+       eventTime = new wxStaticText(mainPanel, wxID_ANY, wxT("Time"), wxPoint(49,3), wxDefaultSize, 0);
                
        wxFont eventTimeFont = eventTime->GetFont();
        eventTimeFont.MakeBold();
        eventTime->SetFont(eventTimeFont);
 
+       // Setup the images.
+               
        wxMemoryInputStream alerticon(icons_alert_png, sizeof(icons_alert_png));
        wxMemoryInputStream priorityicon(icons_priority_png, sizeof(icons_priority_png));
                
@@ -56,12 +69,16 @@ XCCalendarDayEntry::XCCalendarDayEntry(wxWindow* parent, const wxString& title,
        alarmIcon->SetBitmap(alarmIconBitmap);
        highPriorityIcon->SetBitmap(priorityIconBitmap);
        
+       // Setup the connections for the control.
+       
+       calendarColour->Connect(wxEVT_LEFT_UP, wxMouseEventHandler(XCCalendarDayEntry::LeftClick), NULL, this);
        alarmIcon->Connect(wxEVT_LEFT_UP, wxMouseEventHandler(XCCalendarDayEntry::LeftClick), NULL, this);
        highPriorityIcon->Connect(wxEVT_LEFT_UP, wxMouseEventHandler(XCCalendarDayEntry::LeftClick), NULL, this);
        eventText->Connect(wxEVT_LEFT_UP, wxMouseEventHandler(XCCalendarDayEntry::LeftClick), NULL, this);
        eventTime->Connect(wxEVT_LEFT_UP, wxMouseEventHandler(XCCalendarDayEntry::LeftClick), NULL, this);
        dayPanel->Connect(wxEVT_LEFT_UP, wxMouseEventHandler(XCCalendarDayEntry::LeftClick), NULL, this);
-       
+
+       calendarColour->Connect(wxEVT_RIGHT_UP, wxMouseEventHandler(XCCalendarDayEntry::RightClick), NULL, this);
        alarmIcon->Connect(wxEVT_RIGHT_UP, wxMouseEventHandler(XCCalendarDayEntry::RightClick), NULL, this);
        highPriorityIcon->Connect(wxEVT_RIGHT_UP, wxMouseEventHandler(XCCalendarDayEntry::RightClick), NULL, this);
        eventText->Connect(wxEVT_RIGHT_UP, wxMouseEventHandler(XCCalendarDayEntry::RightClick), NULL, this);
@@ -73,40 +90,55 @@ XCCalendarDayEntry::XCCalendarDayEntry(wxWindow* parent, const wxString& title,
        // Bind events to the control.
        
        Bind(XCCALENDARDAYENTRY_DESELECT, &XCCalendarDayEntry::Deselect, this, ID_ENTRYDESELECT);
+       
+       // Set the control's sizer.
+       
+       this->SetSizer(mainSizer);
+       mainSizer->Add(mainPanel, 0, wxEXPAND, 1);
 }
 
 XCCalendarDayEntry::~XCCalendarDayEntry(){
        
        // Destory the controls from the widget.
        
-}
-
-void XCCalendarDayEntry::Repaint(){
+       // Disconnect and unbind.
        
-       wxPaintDC dc(this);
-
-       // Get the wxSizerItem for the top date and the entries part.
+       calendarColour->Disconnect(wxEVT_LEFT_UP, wxMouseEventHandler(XCCalendarDayEntry::LeftClick), NULL, this);
+       alarmIcon->Disconnect(wxEVT_LEFT_UP, wxMouseEventHandler(XCCalendarDayEntry::LeftClick), NULL, this);
+       highPriorityIcon->Disconnect(wxEVT_LEFT_UP, wxMouseEventHandler(XCCalendarDayEntry::LeftClick), NULL, this);
+       eventText->Disconnect(wxEVT_LEFT_UP, wxMouseEventHandler(XCCalendarDayEntry::LeftClick), NULL, this);
+       eventTime->Disconnect(wxEVT_LEFT_UP, wxMouseEventHandler(XCCalendarDayEntry::LeftClick), NULL, this);
+       dayPanel->Disconnect(wxEVT_LEFT_UP, wxMouseEventHandler(XCCalendarDayEntry::LeftClick), NULL, this);
 
-       dc.SetBrush(wxBrush(wxColor(0,0,0), wxBRUSHSTYLE_TRANSPARENT));
+       calendarColour->Disconnect(wxEVT_RIGHT_UP, wxMouseEventHandler(XCCalendarDayEntry::RightClick), NULL, this);
+       alarmIcon->Disconnect(wxEVT_RIGHT_UP, wxMouseEventHandler(XCCalendarDayEntry::RightClick), NULL, this);
+       highPriorityIcon->Disconnect(wxEVT_RIGHT_UP, wxMouseEventHandler(XCCalendarDayEntry::RightClick), NULL, this);
+       eventText->Disconnect(wxEVT_RIGHT_UP, wxMouseEventHandler(XCCalendarDayEntry::RightClick), NULL, this);
+       eventTime->Disconnect(wxEVT_RIGHT_UP, wxMouseEventHandler(XCCalendarDayEntry::RightClick), NULL, this);
+       dayPanel->Disconnect(wxEVT_RIGHT_UP, wxMouseEventHandler(XCCalendarDayEntry::RightClick), NULL, this);
+       
+       Unbind(XCCALENDARDAYENTRY_DESELECT, &XCCalendarDayEntry::Deselect, this, ID_ENTRYDESELECT);
        
-       /*wxRect Test;
+       // Delete the controls.
        
-       Test.SetX(this->GetClientRect().GetX());
-       Test.SetY(this->GetClientRect().GetY());
-       Test.SetHeight(this->GetClientRect().GetHeight());
-       Test.SetWidth(this->GetClientRect().GetWidth());
+       mainSizer->Clear();
        
-       cout << Test.GetX() << "|" << Test.GetY() << "|" << Test.GetHeight() << "|" << Test.GetWidth() << "|" << endl;*/
+       delete eventText;
+       eventText = nullptr;
        
-       dc.DrawRectangle(this->GetClientRect());
+       delete eventTime;
+       eventTime = nullptr;
        
-       // Draw the calendar colour.
+       delete calendarColour;
+       calendarColour = nullptr;
        
-       dc.SetPen(wxPen(wxColor(255,255,255), 0, wxPENSTYLE_TRANSPARENT));
-       dc.SetBrush(wxBrush(wxColor(entryColour.red,
-               entryColour.green,
-               entryColour.blue), wxBRUSHSTYLE_SOLID));
-       dc.DrawRectangle(wxRect(1,1,10,28));
+       delete mainPanel;
+       mainPanel = nullptr;
+       
+       delete highPriorityIcon;
+       delete alarmIcon;
+       
+       this->SetSizer(nullptr, true);
        
 }
 
@@ -172,12 +204,6 @@ void XCCalendarDayEntry::UpdateInformation(){
        
 }
 
-void XCCalendarDayEntry::PaintFrameEvent(wxPaintEvent &paintEvent){
-
-       Repaint();
-       
-}
-
 void XCCalendarDayEntry::ResizeFrameEvent(wxSizeEvent &sizeEvent){
        
        // Adjust the Event text so it is displayed properly.
@@ -197,6 +223,10 @@ void XCCalendarDayEntry::ResizeFrameEvent(wxSizeEvent &sizeEvent){
                        break;
        }
        
+       // Resize the main panel.
+       
+       mainPanel->SetSize(this->GetSize());
+       
        // Refresh the window.
        
        this->Refresh();
@@ -208,12 +238,13 @@ void XCCalendarDayEntry::LeftClick(wxMouseEvent &mouseEvent){
        // Change the background of the widget to mark 
        // the entry as selected.
        
-       this->SetBackgroundColour(wxColor(255,215,0));
+       mainPanel->SetBackgroundColour(wxColor(255,215,0));
        wxCommandEvent deselectOthersEvent(XCCALENDARDAY_DESELECTOTHERENTRIES);
        deselectOthersEvent.SetInt(eventID);
        deselectOthersEvent.SetId(ID_DESELECTOTHERENTRIES);
        wxPostEvent(dayPanel, deselectOthersEvent);
-       
+       this->Refresh();
+
 }
 
 void XCCalendarDayEntry::RightClick(wxMouseEvent &MouseEvent){
@@ -233,7 +264,8 @@ void XCCalendarDayEntry::RightClick(wxMouseEvent &MouseEvent){
 
 void XCCalendarDayEntry::Deselect(wxCommandEvent &DeselectEvent){
        
-       this->SetBackgroundColour(wxNullColour);
+       mainPanel->SetBackgroundColour(wxNullColour);
+       this->Refresh();
        
 }
 
@@ -250,9 +282,9 @@ void XCCalendarDayEntry::SetTime(int timeHour, int timeMinute, int timeSecond){
 
 void XCCalendarDayEntry::SetColour(Colour *colourIn){
        
-       entryColour = *colourIn;
-       Repaint();
-       
+       calendarColour->SetBackgroundColour(wxColour(colourIn->red, colourIn->green, colourIn->blue, colourIn->alpha));
+       this->Refresh();
+
 }
 
 void XCCalendarDayEntry::SetDisplayAlarm(bool displayValue){
@@ -357,7 +389,7 @@ void XCCalendarDayEntry::SetAfterSpacer(wxSizerItem *afterSpacer){
 
 void XCCalendarDayEntry::SetEventName(string eventName){
        
-       eventText->SetLabel((wxString)eventName);
+       eventText->SetLabel(wxString(eventName));
        
 }
 
@@ -367,13 +399,13 @@ wxSizerItem* XCCalendarDayEntry::GetAfterSpacer(){
        
 }
 
-bool XCCalendarDayEntry::SetShowAccountStatus(bool statusInput){
+void XCCalendarDayEntry::SetShowAccountStatus(bool statusInput){
        
        showAccount = statusInput;
        
 }
 
-bool XCCalendarDayEntry::SetShowCalendarStatus(bool statusInput){
+void XCCalendarDayEntry::SetShowCalendarStatus(bool statusInput){
 
        showCalendar = statusInput;
        
Xestia Software Development
Yn Maystri
© 2006 - 2019 Xestia Software Development
Software

Xestia Address Book
Xestia Calendar
Development

Xestia Gelforn
Everything else

About
News
Privacy Policy