From d70c63d455326e204f8c52c6f620c3ec37d178b9 Mon Sep 17 00:00:00 2001 From: Knut Date: Wed, 28 Aug 2013 12:04:21 +0200 Subject: [PATCH] Added rudimentary support for HTML5 notifications in webkit --- client/assets/src/applets/settings.js | 22 +++++++++++++++++----- client/assets/src/index.html.tmpl | 8 ++++++++ client/assets/src/translations/de.po | 8 ++++++++ client/assets/src/translations/en-gb.po | 9 +++++++++ client/assets/src/views/application.js | 9 ++++++++- client/assets/src/views/panel.js | 3 ++- 6 files changed, 52 insertions(+), 7 deletions(-) diff --git a/client/assets/src/applets/settings.js b/client/assets/src/applets/settings.js index 7b4580a..5188edd 100644 --- a/client/assets/src/applets/settings.js +++ b/client/assets/src/applets/settings.js @@ -3,7 +3,8 @@ events: { 'change [data-setting]': 'saveSettings', 'click [data-setting="theme"]': 'selectTheme', - 'click .register_protocol': 'registerProtocol' + 'click .register_protocol': 'registerProtocol', + 'click .enable_notifications': 'enableNoticiations' }, initialize: function (options) { @@ -19,14 +20,20 @@ default_client: _kiwi.global.i18n.translate('client_applets_settings_default_client').fetch(), make_default: _kiwi.global.i18n.translate('client_applets_settings_default_client_enable').fetch(), locale_restart_needed: _kiwi.global.i18n.translate('client_applets_settings_locale_restart_needed').fetch(), - default_note: _kiwi.global.i18n.translate('client_applets_settings_default_client_notice').fetch('chrome://settings/handlers') + default_note: _kiwi.global.i18n.translate('client_applets_settings_default_client_notice').fetch('chrome://settings/handlers'), + html5_notifications: _kiwi.global.i18n.translate('client_applets_settings_locale_html5_notifications').fetch(), + enable_notifications: _kiwi.global.i18n.translate('client_applets_settings_locale_enable_notifications').fetch() }; this.$el = $(_.template($('#tmpl_applet_settings').html().trim(), text)); if (!navigator.registerProtocolHandler) { this.$el.find('.protocol_handler').remove(); } - +/* + if (!window.webkitNotifications) { + this.$el.find('notification_enabler').remove(); + } +*/ // Incase any settings change while we have this open, update them _kiwi.global.settings.on('change', this.loadSettings, this); @@ -106,7 +113,12 @@ registerProtocol: function (event) { navigator.registerProtocolHandler('irc', document.location.origin + _kiwi.app.get('base_path') + '/%s', 'Kiwi IRC'); navigator.registerProtocolHandler('ircs', document.location.origin + _kiwi.app.get('base_path') + '/%s', 'Kiwi IRC'); - } + }, + + enableNoticiations: function(event){ + window.webkitNotifications.requestPermission(); + } + }); @@ -119,4 +131,4 @@ _kiwi.model.Applet.register('kiwi_settings', Applet); -})(); \ No newline at end of file +})(); diff --git a/client/assets/src/index.html.tmpl b/client/assets/src/index.html.tmpl index 470814c..2e14941 100644 --- a/client/assets/src/index.html.tmpl +++ b/client/assets/src/index.html.tmpl @@ -266,6 +266,14 @@ <%= default_note %> + +
+
<%= html5_notifications %>
+
+ +
+
+ diff --git a/client/assets/src/translations/de.po b/client/assets/src/translations/de.po index 77fe1d0..705cd10 100755 --- a/client/assets/src/translations/de.po +++ b/client/assets/src/translations/de.po @@ -78,6 +78,14 @@ msgstr "Notiz: Nutzer von Chrome oder Chromium müssen ihre Einstellungen durch msgid "client_applets_settings_title" msgstr "Einstellungen" +#: +msgid "client_applets_settings_locale_html5_notifications" +msgstr "HTML5 Benachrichtigungen" + +#: +msgid "client_applets_settings_locale_enable_notifications" +msgstr "Benachrichtigungen einschalten" + #: client/assets/src/models/applet.js msgid "client_models_applet_unknown" msgstr "Unbekannte Anwendung" diff --git a/client/assets/src/translations/en-gb.po b/client/assets/src/translations/en-gb.po index 2215754..828f67b 100755 --- a/client/assets/src/translations/en-gb.po +++ b/client/assets/src/translations/en-gb.po @@ -78,6 +78,15 @@ msgstr "Note: Chrome or Chromium browser users may need to check their settings msgid "client_applets_settings_title" msgstr "Settings" +#: +msgid "client_apllets_settings_html5_notifications" +msgstr "HTML5 Notifications" + +#: +msgid "client_apllets_settings_enable_notifications" +msgstr "Enable notifications" + + #: client/assets/src/models/applet.js msgid "client_models_applet_unknown" msgstr "Unknown Applet" diff --git a/client/assets/src/views/application.js b/client/assets/src/views/application.js index dcf9cfe..e6a244c 100644 --- a/client/assets/src/views/application.js +++ b/client/assets/src/views/application.js @@ -285,5 +285,12 @@ _kiwi.view.Application = Backbone.View.extend({ return; soundManager.play(sound_id); + }, + + showNotification: function(sender, message) { + console.log(sender, message); + if (window.webkitNotifications && webkitNotifications.checkPermission() === 0){ + window.webkitNotifications.createNotification('/kiwi/assets/img/ico.png', sender, message).show(); + } } -}); \ No newline at end of file +}); diff --git a/client/assets/src/views/panel.js b/client/assets/src/views/panel.js index 9d2fd33..2d0674a 100644 --- a/client/assets/src/views/panel.js +++ b/client/assets/src/views/panel.js @@ -136,6 +136,7 @@ _kiwi.view.Panel = Backbone.View.extend({ _kiwi.app.view.alertWindow('* ' + _kiwi.global.i18n.translate('client_views_panel_activity').fetch()); _kiwi.app.view.favicon.newHighlight(); _kiwi.app.view.playSound('highlight'); + _kiwi.app.view.showNotification(msg.nick, msg.msg); this.alert('highlight'); } else { @@ -312,4 +313,4 @@ _kiwi.view.Panel = Backbone.View.extend({ this.$container[0].scrollTop = this.$container[0].scrollHeight; } } -}); \ No newline at end of file +}); -- 2.25.1