Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
XCCalendar widgets: Removed painting of controls
[xestiacalendar/.git] / source / widgets / XCCalendarDay.cpp
index 64b58e7..78c1687 100644 (file)
@@ -33,16 +33,22 @@ wxDEFINE_EVENT(XCCALENDARDAY_UPDATEENTRY, wxCommandEvent);
 wxDEFINE_EVENT(XCCALENDARDAY_UPDATECALENDARCOLOUR, wxCommandEvent);
 
 BEGIN_EVENT_TABLE(XCCalendarDay, wxPanel)
-EVT_PAINT(XCCalendarDay::PaintFrameEvent)
-EVT_SIZE(XCCalendarDay::ResizeFrameEvent)
 END_EVENT_TABLE()
 
 XCCalendarDay::XCCalendarDay(wxWindow *parent, const wxString& title, const wxPoint& pos, const wxSize& size)
         : wxPanel(parent, wxID_ANY, pos, size, wxTAB_TRAVERSAL, title){
        this->SetMinSize( wxSize( 100,100 ) );
        
+       // Setup the top panel.
+               
+       topPanel = new wxPanel(this, wxID_ANY, wxPoint(0,0), wxSize(50, 40), wxTAB_TRAVERSAL);
+       mainPanel = new wxPanel(this, wxID_ANY, wxPoint(0,0), wxSize(200, 200), wxTAB_TRAVERSAL);
+               
        // Setip the icons.
                
+       highPriorityIcon = new wxStaticBitmap(topPanel, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize(32,32), 0);
+       alertIcon = new wxStaticBitmap(topPanel, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize(32,32), 0);
+               
        wxMemoryInputStream alerticon(icons_alert32_png, sizeof(icons_alert32_png));
        wxMemoryInputStream priorityicon(icons_priority32_png, sizeof(icons_priority32_png));
        
@@ -55,12 +61,7 @@ XCCalendarDay::XCCalendarDay(wxWindow *parent, const wxString& title, const wxPo
        alertIcon->SetBitmap(imgAlertIcon);
        highPriorityIcon->SetBitmap(imgPriorityIcon);
        
-       windowSizer->AddGrowableCol(0);
-       windowSizer->AddGrowableRow(1);
-       windowSizer->SetFlexibleDirection( wxBOTH );
-       windowSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
-       
-       numberText = new wxStaticText(this, wxID_ANY, wxT("09"), wxDefaultPosition, wxDefaultSize, 0);
+       numberText = new wxStaticText(topPanel, wxID_ANY, wxT("09"), wxDefaultPosition, wxDefaultSize, 0);
        numberText->SetFont(wxFont(24, 70, 90, 92, false, wxEmptyString));
        
        topSectionSizer->Add(highPriorityIcon, 0, wxALL|wxALIGN_CENTER_VERTICAL, 0);
@@ -70,6 +71,8 @@ XCCalendarDay::XCCalendarDay(wxWindow *parent, const wxString& title, const wxPo
 
        // Setup the scrollable section.
        
+       eventListFrame = new wxScrolledWindow(mainPanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxVSCROLL);
+       
        Colour eventColour;
        eventColour.red = 40; eventColour.green = 80; eventColour.blue = 80;
        
@@ -78,19 +81,20 @@ XCCalendarDay::XCCalendarDay(wxWindow *parent, const wxString& title, const wxPo
        eventListFrame->SetScrollRate(0,1);
        eventListFrameSizer->Fit(eventListFrame);
        eventListFrameSizer->Layout();
-       windowSizer->Fit(this);
 
        // Setup the scroll window.
        
-       mainSectionSizer->Add(eventListFrame, 1, wxGROW | wxALL, 10);
+       mainSectionSizer->Add(eventListFrame, 1, wxGROW | wxALL, 5);
        
-       windowSizer->Add(topSectionSizer, 1, wxEXPAND, 5);
-       windowSizer->Add(mainSectionSizer, 1, wxEXPAND, 5);
+       topPanel->SetSizer(topSectionSizer);
+       mainPanel->SetSizer(mainSectionSizer);
+       
+       windowSizer->Add(topPanel, 1, wxEXPAND, 0);
+       windowSizer->Add(mainPanel, 1, wxEXPAND, 0);
 
        this->SetSizer(windowSizer);
        this->SetSize(size);
        this->Layout();
-       this->SetBackgroundStyle(wxBG_STYLE_PAINT);
        this->Centre(wxBOTH);
        
        UpdateTopIcons();
@@ -134,49 +138,6 @@ XCCalendarDay::~XCCalendarDay(){
        
 }
 
-void XCCalendarDay::Repaint(){
-       
-       wxPaintDC dc(this);
-       wxPaintDC eventListFrameDC(eventListFrame);
-       
-       // Get the wxSizerItem for the top date and the entries part.
-
-       wxSizerItem *topSectionSizerItem = windowSizer->GetItem((size_t)0);
-       wxSizerItem *mainSectionSizerItem = windowSizer->GetItem((size_t)1);
-       wxRect topSizer = wxRect(windowSizer->GetPosition(), windowSizer->GetSize());
-       
-       if (isInMonth == true){
-       
-               dc.SetPen(wxPen(wxColor(255,255,255), 0, wxPENSTYLE_TRANSPARENT));
-               dc.SetBrush(wxBrush(wxColor(255,255,255)));
-               dc.DrawRectangle(topSectionSizerItem->GetRect());
-               dc.SetBrush(wxBrush(wxColor(225,225,225)));
-               dc.DrawRectangle(mainSectionSizerItem->GetRect());
-               eventListFrameDC.SetPen(wxPen(wxColor(255,255,255), 0, wxPENSTYLE_TRANSPARENT));
-               eventListFrameDC.SetBrush(wxBrush(wxColor(225,225,225)));
-               eventListFrameDC.DrawRectangle(eventListFrame->GetClientRect());
-               
-       } else {
-
-               dc.SetPen(wxPen(wxColor(185,185,185), 0, wxPENSTYLE_TRANSPARENT));
-               dc.SetBrush(wxBrush(wxColor(185,185,185)));
-               dc.DrawRectangle(topSectionSizerItem->GetRect());
-               dc.SetBrush(wxBrush(wxColor(155,155,155)));
-               dc.DrawRectangle(mainSectionSizerItem->GetRect());
-               eventListFrameDC.SetPen(wxPen(wxColor(255,255,255), 0, wxPENSTYLE_TRANSPARENT));
-               eventListFrameDC.SetBrush(wxBrush(wxColor(155,155,155)));
-               eventListFrameDC.DrawRectangle(eventListFrame->GetClientRect());
-               
-       }
-       
-       // Draw the border.
-
-       //dc.SetBrush(wxBrush(wxColor(0,0,0), wxBRUSHSTYLE_TRANSPARENT));
-
-       this->Layout();
-       
-}
-
 void XCCalendarDay::UpdateTopIcons(){
        
        bool alarmFound = false;
@@ -210,13 +171,6 @@ void XCCalendarDay::UpdateTopIcons(){
        
 }
 
-void XCCalendarDay::PaintFrameEvent(wxPaintEvent &paintEvent)
-{
-
-       Repaint();
-       
-}
-
 void XCCalendarDay::ResizeFrameEvent(wxSizeEvent &sizeEvent)
 {
 
@@ -226,6 +180,11 @@ void XCCalendarDay::ResizeFrameEvent(wxSizeEvent &sizeEvent)
        // Refresh the window.
        
        this->Refresh();
+       topPanel->Refresh();
+       mainPanel->Refresh();
+       topSectionSizer->Layout();
+       mainSectionSizer->Layout();
+       windowSizer->Layout();
        
 }
 
@@ -252,10 +211,10 @@ void XCCalendarDay::DeselectOthersEvent(wxCommandEvent &deselectEvent)
        
        if (this->monthViewPointer != nullptr){
                
-               wxCommandEvent deselectEvent(XCCALENDARMONTH_DESELECTOTHERENTRIES);
-               deselectEvent.SetClientData(this);
-               deselectEvent.SetId(ID_MONTHVIEWCLEARSELECTION);
-               wxPostEvent(this->monthViewPointer, deselectEvent);
+               wxCommandEvent deselectMonthEvent(XCCALENDARMONTH_DESELECTOTHERENTRIES);
+               deselectMonthEvent.SetClientData(this);
+               deselectMonthEvent.SetId(ID_MONTHVIEWCLEARSELECTION);
+               wxPostEvent(this->monthViewPointer, deselectMonthEvent);
                
        }
        
@@ -299,6 +258,18 @@ void XCCalendarDay::SetupControl(int setupDay, int setupMonth, int setupYear, bo
        // Setup the Is In Month value.
        
        isInMonth = setupIsInMonth;
+       if (isInMonth)
+       {
+               topPanel->SetBackgroundColour(wxColor(255,255,255));
+               mainPanel->SetBackgroundColour(wxColor(225,225,225));
+               eventListFrame->SetBackgroundColour(wxColor(225,225,225));
+       }
+       else
+       {
+               topPanel->SetBackgroundColour(wxColor(185,185,185));
+               mainPanel->SetBackgroundColour(wxColor(155,155,155));
+               eventListFrame->SetBackgroundColour(wxColor(155,155,155));
+       }
        
        // Setup the month view pointer.
        
@@ -384,7 +355,6 @@ void XCCalendarDay::HideAccountEntries(wxCommandEvent &accountData){
        }
        
        this->Refresh();
-       Repaint();
        
 }
 
@@ -419,7 +389,6 @@ void XCCalendarDay::ShowAccountEntries(wxCommandEvent &accountData){
        }
        
        this->Refresh();
-       Repaint();
        
 }
 
@@ -450,7 +419,6 @@ void XCCalendarDay::HideCalendarEntries(wxCommandEvent &calendarData){
        }
        
        this->Refresh();
-       Repaint();
        
 }
 
@@ -490,7 +458,6 @@ void XCCalendarDay::ShowCalendarEntries(wxCommandEvent &calendarData){
        }
        
        this->Refresh();
-       Repaint();
        
 }
 
@@ -508,12 +475,11 @@ void XCCalendarDay::DeleteCalendarEntries(wxCommandEvent &calendarData){
                        
                        // Get the spacing and hide it as well.
                        
-                       /*wxSizerItem *afterSpacer = (*calendarEntryIter)->GetAfterSpacer();
+                       wxSizerItem *afterSpacer = (*calendarEntryIter)->GetAfterSpacer();
                        afterSpacer->Show(false);
-                       afterSpacer->DetachSizer();
                        
                        delete afterSpacer;
-                       afterSpacer = nullptr;*/
+                       afterSpacer = nullptr;
        
                        delete (*calendarEntryIter);
                        deleteEntriesList.push_back(calendarEntryIter);
@@ -523,7 +489,9 @@ void XCCalendarDay::DeleteCalendarEntries(wxCommandEvent &calendarData){
        }
        
        this->Refresh();
-       Repaint();
+       mainPanel->Layout();
+       eventListFrame->Layout();
+       eventListFrameSizer->Layout();
        
        for (auto deleteIter : deleteEntriesList){
                calendarEntryList.erase(deleteIter);
@@ -545,12 +513,8 @@ void XCCalendarDay::DeleteCalendarEntry(wxCommandEvent &eventData){
                        
                        // Get the spacing and hide it as well.
                        
-                       /*wxSizerItem *afterSpacer = (*calendarEntryIter)->GetAfterSpacer();
+                       wxSizerItem *afterSpacer = (*calendarEntryIter)->GetAfterSpacer();
                        afterSpacer->Show(false);
-                       afterSpacer->DetachSizer();
-                       
-                       delete afterSpacer;
-                       afterSpacer = nullptr;*/
                        
                        delete (*calendarEntryIter);
                        deleteEntriesList.push_back(calendarEntryIter);                 
@@ -564,7 +528,9 @@ void XCCalendarDay::DeleteCalendarEntry(wxCommandEvent &eventData){
        }
        
        this->Refresh();
-       Repaint();
+       this->Layout();
+       eventListFrame->Layout();
+       eventListFrameSizer->Layout();
        
 }
 
@@ -612,7 +578,9 @@ void XCCalendarDay::AddCalendarEntry(wxCommandEvent &eventData){
        calendarEntryList.push_back(newEntry);
        
        this->Refresh();
-       Repaint();
+       mainPanel->Layout();
+       eventListFrame->Layout();
+       eventListFrameSizer->Layout();
        
 }
 
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