11
// Argument during startup
15
// Example of argument: calendar:///new-event
18
// Due to bug #1231558 you have to pass arguments BEFORE app:
19
// qmlscene calendar:///new-event calendar.qml
21
defaultArgument.help: i18n.tr("Calendar app accept three arguments: --starttime, --endtime and --newevet. They will be managed by system. See the source for a full comment about them");
22
//defaultArgument.required: false;
23
defaultArgument.valueNames: ["URL"]
25
/* ARGUMENTS on startup
26
* (no one is required)
31
* Create a new event. If starttime or endtime are set they are used to set start and end time of the new event.
32
* It accepts no value.
38
* If newevent has been called, starttime is the start time of event. Otherwise is the day on which app is focused on startup.
39
* It accepts an integer value of the number of seconds since UNIX epoch in the UTC timezone.
44
* If newevent is set it's the end time of the event, has to be > of starttime.
45
* If newevent isn't set and startime is set, its value is used to choose the right view.
46
* If neither of precendet flags are set, endtime is ignored.
47
* It accepts an integer value of the number of seconds since UNIX epoch in the UTC timezone.
11
51
objectName: "calendar"
12
52
applicationName: "com.ubuntu.calendar"
53
98
function newEvent() {
54
PopupUtils.open(newEventComponent, tabPage, {"defaultDate": currentDay})
99
var startDate = new Date();
100
var endDate = new Date();
104
if (starttime === 0) { // startime 0 means now
105
if (endtime !== -1) { // If also endtime has been invoked
106
endTime = parseInt(endtime);
107
if (endTime > startDate) // If endtime is after startime
108
endDate = new Date(endTime);
111
else if (starttime !== -1) { // If starttime has been invoked
112
startTime = parseInt(starttime);
113
startDate = new Date(startTime);
114
if (endtime !== -1) { // If --endtime has been invoked
115
endTime = parseInt(endtime);
116
if (endTime > startDate)
117
endDate = new Date(endTime);
120
pageStack.push(Qt.resolvedUrl("NewEvent.qml"),{"startDate": startDate, "endDate": endDate});
123
// This function calculate the difference between --endtime and --starttime and choose the better view
124
function calculateDifferenceStarttimeEndtime(startTime, endTime) {
125
var minute = 60 * 1000;
126
var hour = 60 * minute;
128
var month = 30 * day;
130
var difference = endTime - startTime;
132
if (difference > month)
133
return 0; // Year view
134
else if (difference > 7 * day)
135
return 1; // Month view}
136
else if (difference > day)
137
return 2; // Week view
139
return 3; // Day view
142
// This function parse the argument
143
function parseArguments(url) {
144
var newevenpattern= new RegExp ("newevent");
145
var starttimepattern = new RegExp ("starttime=\\d+");
146
var endtimepattern = new RegExp ("endtime=\\d+");
148
newevent = newevenpattern.test(url);
150
if (starttimepattern.test(url))
151
starttime = url.match(/starttime=(\d+)/)[0].replace("starttime=", '');
153
if (endtimepattern.test(url))
154
endtime = url.match(/endtime=(\d+)/)[0].replace("endtime=", '');
57
158
Component.onCompleted: {
159
// If an url has been set
160
if (args.defaultArgument.at(0)) {
161
parseArguments(args.defaultArgument.at(0))
162
tabPage.currentDay = new Date()
163
// If newevent has been called on startup
165
timer.running = true;
167
else if (starttime !== -1) { // If no newevent has been setted, but starttime
168
var startTime = parseInt(starttime);
169
tabPage.currentDay = new Date(startTime);
171
// If also endtime has been settend
172
if (endtime !== -1) {
173
var endTime = parseInt(endtime);
174
tabs.selectedTabIndex = calculateDifferenceStarttimeEndtime(startTime, endTime);
177
// If no endtime has been setted, open the starttime date in day view
178
tabs.selectedTabIndex = 3;
180
} // End of else if (starttime)
182
// Due to bug #1231558 {if (args.defaultArgument.at(0))} is always true
183
// After the fix we can delete this else
184
tabs.selectedTabIndex= 1;
186
} // End of if about args.values
188
tabs.selectedTabIndex= 1;
58
191
globalModel = GlobalModel.gloablModel();
59
192
setStartEndDateToModel();
60
tabs.selectedTabIndex = 1;
193
} // End of Component.onCompleted:
195
// This is for wait that the app is load when newEvent is invoked by argument