15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Displays a notification with the current time. Requires "notifications" 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) permission in the manifest file (or calling 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "webkitNotifications.requestPermission" beforehand). 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/ 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function show() { 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var time = /(..)(:..)/.exec(new Date()); // The prettyprinted time. 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var hour = time[1] % 12 || 12; // The prettyprinted hour. 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var period = time[1] < 12 ? 'a.m.' : 'p.m.'; // The period of the day. 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var notification = window.webkitNotifications.createNotification( 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '48.png', // The image. 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) hour + time[2] + ' ' + period, // The title. 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'Time to make the toast.' // The body. 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ); 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) notification.show(); 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Conditionally initialize the options. 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if (!localStorage.isInitialized) { 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) localStorage.isActivated = true; // The display activation. 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) localStorage.frequency = 1; // The display frequency, in minutes. 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) localStorage.isInitialized = true; // The option initialization. 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test for notification support. 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if (window.webkitNotifications) { 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // While activated, show notifications at the display frequency. 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (JSON.parse(localStorage.isActivated)) { show(); } 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var interval = 0; // The display interval, in minutes. 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setInterval(function() { 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) interval++; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if ( 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) JSON.parse(localStorage.isActivated) && 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) localStorage.frequency <= interval 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ) { 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) show(); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) interval = 0; 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 60000); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 48