OSDN Git Service

Version 0.6.210, add Android browser PC mode detection, forget to commit X.UIPages.
[pettanr/clientJs.git] / 0.6.x / js / 22_uipage / 01_Page.js
1 var XUI_PAGES = {},\r
2         XUI_Page_prev = [],\r
3         XUI_Page_current,\r
4         XUI_Page_new,\r
5         XUI_Page_isBack,\r
6         XUI_Page_direction;\r
7 \r
8 X.UI.Page = X_EventDispatcher[ 'inherits' ](\r
9         'Page',\r
10         X_Class.NONE,\r
11         {\r
12                 'Constructor' : function( title, uid ){\r
13                         var args = X_Array_copy( arguments );\r
14                         \r
15                         if( !XUI_PAGES[ uid ] ){\r
16                                 args.splice( 0, 2 );\r
17                                 XUI_PAGES[ uid ] = {\r
18                                         page    : this,\r
19                                         title   : title,\r
20                                         uid     : uid,\r
21                                         uinodes : args\r
22                                 };\r
23                         };\r
24                 },\r
25                 \r
26                 'show' : function( direction ){\r
27                         var size;\r
28                         \r
29                         if( XUI_Page_current !== this ){\r
30                                 XUI_Page_new       = this;\r
31                                 XUI_Page_direction = direction;\r
32                                 \r
33                                 if( XUI_Page_current ){\r
34                                         if( XUI_Page_current[ 'dispatch' ]( XUI_Event.PAGE_HIDE_BEFORE ) & X_CALLBACK_PREVENT_DEFAULT ){\r
35                                                 return false;\r
36                                         };\r
37                                         XUI_Page_current[ 'dispatch' ]( XUI_Event.PAGE_HIDE );\r
38                                         \r
39                                         console.log( 'スライドアウト開始' );\r
40                                         \r
41                                         // slideOut\r
42                                         XUI_rootData.xnode\r
43                                                 [ 'animate' ]( {\r
44                                                         'from'     : { x : 0 },\r
45                                                         'to'       : { x : X[ 'ViewPort' ][ 'getSize' ]()[ 0 ] * -.05 * direction, opacity : 0 },\r
46                                                         'duration' : 333,\r
47                                                         'easing'   : 'circular',\r
48                                                         'lazyRelease' : 0 })\r
49                                                 [ 'listenOnce' ]( X_EVENT_ANIME_END, XUI_Page_onSlideOut );\r
50                                 } else {\r
51                                         XUI_Page_onSlideOut();\r
52                                 };\r
53                         };\r
54                 }\r
55         }\r
56 );\r
57 \r
58 X.UI.Page[ 'move' ] = XUI_Page_move;\r
59 X.UI.Page[ 'back' ] = XUI_Page_back;\r
60 \r
61 function XUI_Page_move( uid ){\r
62         for( var k in XUI_PAGES ){\r
63                 if( XUI_PAGES[ k ].uid === uid ){\r
64                         return XUI_PAGES[ k ].page[ 'show' ]( 1 );\r
65                 };\r
66         };\r
67 };\r
68 \r
69 function XUI_Page_back(){\r
70         var last = XUI_Page_prev[ XUI_Page_prev.length - 1 ];\r
71         \r
72         for( var k in XUI_PAGES ){\r
73                 if( XUI_PAGES[ k ].page === last ){\r
74                         XUI_Page_isBack = true;\r
75                         XUI_Page_prev.pop();\r
76                         return XUI_PAGES[ k ].page[ 'show' ]( -1 );\r
77                 };\r
78         };\r
79 };\r
80 \r
81 function XUI_Page_onSlideOut(){\r
82         var k, uinodes;\r
83         \r
84         if( XUI_Page_current ){\r
85                 XUI_rootData.removeAt( 0, 9999 );\r
86                 if( !XUI_Page_isBack ){\r
87                         XUI_Page_prev.push( XUI_Page_current );\r
88                 };\r
89         };\r
90         \r
91         XUI_Page_isBack  = false;\r
92         XUI_Page_current = XUI_Page_new;\r
93                 \r
94         for( k in XUI_PAGES ){\r
95                 if( XUI_PAGES[ k ].page === XUI_Page_new ){\r
96                         uinodes = XUI_PAGES[ k ].uinodes;\r
97                 };\r
98         };\r
99         \r
100         \r
101         \r
102         if( !XUI_rootData ){\r
103                 X.UI.Root.apply( 1, uinodes ).attr( { opacity : 0 } );\r
104         } else {\r
105                 XUI_rootData.User.add.apply( XUI_rootData.User, uinodes );\r
106         };\r
107         \r
108         XUI_rootData[ 'listenOnce' ]( XUI_Event.LAYOUT_COMPLETE, XUI_Page_startSlideIn );\r
109         //if( XUI_rootData.phase < 4 ){\r
110                 \r
111         //} else {\r
112         //      XUI_Page_startSlideIn();\r
113         //};\r
114         console.log( 'スライドアウト完了' );\r
115 };\r
116 \r
117 function XUI_Page_startSlideIn(){\r
118         console.log( 'スライドイン開始' );\r
119         XUI_rootData.xnode[ 'animate' ]( {\r
120                                                         'from'     : { x : X[ 'ViewPort' ][ 'getSize' ]()[ 0 ] * .05 * XUI_Page_direction, opacity : 0 },\r
121                                                         'to'       : { x : 0, opacity : 1 },\r
122                                                         'duration' : 333,\r
123                                                         'easing'   : 'circular',\r
124                                                         'lazyRelease' : 0 });\r
125 };\r