{"id":2167,"date":"2011-08-11T10:24:55","date_gmt":"2011-08-11T15:24:55","guid":{"rendered":"http:\/\/mikeconley.ca\/blog\/?p=2167"},"modified":"2023-12-20T16:25:13","modified_gmt":"2023-12-20T21:25:13","slug":"fiddling-with-an-eds-provider-for-lightning-calendar","status":"publish","type":"post","link":"https:\/\/mikeconley.ca\/blog\/2011\/08\/11\/fiddling-with-an-eds-provider-for-lightning-calendar\/","title":{"rendered":"Fiddling with an EDS Provider for Lightning (Calendar)"},"content":{"rendered":"<p>While I was focusing on <a href=\"http:\/\/mikeconley.ca\/blog\/2011\/08\/03\/introducing-eds-contacts-integration-for-thunderbird-or-coming-up-for-air\/\">getting EDS contacts integration working in Thunderbird<\/a>, <a href=\"http:\/\/kewisch.wordpress.com\/\">Phillip Kewisch<\/a> started working on an EDS provider for <a href=\"http:\/\/www.mozilla.org\/projects\/calendar\/lightning\/\">Lightning<\/a>.\u00a0 This would allow the Lightning calendar add-on to read and manipulate EDS calendars.<\/p>\n<p>One of the reasons we want to do this is because EDS calendars are nicely tied in with the indicator-datetime applet:<\/p>\n<p><a href=\"http:\/\/mikeconley.ca\/blog\/wp-content\/uploads\/2011\/08\/Screen-shot-2011-08-11-at-10.44.48-AM.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"2169\" data-permalink=\"https:\/\/mikeconley.ca\/blog\/2011\/08\/11\/fiddling-with-an-eds-provider-for-lightning-calendar\/screen-shot-2011-08-11-at-10-44-48-am\/\" data-orig-file=\"https:\/\/mikeconley.ca\/blog\/wp-content\/uploads\/2011\/08\/Screen-shot-2011-08-11-at-10.44.48-AM.png\" data-orig-size=\"351,306\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"The indicator-datetime applet\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/mikeconley.ca\/blog\/wp-content\/uploads\/2011\/08\/Screen-shot-2011-08-11-at-10.44.48-AM-300x261.png\" data-large-file=\"https:\/\/mikeconley.ca\/blog\/wp-content\/uploads\/2011\/08\/Screen-shot-2011-08-11-at-10.44.48-AM.png\" class=\"alignnone size-full wp-image-2169\" title=\"The indicator-datetime applet\" src=\"http:\/\/mikeconley.ca\/blog\/wp-content\/uploads\/2011\/08\/Screen-shot-2011-08-11-at-10.44.48-AM.png\" alt=\"The indicator-datetime applet on the Ubuntu desktop, opened to show the calendar, and some events from the calendar\" width=\"351\" height=\"306\" srcset=\"https:\/\/mikeconley.ca\/blog\/wp-content\/uploads\/2011\/08\/Screen-shot-2011-08-11-at-10.44.48-AM.png 351w, https:\/\/mikeconley.ca\/blog\/wp-content\/uploads\/2011\/08\/Screen-shot-2011-08-11-at-10.44.48-AM-300x261.png 300w\" sizes=\"auto, (max-width: 351px) 100vw, 351px\" \/><\/a><\/p>\n<p>That&#8217;s really cool integration &#8211; at a glance, I can see what&#8217;s going on today, and I don&#8217;t need to open my full-blown desktop calendar application to do it.<\/p>\n<p>In just a little over a week, Phillip had us doing basic reading of the default EDS calendar:<\/p>\n<p><a href=\"http:\/\/mikeconley.ca\/blog\/wp-content\/uploads\/2011\/08\/Screen-shot-2011-08-11-at-10.36.11-AM.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"2168\" data-permalink=\"https:\/\/mikeconley.ca\/blog\/2011\/08\/11\/fiddling-with-an-eds-provider-for-lightning-calendar\/screen-shot-2011-08-11-at-10-36-11-am\/\" data-orig-file=\"https:\/\/mikeconley.ca\/blog\/wp-content\/uploads\/2011\/08\/Screen-shot-2011-08-11-at-10.36.11-AM.png\" data-orig-size=\"1016,648\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"Lightning, reading an EDS calendar\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/mikeconley.ca\/blog\/wp-content\/uploads\/2011\/08\/Screen-shot-2011-08-11-at-10.36.11-AM-300x191.png\" data-large-file=\"https:\/\/mikeconley.ca\/blog\/wp-content\/uploads\/2011\/08\/Screen-shot-2011-08-11-at-10.36.11-AM.png\" class=\"alignnone size-full wp-image-2168\" title=\"Lightning, reading an EDS calendar\" src=\"http:\/\/mikeconley.ca\/blog\/wp-content\/uploads\/2011\/08\/Screen-shot-2011-08-11-at-10.36.11-AM.png\" alt=\"The Lightning add-on, displaying an event from an EDS calendar\" width=\"711\" height=\"454\" srcset=\"https:\/\/mikeconley.ca\/blog\/wp-content\/uploads\/2011\/08\/Screen-shot-2011-08-11-at-10.36.11-AM.png 1016w, https:\/\/mikeconley.ca\/blog\/wp-content\/uploads\/2011\/08\/Screen-shot-2011-08-11-at-10.36.11-AM-300x191.png 300w\" sizes=\"auto, (max-width: 711px) 100vw, 711px\" \/><\/a><\/p>\n<p>Awesome!\u00a0 But there&#8217;s still a lot of work to do.<\/p>\n<p>In particular&#8230;<\/p>\n<h3>Indicator-datetime integration<\/h3>\n<p>When we click on an event in the indicator-datetime applet, we want Thunderbird to open with the Lightning tab focused, and the selected event in view.\u00a0 If we click on the &#8220;Add Event&#8221; menu item, we should be brought to the dialog that allows users to add new events to their EDS calendar.\u00a0 Also, when a user double-clicks on a particular day in the indicator-datetime applet, we want that day to open up in Lightning.<\/p>\n<p>So there are a few challenges here.\u00a0 The first one is that <em>opening Evolution calendar is hard-coded into indicator-datetime<\/em>.\u00a0 That means that we&#8217;re going to have to do a bit of reorganizing so that indicator-datetime can figure out what application to open when the user starts clicking on things.<\/p>\n<p>And remember that we want this to occur <em>whether or not Thunderbird \/ Lightning is open<\/em>.\u00a0 If Thunderbird is closed, and the user starts clicking around in indicator-datetime, then Thunderbird and Lightning should open and react appropriately.\u00a0 If they&#8217;re already open, they should probably focus (although Evolution calendar doesn&#8217;t seem to do this).<\/p>\n<p>That means making a way for Lightning to be summoned up from a command like &#8220;thunderbird -calendar&#8221;.<\/p>\n<h3>Full reading and writing to EDS calendars<\/h3>\n<p>The provider that Phillip got working is a good start, but it&#8217;s far from complete.\u00a0 For example, it will only read a single calendar from EDS.\u00a0 It also seems to choke if I restart Thunderbird after loading up my EDS calendar.<\/p>\n<p>Luckily, Lightning was developed with extensibility and other back-ends in mind.\u00a0 <a href=\"http:\/\/mikeconley.ca\/blog\/2011\/03\/22\/getting-the-rdf-out\/\">No de-RDF&#8217;ing required<\/a>.<\/p>\n<p>So what&#8217;s the ETA on this?\u00a0 Hard to say.\u00a0 I&#8217;m new to Lightning development, and I&#8217;m still feeling my way around.<\/p>\n<p>I&#8217;ll keep you posted!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>While I was focusing on getting EDS contacts integration working in Thunderbird, Phillip Kewisch started working on an EDS provider for Lightning.\u00a0 This would allow the Lightning calendar add-on to read and manipulate EDS calendars. One of the reasons we want to do this is because EDS calendars are nicely tied in with the indicator-datetime [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[861,79,862],"tags":[971,972,975,974,947,973,954,970,35,867],"class_list":["post-2167","post","type-post","status-publish","format-standard","hentry","category-mozilla-2","category-technology","category-thunderbird","tag-calendar","tag-calendaring","tag-clock","tag-datetime","tag-eds","tag-events","tag-evolution","tag-lightning","tag-mozilla","tag-thunderbird-2"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/prmTy-yX","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/posts\/2167","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/comments?post=2167"}],"version-history":[{"count":6,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/posts\/2167\/revisions"}],"predecessor-version":[{"id":3116,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/posts\/2167\/revisions\/3116"}],"wp:attachment":[{"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/media?parent=2167"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/categories?post=2167"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/tags?post=2167"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}