Merged
[qtmeetings] / src / UserInterface / Views / WeeklyViewWidget.h
1 #ifndef WEEKLYVIEWWIDGET_H_\r
2 #define WEEKLYVIEWWIDGET_H_\r
3 \r
4 #include "ViewBase.h"\r
5 #include <QDateTime>\r
6 \r
7 class QLabel;\r
8 class QPushButton;\r
9 class MeetingRoomCombo;\r
10 class TimeDisplayWidget;\r
11 class ScheduleWidget;\r
12 class Configuration;\r
13 class Meeting;\r
14 class Room;\r
15 \r
16 //! Userinterface class. Shows a weekly calendar for the selected room, provides date and time information.\r
17 /*!\r
18  * UserInterface class. Shows the current date and time and selected week's calendar for\r
19  * selected meeting room. User can select meeting room, browse weeks back and forth, and can navigate\r
20  * back to the current week.\r
21  */\r
22 class WeeklyViewWidget : public ViewBase\r
23 {\r
24         Q_OBJECT\r
25 \r
26 public:\r
27         //! Constructor.\r
28         /*!\r
29          * Constructor to initialize an WeeklyViewWidget instance.\r
30          * \param aCurrentDateTime\r
31          * \param aConfiguration Pointer to the configuration object. Not owned.\r
32          * \param aParent Pointer to the parent widget.\r
33          */\r
34         WeeklyViewWidget( QDateTime aCurrentDateTime, Configuration *aConfiguration, QWidget *aParent = 0 );\r
35         //! Destructor.\r
36         virtual ~WeeklyViewWidget();\r
37 \r
38         //! Current meeting\r
39         /*!\r
40          * Returns the current meeting if any\r
41          * \return Current meeting if any, otherwise null pointer\r
42          */\r
43         Meeting* currentMeeting();\r
44         //! Current room\r
45         /*!\r
46          * Returns the currently selected meeting room.\r
47          * \return Selected meeting room.\r
48          */\r
49         Room* currentRoom();\r
50 \r
51         //! First day of week currently displayd\r
52         /*!\r
53          * Returns the first day of week currently displayd.\r
54          * \return First day of week.\r
55          */\r
56         QDate beginnigOfShownWeek();\r
57         \r
58         void showCurrentWeek();\r
59         \r
60         void setDefaultRoom();\r
61         \r
62 signals:\r
63         //! Signals change of the meeting room.\r
64         /*!\r
65          * Signal is emited when meeting room is changed.\r
66          * \param aNewRoom Selected meeting room.\r
67          */\r
68         void currentRoomChanged( Room *aNewRoom );\r
69         //! Signals change of the current meeting.\r
70         /*!\r
71          * Signal is emited when new meeting is started.\r
72          * \param aNewMeeting Meeting that has been started.\r
73          */\r
74         void currentMeetingChanged( Meeting *aNewMeeting );\r
75         //! Meeting activated.\r
76         /*!\r
77          * Signal is emitted when a meeting is clicked by the user.\r
78          * \param aMeeting actived meeting.\r
79          */\r
80         void meetingActivated( Meeting *aMeeting );\r
81         //! Signals creation of new meeting.\r
82         /*!\r
83          * Signal is emited when new meeting is created.\r
84          * \param aMeeting Meeting that has been created.\r
85          * \param aUsername User who created the meeting.\r
86          * \param aPassword Password of the "aUsername"\r
87          */\r
88         void meetingToCreate( Meeting *aMeeting, const QString &aUsername, const QString &aPassword );\r
89         //! Signals deletion of a meeting.\r
90         /*!\r
91          * Signal is emited when meeting is deleted.\r
92          * \param aMeeting Deleted meeting.\r
93          * \param aUsername User who deleted the meeting.\r
94          * \param aPassword Password of the "aUsername"\r
95          */\r
96         void meetingToDelete( Meeting *aMeeting, const QString &aUsername, const QString &aPassword );\r
97         //! Signals modifications of a meeting.\r
98         /*!\r
99          * Signal is emited when meeting is modified.\r
100          * \param aMeeting Modified meeting.\r
101          * \param aUsername User who modified the meeting.\r
102          * \param aPassword Password of the "aUsername"\r
103          */\r
104         void meetingToUpdate( Meeting *aMeeting, const QString &aUsername, const QString &aPassword );\r
105 \r
106         //! Signals\r
107         /*!\r
108          * Signal is emited when settings button is clicked.\r
109          */\r
110         void settingsButtonClicked();\r
111         \r
112         //! Signal. Emitted if the shown week has been changed.\r
113         /*!\r
114          * Signal. Emitted if the shown week has been changed.
115          * \param aDate The first date of the shown week.
116          */
117         void shownWeekChanged( QDate aDate );\r
118 \r
119 public slots:\r
120         //! Sets the date and time\r
121         /*!\r
122          * Sets the current date and time\r
123          * \param aCurrentDateTime Date and time to be displayd.\r
124          */\r
125         void setCurrentDateTime( QDateTime aCurrentDateTime );\r
126         //! Insert meeting\r
127         /*!\r
128          * Inserts new meeting into the calendar\r
129          * \param aMeeting Meeting to be inserted.\r
130          */\r
131         void insertMeeting( Meeting *aMeeting );\r
132         //! Delete meeting\r
133         /*!\r
134          * Removes meeting from the calendar\r
135          * \param aMeeting Meeting to be deleted.\r
136          */\r
137         void deleteMeeting( Meeting *aMeeting );\r
138         //! Update meeting\r
139         /*!\r
140          * Updates the display of given meeting in calendar.\r
141          * \param aMeeting Meeting to be updated.\r
142          */\r
143         void updateMeeting( Meeting *aMeeting );\r
144         \r
145         //! Handle resizing\r
146         /*!\r
147          * Handle possible resize changes after the view is resized\r
148          * to match the window managers client area.\r
149          */\r
150         void viewResized(const QSize &size) { }\r
151 \r
152 private:\r
153         //! Displays the selectable meeting rooms.\r
154         MeetingRoomCombo *iRoomsCombo;\r
155         //! Displays the time.\r
156         TimeDisplayWidget *iTimeDisplay;\r
157         //! Displays the calendar.\r
158         ScheduleWidget *iSchedule;\r
159         //! Displays the date.\r
160         QLabel *iCurrentDayLabel;\r
161         //! Displays the week number.\r
162         QLabel *iCurrentWeekLabel;\r
163         //! Button used to display previous week's calendar.\r
164         QPushButton *iPreviousWeekButton;\r
165         //! Button used to display current week's calendar.\r
166         QPushButton *iCurrentWeekButton;\r
167         //! Button used to display next week's calendar.\r
168         QPushButton *iNextWeekButton;\r
169         //! Settings button. TODO : Correct widget is needed!!\r
170         QPushButton *iSettingsButton;\r
171         //! About button. TODO : Correct widget is needed!!\r
172         QPushButton *iAboutButton;\r
173         /* !\r
174          * Pointer to configuration object.\r
175          * Contains configurable data and IS NOT OWNED by the widget.\r
176          */\r
177         Configuration *iConfiguration;\r
178 };\r
179 \r
180 #endif /*WEEKLYVIEWWIDGET_H_*/\r