using namespace std;
+wxDEFINE_EVENT(XCCALENDARMONTH_DESELECTOTHERENTRIES, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARMONTH_HIDEACCOUNTENTRIES, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARMONTH_SHOWACCOUNTENTRIES, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARMONTH_HIDECALENDARENTRIES, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARMONTH_SHOWCALENDARENTRIES, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARMONTH_DELETECALENDARENTRIES, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARMONTH_DISPLAYEVENTMENU, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARMONTH_DELETEENTRY, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARMONTH_ADDENTRY, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARMONTH_UPDATEENTRY, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARMONTH_UPDATECALENDARCOLOUR, wxCommandEvent);
+
BEGIN_EVENT_TABLE(XCCalendarMonthView, wxPanel)
-EVT_PAINT(XCCalendarMonthView::PaintFrameEvent)
END_EVENT_TABLE()
XCCalendarMonthView::XCCalendarMonthView(wxWindow *parent, const wxString& title, const wxPoint& pos, const wxSize& size, XCCalendarMonthViewGrid *grid, CalendarDataStorage *dataStorage, std::vector<int> *hideAccounts, std::vector<int> *hideCalendars)
: wxPanel(parent, wxID_ANY, pos, size, wxTAB_TRAVERSAL){
-
calendarStorage = dataStorage;
mondayText = new XCCalendarMonthViewDayTitle(this, _("Monday"), wxDefaultPosition, wxDefaultSize);
this->Layout();
this->SetBackgroundColour(wxColour(0,0,0));
- Connect(ID_MONTHVIEWCLEARSELECTION, XCCALENDARMONTH_DESELECTOTHERENTRIES, wxCommandEventHandler(XCCalendarMonthView::DeselectOthersEvent));
- Connect(ID_HIDEENTRIES, XCCALENDARMONTH_HIDEACCOUNTENTRIES, wxCommandEventHandler(XCCalendarMonthView::HideAccountEntries));
- Connect(ID_SHOWENTRIES, XCCALENDARMONTH_SHOWACCOUNTENTRIES, wxCommandEventHandler(XCCalendarMonthView::ShowAccountEntries));
- Connect(ID_HIDECALENDARENTRIES, XCCALENDARMONTH_HIDECALENDARENTRIES, wxCommandEventHandler(XCCalendarMonthView::HideCalendarEntries));
- Connect(ID_SHOWCALENDARENTRIES, XCCALENDARMONTH_SHOWCALENDARENTRIES, wxCommandEventHandler(XCCalendarMonthView::ShowCalendarEntries));
- Connect(ID_DELETECALENDARENTRIES, XCCALENDARMONTH_DELETECALENDARENTRIES, wxCommandEventHandler(XCCalendarMonthView::DeleteCalendarEntries));
- Connect(ID_DISPLAYEVENTMENU, XCCALENDARMONTH_DISPLAYEVENTMENU, wxCommandEventHandler(XCCalendarMonthView::ShowEventMenu));
- Connect(ID_DELETEENTRY, XCCALENDARMONTH_DELETEENTRY, wxCommandEventHandler(XCCalendarMonthView::DeleteCalendarEntry));
- Connect(ID_ADDENTRY, XCCALENDARMONTH_ADDENTRY, wxCommandEventHandler(XCCalendarMonthView::AddCalendarEntry));
- Connect(ID_UPDATEENTRY, XCCALENDARMONTH_UPDATEENTRY, wxCommandEventHandler(XCCalendarMonthView::UpdateCalendarEntry));
- Connect(ID_UPDATECOLOUR, XCCALENDARMONTH_UPDATECALENDARCOLOUR, wxCommandEventHandler(XCCalendarMonthView::UpdateCalendarColour));
+ // Bind events to the control.
-}
-
-XCCalendarMonthView::XCCalendarMonthView(XCCalendarMonthViewGrid *grid, CalendarDataStorage *dataStorage, std::vector<int> *hideAccounts, std::vector<int> *hideCalendars)
- : wxPanel(NULL, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL){
-
- Connect(ID_MONTHVIEWCLEARSELECTION, XCCALENDARMONTH_DESELECTOTHERENTRIES, wxCommandEventHandler(XCCalendarMonthView::DeselectOthersEvent));
-
- calendarStorage = dataStorage;
-
- mondayText = new XCCalendarMonthViewDayTitle(this, _("Monday"), wxDefaultPosition, wxDefaultSize);
- tuesdayText = new XCCalendarMonthViewDayTitle(this, _("Tuesday"), wxDefaultPosition, wxDefaultSize);
- wednesdayText = new XCCalendarMonthViewDayTitle(this, _("Wednesday"), wxDefaultPosition, wxDefaultSize);
- thursdayText = new XCCalendarMonthViewDayTitle(this, _("Thursday"), wxDefaultPosition, wxDefaultSize);
- fridayText = new XCCalendarMonthViewDayTitle(this, _("Friday"), wxDefaultPosition, wxDefaultSize);
- saturdayText = new XCCalendarMonthViewDayTitle(this, _("Saturday"), wxDefaultPosition, wxDefaultSize);
- sundayText = new XCCalendarMonthViewDayTitle(this, _("Sunday"), wxDefaultPosition, wxDefaultSize);
-
- windowSizer->Add(mondayText, 1, wxEXPAND|wxALL, 0);
- windowSizer->Add(tuesdayText, 1, wxEXPAND|wxALL, 0);
- windowSizer->Add(wednesdayText, 1, wxEXPAND|wxALL, 0);
- windowSizer->Add(thursdayText, 1, wxEXPAND|wxALL, 0);
- windowSizer->Add(fridayText, 1, wxEXPAND|wxALL, 0);
- windowSizer->Add(saturdayText, 1, wxEXPAND|wxALL, 0);
- windowSizer->Add(sundayText, 1, wxEXPAND|wxALL, 0);
-
- ProcessGrid(grid, hideAccounts, hideCalendars);
-
- // Setup the days.
-
- // Setup the growable rows and columns.
-
- windowSizer->AddGrowableCol(0);
- windowSizer->AddGrowableCol(1);
- windowSizer->AddGrowableCol(2);
- windowSizer->AddGrowableCol(3);
- windowSizer->AddGrowableCol(4);
- windowSizer->AddGrowableCol(5);
- windowSizer->AddGrowableCol(6);
- windowSizer->SetFlexibleDirection( wxBOTH );
- windowSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
-
- this->SetSizer(windowSizer);
- windowSizer->Fit(this);
- this->Layout();
- this->SetBackgroundColour(wxColour(0,0,0));
-
+ Bind(XCCALENDARMONTH_DESELECTOTHERENTRIES, &XCCalendarMonthView::DeselectOthersEvent, this, ID_MONTHVIEWCLEARSELECTION);
+ Bind(XCCALENDARMONTH_HIDEACCOUNTENTRIES, &XCCalendarMonthView::HideAccountEntries, this, ID_HIDEENTRIES);
+ Bind(XCCALENDARMONTH_SHOWACCOUNTENTRIES, &XCCalendarMonthView::ShowAccountEntries, this, ID_SHOWENTRIES);
+ Bind(XCCALENDARMONTH_HIDECALENDARENTRIES, &XCCalendarMonthView::HideCalendarEntries, this, ID_HIDECALENDARENTRIES);
+ Bind(XCCALENDARMONTH_SHOWCALENDARENTRIES, &XCCalendarMonthView::ShowCalendarEntries, this, ID_SHOWCALENDARENTRIES);
+ Bind(XCCALENDARMONTH_DELETECALENDARENTRIES, &XCCalendarMonthView::DeleteCalendarEntries, this, ID_DELETECALENDARENTRIES);
+ Bind(XCCALENDARMONTH_DISPLAYEVENTMENU, &XCCalendarMonthView::ShowEventMenu, this, ID_DISPLAYEVENTMENU);
+ Bind(XCCALENDARMONTH_DELETEENTRY, &XCCalendarMonthView::DeleteCalendarEntry, this, ID_DELETEENTRY);
+ Bind(XCCALENDARMONTH_ADDENTRY, &XCCalendarMonthView::AddCalendarEntry, this, ID_ADDENTRY);
+ Bind(XCCALENDARMONTH_UPDATEENTRY, &XCCalendarMonthView::UpdateCalendarEntry, this, ID_UPDATEENTRY);
+ Bind(XCCALENDARMONTH_UPDATECALENDARCOLOUR, &XCCalendarMonthView::UpdateCalendarColour, this, ID_UPDATECOLOUR);
}
XCCalendarMonthView::~XCCalendarMonthView(){
+ delete mondayText;
+ delete tuesdayText;
+ delete wednesdayText;
+ delete thursdayText;
+ delete fridayText;
+ delete saturdayText;
+ delete sundayText;
+ for (vector<XCCalendarDay*>::iterator dayIter = calendarDayList.begin();
+ dayIter != calendarDayList.end(); dayIter++){
+
+ delete ((*dayIter));
+
+ }
}
// Add Calendar entries.
- XCCalendarDay *calendarDayItem = new XCCalendarDay(this, "XCCalendarMonthView Test", wxPoint(50, 50), wxSize(200, 200));
-
+ XCCalendarDay *calendarDayItem = new XCCalendarDay(this, "XCCalendarMonthView Test", wxPoint(50, 50), wxSize(100,100));
+
// Setup the control.
calendarDayItem->SetupControl((*dayIter).day, (*dayIter).month, (*dayIter).year, (*dayIter).isInMonth, this, calendarStorage, hideAccounts, hideCalendars);
}
-void XCCalendarMonthView::Repaint(){
-
- // Draw the border.
-
- this->Layout();
-
-}
-
-void XCCalendarMonthView::PaintFrameEvent(wxPaintEvent &PaintEvent){
-
- Repaint();
-
-}
-
void XCCalendarMonthView::ResizeFrameEvent(wxSizeEvent &SizeEvent){
// TODO: Check if window size is less than 120 pixels and if it is,
EventProperties *eventInfo = (EventProperties*)eventData.GetClientData();
bool foundDate = false;
+ for (vector<XCCalendarDay*>::iterator dayIter = calendarDayList.begin();
+ dayIter != calendarDayList.end(); dayIter++){
+
+ wxCommandEvent addEvent(XCCALENDARDAY_DELETEENTRY);
+ addEvent.SetId(ID_DELETEENTRY);
+ addEvent.SetInt(eventInfo->eventID);
+ wxPostEvent((*dayIter), addEvent);
+
+ }
+
for (vector<XCCalendarDay*>::iterator dayIter = calendarDayList.begin();
dayIter != calendarDayList.end(); dayIter++){
(*dayIter)->GetCalendarMonth() == (eventInfo->eventMonth + 1) &&
(*dayIter)->GetCalendarDay() == eventInfo->eventDay){
- wxCommandEvent addEvent(XCCALENDARDAY_UPDATEENTRY);
- addEvent.SetId(ID_UPDATEENTRY);
+ wxCommandEvent addEvent(XCCALENDARDAY_ADDENTRY);
+ addEvent.SetId(ID_ADDENTRY);
addEvent.SetClientData(eventInfo);
wxPostEvent((*dayIter), addEvent);
foundDate = true;