|
1 /*! |
|
2 \file zoombar.js This module contains the ZoomBar class. |
|
3 */ |
|
4 |
|
5 /*! |
|
6 Class to handle displaying the zoom bar. The zoom bar is displayed when the |
|
7 user presses the zoom button on the toolbar. It provides access to the zoom |
|
8 in and out functions. It is hidden when the main toolbar is hidden on user inactivity |
|
9 |
|
10 \param webtb web toolbar needed to set state of zoom button |
|
11 */ |
|
12 function ZoomBar(webtb) |
|
13 { |
|
14 var timeoutId = 0; // inactivity timer ID |
|
15 var ZB_TIMEOUT = 5000; // hide zoombar after 5 secs |
|
16 var zooming = false; // true when in the process of zooming |
|
17 var enabled = true; // zooming enabled flag - initially enabled |
|
18 |
|
19 // Private Methods |
|
20 //! Write zoom bar HTML code to document. |
|
21 function _zoombar_write() { |
|
22 var html = ''+ |
|
23 '<div id="zoomBarDiv">'+ |
|
24 '<img class="zoomBarBtn" id="zoomBarBtnIn">'+ |
|
25 '<img class="zoomBarBtn" id="zoomBarBtnOut">'+ |
|
26 '</div>'; |
|
27 document.write(html); |
|
28 } |
|
29 |
|
30 //! Create zoom in & out buttons. |
|
31 function _setActions() { |
|
32 new ActionButton("zoomBarBtnIn", |
|
33 "zoombar.snippet/icons/icon_zoom+.png", |
|
34 "zoombar.snippet/icons/icon_zoom+_pressed.png", |
|
35 "zoombar.snippet/icons/icon_zoom+_disabled.png", |
|
36 window.views.WebView.actions.zoomIn, |
|
37 true,true,true); |
|
38 |
|
39 new ActionButton("zoomBarBtnOut", |
|
40 "zoombar.snippet/icons/icon_zoom-.png", |
|
41 "zoombar.snippet/icons/icon_zoom-_pressed.png", |
|
42 "zoombar.snippet/icons/icon_zoom-_disabled.png", |
|
43 window.views.WebView.actions.zoomOut, |
|
44 true,true,true); |
|
45 |
|
46 // reset toolbar timeout each time a zoom is triggered |
|
47 // window.views.WebView.actions.zoomIn.triggered.connect( |
|
48 // function(checked) {handleZoom();}); |
|
49 // window.views.WebView.actions.zoomOut.triggered.connect( |
|
50 // function(checked) {handleZoom();}); |
|
51 // Connect to each action's "changed" signal. |
|
52 window.views.WebView.actions.zoomIn.changed.connect( |
|
53 createDelegate(this, handleChange)); |
|
54 window.views.WebView.actions.zoomOut.changed.connect( |
|
55 createDelegate(this, handleChange)); |
|
56 } |
|
57 |
|
58 //! Set inactivity timer when not zooming. |
|
59 function handleZoom() |
|
60 { |
|
61 // zoom activation toggles zoom on/off |
|
62 zooming = !zooming; // toggle zoom state |
|
63 clearTimeout(timeoutId); |
|
64 if (!zooming) { |
|
65 // close zoom after 5 secs |
|
66 timeoutId = setTimeout('window.snippets.ZoomBarId.hide()', ZB_TIMEOUT); |
|
67 } |
|
68 } |
|
69 |
|
70 //! Start inactivity timer when zoom bar is shown. |
|
71 function handleShow() |
|
72 { |
|
73 timeoutId = setTimeout('window.snippets.ZoomBarId.hide()', ZB_TIMEOUT); // close zoom after 5 secs |
|
74 } |
|
75 |
|
76 //! Clear inactivity timer when zoom bar is hidden. |
|
77 function handleHide() |
|
78 { |
|
79 clearTimeout(timeoutId); |
|
80 zooming = false; // ensure zooming state doesn't get out of sync |
|
81 } |
|
82 |
|
83 //! Handle action object changes. In particular we are interested in |
|
84 //! changes to the enabled state of the object. |
|
85 function handleChange() { |
|
86 var saveEnabled = enabled; |
|
87 |
|
88 // enable zoom button if either zoom-in or zoom-out action enabled |
|
89 if (window.views.WebView.actions.zoomIn.enabled |
|
90 || window.views.WebView.actions.zoomOut.enabled) { |
|
91 enabled = true; |
|
92 } else { |
|
93 enabled = false; |
|
94 } |
|
95 |
|
96 // if state changed update web toolbar zoom button state |
|
97 if (saveEnabled != enabled) { |
|
98 // enabled state changed |
|
99 webtb.setZoomEnabled(enabled); |
|
100 } |
|
101 } |
|
102 function handleLoadStarted() { |
|
103 window.snippets.ZoomBarId.hide() |
|
104 } |
|
105 |
|
106 //! After chrome is loaded, create zoombar buttons and setup show/hide |
|
107 //! handlers. |
|
108 function _chromeLoadComplete() { |
|
109 _setActions(); |
|
110 window.pageController.loadStarted.connect(handleLoadStarted); |
|
111 // window.snippets.ZoomBarId.shown.connect(handleShow); |
|
112 // window.snippets.ZoomBarId.hidden.connect(handleHide); |
|
113 } |
|
114 |
|
115 _zoombar_write(); |
|
116 |
|
117 window.chrome.chromeComplete.connect(_chromeLoadComplete); |
|
118 } |
|
119 |
|
120 |
|
121 |
|
122 |