JQM_VERSION = jquery-mobile-1.1.0
JQM_LIB_PATH = $(CURDIR)/libs/js/${JQM_VERSION}
-ifeq (${DEBUG},yes)
JQUERY = jquery-1.7.1.js
-else
-LIBS_JS_FILES +=\
- jquery.mobile.min.js \
- $(NULL)
-JQUERY = jquery-1.7.1.min.js
-endif
+JQUERY_MIN = $(subst .js,.min.js,$(JQUERY))
LIBS_CSS_FILES =
ifeq (${DEBUG},yes)
echo "" >> ${FW_LIB_MIN}; \
done; \
cp ${LIBS_DIR}/js/${JQUERY} ${JS_OUTPUT_ROOT}/jquery.js
+ cp ${LIBS_DIR}/js/${JQUERY_MIN} ${JS_OUTPUT_ROOT}/jquery.min.js
@@cd ${LIBS_DIR}/css; \
for f in ${LIBS_CSS_FILES}; do \
cat $$f >> ${FW_CSS}; \
</div>
</li>
<li class="ui-li-dialogue ui-datetime ui-datetime">
- <div class="ui-datetime-text-main">
+ <div class="ui-datetime-text-main ui-datetime-nosubtitle">
<input type="datetime" name="demo-date2" id="demo-date2" />
</div>
<div class="ui-datetime-text-sub">
Time Picker - <span id="selected-date4"><em>(select a date first)</em></span>
</div>
</li>
+ <li class="ui-li-dialogue ui-datetime ui-datetime">
+ <div class="ui-datetime-text-main ui-datetime-nosubtitle">
+ <input type="datetime" name="demo-date2" id="demo-date2" />
+ </div>
+ </li>
</ul>
</div><!-- /content -->
</div> <!-- /page -->
-From 2807a575905be49a8445aea0b1759a88339f4e16 Mon Sep 17 00:00:00 2001
+From 5f35008c978c291f67778bb72d39709109682d0c Mon Sep 17 00:00:00 2001
From: Koeun Choi <koeun.choi@samsung.com>
Date: Fri, 15 Jun 2012 17:11:51 +0900
Subject: [PATCH] JQM:nolabel n favorite class for check support
Signed-off-by: Koeun Choi <koeun.choi@samsung.com>
+Signed-off-by: Youmin Ha <youmin.ha@samsung.com>
---
- .../js/jquery.mobile.forms.checkboxradio.js | 10 ++++++++++
- 1 file changed, 10 insertions(+)
+ .../js/jquery.mobile.forms.checkboxradio.js | 12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/libs/js/jquery-mobile-1.1.0/js/jquery.mobile.forms.checkboxradio.js b/libs/js/jquery-mobile-1.1.0/js/jquery.mobile.forms.checkboxradio.js
-index eb4731b..b373431 100644
+index eb4731b..08556cf 100644
--- a/libs/js/jquery-mobile-1.1.0/js/jquery.mobile.forms.checkboxradio.js
+++ b/libs/js/jquery-mobile-1.1.0/js/jquery.mobile.forms.checkboxradio.js
+@@ -26,7 +26,7 @@ $.widget( "mobile.checkboxradio", $.mobile.widget, {
+ // NOTE: Windows Phone could not find the label through a selector
+ // filter works though.
+ parentLabel = $( input ).closest( "label" ),
+- label = parentLabel.length ? parentLabel : $( input ).closest( "form,fieldset,:jqmData(role='page'),:jqmData(role='dialog')" ).find( "label" ).filter( "[for='" + input[0].id + "']" ),
++ label = parentLabel.length ? parentLabel : ( input[0].id ? $( input ).closest( "form,fieldset,:jqmData(role='page'),:jqmData(role='dialog')" ).find( "label" ).filter( "[for='" + input[0].id + "']" ) : [ ] ),
+ inputtype = input[0].type,
+ mini = inheritAttr( input, "mini" ),
+ checkedState = inputtype + "-on",
@@ -43,6 +43,12 @@ $.widget( "mobile.checkboxradio", $.mobile.widget, {
return;
}
--- /dev/null
+From ac56c1f0e6620cbd83127b2ca3192723dcf50d56 Mon Sep 17 00:00:00 2001
+From: Youmin Ha <youmin.ha@samsung.com>
+Date: Sat, 8 Sep 2012 22:43:29 +0900
+Subject: [PATCH] JQM: Block click event only with the element that does preventDefault on vclick
+
+Signed-off-by: Youmin Ha <youmin.ha@samsung.com>
+---
+ .../jquery-mobile-1.1.0/js/jquery.mobile.vmouse.js | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/libs/js/jquery-mobile-1.1.0/js/jquery.mobile.vmouse.js b/libs/js/jquery-mobile-1.1.0/js/jquery.mobile.vmouse.js
+index b608460..8d7d9a2 100644
+--- a/libs/js/jquery-mobile-1.1.0/js/jquery.mobile.vmouse.js
++++ b/libs/js/jquery-mobile-1.1.0/js/jquery.mobile.vmouse.js
+@@ -300,6 +300,7 @@ function handleTouchEnd( event ) {
+ t = getNativeEvent( event ).changedTouches[ 0 ];
+ clickBlockList.push({
+ touchID: lastTouchID,
++ target: event.target,
+ x: t.clientX,
+ y: t.clientY
+ });
+@@ -494,7 +495,7 @@ if ( eventCaptureSupported ) {
+ o = clickBlockList[ i ];
+ touchID = 0;
+
+- if ( ( ele === target && Math.abs( o.x - x ) < threshold && Math.abs( o.y - y ) < threshold ) ||
++ if ( ( ele === target && target === o.target && Math.abs( o.x - x ) < threshold && Math.abs( o.y - y ) < threshold ) ||
+ $.data( ele, touchTargetPropertyName ) === o.touchID ) {
+ // XXX: We may want to consider removing matches from the block list
+ // instead of waiting for the reset timer to fire.
+--
+1.7.9.5
+
--- /dev/null
+From 90c6c1dae398b40abfd2f9325bd1ed57ecd69178 Mon Sep 17 00:00:00 2001
+From: Minkyu Kang <mk7.kang@samsung.com>
+Date: Wed, 26 Sep 2012 14:34:50 +0900
+Subject: [PATCH] JQM: add event blocker when load a first page
+
+Change-Id: I4b159977e158cf8358bdd118682b8291e3adb6d8
+Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
+---
+ .../jquery-mobile-1.1.0/js/jquery.mobile.init.js | 13 +++++++++++++
+ .../js/jquery.mobile.navigation.js | 4 ++++
+ 2 files changed, 17 insertions(+)
+
+diff --git a/libs/js/jquery-mobile-1.1.0/js/jquery.mobile.init.js b/libs/js/jquery-mobile-1.1.0/js/jquery.mobile.init.js
+index 93c03e8..54c4615 100644
+--- a/libs/js/jquery-mobile-1.1.0/js/jquery.mobile.init.js
++++ b/libs/js/jquery-mobile-1.1.0/js/jquery.mobile.init.js
+@@ -106,6 +106,18 @@ define( [ "jquery", "./jquery.mobile.core", "./jquery.mobile.support", "./jquery
+ $( window ).unbind( "scroll", checkLoaderPosition );
+ },
+
++ addEventBlocker: function () {
++ $html.addClass( "ui-blocker" );
++ $html.bind( "touchstart touchend vclick mousedown mouseup click", function () {
++ return false;
++ } );
++ },
++
++ removeEventBlocker: function () {
++ $html.removeClass( "ui-blocker" );
++ $html.unbind( "touchstart touchend vclick mousedown mouseup click" );
++ },
++
+ // find and enhance the pages in the dom and transition to the first page.
+ initializePage: function() {
+ // find present pages
+@@ -138,6 +150,7 @@ define( [ "jquery", "./jquery.mobile.core", "./jquery.mobile.support", "./jquery
+
+ // cue page loading message
+ $.mobile.showPageLoadingMsg();
++ $.mobile.addEventBlocker();
+
+ //remove initial build class (only present on first pageshow)
+ hideRenderingClass();
+diff --git a/libs/js/jquery-mobile-1.1.0/js/jquery.mobile.navigation.js b/libs/js/jquery-mobile-1.1.0/js/jquery.mobile.navigation.js
+index f6e11b3..841e8a9 100644
+--- a/libs/js/jquery-mobile-1.1.0/js/jquery.mobile.navigation.js
++++ b/libs/js/jquery-mobile-1.1.0/js/jquery.mobile.navigation.js
+@@ -529,6 +529,10 @@ define( [
+
+ //trigger pageshow, define prevPage as either fromPage or empty jQuery obj
+ toPage.data( "page" )._trigger( "show", null, { prevPage: fromPage || $( "" ) } );
++
++ setTimeout( function () {
++ $.mobile.removeEventBlocker();
++ }, 0 );
+ });
+
+ return promise;
+--
+1.7.9.5
+
Name: web-ui-fw
-Version: 0.1.48
+Version: 0.1.55
Release: 0
Summary: Tizen Web UI Framework Library
Group: Development/Other
%post
%files
+%manifest web-ui-fw.manifest
/usr/share/tizen-web-ui-fw/*/js
/usr/share/tizen-web-ui-fw/latest
%Description -n web-ui-fw-theme-tizen-black
Tizen Web UI Framework Theme : tizen-black
%files -n web-ui-fw-theme-tizen-black
+%manifest web-ui-fw-theme-tizen-black.manifest
/usr/share/tizen-web-ui-fw/*/themes/tizen-black
###############################
%Description -n web-ui-fw-theme-tizen-white
Tizen Web UI Framework Theme : tizen-white
%files -n web-ui-fw-theme-tizen-white
+%manifest web-ui-fw-theme-tizen-white.manifest
/usr/share/tizen-web-ui-fw/*/themes/tizen-white
###############################
%Description -n web-ui-fw-theme-default
Tizen Web UI Framework Theme : default
%files -n web-ui-fw-theme-default
+%manifest web-ui-fw-theme-default.manifest
/usr/share/tizen-web-ui-fw/*/themes/default
###############################
###############################
%changelog
+* Tue Oct 09 2012 Youmin Ha <youmin.ha@samsung.com> 0.1.55
+- FIX:
+ - Fix SMACK manifest bug (S1-9098)
+
+* Fri Oct 05 2012 Minkyu Kang <mk7.kang@samsung.com> 0.1.54
+- FIX:
+ - handler: don't append a handler if handler is not enabled
+ - scrollview: use static value
+ - datetimepicker: fix date-format HH display error
+- ETC:
+ - provide jquery.min.js
+ - barlayout: codes clean
+ - remove unused file
+
+* Wed Sep 26 2012 Minkyu Kang <mk7.kang@samsung.com> 0.1.53
+- FIX:
+ - listview: change focused color
+ - multibuttonentry: code refactoring
+ - datetimepicker: modify date format when triggered date-changed event
+ - slider: fix the top of slider bar
+ - add event blocker when load a first page
+
+* Fri Sep 21 2012 Youmin Ha <youmin.ha@samsung.com> 0.1.52
+- ETC.
+ - Move SMACK manifest files to the top SRCDIR
+
+* Fri Sep 21 2012 Youmin Ha <youmin.ha@samsung.com> 0.1.51
+- FIX:
+ - Popup: Do not focus container
+ - Header: show backbutton when both tabbar and header are present together
+ - Multi button entry: text ellipsis, code refactoring
+
+* Fri Sep 21 2012 Youmin Ha <youmin.ha@samsung.com> 0.1.50
+- ETC.
+ - Apply SMACK manifest
+
+* Thu Sep 20 2012 Youmin Ha <youmin.ha@samsung.com> 0.1.49
+- FIX:
+ - JSLINT code clean-up
+ - scrollview: firefox support
+ - scrollview: fix finding slider handle
+ - list: tweak text ellipsis
+ - checkbox: fix selecting wrong label tag (N_SE-8370)
+ - imageslider: check parameter
+ - smallpopup: fix position
+ - searchbar: fix 'clear' button size
+- Spec changes:
+ - scrollview: support outer scroll
+ - JQM: block click event only with the element that does preventdefault on vclick(N_SE-6090)
+ - remove S/W IME control
* Thu Sep 13 2012 Youmin Ha <youmin.ha@samsung.com> 0.1.48
- FIX:
.ui-loader h1 { font-size: 32 * @unit_base; text-align: center; }
.ui-loader .ui-icon { position: static; display: block; opacity: .9; margin: 0 auto; width: 35px; height: 35px; background-color: transparent; }
+.ui-blocker { width:100%; height:100%; z-index:@z_base_maximum; }
+
/*fouc*/
.ui-mobile-rendering > * { visibility: hidden; }
line-height: 1.4;\r
font-size: 32 * @unit_base;\r
display: block;\r
- width: 95%;\r
}\r
input.ui-input-text {\r
appearance: none;\r
- -webkit-appearance: none; \r
+ -webkit-appearance: none;\r
}\r
textarea.ui-input-text {\r
height: 50*@unit_base;\r
}\r
\r
.ui-input-search {\r
- padding: 0 0;\r
position: relative;\r
+\r
+ padding-right : 74 * @unit_base;\r
+ padding-left : 74 * @unit_base;\r
+\r
input.ui-input-text {\r
+ width : 100%;\r
border: none;\r
background: transparent none;\r
outline: 0 !important;\r
background: transparent none;\r
}\r
.ui-btn-icon-notext.ui-input-clear {\r
- width: 38 * @unit_base;\r
- height: 38 * @unit_base;\r
- .ui-btn-inner { padding: 0; }\r
+ width: 70 * @unit_base;\r
+ height: 70 * @unit_base;\r
+ .ui-btn-inner {\r
+ padding : 16 * @unit_base;\r
+ }\r
}\r
.ui-icon-deleteSearch {\r
width: 38 * @unit_base;\r
right: 0;\r
top: 0;\r
vertical-align: middle;\r
- margin: 16 * @unit_base;\r
}\r
.ui-input-clear-hidden { display: none; }\r
}\r
margin: 16 * @unit_base;\r
}\r
\r
-/* orientation adjustments - incomplete!*/\r
-@media all and (min-width: 721*@unit_base){\r
- label.ui-input-text {\r
+\r
+/* code for label+inputbox : remove this code if webApp dev. controls input area */\r
+@media all and (min-width: 721*@unit_base) {\r
+ label.ui-input-text:not([data-type='search']) {\r
vertical-align: top;\r
display: inline-block;\r
- margin: 0 2% 0 0\r
+ margin: 0 2% 0 0;\r
+ }\r
+ input.ui-input-text:not([data-type='search']), textarea.ui-input-text:not([data-type='search']){\r
+ width: 60%;\r
+ display: inline-block;\r
+ }\r
+ .ui-input-search input.ui-input-text:not([data-type='search']) {\r
+ width: 85%;\r
}\r
- input.ui-input-text,\r
- textarea.ui-input-text,\r
- .ui-input-search { width: 60%; display: inline-block; }\r
- .ui-input-search input.ui-input-text { width: 85%; /*echos rule from above*/ }\r
}\r
\r
+\r
/* search bar */\r
.ui-body-s > div > .ui-field-contain > .input-search-bar,\r
.ui-body-s > .ui-field-contain > .input-search-bar {\r
margin : -48*@unit_base -15*@unit_base -32*@unit_base -15*@unit_base;\r
-} /* Need to confirm exact concept : Jinhyuk */\r
+} /* Need to confirm exact concept */\r
\r
.input-search-bar {\r
- position : relative; /* In case searchbar in header : Jinhyuk */\r
- \r
+ position : relative;\r
+\r
background-color: @color_searchbar_bg;\r
padding: @search-bar-padding;\r
vertical-align: middle;\r
}\r
.ui-input-search {\r
font-size : 32 * @unit_base;\r
- display: inline-block;\r
+ display : block;\r
position: relative;\r
- width: 70%;\r
- padding: 0;\r
+\r
+ margin-right : 150 * @unit_base;\r
background-color: @color_searchbar_input_field_bg;\r
.ui-input-text {\r
height: 74 * @unit_base;\r
padding : 0px;\r
- margin-left : 74 * @unit_base;\r
+\r
+ margin-right : 38 * @unit_base;\r
}\r
}\r
.ui-input-search-default {\r
- width: 70%;\r
+ margin-right : 150 * @unit_base;\r
-webkit-transition: width 400ms linear;\r
-moz-transition: width 400ms linear;\r
-o-transition: width 400ms linear;\r
transition: width 400ms linear;\r
}\r
.ui-input-search-wide {\r
- width: 100%;\r
+ margin-right : 0 * @unit_base;\r
-webkit-transition: width 400ms linear;\r
-moz-transition: width 400ms linear;\r
-o-transition: width 400ms linear;\r
.ui-btn-icon-cancel {\r
display: inline-block;\r
position: absolute;\r
- left: 70%;\r
+\r
+ top : 16 * @unit_base;\r
+ right : 0 * @unit_base;\r
+ margin-right : 16 * @unit_base;\r
\r
vertical-align: middle;\r
- margin-left : 10 * @unit_base;\r
- margin-right : 10 * @unit_base;\r
padding : 0px;\r
\r
height : 74 * @unit_base;\r
- \r
+\r
border-color : none;\r
.ui-btn-text{\r
font-size : 32 * @unit_base;\r
- } \r
+ }\r
.ui-btn-inner {\r
padding-top : 18 * @unit_base;\r
padding-bottom : 18 * @unit_base;\r
- } \r
+ }\r
}\r
- \r
+\r
.ui-btn-icon-cancel.ui-input-cancel {\r
- width: 26%; \r
+ width : 134 * @unit_base;\r
-webkit-transition: all 400ms linear;\r
-moz-transition: all 400ms linear;\r
-o-transition: all 400ms linear;\r
transition: all 400ms linear;\r
}\r
.ui-btn-cancel-hide {\r
- left: 100%;\r
+ right : -150 * @unit_base;\r
visibility: hidden;\r
}\r
.ui-btn-cancel-show {\r
- left: 70%;\r
+ right : 0px;\r
visibility: visible;\r
}\r
}\r
padding-right : 16 * @unit_base;
display: block;
- white-space: nowrap; // default: 1line
+ white-space: normal; // default: 1line
}
.ui-btn-inner a.ui-link-inherit {
- .LESStext-ellipsis();
+ .LESStext-no-ellipsis();
}
}
a {
- .LESStext-ellipsis();
+ .LESStext-no-ellipsis();
padding-right : 16 * @unit_base; /* ellipsis for normal text */
}
}
+/********************************************/
+/************ Add ellipsis *****************/
+/********************************************/
+.ui-li.ui-li-text-ellipsis {
+ .ui-btn-inner a.ui-link-inherit {
+ .LESStext-ellipsis();
+ }
+
+ a {
+ .LESStext-ellipsis();
+ }
+ &.ui-li-static {
+ .LESStext-ellipsis();
+ }
+}
/********************************************/
/*************** Divider ********************/
/********************************************/
.ui-li.ui-li-has-right-btn {
.ui-btn-inner a {
- padding-right : 256 * @unit_base;
+ padding-right : 158 * @unit_base;
}
}
}
.ui-li.ui-li-static.ui-li-has-right-btn {
- padding-right : 256 * @unit_base;
+ padding-right : 158 * @unit_base;
}
.ui-li.ui-li-static.ui-li-thumbnail-right {
.LESStext-ellipsis();
}
+.ui-li-has-multiline.ui-li-has-right-btn {
+ .ui-btn-inner a {
+ .ui-li-text-sub {
+ width : 74%;
+ }
+ }
+}
+
+.ui-li-has-multiline.ui-li-static.ui-li-has-right-btn {
+ .ui-li-text-sub {
+ width : 74%;
+ }
+}
+
.ui-li-icon-sub-right,
.ui-li-icon-sub {
position: absolute;
}
/* listview: fonts for li with a link */
li.ui-btn-up-s > .ui-li > .ui-btn-text > a.ui-link-inherit,
- li.ui-btn-hover-s > .ui-li > .ui-btn-text > a.ui-link-inherit,
+ li.ui-btn-hover-s > .ui-li > .ui-btn-text > a.ui-link-inherit {
+ color: @color_list_main_text_unfocus;
+ }
+
li.ui-btn-down-s > .ui-li > .ui-btn-text > a.ui-link-inherit {
- color: @color_text;
+ color: @color_list_main_text_focus;
}
/* listview divider */
/* NOTE: this divider has no swatch tag! */
position: relative;
}
+.ui-datetime-text-main.ui-datetime-nosubtitle {
+ top : 0px;
+}
+
.ui-datetime-text-sub {
position: absolute;
top: 10 * @unit_base;
white-space: nowrap;
text-overflow: ellipsis;
-o-text-overflow: ellipsis;
- overflow-x: hidden !important;
+ overflow: hidden !important;
}
+
+.LESStext-no-ellipsis() {
+ white-space: normal;
+ overflow: visible !important;
+}
\ No newline at end of file
border-radius : 1.5em;\r
.LESSbox-shadow(0, .1em, .1em, rgba(0,0,0,.2));\r
color : @color_multibuttonentry_block_text;\r
+ overflow : hidden;\r
+ text-overflow : ellipsis;\r
+ white-space : nowrap;\r
}\r
\r
a.ui-multibuttonentry-link-base {\r
/* smallpopup */
-@smallpopup-height: 48 * @unit_base;
-
@-webkit-keyframes ui-smallpopup-show {
from {
opacity: 0;
-webkit-transform: scaleY(1);
} to {
opacity: 0;
- height: 0;
left: 0;
-webkit-transform: scaleY(0);
}
z-index: @z_base_smallpopup;
background: @color_smallpopup_bg;
vertical-align: middle;
+ word-break: break-all;
}
.ui-smallpopup.fix {
}
.ui-slider-icon-bg {
- margin-left: 96 * @unit_base;
- margin-right: 96 * @unit_base;
+ margin-left: 112 * @unit_base;
+ margin-right: 112 * @unit_base;
}
.ui-slider-left-volume,
.ui-slider-left-bright {
position: absolute;
top: -0.2em;
- left: -96 * @unit_base;
+ left: -112 * @unit_base;
height: @img-height;
width: @img-width;
vertical-align: middle;
.ui-slider-right-bright {
position: absolute;
top: -0.2em;
- right: -96 * @unit_base;
+ right: -112 * @unit_base;
height: @img-height;
width: @img-width;
vertical-align: middle;
.ui-slider-left-text {
position: absolute;
top: -0.2em;
- left: -96 * @unit_base;
+ left: -112 * @unit_base;
height: 80 * @unit_base;
width: 80 * @unit_base;
text-align: center;
.ui-slider-right-text {
position: absolute;
top: -0.2em;
- right: -96 * @unit_base;
+ right: -112 * @unit_base;
height: 80 * @unit_base;
width: 80 * @unit_base;
text-align: center;
}
.ui-slider-bar {
- position: absolute;
- top: 0.75em;
+ position: relative;
+ top: -0.85em;
height: 16 * @unit_base;
width: 0;
background-image: url(images/00_winset_list_progress_bar.png);
/***************************************************************************
List
***************************************************************************/
+@color_list_main_text_focus: rgba(249, 249, 249, 1);
+@color_list_main_text_unfocus: rgba(249, 249, 249, 1);
+
@color_list_border_bottom: rgb(68, 68, 68);
@color_list_main_text_read: rgba(158, 158, 158, 1);
@color_list_main_text_unread: rgba(249, 249, 249, 1);
-@color_list_main_text_focus: rgba(249, 249, 249, 1);
@color_list_sub_text_default: rgba(100, 100, 100, 1);
@color_list_sub_text_settings: rgba(0, 140, 210, 1);
@color_list_sub_text_focus: rgba(249, 249, 249, 1);
/***************************************************************************
List
***************************************************************************/
+@color_list_main_text_focus: rgba(249, 249, 249, 1);
+@color_list_main_text_unfocus: rgba(0, 0, 0, 1);
+
@color_list_border_bottom: rgb(169, 169, 169);
@color_list_main_text_read: rgba(158, 158, 158, 1);
@color_list_main_text_unread: rgba(249, 249, 249, 1);
-@color_list_main_text_focus: rgba(249, 249, 249, 1);
@color_list_sub_text_default: rgba(100, 100, 100, 1);
@color_list_sub_text_settings: rgba(0, 140, 210, 1);
@color_list_sub_text_focus: rgba(249, 249, 249, 1);
-(function( $, undefined ) {
+( function ( $, undefined ) {
$.widget( "mobile.barlayout", $.mobile.widget, {
options: {
addBackBtn: false ,
backBtnText: "Back",
-
initSelector: ":jqmData(role='header'), :jqmData(role='footer')"
- },
- _create: function() {
+ },
+ _create: function () {
var self = this;
-
/* this call api will be moved to jquery.mobile.page.section.js patch */
/* call _generateFooter in header(just 1 time in first step) because to calculate another layout width footer/header */
/* skip below step to attach bind/addclass only 1 time */
self._generateFooter();
self._addBackbutton();
self._disableSelection();
- self._disableContext();
},
/* Make dummy footer
* because minimum fixed bar needs to attach back button
* check footer exist on current page, then check footer-Exist option check */
- _generateFooter: function(){
+ _generateFooter: function () {
var self = this,
$el = self.element,
$elPage = $el.closest( ".ui-page" ),
dummyFooter;
- if ( $elPage.children(":jqmData(role='footer')").length == 0 && $elPage.data().page.options.footerExist != false ) {
- dummyFooter = $( "<div data-role='footer' class='ui-footer ui-bar-s ui-footer-fixed fade ui-fixed-overlay' data-position='fixed'></div>" )
- .insertAfter( $elPage.find( ".ui-content" ) );
+ if ( $elPage.children(":jqmData(role='footer')").length == 0 && $elPage.data().page.options.footerExist != false ) {
+ dummyFooter = $( "<div data-role='footer' class='ui-footer ui-bar-s ui-footer-fixed fade ui-fixed-overlay' data-position='fixed'></div>" )
+ .insertAfter( $elPage.find( ".ui-content" ) );
}
},
- _addBackbutton: function( target, status ) {
+ _addBackbutton: function ( target, status ) {
// need to add parameter target wherels this requert occurs header/footer
var self = this,
$el = self.element,
- $elHeader = $( this.element ).jqmData( "role" )=="header" ? self.element : $el.siblings( ":jqmData(role='header')" ),
- $elFooter = $( this.element ).jqmData( "role" )=="footer" ? self.element : $el.siblings( ":jqmData(role='footer')" ),
+ $elHeader = $el.jqmData( "role" ) === "header" ? $el : $el.siblings( ":jqmData(role='header')" ),
+ $elFooter = $el.jqmData( "role" ) === "footer" ? $el : $el.siblings( ":jqmData(role='footer')" ),
$elPage = $el.closest( ".ui-page" ),
backBtn,
attachElement = $elFooter,
* 2. footer does not exist and addBackBtn is set to "footer"
* 3. user define data-add-Back-Btn = "false"
*/
- if ( status != "external" ) {
- if ( $elFooter.children( ":jqmData(role='controlbar')" ).jqmData( "style" ) == "tabbar" || $elPage.data().page.options.addBackBtn == "none" || ( $elPage.data().page.options.addBackBtn == "footer" && $elPage.data().page.options.footerExist == false ) ) {
- return true;
- }
+ if ( status != "external" ) {
+ if ( ( $elFooter.children( ":jqmData(role='controlbar')" ).jqmData( "style" ) == "tabbar" && $elPage.jqmData( "addBackBtn" ) != "header" )
+ || $elPage.data().page.options.addBackBtn == "none" || ( $elPage.data().page.options.addBackBtn == "footer" && $elPage.data().page.options.footerExist == false ) ) {
+ return true;
}
+ }
- $elPage.data().page.options.addBackBtn == "header"? attachElement = $elHeader : attachElement = $elFooter;
-
- backBtn = $( "<a href='#' class='ui-btn-back' data-"+ $.mobile.ns +"rel='back'></a>" )
- .buttonMarkup( {icon: "header-back-btn", theme : "s"} );
-
- if ( status == "external" ) {
- if ( $el.is(".ui-page") ) {
- $elHeader = $el.find( ":jqmData(role='header')" );
- $elFooter = $el.find( ":jqmData(role='footer')" );
- target == "header" ? attachElement = $elHeader : attachElement = $elFooter;
- } else {
- attachElement = $el;
- }
- if ( attachElement.find(".ui-btn-back").length == 0 ) {
- backBtn.prependTo( attachElement );
- }
+ attachElement = ( $elPage.data().page.options.addBackBtn === "header" ) ? $elHeader : $elFooter;
+
+ backBtn = $( "<a href='#' class='ui-btn-back' data-" + $.mobile.ns + "rel='back'></a>" )
+ .buttonMarkup( {icon: "header-back-btn", theme : "s"} );
+
+ if ( status == "external" ) {
+ if ( $el.is(".ui-page") ) {
+ $elHeader = $el.find( ":jqmData(role='header')" );
+ $elFooter = $el.find( ":jqmData(role='footer')" );
+ attachElement = ( target === "header" ) ? $elHeader : $elFooter;
+ } else {
+ attachElement = $el;
}
+ if ( attachElement.find(".ui-btn-back").length == 0 ) {
+ backBtn.prependTo( attachElement );
+ }
+ }
- if ( $elPage.jqmData( "url" ) !== $.mobile.path.stripHash( location.hash ) ) {
- if ( attachElement.find(".ui-btn-back").length == 0) {
- backBtn.prependTo( attachElement );
- }
+ if ( $elPage.jqmData( "url" ) !== $.mobile.path.stripHash( location.hash ) ) {
+ if ( attachElement.find(".ui-btn-back").length == 0) {
+ backBtn.prependTo( attachElement );
}
+ }
-/* jQM 1.1.0 do not need this code
-* navigation.js control whote back button */
-/* backBtn.bind( "vclick", function( event ) {
+ /* jQM 1.1.0 does not need this code.
+ navigation.js control whole back buttons. */
+ /*
+ backBtn.bind( "vclick", function( event ) {
window.history.back();
- });*/
+ });
+ */
},
- _disableSelection : function() {
+ _disableSelection : function () {
var self = this,
- $el = self.element,
- $elHeader = $( this.element ).jqmData( "role" )=="header" ? self.element : $el.siblings( ":jqmData(role='header')" ),
- $elFooter = $( this.element ).jqmData( "role" )=="footer" ? self.element : $el.siblings( ":jqmData(role='footer')" );
+ $el = self.element,
+ $elHeader = $el.jqmData( "role" ) === "header" ? $el : $el.siblings( ":jqmData(role='header')" ),
+ $elFooter = $el.jqmData( "role" ) === "footer" ? $el : $el.siblings( ":jqmData(role='footer')" );
+ // disable selection
$.mobile.tizen.disableSelection( $elHeader );
$.mobile.tizen.disableSelection( $elFooter );
- },
-
- _disableContext : function() {
- var self = this,
- $el = self.element,
- $elHeader = $( this.element ).jqmData( "role" )=="header" ? self.element : $el.siblings( ":jqmData(role='header')" ),
- $elFooter = $( this.element ).jqmData( "role" )=="footer" ? self.element : $el.siblings( ":jqmData(role='footer')" );
+ // disable context menu
$.mobile.tizen.disableContextMenu( $elHeader );
$.mobile.tizen.disableContextMenu( $elFooter );
},
- addBackBtn : function(target) {
+ addBackBtn : function ( target ) {
this._addBackbutton( target, "external" );
},
- show: function(){
+ show: function () {
var self = $( this.element );
self.show();
self.siblings( ".ui-content" ).pagelayout( "updatePageLayout" );
},
- hide: function(){
+ hide: function () {
var self = $( this.element );
self.hide();
self.siblings( ".ui-content" ).pagelayout( "updatePageLayout" );
},
});
- $( document ).bind("pagecreate", function( e ){
+ $( document ).bind("pagecreate", function ( e ) {
$.mobile.barlayout.prototype.enhanceWithin( e.target );
});
})( jQuery );
function setElementTransform( $ele, x, y ) {
var v = "translate3d( " + x + "," + y + ", 0px)";
$ele.css({
+ "-ms-transform": v,
+ "-o-transform": v,
"-moz-transform": v,
"-webkit-transform": v,
"transform": v
+++ /dev/null
-/*
- * Size pages to the window
- *
- * This software is licensed under the MIT licence (as defined by the OSI at
- * http://www.opensource.org/licenses/mit-license.php)
- *
- * ***************************************************************************
- * Copyright (C) 2011 by Intel Corporation Ltd.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- * ***************************************************************************
- */
-
-// Size pages to the window
-
-(function($, undefined) {
-
-var _fit_page_to_window_selector = ":jqmData(role='page'):jqmData(fit-page-to-window='true'):visible";
-
-$(document).bind("pageshow", function(e) {
- if ($(e.target).is(_fit_page_to_window_selector))
- $.mobile.tizen.fillPageWithContentArea($(e.target));
-});
-
-$(window).resize(function() {
- if ($(_fit_page_to_window_selector)[0] !== undefined)
- $.mobile.tizen.fillPageWithContentArea($(_fit_page_to_window_selector));
-});
-
-})(jQuery);
(function () {
jQuery.extend(jQuery.mobile.tizen, {
- Point: function (x, y) {
- var X = isNaN(x) ? 0 : x;
- var Y = isNaN(y) ? 0 : y;
-
- this.add = function (Point) {
- this.setX(X + Point.x());
- this.setY(Y + Point.y());
- return this;
- }
-
- this.subtract = function (Point) {
- this.setX(X - Point.x());
- this.setY(Y - Point.y());
- return this;
- }
-
- this.multiply = function (Point) {
- this.setX(Math.round(X * Point.x()));
- this.setY(Math.round(Y * Point.y()));
- return this;
- }
-
- this.divide = function (Point) {
- this.setX(Math.round(X / Point.x()));
- this.setY(Math.round(Y / Point.y()));
- return this;
- }
-
- this.isNull = function () {
- return (X === 0 && Y === 0);
- }
-
- this.x = function () {
- return X;
- }
-
- this.setX = function (val) {
- isNaN(val) ? X = 0 : X = val;
- }
-
- this.y = function () {
- return Y;
- }
-
- this.setY = function (val) {
- isNaN(val) ? Y = 0 : Y = val;
- }
-
- this.setNewPoint = function (point) {
- this.setX(point.x());
- this.setY(point.y());
- }
-
- this.isEqualTo = function (point) {
- return (X === point.x() && Y === point.y());
- }
- },
-
- Rect: function (left,top,width,height) {
- var Left = left;
- var Top = top;
- var Right = Left+width;
- var Bottom = Top+height;
-
- this.setRect = function(varL,varR,varT,varB) {
- this.setLeft(varL);
- this.setRight(varR);
- this.setTop(varT);
- this.setBottom(varB);
- }
-
- this.right = function () {
- return Right;
- }
-
- this.setRight = function (val) {
- Right = val;
- }
-
- this.top = function () {
- return Top;
- }
-
- this.setTop = function (val) {
- Top = val;
- }
-
- this.bottom = function () {
- return Bottom;
- }
-
- this.setBottom = function (val) {
- Bottom = val;
- }
-
- this.left = function () {
- return Left;
- }
-
- this.setLeft = function (val) {
- Left = val;
- }
-
- this.moveTop = function(valY) {
- var h = this.height();
- Top = valY;
- Bottom = Top + h;
- }
-
- this.isNull = function () {
- return Right === Left && Bottom === Top;
- }
-
- this.isValid = function () {
- return Left <= Right && Top <= Bottom;
- }
-
- this.isEmpty = function () {
- return Left > Right || Top > Bottom;
- }
-
- this.contains = function (valX,valY) {
- if (this.containsX(valX) && this.containsY(valY))
- return true;
- return false;
- }
-
- this.width = function () {
- return Right - Left;
- }
-
- this.height = function () {
- return Bottom - Top;
- }
-
- this.containsX = function(val) {
- var l = Left,
- r = Right;
- if (Right<Left) {
- l = Right;
- r = Left;
- }
- if (l > val || r < val)
- return false;
- return true;
- }
-
- this.containsY = function(val) {
- var t = Top,
- b = Bottom;
- if (Bottom<Top) {
- t = Bottom;
- b = Top;
- }
- if (t > val || b < val)
- return false;
- return true;
- }
- },
-
disableSelection: function (element) {
var self = this;
return self.enableSelection( element, 'none' );
} );
},
- // Set the height of the content area to fill the space between a
- // page's header and footer
- fillPageWithContentArea: function (page) {
- var $page = $(page);
- var $content = $page.children(".ui-content:first");
- var hh = $page.children(".ui-header").outerHeight(); hh = hh ? hh : 0;
- var fh = $page.children(".ui-footer").outerHeight(); fh = fh ? fh : 0;
- var pt = parseFloat($content.css("padding-top"));
- var pb = parseFloat($content.css("padding-bottom"));
- var wh = window.innerHeight;
- var height = wh - (hh + fh) - (pt + pb);
- $content.height(height);
- },
-
// Get document-relative mouse coordinates from a given event
// From: http://www.quirksmode.org/js/events_properties.html#position
documentRelativeCoordsFromEvent: function(ev) {
+++ /dev/null
-/*
- *
- * This software is licensed under the MIT licence (as defined by the OSI at
- * http://www.opensource.org/licenses/mit-license.php)
- *
- * ***************************************************************************
- * Copyright (C) 2011 by Intel Corporation Ltd.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- * ***************************************************************************
- */
-
-// Wrapper round the jLayout functions to enable it to be used
-// for creating jQuery Mobile layout extensions.
-//
-// See the layouthbox and layoutvbox widgets for usage examples.
-(function ($, undefined) {
-
-$.widget("tizen.jlayoutadaptor", $.mobile.widget, {
- options: {
- hgap: null,
- vgap: null,
- scrollable: true,
- showScrollBars: true,
- direction: null
- },
-
- _create: function () {
- var self = this,
- options = this.element.data('layout-options'),
- page = $(this.element).closest(':jqmData(role="page")');
-
- $.extend(this.options, options);
-
- if (page && !page.is(':visible')) {
- this.element.hide();
-
- page.bind('pageshow', function () {
- self.refresh();
- });
- }
- else {
- this.refresh();
- }
- },
-
- refresh: function () {
- var container;
- var config = $.extend(this.options, this.fixed);
-
- if (config.scrollable) {
- if (!(this.element.children().is('.ui-scrollview-view'))) {
- // create the scrollview
- this.element.scrollview({direction: config.direction,
- showScrollBars: config.showScrollBars});
- }
- else if (config.showScrollBars) {
- this.element.find('.ui-scrollbar').show();
- }
- else {
- this.element.find('.ui-scrollbar').hide();
- }
-
- container = this.element.find('.ui-scrollview-view');
- }
- else {
- container = this.element;
- }
-
- container.layout(config);
-
- this.element.show();
-
- if (config.scrollable) {
- // get the right/bottom edge of the last child after layout
- var lastItem = container.children().last();
-
- var edge;
-
- var scrollview = this.element.find('.ui-scrollview-view');
-
- if (config.direction === 'x') {
- edge = lastItem.position().left +
- lastItem.outerWidth(true);
-
- // set the scrollview's view width to the original width
- scrollview.width(edge);
-
- // set the parent container's height to the height of
- // the scrollview
- this.element.height(scrollview.height());
- }
- else if (config.direction === 'y') {
- edge = lastItem.position().top +
- lastItem.outerHeight(true);
-
- // set the scrollview's view height to the original height
- scrollview.height(edge);
-
- // set the parent container's width to the width of the
- // scrollview
- this.element.width(scrollview.width());
- }
- }
- }
-});
-
-})(jQuery);
showScrollBars: true,
overshootEnable: false,
- outerScrollEnable: false,
+ outerScrollEnable: true,
scrollJump: false,
},
this._view_offset = this._$view.offset().top - this._$clip.offset().top;
this._view_height = this._getViewHeight();
+ this._clip_height = this._$clip.height();
this._sx = 0;
this._sy = 0;
}
if ( vt ) {
- c = this._$clip.height();
- v = this._getViewHeight();
+ c = this._clip_height;
+ v = this._view_height;
vt.start( this._sy, speedY,
duration, (v > c) ? -(v - c) : 0, 0 );
var keepGoing = false,
x = 0,
y = 0,
+ scroll_height = 0,
vt = this._vTracker,
ht = this._hTracker;
vt.update( this.options.overshootEnable );
y = vt.getPosition();
keepGoing = !vt.done();
+
+ if ( vt.getRemained() > this.options.overshootDuration ) {
+ scroll_height = this._view_height - this._clip_height;
+
+ if ( vt.isMin() ) {
+ this._outerScroll( y - vt.getRemained() / 3, scroll_height );
+ } else if ( vt.isMax() ) {
+ this._outerScroll( vt.getRemained() / 3, scroll_height );
+ }
+ }
}
if ( ht ) {
}
if ( dirLock !== "x" && this._vTracker ) {
- scroll_height = this._getViewHeight() - $c.height();
-
- this._outerScroll( y, scroll_height );
+ scroll_height = this._view_height - this._clip_height;
- if ( y >= 0 ) {
+ if ( y > 0 ) {
this._sy = 0;
} else if ( y < -scroll_height ) {
this._sy = -scroll_height;
if ( sm === "translate" ) {
this._setElementTransform( $sbt, "0px",
- -y / this._getViewHeight() * $sbt.parent().height() + "px",
+ -y / this._view_height * $sbt.parent().height() + "px",
duration );
} else {
- $sbt.css( "top", -y / this._getViewHeight() * 100 + "%" );
+ $sbt.css( "top", -y / this._view_height * 100 + "%" );
}
}
_outerScroll: function ( y, scroll_height ) {
var self = this,
- top = $( window ).scrollTop(),
+ top = $( window ).scrollTop() - window.screenTop,
sy = 0,
duration = this.options.snapbackDuration,
start = getCurrentTime(),
return;
}
- if ( !this._dragging ) {
- return;
- }
-
if ( scroll_height < 0 ) {
return;
}
return;
}
- sy *= 10;
-
tfunc = function () {
var elapsed = getCurrentTime() - start;
if ( elapsed >= duration ) {
window.scrollTo( 0, top + sy );
self._outerScrolling = undefined;
+
+ self._stopMScroll();
} else {
- ec = $.easing.easeOutQuad( elapsed / duration, elapsed, 0, 1, duration );
+ ec = $.easing.easeOutQuad( elapsed / duration,
+ elapsed, 0, 1, duration );
window.scrollTo( 0, top + ( sy * ec ) );
self._outerScrolling = setTimeout( tfunc, self._timerInterval );
}
};
this._outerScrolling = setTimeout( tfunc, self._timerInterval );
-
- /* skip the srollview dragging */
- this._skip_dragging = true;
},
_scrollTo: function ( x, y, duration ) {
target.is( '.ui-btn-inner .ui-icon' );
if ( this._is_button ) {
- if ( target.parents('.ui-slider-handle') ) {
+ if ( target.parents('.ui-slider-handle').length ) {
this._skip_dragging = true;
return;
}
if ( this._is_inputbox ) {
target.one( "resize.scrollview", function () {
- if ( ey > $c.height() ) {
- self.scrollTo( -ex, self._sy - ey + $c.height(),
+ if ( ey > self._clip_height ) {
+ self.scrollTo( -ex, self._sy - ey + self._clip_height,
self.options.snapbackDuration );
}
});
}
+ if ( this.options.eventType === "mouse" && !this._is_inputbox && !this._is_button ) {
+ e.preventDefault();
+ }
+
this._lastX = ex;
this._lastY = ey;
this._startY = ey;
$c.bind( "updatelayout", function ( e ) {
var sy,
vh,
+ clip_h = $c.height(),
view_h = self._getViewHeight();
- if ( !$c.height() || !view_h ) {
+ if ( !clip_h || !view_h ) {
self.scrollTo( 0, 0, 0 );
return;
}
- sy = $c.height() - view_h;
+ sy = clip_h - view_h;
vh = view_h - self._view_height;
self._view_height = view_h;
+ self._clip_height = clip_h;
- if ( vh == 0 || vh > $c.height() / 2 ) {
+ if ( vh == 0 || vh > clip_h / 2 ) {
return;
}
$( window ).bind( "resize", function ( e ) {
var focused,
+ clip_h = $c.height(),
view_h = self._getViewHeight();
if ( $(".ui-page-active").get(0) !== $c.closest(".ui-page").get(0) ) {
return;
}
- if ( !$c.height() || !view_h ) {
+ if ( !clip_h || !view_h ) {
return;
}
/* calibration - after triggered throttledresize */
setTimeout( function () {
- if ( self._sy < $c.height() - self._getViewHeight() ) {
+ self._view_height = self._getViewHeight();
+ self._clip_height = $c.height();
+
+ if ( self._sy < self._clip_height - self._veiw_height ) {
self.scrollTo( 0, self._sy,
self.options.snapbackDuration );
}
}, 260 );
self._view_height = view_h;
+ self._clip_height = clip_h;
});
$c.closest(".ui-page")
.one( "pageshow", function ( e ) {
self._view_offset = self._$view.offset().top - self._$clip.offset().top;
- self._view_height = self._getViewHeight();
})
.bind( "pageshow", function ( e ) {
/* should be called after pagelayout */
setTimeout( function () {
+ self._view_height = self._getViewHeight();
+ self._clip_height = self._$clip.height();
+
self._set_scrollbar_size();
self._setScrollPosition( self._sx, self._sy );
self._showScrollBars( 2000 );
}
if ( this._vTracker ) {
- ch = $c.height();
- vh = this._getViewHeight();
+ ch = this._clip_height;
+ vh = this._view_height;
this._maxY = ch - vh;
if ( this._maxY > 0 ) {
this.minPos = 0;
this.maxPos = 0;
this.duration = 0;
+ this.remained = 0;
},
update: function ( overshootEnable ) {
elapsed = elapsed > duration ? duration : elapsed;
+ this.remained = duration - elapsed;
+
if ( state === tstates.scrolling || state === tstates.overshot ) {
dx = this.speed *
( 1 - $.easing[this.easing]( elapsed / duration,
this.pos = x;
if ( state === tstates.overshot ) {
+ if ( !overshootEnable ) {
+ this.state = tstates.done;
+ }
if ( elapsed >= duration ) {
this.state = tstates.snapback;
this.fromPos = this.pos;
return this.state === tstates.done;
},
+ isMin: function () {
+ return this.pos === this.minPos;
+ },
+
+ isMax: function () {
+ return this.pos === this.maxPos;
+ },
+
+ getRemained: function () {
+ return this.remained;
+ },
+
getPosition: function () {
return this.pos;
}
var $controlbar = this.element;
$( window ).bind( "orientationchange", function ( e, ui ) {
- ww = window.innerWidth || $( window ).width();
- wh = window.innerHeight || $( window ).height();
-
- isLandscape = ww > wh && ( ww - wh );
+ var ww = window.innerWidth || $( window ).width(),
+ wh = window.innerHeight || $( window ).height(),
+ isLandscape = ww > wh && ( ww - wh );
if ( isLandscape ) {
$controlbar.removeClass( "ui-portrait-controlbar" ).addClass( "ui-landscape-controlbar" );
} else {
$controlbar.removeClass( "ui-landscape-controlbar" ).addClass( "ui-portrait-controlbar" );
}
- })
+ });
},
this.options.date = newdate;
- this._setValue( this.value() );
+ this._setValue( newdate );
this.element.attr( "data-" + ( $.mobile.ns ? $.mobile.ns + "-" : "" ) + "date", this.options.date );
return this.options.date;
switch ( field ) {
case 'hour':
- if ( pat == 'H' ) {
+ if ( pat == 'H' || pat == 'HH' ) {
// twentyfour
values = range( 0, 23 );
data = range( 0, 23 );
$div.jqmData( "list", $li );
$div.circularview();
// cause ctxpopup forced to subtract 10
- if( $(window).width() / 2 < target.offset().left ) {
+ if ( $( window ).width() / 2 < target.offset().left ) {
newLeft = -10;
}
$ctx.popupwindow( 'open',
$div.bind( 'scrollend' , function ( e ) {
if ( !obj._reflow ) {
obj._reflow = function () {
- $div.circularview("reflow");
- };
+ $div.circularview("reflow");
+ };
$(window).bind("resize", obj._reflow);
}
});
recreate: function ( newArray ) {
this._create( {
- itemData: function ( idx ) { return newArray[ idx ] },
+ itemData: function ( idx ) { return newArray[ idx ]; },
numItemData: newArray.length
} );
},
_create: function ( args ) {
var t = this,
o = this.options,
- $el = this.element;
+ $el = this.element,
+ dbtable_name;
t.destroy();
console.warn("WARNING: The data interface of extendable list is changed. \nOld data interface(data-dbtable) is still supported, but will be removed in next version. \nPlease fix your code soon!");
if ( $( o.id ).hasClass( "elLoadSuccess" ) ) {
- var dbtable_name = $el.jqmData('dbtable');
+ dbtable_name = $el.jqmData('dbtable');
o.dbtable = window[ dbtable_name ];
- if( !(o.dbtable) ) {
+ if ( !(o.dbtable) ) {
o.dbtable = { };
}
t._itemData = function ( idx ) {
destroy : function () {
- var o = this.options;
+ var o = this.options,
+ eOTAL_ITEMS = 0,
+ last_index = 0;
$( o.id ).empty();
- eOTAL_ITEMS = 0;
- last_index = 0;
-
$( "#load_more_message" ).die();
},
return;
}
+ if ( $( this ).jqmData("handler") !== true ) {
+ return;
+ }
+
var self = this,
$this = $( this ),
scrollview = $this.data( "scrollview" ),
var img = this.images[index],
img_top = 0;
+ if ( !obj) {
+ return;
+ }
if ( !obj.length ) {
return;
}
self._align( index, obj );
};
+ if ( !obj) {
+ return;
+ }
if ( !obj.length ) {
return;
}
},
_detach: function ( index, obj ) {
+ if ( !obj) {
+ return;
+ }
if ( !obj.length ) {
return;
}
+++ /dev/null
-/*
- * jQuery Mobile Widget @VERSION
- *
- * This software is licensed under the MIT licence (as defined by the OSI at
- * http://www.opensource.org/licenses/mit-license.php)
- *
- * ***************************************************************************
- * Copyright (C) 2011 by Intel Corporation Ltd.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- * ***************************************************************************
- *
- * Authors: Elliot Smith <elliot.smith@intel.com>
- */
-
-// Horizontal/vertical box layout extension.
-//
-// This will arrange the child elements of a container in a horizontal
-// or vertical row. This only makes sense if your container is a div
-// and contains children which are also divs; the children should
-// also have a height and width set in CSS, otherwise the layout
-// manager won't know what to do with them.
-//
-// Apply it by setting data-layout="hbox" or data-layout="vbox" (vertical
-// on a container element or calling $(element).layouthbox() or
-// $(element).layoutvbox().
-//
-// Usually, you would use a div as the container to get the right effect
-// (an element with display:block).
-//
-// Options can be set programmatically:
-//
-// $(element).layouthbox('option', 'scrollable', false)
-// $(element).layoutvbox('option', 'scrollable', false)
-//
-// or via a data-layout-options attribute on the container:
-//
-// <div data-layout="hbox" data-layout-options='{"hgap":5}'>
-// <div>child 1</div>
-// <div>child 2</div>
-// </div>
-//
-// <div data-layout="vbox" data-layout-options='{"vgap":5}'>
-// <div>child 1</div>
-// <div>child 2</div>
-// </div>
-//
-// If you change any options after creating the widget, call
-// $(element).layout*box('refresh') to have them picked up.
-// However, note that it's currently not feasible to turn off scrolling
-// once it's on (as calling scrollview('destroy') doesn't remove the
-// scrollview custom mouse handlers).
-//
-// There is one major difference between the horizontal and
-// vertical box layouts: if scrollable=false, the horizontal layout
-// will clip children which overflow the edge of the parent container;
-// by comparison, the vertical container will grow vertically to
-// accommodate the height of its children. This mirrors the behaviour
-// of jQuery Mobile, where elements only ever expand horizontally
-// to fill the width of the window; but will expand vertically forever,
-// unless the page height is artificially constrained.
-//
-// Options:
-//
-// {Integer} hgap (default=0)
-// Horizontal gap (in pixels) between the child elements. Only has
-// an effect on hbox.
-//
-// {Integer} vgap (default=0)
-// Vertical gap (in pixels) between the child elements. Only has
-// an effect on vbox.
-//
-// {Boolean} scrollable (default=true; can only be set at create time)
-// Set to true to enable a scrollview on the
-// container. If false, children will be clipped if
-// they fall outside the edges of the container after
-// layouting.
-//
-// {Boolean} showScrollBars (default=true)
-// Set to false to hide scrollbars on the container's scrollview.
-// Has no effect is scrollable=false
-
-(function ( $, undefined ) {
-
- // hbox
- $.widget( "tizen.layouthbox", $.tizen.jlayoutadaptor, {
- fixed: {
- type: 'flexGrid',
- rows: 1,
- direction: 'x',
- initSelector: ':jqmData(layout="hbox")'
- },
-
- _create: function () {
- if ( !this.options.hgap ) {
- this.options.hgap = 0;
- }
-
- $.tizen.jlayoutadaptor.prototype._create.apply( this, arguments );
- }
- } );
-
- $( document ).bind( "pagecreate", function ( e ) {
- $( $.tizen.layouthbox.prototype.fixed.initSelector, e.target )
- .not( ":jqmData(role='none'), :jqmData(role='nojs')" )
- .layouthbox();
- } );
-
- // vbox
- $.widget( "tizen.layoutvbox", $.tizen.jlayoutadaptor, {
- fixed: {
- type: 'flexGrid',
- columns: 1,
- direction: 'y',
- initSelector: ':jqmData(layout="vbox")'
- },
-
- _create: function () {
- if ( !this.options.vgap ) {
- this.options.vgap = 0;
- }
-
- $.tizen.jlayoutadaptor.prototype._create.apply( this, arguments );
- }
- } );
-
- $( document ).bind( "pagecreate", function ( e ) {
- $( $.tizen.layoutvbox.prototype.fixed.initSelector, e.target )
- .not( ":jqmData(role='none'), :jqmData(role='nojs')" )
- .layoutvbox();
- } );
-
-}( jQuery ) );
style = $listdivider.attr( "data-style" );
if ( style === "expandable" || style === "checkexpandable" ) {
- openStatus ? iconStatus = "opened" : iconStatus = "closed";
+ iconStatus = openStatus ? "opened" : "closed";
expandSrc = "<span class='ui-divider-expand-div'><span class='ui-icon-expandable-divider-" + iconStatus + "'/></span>";
$( expandSrc ).appendTo( $listdivider );
+++ /dev/null
-/*
- * jQuery Mobile Widget @VERSION - listview controls
- *
- * This software is licensed under the MIT licence (as defined by the OSI at
- * http://www.opensource.org/licenses/mit-license.php)
- *
- * ***************************************************************************
- * Copyright (C) 2011 by Intel Corporation Ltd.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- * ***************************************************************************
- *
- * Authors: Elliot Smith <elliot.smith@intel.com>
- */
-
-// This extension supplies API to toggle the "mode" in which a list
-// is displayed. The modes available is configurable, but defaults
-// to ['edit', 'view']. A list can also have a control panel associated
-// with it. The visibility of the control panel is governed by the current
-// mode (by default, it is visible in 'edit' mode); elements within
-// the listview can also be marked up to be visible in one or more of the
-// available modes.
-//
-// One example use case would be a control panel with a "Select all" checkbox
-// which, when clicked, selects all of the checkboxes in the associated
-// listview items.
-//
-// The control panel itself should be defined as a form element.
-// By default, the control panel will be hidden when the listview is
-// initialised, unless you supply mode="edit" as a
-// data-listview-controls option (when using the default modes). If you
-// want the control panel to be visible in some mode other than
-// the default, use a data-listviewcontrols-show-in="<mode>" attribute
-// on the control panel element.
-//
-// Example usage (using the default 'edit' and 'view' modes):
-//
-// <!-- this is the controls element, displayed in 'edit' mode by default -->
-// <form id="listviewcontrols-control-panel">
-// <fieldset data-role="controlgroup">
-// <input type="checkbox" id="listviewcontrols-demo-checkbox-uber" />
-// <label for="listviewcontrols-demo-checkbox-uber">Select all</label>
-// </fieldset>
-// </form>
-//
-// <!-- this is the list associated with the controls -->
-// <ul data-role="listview" data-listviewcontrols="#listviewcontrols-control-panel">
-//
-// <li>
-//
-// <!-- this element is only visible in 'edit' mode -->
-// <fieldset data-role="controlgroup" data-listviewcontrols-show-in="edit">
-// <input type="checkbox" id="listviewcontrols-demo-checkbox-1" />
-// <label for="listviewcontrols-demo-checkbox-1">Greg</label>
-// </fieldset>
-//
-// <!-- this element is only visible in 'view' mode -->
-// <span data-listviewcontrols-show-in="view">Greg</span>
-//
-// </li>
-//
-// ... more li elements marked up the same way ...
-//
-// </ul>
-//
-// To associate the listview with the control panel, add
-// data-listviewcontrols="..selector.." to a listview, where
-// selector selects a single element (the control panel
-// you defined). You can then call
-// listviewcontrols('option', 'mode', '<mode>') on the
-// listview to set the mode.
-//
-// Inside the listview's items, add controls to each item
-// which are only visible when in one of the modes. To do this,
-// add form elements (e.g. checkboxes) to the items as you see fit. Then,
-// mark each form element with data-listviewcontrols-show-in="<mode>".
-// The control's visibility now depends on the mode of the listviewcontrols:
-// it is only shown when its <mode> setting matches the current mode
-// of the listviewcontrols widget. You are responsible for properly
-// styling the form elements inside the listview so the listview looks
-// correct when they are hidden or visible.
-//
-// The control panel (by default, visible when in "show" mode) is flexible
-// and can contain any valid form elements (or other jqm components). It's
-// up to you to define the behaviour associated with interactions on
-// the control panel and/or controls inside list items.
-//
-// Methods:
-//
-// visibleListItems
-// Returns a jQuery object containing all the li elements in the
-// listview which are currently visible and not dividers. (This
-// is just a convenience to make operating on the list as a whole
-// slightly simpler.)
-//
-// Options (set in options hash passed to constructor, or via the
-// option method, or declaratively by attribute described below):
-//
-// controlPanelSelector {String}
-// Selector string for selecting the element representing the
-// control panel for the listview. The context for find() is the
-// document (to give the most flexibility), so your selector
-// should be specific. Set declaratively with
-// data-listviewcontrols="...selector...".
-//
-// modesAvailable {String[]; default=['edit', 'view']}
-// An array of the modes available for these controls.
-//
-// mode {String; default='view'}
-// Current mode for the widget, which governs the visibility
-// of the listview control panel and any elements marked
-// with data-listviewcontrols-show-in="<mode>".
-// Set declaratively with
-// data-listviewcontrols-options='{"mode":"<mode>"}'.
-//
-// controlPanelShowIn {String; default=modesAvailable[0]}
-// The mode in which the control panel is visible; defaults to the
-// first element of modesAvailable. Can be set declaratively
-// on the listview controls element with
-// data-listviewcontrols-show-in="<mode>"
-
-(function ($) {
-
- $.widget( "todons.listviewcontrols", $.mobile.widget, {
- _defaults: {
- controlPanelSelector: null,
- modesAvailable: ['edit', 'view'],
- mode: 'view',
- controlPanelShowIn: null
- },
-
- _listviewCssClass: 'ui-listviewcontrols-listview',
- _controlsCssClass: 'ui-listviewcontrols-panel',
-
- _create: function () {
- var self = this,
- o = this.options,
- optionsValid = true,
- page = this.element.closest( '.ui-page' ),
- controlPanelSelectorAttr = 'data-' + $.mobile.ns + 'listviewcontrols',
- controlPanelSelector = this.element.attr( controlPanelSelectorAttr ),
- dataOptions = this.element.jqmData( 'listviewcontrols-options' ),
- controlPanelShowInAttr;
-
- o.controlPanelSelector = o.controlPanelSelector || controlPanelSelector;
-
- // precedence for options: defaults < jqmData attribute < options arg
- o = $.extend( {}, this._defaults, dataOptions, o );
-
- optionsValid = ( this._validOption( 'modesAvailable', o.modesAvailable, o ) &&
- this._validOption( 'controlPanelSelector', o.controlPanelSelector, o ) &&
- this._validOption( 'mode', o.mode, o ) );
-
- if ( !optionsValid ) {
- return false;
- }
-
- // get the controls element
- this.controlPanel = $( document ).find( o.controlPanelSelector ).first();
-
- if ( this.controlPanel.length === 0 ) {
- return false;
- }
-
- // once we have the controls element, we may need to override the
- // mode in which controls are shown
- controlPanelShowInAttr = this.controlPanel.jqmData( 'listviewcontrols-show-in' );
- if ( controlPanelShowInAttr ) {
- o.controlPanelShowIn = controlPanelShowInAttr;
- } else if ( !o.controlPanelShowIn ) {
- o.controlPanelShowIn = o.modesAvailable[0];
- }
-
- if ( !this._validOption( 'controlPanelShowIn', o.controlPanelShowIn, o ) ) {
- return;
- }
-
- // done setting options
- this.options = o;
-
- // mark the controls and the list with a class
- this.element.removeClass(this._listviewCssClass).addClass(this._listviewCssClass);
- this.controlPanel.removeClass(this._controlsCssClass).addClass(this._controlsCssClass);
-
- // show the widget
- if ( page && !page.is( ':visible' ) ) {
- page.bind( 'pageshow', function () { self.refresh(); } );
- } else {
- this.refresh();
- }
- },
-
- _validOption: function ( varName, value, otherOptions ) {
- var ok = false,
- i = 0;
-
- if ( varName === 'mode' ) {
- ok = ( $.inArray( value, otherOptions.modesAvailable ) >= 0 );
- } else if ( varName === 'controlPanelSelector' ) {
- ok = ( $.type( value ) === 'string' );
- } else if ( varName === 'modesAvailable' ) {
- ok = ( $.isArray( value ) && value.length > 1 );
-
- if ( ok ) {
- for ( i = 0; i < value.length; i++ ) {
- if ( value[i] === '' || $.type( value[i] ) !== 'string' ) {
- ok = false;
- }
- }
- }
- } else if ( varName === 'controlPanelShowIn' ) {
- ok = ( $.inArray( value, otherOptions.modesAvailable ) >= 0 );
- }
-
- return ok;
- },
-
- _setOption: function ( varName, value ) {
- var oldValue = this.options[varName];
-
- if ( oldValue !== value && this._validOption( varName, value, this.options ) ) {
- this.options[varName] = value;
- this.refresh();
- }
- },
-
- visibleListItems: function () {
- return this.element.find( 'li:not(:jqmData(role=list-divider)):visible' );
- },
-
- refresh: function () {
- var self = this,
- triggerUpdateLayout = false,
- isVisible = null,
- showIn,
- modalElements;
-
- // hide/show the control panel and hide/show controls inside
- // list items based on their "show-in" option
- isVisible = this.controlPanel.is( ':visible' );
-
- if ( this.options.mode === this.options.controlPanelShowIn ) {
- this.controlPanel.show();
- } else {
- this.controlPanel.hide();
- }
-
- if ( this.controlPanel.is( ':visible' ) !== isVisible ) {
- triggerUpdateLayout = true;
- }
-
- // we only operate on elements inside list items which aren't dividers
- modalElements = this.element
- .find( 'li:not(:jqmData(role=list-divider))' )
- .find( ':jqmData(listviewcontrols-show-in)' );
-
- modalElements.each(function () {
- showIn = $( this ).jqmData( 'listviewcontrols-show-in' );
-
- isVisible = $( this ).is( ':visible' );
-
- if ( showIn === self.options.mode ) {
- $( this ).show();
- } else {
- $( this ).hide();
- }
-
- if ( $( this ).is( ':visible' ) !== isVisible ) {
- triggerUpdateLayout = true;
- }
- } );
-
- if ( triggerUpdateLayout ) {
- this.element.trigger( 'updatelayout' );
- }
- }
- } );
-
- $( 'ul' ).live( 'listviewcreate', function () {
- var list = $(this);
-
- if ( list.is( ':jqmData(listviewcontrols)' ) ) {
- list.listviewcontrols();
- }
- } );
-
-}( jQuery ) );
* ***************************************************************************
*
* Author: Kangsik Kim <kangsik81.kim@samsung.com>
+ * Minkyeong Kim <minkyeong.kim@samsung.com>
*/
/**
$view.append( inputbox );
// create a anchor tag.
- if ( option.listId === null || $.trim(option.listId).length < 1 ) {
+ if ( option.listId === null || $.trim(option.listId).length < 1 ) {
className += "-dim";
}
- $( moreBlock ).text( "+" ).attr( "href", $.trim(option.listId)).addClass( "ui-multibuttonentry-link-base" ).addClass( className );
+ $( moreBlock ).text( "+" ).attr( "href", $.trim(option.listId) ).addClass( "ui-multibuttonentry-link-base" ).addClass( className );
// append default htmlelements to main widget.
$view.append( moreBlock );
moreBlock = $view.find( ".ui-multibuttonentry-link-base" ),
isSeparator = false;
+ // delegate a event to HTMLDivElement(each block).
+ $view.delegate( "div", "vclick", function ( event ) {
+ if ( $( this ).hasClass( "ui-multibuttonentry-sblock" ) ) {
+ // If block is selected, it will be removed.
+ self._removeTextBlock();
+ }
+
+ var lockBlock = $view.find( "div.ui-multibuttonentry-sblock" );
+ if ( typeof lockBlock !== "undefined" ) {
+ lockBlock.removeClass( "ui-multibuttonentry-sblock" ).addClass( "ui-multibuttonentry-block" );
+ }
+ $( this ).removeClass( "ui-multibuttonentry-block" ).addClass( "ui-multibuttonentry-sblock" );
+ self._trigger( "select" );
+ });
+
inputbox.bind( "keyup", function ( event ) {
// 8 : backspace
// 13 : Enter
transition: "slide",
reverse: false,
changeHash: false
- } );
- } );
+ });
+ });
$( document ).bind( "pagechange.mbe", function ( event ) {
if ( $view.innerWidth() === 0 ) {
return;
}
- if ( ! messages ) {
+ if ( !messages ) {
return ;
}
content = messages,
index = blockIndex,
blocks = null,
- dataBlock = null,
- displayText = null,
textBlock = null;
if ( self._viewWidth === 0 ) {
self._viewWidth = $view.innerWidth();
}
- // save src data
- dataBlock = $( document.createElement( 'input' ) );
- dataBlock.attr( "value", content ).addClass( "ui-multibuttonentry-data" ).hide();
-
// Create a new text HTMLDivElement.
textBlock = $( document.createElement( 'div' ) );
- displayText = self._ellipsisTextBlock( content ) ;
- textBlock.text( displayText ).addClass( "ui-multibuttonentry-block" );
- textBlock.append( dataBlock );
- // bind a event to HTMLDivElement.
- textBlock.bind( "vclick", function ( event ) {
- if ( $( this ).hasClass( "ui-multibuttonentry-sblock" ) ) {
- // If block is selected, it will be removed.
- self._removeTextBlock();
- }
-
- var lockBlock = $view.find( "div.ui-multibuttonentry-sblock" );
- if ( typeof lockBlock != "undefined" ) {
- lockBlock.removeClass( "ui-multibuttonentry-sblock" ).addClass( "ui-multibuttonentry-block" );
- }
- $( this ).removeClass( "ui-multibuttonentry-block" ).addClass( "ui-multibuttonentry-sblock" );
- self._trigger( "select" );
- });
+ textBlock.text( content ).addClass( "ui-multibuttonentry-block" );
+ textBlock.css( {'visibility': 'hidden'} );
blocks = $view.find( "div" );
if ( index !== null && index <= blocks.length ) {
$view.find( ".ui-multibuttonentry-input" ).before( textBlock );
}
+ textBlock = self._ellipsisTextBlock( textBlock );
+ textBlock.css( {'visibility': 'visible'} );
+
self._currentWidth += self._calcBlockWidth( textBlock );
self._modifyInputBoxWidth();
self._trigger( "add" );
_removeTextBlock : function () {
var self = this,
$view = this.element,
- targetBlock = null,
lockBlock = $view.find( "div.ui-multibuttonentry-sblock" );
if ( lockBlock !== null && lockBlock.length > 0 ) {
},
_calcBlockWidth : function ( block ) {
- var blockWidth = 0;
- blockWidth = $( block ).outerWidth( true );
- return blockWidth;
+ return $( block ).outerWidth( true );
},
_unlockTextBlock : function () {
var $view = this.element,
lockBlock = $view.find( "div.ui-multibuttonentry-sblock" );
- if ( lockBlock !== null ) {
+ if ( !lockBlock ) {
lockBlock.removeClass( "ui-multibuttonentry-sblock" ).addClass( "ui-multibuttonentry-block" );
}
},
}
},
- _ellipsisTextBlock : function ( text ) {
+ _ellipsisTextBlock : function ( textBlock ) {
var self = this,
- str = text,
- length = 0,
- maxWidth = self._viewWidth,
- maxCharCnt = parseInt( ( self._viewWidth / self._fontSize ), 10 ) - 5,
- ellipsisStr = null;
- if ( str ) {
- length = str.length ;
- if ( length > maxCharCnt ) {
- ellipsisStr = str.substring( 0, maxCharCnt );
- ellipsisStr += "...";
- } else {
- ellipsisStr = str;
- }
+ $view = self.element,
+ maxWidth = $view.innerWidth() - ( self._labelWidth + self._anchorWidth ) * 2;
+
+ if ( self._calcBlockWidth( textBlock ) > maxWidth ) {
+ $( textBlock ).width( maxWidth - self._marginWidth );
}
- return ellipsisStr;
+
+ return textBlock;
},
_modifyInputBoxWidth : function () {
var self = this,
$view = self.element,
+ margin = self._marginWidth,
labelWidth = self._labelWidth,
anchorWidth = self._anchorWidth,
- inputBoxWidth = self._viewWidth - labelWidth - anchorWidth,
+ inputBoxWidth = self._viewWidth - labelWidth,
blocks = $view.find( "div" ),
blockWidth = 0,
index = 0,
- margin = self._marginWidth,
inputBox = $view.find( ".ui-multibuttonentry-input" );
if ( $view.width() === 0 ) {
for ( index = 0; index < blocks.length; index += 1 ) {
blockWidth = self._calcBlockWidth( blocks[index] );
- inputBoxWidth = inputBoxWidth - blockWidth;
- if ( inputBoxWidth <= 0 ) {
- if ( inputBoxWidth + anchorWidth >= 0 ) {
- inputBoxWidth = self._viewWidth - anchorWidth;
+
+ if ( blockWidth >= inputBoxWidth + anchorWidth ) {
+ if ( blockWidth >= inputBoxWidth ) {
+ inputBoxWidth = self._viewWidth - blockWidth;
} else {
- inputBoxWidth = self._viewWidth - blockWidth - anchorWidth;
+ inputBoxWidth = self._viewWidth ;
+ }
+ } else {
+ if ( blockWidth >= inputBoxWidth ) {
+ inputBoxWidth = self._viewWidth - blockWidth;
+ } else {
+ inputBoxWidth -= blockWidth;
}
}
}
- $( inputBox ).width( inputBoxWidth - margin - 1 );
+
+ inputBoxWidth -= margin;
+ if ( inputBoxWidth < anchorWidth * 2 ) {
+ inputBoxWidth = self._viewWidth - margin;
+ }
+ $( inputBox ).width( inputBoxWidth - anchorWidth );
},
_stringFormat : function ( expression ) {
return message;
},
- _resizeBlock : function () {
+ _resizeBlocks : function () {
var self = this,
$view = self.element,
- dataBlocks = $( ".ui-multibuttonentry-data" ),
blocks = $view.find( "div" ),
- srcTexts = [],
index = 0;
- $view.hide();
- for ( index = 0 ; index < dataBlocks.length ; index += 1 ) {
- srcTexts[index] = $( dataBlocks[index] ).val();
- self._addTextBlock( srcTexts[index] );
+ for ( index = 0 ; index < blocks.length ; index += 1 ) {
+ $( blocks[index] ).css( "width", "auto" );
+ blocks[index] = self._ellipsisTextBlock( blocks[index] );
}
- blocks.remove();
- $view.show();
},
//---------------------------------------------------- //
if ( arguments.length === 0 ) {
// return a selected block.
- lockBlock = $view.find( "div.ui-multibuttonentry-sblock" ).children( ".ui-multibuttonentry-data" );
+ lockBlock = $view.find( "div.ui-multibuttonentry-sblock" );
if ( lockBlock) {
- return lockBlock.attr( "value" );
+ return lockBlock.text();
}
return null;
}
},
refresh : function () {
- var self = this;
- self.element.hide();
- self.element.show();
+ var self = this,
+ $view = this.element;
+
+ self._viewWidth = $view.innerWidth();
+ self._resizeBlocks();
+ self._modifyInputBoxWidth();
},
destroy : function () {
var $view = this.element;
$view.find( "label" ).remove();
- $view.find( "div" ).unbind( "vclick" ).remove();
+ $view.find( "div" ).undelegate( "vclick" ).remove();
$view.find( "a" ).remove();
$view.find( ".ui-multibuttonentry-input" ).unbind( "keyup" ).remove();
_set_position: function () {
var container = this._get_container(),
- container_h = parseFloat( container.height() ),
- $page = $('.ui-page'),
- $footer = $page.children('.ui-footer'),
- footer_h = $footer.outerHeight() || 0,
- position = $( window ).height() - container_h - footer_h;
+ $footer = $('.ui-page-active').children('.ui-footer'),
+ footer_h = $footer.outerHeight() || 0;
- container.css( 'top', position );
+ container.css( 'bottom', footer_h);
},
_create: function () {
if ( !o.visibleOnPageShow ) {
self.hide( true );
}
- self._IMEShown = false;
+/* IME concenpt change after alpha2.0 */
+/* self._IMEShown = false;*/
self.setHeaderFooter( event );
} )
.bind( "webkitAnimationStart animationstart updatelayout", function ( e, data ) {
if ( o.updatePagePadding ) {
$( window ).bind( "throttledresize." + self.widgetName, function () {
self.updatePagePadding(); // FIXME: unused function.
- self.layoutPageIME(); // IME/resize reposition
+/* IME concenpt change after alpha2.0 */
+/* self.layoutPageIME();*/
self.updatePageLayout();
self._updateHeaderArea();
});
},
_visible: true,
- _IMEShown : false,
+/* IME concenpt change after alpha2.0 */
+/* _IMEShown : false,
_IMEindicatorHeight : window.outerHeight - window.innerHeight,
layoutPageIME: function () {
|| $(".ui-page-active .ui-header .input-search-bar").length
|| $(".ui-page-active .ui-content").find("input").length
|| $(".ui-page-active .ui-content").find("textarea").length) {
- /* Check vertical and horizontal ratio.
- * If focus on input and two values are different, IME is drawed. */
if ( ( window.innerHeight + this._IMEindicatorHeight ) < window.outerHeight && window.innerWidth == window.outerWidth ) {
if ( this._IMEShown === false ) {
}
}
},
-
+*/
// This will set the content element's top or bottom padding equal to the toolbar's height
updatePagePadding: function (data) {
var $el = this.element,
+++ /dev/null
-.ui-pagelist {
- text-align: center;
-}
+++ /dev/null
-/*
- *
- * This software is licensed under the MIT licence (as defined by the OSI at
- * http://www.opensource.org/licenses/mit-license.php)
- *
- * ***************************************************************************
- * Copyright (c) 2011 by Intel Corporation Ltd.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- * ***************************************************************************
- */
-
-// pagelist widget
-//
-// Given an element, this widget collects all links contained in the descendants of the element and constructs
-// a popupwindow widget containing numbered buttons for each encountered link.
-//
-// You can mark any one element in your document with "data-pagelist='true'" and a pagelist will be created that
-// will allow the user to navigate between the pages linked to within the element.
-//
-// Currently, only one pagelist can exist in a document and, once created, it cannot be modified.
-
-(function ( $, undefined ) {
-
- window.ensureNS( "jQuery.mobile.tizen" );
-
- $.widget( "tizen.pagelist", $.tizen.widgetex, {
- _htmlProto: {
- ui: {
- pageList: "#pagelist",
- button: "#pagelist-button",
- rowBreak: "#pagelist-rowbreak"
- }
- },
- _create: function () {
- var self = this,
- popPageList = false,
- idx = 0;
-
- this._ui.button.remove();
- this._ui.rowBreak.remove();
- this._ui.pageList
- .appendTo( $( "body" ) )
- .popupwindow()
- .bind( "vclick", function ( e ) {
- $( this ).popupwindow( "close" );
- } );
-
- this.element.find( "a[href]" ).each( function ( elemIdx, elem ) {
- if ( idx > 0 && ( ( idx % 10 ) != 0 ) ) {
- self._ui.pageList.append( self._ui.rowBreak.clone() );
- }
-
- self._ui.button
- .clone()
- .attr( "href", $( elem ).attr( "href" ) )
- .text( ++idx )
- .appendTo( self._ui.pageList )
- .buttonMarkup()
- .bind( "vclick", function () { self._ui.pageList.popupwindow( "close" ); } )
- .find( ".ui-btn-inner" )
- .css( { padding: 2 } );
- } );
-
- $( document ).bind( "keydown", function ( e ) {
- popPageList = ( e.keyCode === $.mobile.keyCode.CONTROL );
- } );
- $( document ).bind( "keyup", function ( e ) {
- if ( e.keyCode === $.mobile.keyCode.CONTROL && popPageList ) {
- var maxDim = { cx: 0, cy: 0 };
- self._ui.pageList.popupwindow( "open", undefined, 0 );
- self._ui.pageList.find( "a" )
- .each( function () {
- var btn = $( this ),
- dim = {
- cx: btn.outerWidth( true ),
- cy: btn.outerHeight( true )
- };
-
- // Make sure things will be even later, because padding cannot have decimals - apparently :-S
- if ( dim.cx % 2 ) {
- btn.css( "padding-left", parseInt( btn.css( "padding-left" ), 10 ) + 1 );
- }
- if ( dim.cy % 2 ) {
- btn.css( "padding-bottom", parseInt( btn.css( "padding-bottom" ), 10 ) + 1 );
- }
-
- maxDim.cx = Math.max( maxDim.cx, dim.cx );
- maxDim.cy = Math.max( maxDim.cy, dim.cy );
- } )
- .each( function () {
- var padding = {
- h: Math.max( 0, ( maxDim.cx - $( this ).outerWidth( true ) ) / 2 ),
- v: Math.max( 0, ( maxDim.cy - $( this ).outerHeight( true ) ) / 2 )
- },
- btn = $( this ),
- inner = btn.find( ".ui-btn-inner" );
-
- inner.css( {
- "padding-left" : parseInt( inner.css( "padding-left" ), 10 ) + padding.h,
- "padding-top" : parseInt( inner.css( "padding-top" ), 10 ) + padding.v,
- "padding-right" : parseInt( inner.css( "padding-right" ), 10 ) + padding.h,
- "padding-bottom" : parseInt( inner.css( "padding-bottom" ), 10 ) + padding.v
- } );
- btn[( ( btn.attr( "href" ) === "#" + $.mobile.activePage.attr( "id" ) ) ? "addClass" : "removeClass" )]( "ui-btn-active" );
- } );
- e.stopPropagation();
- e.preventDefault();
- }
- popPageList = false;
- } );
- }
- } );
-
- // Look for an element marked as a pagelist and assign $.mobile.tizen.pagelist with a newly created pagelist.
- // If $.mobile.tizen.pagelist is already assigned, ignore any new "data-pagelist='true'" designations.
- $( document ).bind( "pagecreate create", function ( e ) {
- $( ":jqmData(pagelist='true')", e.target )
- .not( ":jqmData(role='none'), :jqmData(role='nojs')" )
- .each( function () {
- if ( $.mobile.tizen.pagelist === undefined ) {
- $.extend( $.mobile.tizen, {
- pagelist: $( this ).pagelist()
- } );
- }
- return false;
- } );
- } );
-
-}( jQuery ) );
+++ /dev/null
-<div id="pagelist" class="ui-pagelist" data-role="popupwindow" data-shadow="false" data-overlayTheme="">
- <a id="pagelist-button" data-role="button" data-inline="true"></a>
- <br id="pagelist-rowbreak"></br>
-</div>
this.element.trigger( "popupbeforeposition" );
this._ui.container
.removeClass( "ui-selectmenu-hidden" )
- .offset( this._placementCoords( this._desiredCoords( undefined, undefined, "window" ) ) )
- .attr( "tabindex", "0" )
- .focus();
+ .offset( this._placementCoords( this._desiredCoords( undefined, undefined, "window" ) ) );
this._resizeData = null;
this._orientationchangeInProgress = false;
_openPrereqsComplete: function() {
this._ui.container.addClass( "ui-popup-active" );
this._isOpen = true;
- this._ui.container.attr( "tabindex", "0" ).focus();
this.element.trigger( "popupafteropen" );
},
--- /dev/null
+/*
+ * Unit Test: Gallery3d
+ *
+ * Wonseop Kim <wonseop.kim@samsung.com>
+ */
+
+(function ($) {
+ $.mobile.defaultTransition = "none";
+
+ module("Galley3d");
+
+ asyncTest( "create & select", function() {
+ var widget = $( "#galley3dTest1" ),
+ imageList = [],
+ path = widget.attr( "data-json-url" ),
+ key = widget.attr( "data-json-key" ),
+ elem = "ui-gallery3d";
+
+ $.ajax({
+ async : false,
+ url : path,
+ dataType: "json",
+ success : function ( result ) {
+ imageList = result[key];
+ }
+ });
+
+ /* Create */
+ widget.gallery3d();
+ ok( widget.hasClass( elem ), "Create" );
+
+ /* API */
+ widget.gallery3d( "select", 1 );
+ setTimeout( function () {
+ equal( widget.gallery3d( "select" ), imageList[1].src, "API : select" );
+ start();
+ }, 2400 );
+ });
+
+ asyncTest( "remove", function() {
+ var widget = $( "#galley3dTest2" ),
+ imageList = [],
+ path = widget.attr( "data-json-url" ),
+ key = widget.attr( "data-json-key" ),
+ currentSource;
+
+ $.ajax({
+ async : false,
+ url : path,
+ dataType: "json",
+ success : function ( result ) {
+ imageList = result[key];
+ }
+ });
+
+ widget.gallery3d();
+ currentSource = widget.gallery3d( "select" );
+
+ /* API */
+ widget.gallery3d( "remove" );
+ notEqual( widget.gallery3d( "select" ), currentSource, "API : remove" );
+ start();
+ });
+
+ asyncTest( "move", function() {
+ var widget = $( "#galley3dTest3" ),
+ imageList = [],
+ path = widget.attr( "data-json-url" ),
+ key = widget.attr( "data-json-key" ),
+ currentSource;
+
+ $.ajax({
+ async : false,
+ url : path,
+ dataType: "json",
+ success : function ( result ) {
+ imageList = result[key];
+ }
+ });
+
+ widget.gallery3d();
+ currentSource = widget.gallery3d( "select" );
+
+ /* API */
+ widget.gallery3d( "moveNext" );
+ setTimeout( function () {
+ equal( widget.gallery3d( "select" ), imageList[1].src, "API : moveNext" );
+ start();
+
+ stop();
+ widget.gallery3d( "movePrev" );
+ setTimeout( function () {
+ equal( widget.gallery3d( "select" ), imageList[0].src, "API : movePrev" );
+ start();
+ }, 300 );
+ }, 2400 );
+ });
+
+}( jQuery ));
--- /dev/null
+<!DOCTYPE html>
+<html>
+<head>
+ <script src="../../../build/tizen-web-ui-fw/latest/js/jquery.js"></script>
+ <script src="../../../build/tizen-web-ui-fw/latest/js/tizen-web-ui-fw-libs.js"></script>
+ <script src="../../../build/tizen-web-ui-fw/latest/js/tizen-web-ui-fw.js"
+ data-framework-theme="tizen-gray"
+ data-framework-viewport-scale=false>
+ </script>
+
+ <link rel="stylesheet" href="../../../libs/js/jquery-mobile-1.1.0/external/qunit.css" />
+
+ <script src="../../../libs/js/jquery-mobile-1.1.0/external/qunit.js"></script>
+ <script src="gallery3d-tests.js"></script>
+
+ <title>Galley3d</title>
+</head>
+
+<body>
+
+<h1 id="qunit-header">Galley3d</h1>
+<h2 id="qunit-banner"></h2>
+<div id="qunit-testrunner-toolbar"></div>
+<h2 id="qunit-userAgent"></h2>
+<ol id="qunit-tests"></ol>
+
+<div id="qunit-fixture">
+
+ <div data-role="page">
+ <div data-role="header" data-position="fixed">
+ <h1>Galley3d</h1>
+ </div>
+ <div data-role="content">
+ <div id="galley3dTest1" data-role="galley3d" style="width: 100%;"
+ data-json-url="../../../demos/tizen-gray/widgets/gallery3d/gallery3d-db.json"
+ data-json-key="JSON_DATA" > </div>
+ </div>
+ </div>
+
+ <div data-role="page">
+ <div data-role="header" data-position="fixed">
+ <h1>Galley3d</h1>
+ </div>
+ <div data-role="content">
+ <div id="galley3dTest2" data-role="galley3d" style="width: 100%;"
+ data-json-url="../../../demos/tizen-gray/widgets/gallery3d/gallery3d-db.json"
+ data-json-key="JSON_DATA" > </div>
+ </div>
+ </div>
+
+ <div data-role="page">
+ <div data-role="header" data-position="fixed">
+ <h1>Galley3d</h1>
+ </div>
+ <div data-role="content">
+ <div id="galley3dTest3" data-role="galley3d" style="width: 100%;"
+ data-json-url="../../../demos/tizen-gray/widgets/gallery3d/gallery3d-db.json"
+ data-json-key="JSON_DATA" > </div>
+ </div>
+ </div>
+
+</div>
+
+</body>
+</html>
* Unit Test: multibuttonentry
*
* Kangsik Kim <kangsik81.kim@samsung.com>
+ * Minkyeong Kim <minkyeong.kim@samsung.com>
*/
-(function ($) {
- module("Multibuttonentry");
+(function ( $ ) {
+ module( "Multibuttonentry" );
var unit_multibuttonentry = function ( widget, type ) {
var multibuttonentry,
/* Create */
multibuttonentry = widget.multibuttonentry();
- ok(multibuttonentry.length > 0, "Create");
+ ok( multibuttonentry.length > 0, "Create" );
/* length */
- equal( multibuttonentry.multibuttonentry("length"), 0, "API : length ");
+ equal( multibuttonentry.multibuttonentry( "length" ), 0, "API : length" );
/* Add */
- multibuttonentry.multibuttonentry("add", "string1");
- equal(multibuttonentry.multibuttonentry("length"), 1, "API: add('string1') ");
- multibuttonentry.multibuttonentry("add", "string2");
- equal(multibuttonentry.multibuttonentry("length"), 2, "API: add('string2') ");
- multibuttonentry.multibuttonentry("add", "string3");
- equal(multibuttonentry.multibuttonentry("length"), 3, "API: add('string3') ");
+ multibuttonentry.multibuttonentry( "add", "string1" );
+ equal( multibuttonentry.multibuttonentry( "length" ), 1, "API : add( 'string1' )" );
+ multibuttonentry.multibuttonentry( "add", "string2" );
+ equal( multibuttonentry.multibuttonentry( "length" ), 2, "API : add( 'string2' )" );
+ multibuttonentry.multibuttonentry( "add", "string3" );
+ equal( multibuttonentry.multibuttonentry( "length" ), 3, "API : add( 'string3' )" );
/* Select */
- multibuttonentry.multibuttonentry("select", 1);
- outputText = multibuttonentry.multibuttonentry("select");
- equal( outputText, "string2", "API : select ( 1 )");
+ multibuttonentry.multibuttonentry( "select", 1 );
+ outputText = multibuttonentry.multibuttonentry( "select" );
+ equal( outputText, "string2", "API : select( 1 )" );
/* Focus Out */
- multibuttonentry.multibuttonentry("focusOut");
- status = multibuttonentry.hasClass("ui-multibuttonentry-focusout");
- equal( status, true, "API : focusOut ");
+ multibuttonentry.multibuttonentry( "focusOut" );
+ status = multibuttonentry.hasClass( "ui-multibuttonentry-focusout" );
+ equal( status, true, "API : focusOut" );
/* Focus In */
- multibuttonentry.multibuttonentry("focusIn");
- status = multibuttonentry.hasClass("ui-multibuttonentry-focusin");
- equal(status, true, "API : focusIn ");
+ multibuttonentry.multibuttonentry( "focusIn" );
+ status = multibuttonentry.hasClass( "ui-multibuttonentry-focusin" );
+ equal( status, true, "API : focusIn" );
/* Remove */
- multibuttonentry.multibuttonentry("remove", 0);
- equal(multibuttonentry.multibuttonentry("length"), 2 , "API : remove(0)");
+ multibuttonentry.multibuttonentry( "remove", 0 );
+ equal( multibuttonentry.multibuttonentry( "length" ), 2 , "API : remove( 0 )" );
/* Reamove all */
- multibuttonentry.multibuttonentry("remove");
- equal( multibuttonentry.multibuttonentry("length"), 0, "API : remove");
+ multibuttonentry.multibuttonentry( "remove" );
+ equal( multibuttonentry.multibuttonentry( "length" ), 0, "API : remove" );
/* input */
inputText = "multibuttonentry";
multibuttonentry.multibuttonentry( "inputText", inputText );
outputText = multibuttonentry.multibuttonentry( "inputText" );
- equal(outputText, inputText, "API : input('" + outputText + "')");
+ equal( outputText, inputText, "API : input( '" + outputText + "' )" );
};
test( "Multibuttonentry", function () {
- unit_multibuttonentry( $("#multibuttonetnry-test"), "multibuttonetnry" );
+ unit_multibuttonentry( $( "#multibuttonetnry-test" ), "multibuttonetnry" );
});
}( jQuery ));
--- /dev/null
+<manifest>
+ <request>
+ <domain name="_"/>
+ </request>
+</manifest>
--- /dev/null
+<manifest>
+ <request>
+ <domain name="_"/>
+ </request>
+</manifest>
--- /dev/null
+<manifest>
+ <request>
+ <domain name="_"/>
+ </request>
+</manifest>
--- /dev/null
+<manifest>
+ <request>
+ <domain name="_"/>
+ </request>
+</manifest>
--- /dev/null
+<manifest>
+ <request>
+ <domain name="_"/>
+ </request>
+</manifest>