#include "XCCalendarDayEntry.h"
+wxDEFINE_EVENT(XCCALENDARDAYENTRY_DESELECT, wxCommandEvent);
+
BEGIN_EVENT_TABLE(XCCalendarDayEntry, wxPanel)
-EVT_PAINT(XCCalendarDayEntry::PaintFrameEvent)
EVT_SIZE(XCCalendarDayEntry::ResizeFrameEvent)
-EVT_LEFT_DOWN(XCCalendarDayEntry::LeftClick)
+EVT_LEFT_UP(XCCalendarDayEntry::LeftClick)
+EVT_RIGHT_UP(XCCalendarDayEntry::RightClick)
END_EVENT_TABLE()
using namespace std;
XCCalendarDayEntry::XCCalendarDayEntry(wxWindow* parent, const wxString& title, const wxPoint& pos, const wxSize& size, const int id)
: wxPanel(parent, wxID_ANY, pos, size, wxTAB_TRAVERSAL, title){
-
- DayPanel = parent->GetParent();
- entryID = id;
+ dayPanel = parent->GetParent();
+ eventID = id;
this->SetMinSize(wxSize(65, 30));
+
+ // Setup the main panel and main sizer.
- 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);
+ 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.
- wxFont eventTimeFont = EventTime->GetFont();
+ eventTextData = title.mb_str();
+ 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);
+ eventTime->SetFont(eventTimeFont);
+ // Setup the images.
+
wxMemoryInputStream alerticon(icons_alert_png, sizeof(icons_alert_png));
wxMemoryInputStream priorityicon(icons_priority_png, sizeof(icons_priority_png));
wxImage icons_alert_png(alerticon, wxBITMAP_TYPE_PNG);
- AlarmIconBitmap = wxBitmap(icons_alert_png, -1);
+ alarmIconBitmap = wxBitmap(icons_alert_png, -1);
wxImage icons_priority_png(priorityicon, wxBITMAP_TYPE_PNG);
- PriorityIconBitmap = wxBitmap(icons_priority_png, -1);
+ priorityIconBitmap = wxBitmap(icons_priority_png, -1);
- AlarmIcon->SetBitmap(AlarmIconBitmap);
- HighPriorityIcon->SetBitmap(PriorityIconBitmap);
-
- Connect(ID_ENTRYDESELECT, XCCALENDARDAYENTRY_DESELECT, wxCommandEventHandler(XCCalendarDayEntry::Deselect));
- 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);
+ alarmIcon->SetBitmap(alarmIconBitmap);
+ highPriorityIcon->SetBitmap(priorityIconBitmap);
- UpdateInformation();
+ // 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);
-XCCalendarDayEntry::~XCCalendarDayEntry(){
-
- // Destory the controls from the widget.
-
-}
-
-void XCCalendarDayEntry::Repaint(){
-
- wxPaintDC dc(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);
+ eventTime->Connect(wxEVT_RIGHT_UP, wxMouseEventHandler(XCCalendarDayEntry::RightClick), NULL, this);
+ dayPanel->Connect(wxEVT_RIGHT_UP, wxMouseEventHandler(XCCalendarDayEntry::RightClick), NULL, this);
- // Get the wxSizerItem for the top date and the entries part.
-
- dc.SetBrush(wxBrush(wxColor(0,0,0), wxBRUSHSTYLE_TRANSPARENT));
-
- /*wxRect Test;
+ UpdateInformation();
- Test.SetX(this->GetClientRect().GetX());
- Test.SetY(this->GetClientRect().GetY());
- Test.SetHeight(this->GetClientRect().GetHeight());
- Test.SetWidth(this->GetClientRect().GetWidth());
+ // Bind events to the control.
- cout << Test.GetX() << "|" << Test.GetY() << "|" << Test.GetHeight() << "|" << Test.GetWidth() << "|" << endl;*/
+ Bind(XCCALENDARDAYENTRY_DESELECT, &XCCalendarDayEntry::Deselect, this, ID_ENTRYDESELECT);
- dc.DrawRectangle(this->GetClientRect());
+ // Set the control's sizer.
- // Draw the calendar colour.
+ this->SetSizer(mainSizer);
+ mainSizer->Add(mainPanel, 0, wxEXPAND, 1);
+}
+
+XCCalendarDayEntry::~XCCalendarDayEntry(){
- 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));
+ // Destory the controls from the widget.
}
void XCCalendarDayEntry::UpdateInformation(){
- PositionMode = 0;
+ positionMode = 0;
// Check if the high priority icon needs to be displayed.
- if (HasHighPriority == true){
+ if (hasHighPriority == true){
- HighPriorityIcon->SetPosition(wxPoint(FirstPosition,7));
+ highPriorityIcon->SetPosition(wxPoint(firstPosition,7));
- HighPriorityIcon->Show(true);
+ highPriorityIcon->Show(true);
- PositionMode++;
+ positionMode++;
} else {
- HighPriorityIcon->Show(false);
+ highPriorityIcon->Show(false);
}
// Check if the alarm icon needs to be displayed.
- if (HasAlarm == true){
+ if (hasAlarm == true){
- switch(PositionMode){
+ switch(positionMode){
case 0:
- AlarmIcon->SetPosition(wxPoint(FirstPosition,7));
+ alarmIcon->SetPosition(wxPoint(firstPosition,7));
break;
case 1:
- AlarmIcon->SetPosition(wxPoint(SecondPosition,7));
+ alarmIcon->SetPosition(wxPoint(secondPosition,7));
break;
}
- AlarmIcon->Show(true);
+ alarmIcon->Show(true);
- PositionMode++;
+ positionMode++;
} else {
- AlarmIcon->Show(false);
+ alarmIcon->Show(false);
}
// Now set the text.
- switch(PositionMode){
+ switch(positionMode){
case 0:
- EventText->SetPosition(wxPoint(FirstPosition,14));
- EventTime->SetPosition(wxPoint(FirstPosition,3));
+ eventText->SetPosition(wxPoint(firstPosition,14));
+ eventTime->SetPosition(wxPoint(firstPosition,3));
break;
case 1:
- EventText->SetPosition(wxPoint(SecondPosition,14));
- EventTime->SetPosition(wxPoint(FirstPosition,3));
+ eventText->SetPosition(wxPoint(secondPosition,14));
+ eventTime->SetPosition(wxPoint(firstPosition,3));
break;
case 2:
- EventText->SetPosition(wxPoint(ThirdPosition,14));
- EventTime->SetPosition(wxPoint(FirstPosition,3));
+ eventText->SetPosition(wxPoint(thirdPosition,14));
+ eventTime->SetPosition(wxPoint(firstPosition,3));
break;
}
}
-void XCCalendarDayEntry::PaintFrameEvent(wxPaintEvent &PaintEvent){
-
- Repaint();
-
-}
-
-void XCCalendarDayEntry::ResizeFrameEvent(wxSizeEvent &SizeEvent){
+void XCCalendarDayEntry::ResizeFrameEvent(wxSizeEvent &sizeEvent){
// Adjust the Event text so it is displayed properly.
- switch(PositionMode){
+ switch(positionMode){
case 0:
- EventText->SetSize(wxSize((this->GetClientRect().width - FirstPosition - 5),15));
- EventTime->SetSize(wxSize((this->GetClientRect().width - FirstPosition - 5),15));
+ eventText->SetSize(wxSize((this->GetClientRect().width - firstPosition - 5),15));
+ eventTime->SetSize(wxSize((this->GetClientRect().width - firstPosition - 5),15));
break;
case 1:
- EventText->SetSize(wxSize((this->GetClientRect().width - SecondPosition - 5),15));
- EventTime->SetSize(wxSize((this->GetClientRect().width - SecondPosition - 5),15));
+ eventText->SetSize(wxSize((this->GetClientRect().width - secondPosition - 5),15));
+ eventTime->SetSize(wxSize((this->GetClientRect().width - secondPosition - 5),15));
break;
case 2:
- EventText->SetSize(wxSize((this->GetClientRect().width - ThirdPosition - 5),14));
- EventTime->SetSize(wxSize((this->GetClientRect().width - ThirdPosition - 5),15));
+ eventText->SetSize(wxSize((this->GetClientRect().width - thirdPosition - 5),14));
+ eventTime->SetSize(wxSize((this->GetClientRect().width - thirdPosition - 5),15));
break;
}
+ // Resize the main panel.
+
+ mainPanel->SetSize(this->GetSize());
+
// Refresh the window.
this->Refresh();
}
-void XCCalendarDayEntry::LeftClick(wxMouseEvent &MouseEvent){
+void XCCalendarDayEntry::LeftClick(wxMouseEvent &mouseEvent){
// Change the background of the widget to mark
// the entry as selected.
- this->SetBackgroundColour(wxColor(255,215,0));
- wxCommandEvent DeselectOthersEvent(XCCALENDARDAY_DESELECTOTHERENTRIES);
- DeselectOthersEvent.SetInt(entryID);
- DeselectOthersEvent.SetId(ID_DESELECTOTHERENTRIES);
- wxPostEvent(DayPanel, DeselectOthersEvent);
+ mainPanel->SetBackgroundColour(wxColor(255,215,0));
+ wxCommandEvent deselectOthersEvent(XCCALENDARDAY_DESELECTOTHERENTRIES);
+ deselectOthersEvent.SetInt(eventID);
+ deselectOthersEvent.SetId(ID_DESELECTOTHERENTRIES);
+ wxPostEvent(dayPanel, deselectOthersEvent);
+
+}
+
+void XCCalendarDayEntry::RightClick(wxMouseEvent &MouseEvent){
+
+ // Sent an event to the month view control.
+
+ EventProperties *eventData = new EventProperties;
+ eventData->calendarID = calendarID;
+ eventData->eventID = eventID;
+
+ wxCommandEvent eventMenu(XCCALENDARMONTH_DISPLAYEVENTMENU);
+ eventMenu.SetClientData(eventData);
+ eventMenu.SetId(ID_DISPLAYEVENTMENU);
+ wxPostEvent(this->GetParent()->GetParent(), eventMenu);
}
void XCCalendarDayEntry::Deselect(wxCommandEvent &DeselectEvent){
- this->SetBackgroundColour(wxNullColour);
+ mainPanel->SetBackgroundColour(wxNullColour);
}
this->timeSecond = timeSecond;
string timeOutput = BuildEventTime(timeHour, timeMinute);
- EventTime->SetLabel(timeOutput);
+ eventTime->SetLabel(timeOutput);
}
-void XCCalendarDayEntry::SetColour(Colour *ColourIn){
+void XCCalendarDayEntry::SetColour(Colour *colourIn){
- EntryColour = *ColourIn;
- Repaint();
+ calendarColour->SetBackgroundColour(wxColour(colourIn->red, colourIn->green, colourIn->blue, colourIn->alpha));
}
-void XCCalendarDayEntry::SetDisplayAlarm(bool DisplayValue){
+void XCCalendarDayEntry::SetDisplayAlarm(bool displayValue){
- HasAlarm = DisplayValue;
+ hasAlarm = displayValue;
UpdateInformation();
}
-void XCCalendarDayEntry::SetDisplayHighPriority(bool DisplayValue){
+void XCCalendarDayEntry::SetDisplayHighPriority(bool displayValue){
- HasHighPriority = DisplayValue;
+ hasHighPriority = displayValue;
UpdateInformation();
}
bool XCCalendarDayEntry::GetDisplayAlarm(){
- return HasAlarm;
+ return hasAlarm;
}
bool XCCalendarDayEntry::GetDisplayHighPriority(){
- return HasHighPriority;
+ return hasHighPriority;
}
int XCCalendarDayEntry::GetID(){
- return entryID;
+ return eventID;
}
}
+int XCCalendarDayEntry::GetEventID(){
+
+ return eventID;
+
+}
+
int XCCalendarDayEntry::GetAccountID(){
return accountID;
}
-void XCCalendarDayEntry::SetEntryIDs(int accountID, int calendarID, int entryID){
+void XCCalendarDayEntry::SetEntryIDs(int accountID, int calendarID, int eventID){
this->accountID = accountID;
this->calendarID = calendarID;
- this->entryID = entryID;
+ this->eventID = eventID;
}
}
+void XCCalendarDayEntry::SetEventName(string eventName){
+
+ eventText->SetLabel((wxString)eventName);
+
+}
+
wxSizerItem* XCCalendarDayEntry::GetAfterSpacer(){
return afterSpacer;