diff options
author | Thomas Bruederli <thomas@roundcube.net> | 2013-08-15 08:57:11 +0200 |
---|---|---|
committer | Thomas Bruederli <thomas@roundcube.net> | 2013-08-15 08:57:11 +0200 |
commit | 4910b0666edeeebb18ac9682cb898dba8f22962a (patch) | |
tree | 1c3d88f7ab70db5a0e2f81d7873a8473f9d686ea | |
parent | 6746148d1b0fa965836f819671fa49b04af2d383 (diff) |
Distinguish mobile/tablet/touch devices
-rw-r--r-- | program/js/app.js | 2 | ||||
-rw-r--r-- | program/js/common.js | 8 | ||||
-rw-r--r-- | program/js/list.js | 8 | ||||
-rw-r--r-- | skins/larry/includes/links.html | 2 | ||||
-rw-r--r-- | skins/larry/ui.js | 4 |
5 files changed, 16 insertions, 8 deletions
diff --git a/program/js/app.js b/program/js/app.js index 78ac4c675..dedad37d2 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -1731,7 +1731,7 @@ function rcube_webmail() if (!row.depth && row.has_children && (expando = document.getElementById('rcmexpando'+row.uid))) { row.expando = expando; expando.onmousedown = function(e) { return self.expand_message_row(e, uid); }; - if (bw.mobile) { + if (bw.touch) { expando.addEventListener('touchend', function(e) { if (e.changedTouches.length == 1) { self.expand_message_row(e, uid); diff --git a/program/js/common.js b/program/js/common.js index de07ec131..afaf91639 100644 --- a/program/js/common.js +++ b/program/js/common.js @@ -62,7 +62,7 @@ function roundcube_browser() this.safari = (!this.chrome && (this.agent_lc.indexOf('safari') > 0 || this.agent_lc.indexOf('applewebkit') > 0)); this.konq = (this.agent_lc.indexOf('konqueror') > 0); this.mz = (this.dom && !this.ie && !this.ns && !this.chrome && !this.safari && !this.konq && this.agent.indexOf('Mozilla') >= 0); - this.iphone = (this.safari && this.agent_lc.indexOf('iphone') > 0); + this.iphone = (this.safari && (this.agent_lc.indexOf('iphone') > 0 || this.agent_lc.indexOf('ipod') > 0)); this.ipad = (this.safari && this.agent_lc.indexOf('ipad') > 0); this.opera = window.opera ? true : false; @@ -83,7 +83,9 @@ function roundcube_browser() if (this.safari && (/;\s+([a-z]{2})-[a-z]{2}\)/.test(this.agent_lc))) this.lang = RegExp.$1; - this.mobile = this.agent_lc.match(/iphone|ipad|ipod|android|blackberry|iemobile|opera mini|opera mobi/); + this.tablet = /ipad|android|xoom|sch-i800|playbook|tablet|kindle/i.test(this.agent_lc); + this.mobile = /iphone|ipod|blackberry|iemobile|opera mini|opera mobi|mobile/i.test(this.agent_lc); + this.touch = this.mobile || this.tablet; this.dhtml = ((this.ie4 && this.win) || this.ie5 || this.ie6 || this.ns4 || this.mz); this.vml = (this.win && this.ie && this.dom && !this.opera); this.pngalpha = (this.mz || (this.opera && this.vendver >= 6) || (this.ie && this.mac && this.vendver >= 5) || @@ -127,6 +129,8 @@ function roundcube_browser() if (this.mobile) classname += ' mobile'; + if (this.tablet) + classname += ' tablet'; if (document.documentElement) document.documentElement.className += classname; diff --git a/program/js/list.js b/program/js/list.js index c89c799b6..76582d1f2 100644 --- a/program/js/list.js +++ b/program/js/list.js @@ -122,7 +122,7 @@ init_row: function(row) row.onmousedown = function(e){ return self.drag_row(e, this.uid); }; row.onmouseup = function(e){ return self.click_row(e, this.uid); }; - if (bw.mobile) { + if (bw.touch) { row.addEventListener('touchstart', function(e) { if (e.touches.length == 1) { self.touchmoved = false; @@ -165,7 +165,7 @@ init_header: function() $(this.list.tHead).replaceWith($(this.fixed_header).find('thead').clone()); $(this.list.tHead).find('tr td').attr('style', ''); // remove fixed widths } - else if (!bw.mobile && this.list.className.indexOf('fixedheader') >= 0) { + else if (!bw.touch && this.list.className.indexOf('fixedheader') >= 0) { this.init_fixed_header(); } @@ -429,7 +429,7 @@ drag_row: function(e, id) this.drag_mouse_start = rcube_event.get_mouse_pos(e); rcube_event.add_listener({event:'mousemove', object:this, method:'drag_mouse_move'}); rcube_event.add_listener({event:'mouseup', object:this, method:'drag_mouse_up'}); - if (bw.mobile) { + if (bw.touch) { rcube_event.add_listener({event:'touchmove', object:this, method:'drag_mouse_move'}); rcube_event.add_listener({event:'touchend', object:this, method:'drag_mouse_up'}); } @@ -1370,7 +1370,7 @@ drag_mouse_up: function(e) rcube_event.remove_listener({event:'mousemove', object:this, method:'drag_mouse_move'}); rcube_event.remove_listener({event:'mouseup', object:this, method:'drag_mouse_up'}); - if (bw.mobile) { + if (bw.touch) { rcube_event.remove_listener({event:'touchmove', object:this, method:'drag_mouse_move'}); rcube_event.remove_listener({event:'touchend', object:this, method:'drag_mouse_up'}); } diff --git a/skins/larry/includes/links.html b/skins/larry/includes/links.html index 5a6c8cab3..69e477c2d 100644 --- a/skins/larry/includes/links.html +++ b/skins/larry/includes/links.html @@ -1,5 +1,5 @@ <meta http-equiv="X-UA-Compatible" content="IE=EDGE" /> -<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" /> +<meta name="viewport" content="" id="viewport" /> <link rel="shortcut icon" href="/images/favicon.ico"/> <link rel="stylesheet" type="text/css" href="/styles.css" /> <roundcube:if condition="in_array(env:task, array('mail','addressbook','settings'))" /> diff --git a/skins/larry/ui.js b/skins/larry/ui.js index e5733bd23..ae14d81b2 100644 --- a/skins/larry/ui.js +++ b/skins/larry/ui.js @@ -52,6 +52,10 @@ function rcube_mail_ui() if (parseInt(minmode) || (minmode === null && $(window).height() < 850)) { $(document.body).addClass('minimal'); } + + if (bw.tablet) { + $('#viewport').attr('content', "width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"); + } } |