Cordova Calendar Plugin For Windows Phone 8
Solution 1:
Where have you stated the success callback ? According to me the code in your js should be -
cordova.exec(successCallback, failureCallback, 'AddCalendarEvents', 'addCalendarEvents', inputCalendarString);
functionsuccessCallback(success){
console.log('Success');
}
functionfailureCallback(error){
console.log('Failure');
}
Also, you'll need a DispatcherCommandResult in your .cs file to return the callback.
Solution 2:
Use the following plugin that allows for adding of events to the native Windows Phone calendar https://github.com/faGH/fa-plugin-calendar
Solution 3:
Create a new cs file in plugins directory named AddCalendarEvents.cs and add following code-
using Microsoft.Phone.Tasks;
using Microsoft.Phone.UserData;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using WPCordovaClassLib.Cordova;
using WPCordovaClassLib.Cordova.Commands;
using WPCordovaClassLib.Cordova.JSON;
namespaceCordova.Extension.Commands {
publicclassAddCalendarEvents: BaseCommand {
publicvoidaddCalendarEvents(String str) {
string[] calendarValues = str.Split('|');
SaveAppointmentTask saveAppointmentTask = new SaveAppointmentTask();
int appointmentYear = Int32.Parse(calendarValues[3]);
int appointmentMonth = Int32.Parse(calendarValues[4]);
int appointmentDate = Int32.Parse(calendarValues[5]);
float appointmentTime = float.Parse(calendarValues[6]);
DateTime scheduleApptDateStart = (new DateTime(appointmentYear, appointmentMonth, appointmentDate, 7, 0, 0)).AddHours(appointmentTime);
DateTime scheduleApptDateEnd = (new DateTime(appointmentYear, appointmentMonth, appointmentDate, 7, 30, 0)).AddHours(appointmentTime);
saveAppointmentTask.StartTime = scheduleApptDateStart;
saveAppointmentTask.EndTime = scheduleApptDateEnd;
saveAppointmentTask.Subject = calendarValues[1];
saveAppointmentTask.Location = calendarValues[2];
saveAppointmentTask.Details = "";
saveAppointmentTask.IsAllDayEvent = false;
saveAppointmentTask.Reminder = Reminder.FifteenMinutes;
saveAppointmentTask.AppointmentStatus = Microsoft.Phone.UserData.AppointmentStatus.Busy;
saveAppointmentTask.Show();
}
publicvoidgetCalendarEventData(String str) {
ButtonAppointments_Click();
}
privatevoidButtonAppointments_Click() {
Appointments appts = new Appointments();
//Identify the method that runs after the asynchronous search completes.
appts.SearchCompleted += new EventHandler < AppointmentsSearchEventArgs > (Appointments_SearchCompleted);
DateTime start = DateTime.Now;
DateTime end = start.AddDays(7);
int max = 20;
//Start the asynchronous search.
appts.SearchAsync(start, end, max, "Appointments Test #1");
}
voidAppointments_SearchCompleted(object sender, AppointmentsSearchEventArgs e) {
//Do something with the results.//MessageBox.Show(e.Results.Count().ToString());try {
e.Results.ToList();
MessageBox.Show("Success");
} catch (System.Exception) {}
}
}
}
Refer plugin in config.xml-
<featurename="AddCalendarEvents"><paramname="wp-package"value="AddCalendarEvents" /><paramname="onload"value="true" /></feature>
You can call it using
var inputCalendarString = notes + '|' + title + '|' + location + '|' + appointmentDate.getFullYear() + '|' + (appointmentDate.getMonth() + 1) + '|' + appointmentDate.getDate() + '|' + '1.0' + '|' + ' ';
cordova.exec(null, null, "AddCalendarEvents", "addCalendarEvents", inputCalendarString);
It works for one event but if you have loop of events it will not work. To support multiple events, you can maintain Localstorage flag & data with current index of events data. Use resume callback to add rest of the events using custom appointment plugin that you wrote. Each time your app resumes you increment index and add events data from next index.
document.addEventListener('resume', this.resumeApp, false)
resumeApp: function () {
if (localStorage.getItem('updatecalendar') == 'false') {
syncUpdatedCalendarWP8();
}
}
Post a Comment for "Cordova Calendar Plugin For Windows Phone 8"