From 6c731fe3e9c712b5d09891114085b0fcd052564e Mon Sep 17 00:00:00 2001 From: Jinkun Jang Date: Wed, 13 Mar 2013 01:51:03 +0900 Subject: [PATCH] Tizen 2.1 base --- AUTHORS | 8 + CMakeLists.txt | 52 + LICENSE.APLv2 | 202 + LICENSE.Flora | 206 + NOTICE | 9 + inc/FGraphics.h | 190 + inc/FGraphicsOpengl.h | 42 + inc/FGraphicsOpengl2.h | 75 + inc/FGrpBitmap.h | 491 ++ inc/FGrpBufferInfo.h | 166 + inc/FGrpCanvas.h | 961 +++ inc/FGrpCanvasCommon.h | 79 + inc/FGrpCanvasTexture.h | 121 + inc/FGrpColor.h | 490 ++ inc/FGrpCoordinateSystem.h | 120 + inc/FGrpDimension.h | 178 + inc/FGrpEnrichedText.h | 782 ++ inc/FGrpFloatDimension.h | 175 + inc/FGrpFloatMatrix4.h | 426 + inc/FGrpFloatPoint.h | 232 + inc/FGrpFloatPoint3.h | 275 + inc/FGrpFloatRectangle.h | 347 + inc/FGrpFloatVector4.h | 329 + inc/FGrpFont.h | 401 + inc/FGrpFontCommon.h | 51 + inc/FGrpGlPlayer.h | 279 + inc/FGrpIGlRenderer.h | 158 + inc/FGrpIVideoTextureUpdateListener.h | 95 + inc/FGrpPixelFormat.h | 53 + inc/FGrpPoint.h | 235 + inc/FGrpRectangle.h | 347 + inc/FGrpTextElement.h | 337 + inc/FGrpVideoTexture.h | 139 + inc/FUi.h | 143 + inc/FUiAccessibilityContainer.h | 229 + inc/FUiAccessibilityElement.h | 192 + inc/FUiAccessibilityTypes.h | 48 + inc/FUiAnimAnimationBase.h | 456 ++ inc/FUiAnimAnimationGroup.h | 143 + inc/FUiAnimAnimationTransaction.h | 495 ++ inc/FUiAnimBezierTimingFunction.h | 207 + inc/FUiAnimControlAnimator.h | 520 ++ inc/FUiAnimDimensionAnimation.h | 367 + inc/FUiAnimDiscreteTimingFunction.h | 142 + inc/FUiAnimDisplayContext.h | 141 + inc/FUiAnimEaseElasticInTimingFunction.h | 142 + inc/FUiAnimEaseElasticOutTimingFunction.h | 142 + inc/FUiAnimEaseInOutTimingFunction.h | 106 + inc/FUiAnimEaseInTimingFunction.h | 104 + inc/FUiAnimEaseOutInTimingFunction.h | 107 + inc/FUiAnimEaseOutTimingFunction.h | 104 + inc/FUiAnimExpInTimingFunction.h | 150 + inc/FUiAnimExpOutTimingFunction.h | 148 + inc/FUiAnimFloatAnimation.h | 333 + inc/FUiAnimFrameAnimator.h | 274 + inc/FUiAnimIAnimationTransactionEventListener.h | 134 + inc/FUiAnimIControlAnimatorDetailedEventListener.h | 195 + inc/FUiAnimIControlAnimatorEventListener.h | 146 + inc/FUiAnimIFrameAnimatorEventListener.h | 166 + inc/FUiAnimIVisualElementAnimationProvider.h | 147 + ...nimIVisualElementAnimationStatusEventListener.h | 151 + ...iAnimIVisualElementAnimationTickEventListener.h | 120 + inc/FUiAnimIVisualElementAnimationTimingFunction.h | 109 + ...iAnimIVisualElementAnimationValueInterpolator.h | 115 + inc/FUiAnimIVisualElementContentProvider.h | 178 + inc/FUiAnimIVisualElementEventListener.h | 283 + inc/FUiAnimIntegerAnimation.h | 334 + inc/FUiAnimLinearTimingFunction.h | 107 + inc/FUiAnimParallelAnimationGroup.h | 253 + inc/FUiAnimPointAnimation.h | 337 + inc/FUiAnimRectangleAnimation.h | 373 + inc/FUiAnimRotateAnimation.h | 231 + inc/FUiAnimSequentialAnimationGroup.h | 286 + inc/FUiAnimTypes.h | 186 + inc/FUiAnimVisualElement.h | 1352 ++++ inc/FUiAnimVisualElementAnimation.h | 465 ++ inc/FUiAnimVisualElementAnimationGroup.h | 239 + inc/FUiAnimVisualElementAnimationProvider.h | 102 + inc/FUiAnimVisualElementContentProvider.h | 122 + inc/FUiAnimVisualElementPropertyAnimation.h | 190 + inc/FUiAnimVisualElementSurface.h | 216 + inc/FUiAnimVisualElementValueAnimation.h | 329 + inc/FUiAnimations.h | 373 + inc/FUiCardLayout.h | 156 + inc/FUiClipboard.h | 319 + inc/FUiClipboardItem.h | 123 + inc/FUiClipboardTypes.h | 50 + inc/FUiCompositeMode.h | 59 + inc/FUiContainer.h | 625 ++ inc/FUiControl.h | 1489 ++++ inc/FUiControls.h | 456 ++ inc/FUiCtrlAnimation.h | 342 + inc/FUiCtrlAnimationFrame.h | 133 + inc/FUiCtrlButton.h | 516 ++ inc/FUiCtrlButtonItem.h | 224 + inc/FUiCtrlCheckButton.h | 599 ++ inc/FUiCtrlColorPicker.h | 261 + inc/FUiCtrlContextMenu.h | 733 ++ inc/FUiCtrlControlsTypes.h | 100 + inc/FUiCtrlCustomItem.h | 279 + inc/FUiCtrlCustomList.h | 857 ++ inc/FUiCtrlCustomListItem.h | 329 + inc/FUiCtrlCustomListItemFormat.h | 315 + inc/FUiCtrlCustomListTypes.h | 54 + inc/FUiCtrlDatePicker.h | 380 + inc/FUiCtrlDateTimePicker.h | 454 ++ inc/FUiCtrlEditArea.h | 1300 +++ inc/FUiCtrlEditDate.h | 337 + inc/FUiCtrlEditField.h | 1307 +++ inc/FUiCtrlEditTime.h | 292 + inc/FUiCtrlEditTypes.h | 180 + inc/FUiCtrlExpandableEditArea.h | 1543 ++++ inc/FUiCtrlExpandableList.h | 1228 +++ inc/FUiCtrlFooter.h | 846 ++ inc/FUiCtrlFooterItem.h | 195 + inc/FUiCtrlForm.h | 1024 +++ inc/FUiCtrlFrame.h | 356 + inc/FUiCtrlFrameTypes.h | 47 + inc/FUiCtrlGallery.h | 539 ++ inc/FUiCtrlGalleryItem.h | 125 + inc/FUiCtrlGalleryTypes.h | 80 + inc/FUiCtrlGroupItem.h | 209 + inc/FUiCtrlGroupTypes.h | 47 + inc/FUiCtrlGroupedList.h | 1134 +++ inc/FUiCtrlGroupedListView.h | 1083 +++ inc/FUiCtrlGroupedListViewTypes.h | 44 + inc/FUiCtrlGroupedTableView.h | 813 ++ inc/FUiCtrlHeader.h | 1041 +++ inc/FUiCtrlHeaderItem.h | 199 + inc/FUiCtrlICustomElement.h | 88 + inc/FUiCtrlICustomListElement.h | 106 + inc/FUiCtrlIExpandableEditAreaEventListener.h | 121 + inc/FUiCtrlIFastScrollListener.h | 131 + inc/FUiCtrlIFormBackEventListener.h | 108 + inc/FUiCtrlIFrameEventListener.h | 153 + inc/FUiCtrlIGalleryEventListener.h | 123 + inc/FUiCtrlIGalleryItemProvider.h | 117 + inc/FUiCtrlIGroupedListViewItemEventListener.h | 156 + inc/FUiCtrlIGroupedListViewItemProvider.h | 176 + inc/FUiCtrlIGroupedTableViewItemEventListener.h | 137 + inc/FUiCtrlIGroupedTableViewItemProvider.h | 226 + inc/FUiCtrlIIconListViewItemEventListener.h | 105 + inc/FUiCtrlIIconListViewItemProvider.h | 114 + inc/FUiCtrlIListViewItemEventListener.h | 144 + inc/FUiCtrlIListViewItemProvider.h | 116 + inc/FUiCtrlIProgressPopupEventListener.h | 87 + inc/FUiCtrlIScrollEventListener.h | 125 + inc/FUiCtrlISearchBarEventListener.h | 144 + inc/FUiCtrlISectionTableViewItemEventListener.h | 122 + inc/FUiCtrlISectionTableViewItemProvider.h | 217 + inc/FUiCtrlISliderEventListener.h | 107 + inc/FUiCtrlISplitPanelEventListener.h | 115 + inc/FUiCtrlITableViewItemEventListener.h | 132 + inc/FUiCtrlITableViewItemProvider.h | 155 + inc/FUiCtrlITokenFilter.h | 105 + inc/FUiCtrlIconList.h | 906 +++ inc/FUiCtrlIconListTypes.h | 71 + inc/FUiCtrlIconListView.h | 924 +++ inc/FUiCtrlIconListViewItem.h | 122 + inc/FUiCtrlIconListViewTypes.h | 151 + inc/FUiCtrlInputTypes.h | 45 + inc/FUiCtrlKeypad.h | 354 + inc/FUiCtrlLabel.h | 341 + inc/FUiCtrlLabelTypes.h | 58 + inc/FUiCtrlList.h | 961 +++ inc/FUiCtrlListContextItem.h | 191 + inc/FUiCtrlListItemBase.h | 230 + inc/FUiCtrlListTypes.h | 127 + inc/FUiCtrlListView.h | 885 +++ inc/FUiCtrlListViewTypes.h | 147 + inc/FUiCtrlMessageBox.h | 349 + inc/FUiCtrlOptionMenu.h | 481 ++ inc/FUiCtrlOverlayPanel.h | 292 + inc/FUiCtrlOverlayRegion.h | 463 ++ inc/FUiCtrlPanel.h | 293 + inc/FUiCtrlPopup.h | 447 ++ inc/FUiCtrlProgress.h | 284 + inc/FUiCtrlProgressPopup.h | 286 + inc/FUiCtrlRadioGroup.h | 327 + inc/FUiCtrlScrollEventTypes.h | 50 + inc/FUiCtrlScrollPanel.h | 503 ++ inc/FUiCtrlScrollPanelTypes.h | 45 + inc/FUiCtrlSearchBar.h | 1427 ++++ inc/FUiCtrlSectionTableView.h | 707 ++ inc/FUiCtrlSimpleItem.h | 112 + inc/FUiCtrlSlidableGroupedList.h | 1324 ++++ inc/FUiCtrlSlidableList.h | 986 +++ inc/FUiCtrlSlider.h | 424 + inc/FUiCtrlSliderTypes.h | 62 + inc/FUiCtrlSplitPanel.h | 314 + inc/FUiCtrlSplitPanelTypes.h | 73 + inc/FUiCtrlTab.h | 729 ++ inc/FUiCtrlTabBar.h | 487 ++ inc/FUiCtrlTabBarItem.h | 167 + inc/FUiCtrlTableView.h | 660 ++ inc/FUiCtrlTableViewContextItem.h | 85 + inc/FUiCtrlTableViewGroupItem.h | 110 + inc/FUiCtrlTableViewItem.h | 139 + inc/FUiCtrlTableViewItemBase.h | 169 + inc/FUiCtrlTableViewSimpleGroupItem.h | 157 + inc/FUiCtrlTableViewSimpleItem.h | 158 + inc/FUiCtrlTableViewTypes.h | 150 + inc/FUiCtrlTextBox.h | 738 ++ inc/FUiCtrlTimePicker.h | 331 + inc/FUiCustomControlBase.h | 248 + inc/FUiDataBindingContext.h | 336 + inc/FUiDataBindingTypes.h | 92 + inc/FUiEffects.h | 60 + inc/FUiEffectsEffect.h | 377 + inc/FUiEffectsEffectManager.h | 154 + inc/FUiEffectsIEffectEventListener.h | 141 + inc/FUiEffectsIEffectResourceProvider.h | 124 + inc/FUiEffectsTypes.h | 63 + inc/FUiFocusManager.h | 102 + inc/FUiGridLayout.h | 460 ++ inc/FUiHorizontalBoxLayout.h | 361 + inc/FUiIAccessibilityListener.h | 142 + inc/FUiIActionEventListener.h | 109 + inc/FUiIAdjustmentEventListener.h | 110 + inc/FUiIAnimationEventListener.h | 111 + inc/FUiIClipboard.h | 152 + inc/FUiIClipboardPopupEventListener.h | 97 + inc/FUiIColorChangeEventListener.h | 114 + inc/FUiICustomItemEventListener.h | 115 + inc/FUiIDataBindingDataTransformer.h | 138 + inc/FUiIDataBindingDataValidator.h | 111 + inc/FUiIDataBindingListener.h | 118 + inc/FUiIDateChangeEventListener.h | 127 + inc/FUiIDateTimeChangeEventListener.h | 126 + inc/FUiIDragDropEventListener.h | 109 + inc/FUiIExpandableItemEventListener.h | 116 + inc/FUiIFastScrollEventListener.h | 138 + inc/FUiIFocusEventListener.h | 124 + inc/FUiIGroupedItemEventListener.h | 123 + inc/FUiIInputConnectionEventListener.h | 179 + inc/FUiIInputConnectionProvider.h | 111 + inc/FUiIItemEventListener.h | 105 + inc/FUiIKeyEventListener.h | 580 ++ inc/FUiIKeypadEventListener.h | 181 + inc/FUiILanguageEventListener.h | 110 + inc/FUiIOrientationEventListener.h | 136 + inc/FUiIScrollPanelEventListener.h | 145 + inc/FUiISlidableGroupedListEventListener.h | 131 + inc/FUiISlidableListEventListener.h | 131 + inc/FUiITextBlockEventListener.h | 125 + inc/FUiITextEventListener.h | 120 + inc/FUiITimeChangeEventListener.h | 125 + inc/FUiITouchCustomGestureEventListener.h | 122 + inc/FUiITouchEventListener.h | 193 + inc/FUiITouchFlickGestureEventListener.h | 105 + inc/FUiITouchGestureEventListener.h | 86 + inc/FUiITouchLongPressGestureEventListener.h | 106 + inc/FUiITouchModeChangedEventListener.h | 101 + inc/FUiITouchPanningGestureEventListener.h | 124 + inc/FUiITouchPinchGestureEventListener.h | 125 + inc/FUiITouchRotationGestureEventListener.h | 124 + inc/FUiITouchTapGestureEventListener.h | 106 + inc/FUiIUiLinkEventListener.h | 112 + inc/FUiIWindowEventListener.h | 113 + inc/FUiInputConnection.h | 384 + inc/FUiInputConnectionTypes.h | 96 + inc/FUiKeyEventManager.h | 135 + inc/FUiKeyboardMap.h | 308 + inc/FUiLayout.h | 101 + inc/FUiLayoutTypes.h | 163 + inc/FUiRelativeLayout.h | 389 + inc/FUiScenes.h | 66 + inc/FUiScenesBackwardSceneTransition.h | 123 + inc/FUiScenesForwardSceneTransition.h | 126 + inc/FUiScenesIFormFactory.h | 103 + inc/FUiScenesIPanelFactory.h | 103 + inc/FUiScenesISceneAnimationProvider.h | 109 + inc/FUiScenesISceneEventListener.h | 123 + inc/FUiScenesISceneManagerEventListener.h | 109 + inc/FUiScenesISceneTransitionPolicyProvider.h | 104 + inc/FUiScenesScene.h | 193 + inc/FUiScenesSceneManager.h | 525 ++ inc/FUiScenesSceneTransition.h | 268 + inc/FUiScenesTypes.h | 111 + inc/FUiSystemUtil.h | 167 + inc/FUiTouch.h | 387 + inc/FUiTouchEventInfo.h | 166 + inc/FUiTouchEventManager.h | 103 + inc/FUiTouchFlickGestureDetector.h | 168 + inc/FUiTouchGestureDetector.h | 292 + inc/FUiTouchInfo.h | 109 + inc/FUiTouchLongPressGestureDetector.h | 201 + inc/FUiTouchPanningGestureDetector.h | 159 + inc/FUiTouchPinchGestureDetector.h | 140 + inc/FUiTouchRotationGestureDetector.h | 140 + inc/FUiTouchTapGestureDetector.h | 229 + inc/FUiUiConfiguration.h | 93 + inc/FUiVariant.h | 894 +++ inc/FUiVerticalBoxLayout.h | 356 + inc/FUiWindow.h | 306 + inc/egl.h | 570 ++ inc/egl_macro.h | 57 + inc/eglext.h | 325 + inc/eglplatform.h | 180 + inc/gl.h | 1530 ++++ inc/gl2.h | 1354 ++++ inc/gl2ext.h | 656 ++ inc/gl2macro.h | 164 + inc/gl2platform.h | 28 + inc/glext.h | 899 +++ inc/glmacro.h | 190 + inc/glplatform.h | 27 + inc/khrplatform.h | 569 ++ osp-uifw.manifest | 5 + osp-uifw.pc.in | 13 + packaging/osp-uifw.spec | 147 + .../share/osp/bitmaps/480x800/00_Title_btn.9.png | Bin 0 -> 2963 bytes .../osp/bitmaps/480x800/00_Title_btn_press.9.png | Bin 0 -> 2967 bytes .../bitmaps/480x800/00_arrow_button_press_bg.9.png | Bin 0 -> 976 bytes .../bitmaps/480x800/00_arrow_button_press_ef.9.png | Bin 0 -> 2970 bytes .../share/osp/bitmaps/480x800/00_arrow_left.png | Bin 0 -> 3040 bytes .../share/osp/bitmaps/480x800/00_arrow_right.png | Bin 0 -> 3025 bytes .../share/osp/bitmaps/480x800/00_badge_bg.9.png | Bin 0 -> 1423 bytes .../share/osp/bitmaps/480x800/00_badge_bg_ef.9.png | Bin 0 -> 2362 bytes .../share/osp/bitmaps/480x800/00_btn_circle_bg.png | Bin 0 -> 1442 bytes .../osp/bitmaps/480x800/00_btn_circle_bg_ef.png | Bin 0 -> 1679 bytes .../osp/bitmaps/480x800/00_btn_circle_bg_p_ef.png | Bin 0 -> 1705 bytes .../share/osp/bitmaps/480x800/00_button_01.9.png | Bin 0 -> 1264 bytes .../osp/bitmaps/480x800/00_button_01_bg.9.png | Bin 0 -> 2932 bytes .../osp/bitmaps/480x800/00_button_01_bg_p_ef.9.png | Bin 0 -> 2968 bytes .../osp/bitmaps/480x800/00_button_01_ef.9.png | Bin 0 -> 2680 bytes .../osp/bitmaps/480x800/00_button_01_ef_dim.9.png | Bin 0 -> 2680 bytes .../bitmaps/480x800/00_button_01_ef_press.9.png | Bin 0 -> 2860 bytes .../share/osp/bitmaps/480x800/00_button_02.9.png | Bin 0 -> 3087 bytes .../osp/bitmaps/480x800/00_button_02_ef.9.png | Bin 0 -> 4478 bytes .../bitmaps/480x800/00_button_02_ef_press.9.png | Bin 0 -> 4648 bytes .../share/osp/bitmaps/480x800/00_button_03.9.png | Bin 0 -> 3078 bytes .../osp/bitmaps/480x800/00_button_03_dim_ef.9.png | Bin 0 -> 4529 bytes .../osp/bitmaps/480x800/00_button_03_ef.9.png | Bin 0 -> 4529 bytes .../bitmaps/480x800/00_button_03_ef_press.9.png | Bin 0 -> 4696 bytes .../osp/bitmaps/480x800/00_button_06_dim.9.png | Bin 0 -> 273 bytes .../osp/bitmaps/480x800/00_button_06_normal.9.png | Bin 0 -> 281 bytes .../osp/bitmaps/480x800/00_button_06_press.9.png | Bin 0 -> 338 bytes .../share/osp/bitmaps/480x800/00_button_call.png | Bin 0 -> 1502 bytes .../osp/bitmaps/480x800/00_button_call_ef.png | Bin 0 -> 3831 bytes .../share/osp/bitmaps/480x800/00_button_cancel.png | Bin 0 -> 1212 bytes .../bitmaps/480x800/00_button_expand_cancel.png | Bin 0 -> 1655 bytes .../bitmaps/480x800/00_button_expand_cancel_ef.png | Bin 0 -> 3976 bytes .../bitmaps/480x800/00_button_expand_closed.png | Bin 0 -> 3132 bytes .../bitmaps/480x800/00_button_expand_closed_ef.png | Bin 0 -> 3420 bytes .../osp/bitmaps/480x800/00_button_expand_minus.png | Bin 0 -> 1069 bytes .../bitmaps/480x800/00_button_expand_minus_ef.png | Bin 0 -> 3044 bytes .../bitmaps/480x800/00_button_expand_opened.png | Bin 0 -> 3075 bytes .../bitmaps/480x800/00_button_expand_opened_ef.png | Bin 0 -> 3270 bytes .../osp/bitmaps/480x800/00_button_expand_send.png | Bin 0 -> 1767 bytes .../bitmaps/480x800/00_button_expand_send_ef.png | Bin 0 -> 4158 bytes .../share/osp/bitmaps/480x800/00_button_info.png | Bin 0 -> 1467 bytes .../osp/bitmaps/480x800/00_button_info_ef.png | Bin 0 -> 3705 bytes .../share/osp/bitmaps/480x800/00_button_left.png | Bin 0 -> 3001 bytes .../osp/bitmaps/480x800/00_button_left_ef.png | Bin 0 -> 3394 bytes .../share/osp/bitmaps/480x800/00_button_minus.png | Bin 0 -> 996 bytes .../osp/bitmaps/480x800/00_button_normal.9.png | Bin 0 -> 3168 bytes .../osp/bitmaps/480x800/00_button_normal_bg.9.png | Bin 0 -> 1228 bytes .../480x800/00_button_normal_effect_01.9.png | Bin 0 -> 3814 bytes .../share/osp/bitmaps/480x800/00_button_off.png | Bin 0 -> 4867 bytes .../share/osp/bitmaps/480x800/00_button_off_01.png | Bin 0 -> 3437 bytes .../osp/bitmaps/480x800/00_button_off_dim.png | Bin 0 -> 6508 bytes .../osp/bitmaps/480x800/00_button_off_dim_temp.png | Bin 0 -> 6508 bytes .../osp/bitmaps/480x800/00_button_off_temp.png | Bin 0 -> 6556 bytes .../usr/share/osp/bitmaps/480x800/00_button_on.png | Bin 0 -> 4822 bytes .../share/osp/bitmaps/480x800/00_button_on_01.png | Bin 0 -> 3055 bytes .../share/osp/bitmaps/480x800/00_button_on_dim.png | Bin 0 -> 6485 bytes .../osp/bitmaps/480x800/00_button_on_dim_temp.png | Bin 0 -> 6485 bytes .../bitmaps/480x800/00_button_on_off_handler.png | Bin 0 -> 4809 bytes .../osp/bitmaps/480x800/00_button_on_temp.png | Bin 0 -> 6545 bytes .../share/osp/bitmaps/480x800/00_button_plus.png | Bin 0 -> 3003 bytes .../osp/bitmaps/480x800/00_button_plus_ef.png | Bin 0 -> 3230 bytes .../share/osp/bitmaps/480x800/00_button_radio.png | Bin 0 -> 4983 bytes .../osp/bitmaps/480x800/00_button_radio_dim.png | Bin 0 -> 4797 bytes .../bitmaps/480x800/00_button_radio_normal1.png | Bin 0 -> 3744 bytes .../bitmaps/480x800/00_button_radio_normal2.png | Bin 0 -> 3161 bytes .../osp/bitmaps/480x800/00_button_radio_press.png | Bin 0 -> 5175 bytes .../osp/bitmaps/480x800/00_button_radio_press1.png | Bin 0 -> 3620 bytes .../osp/bitmaps/480x800/00_button_radio_press2.png | Bin 0 -> 3146 bytes .../osp/bitmaps/480x800/00_button_radio_select.png | Bin 0 -> 3078 bytes .../bitmaps/480x800/00_button_radio_select_dim.png | Bin 0 -> 3063 bytes .../share/osp/bitmaps/480x800/00_button_rename.png | Bin 0 -> 1384 bytes .../osp/bitmaps/480x800/00_button_rename_ef.png | Bin 0 -> 3534 bytes .../share/osp/bitmaps/480x800/00_button_reveal.png | Bin 0 -> 1136 bytes .../share/osp/bitmaps/480x800/00_button_right.png | Bin 0 -> 3010 bytes .../osp/bitmaps/480x800/00_button_right_ef.png | Bin 0 -> 3380 bytes .../bitmaps/480x800/00_button_seg_f_bg_01.9.png | Bin 0 -> 1042 bytes .../bitmaps/480x800/00_button_seg_f_bg_02.9.png | Bin 0 -> 984 bytes .../bitmaps/480x800/00_button_seg_f_bg_03.9.png | Bin 0 -> 1026 bytes .../bitmaps/480x800/00_button_seg_f_bg_ef_01.9.png | Bin 0 -> 1153 bytes .../bitmaps/480x800/00_button_seg_f_bg_ef_02.9.png | Bin 0 -> 1092 bytes .../bitmaps/480x800/00_button_seg_f_bg_ef_03.9.png | Bin 0 -> 1169 bytes .../share/osp/bitmaps/480x800/00_button_send.png | Bin 0 -> 1231 bytes .../osp/bitmaps/480x800/00_button_warning.png | Bin 0 -> 1089 bytes .../osp/bitmaps/480x800/00_button_warring.png | Bin 0 -> 1193 bytes .../osp/bitmaps/480x800/00_button_warring_ef.png | Bin 0 -> 2983 bytes .../share/osp/bitmaps/480x800/00_button_web.9.png | Bin 0 -> 1331 bytes .../osp/bitmaps/480x800/00_button_web_press.9.png | Bin 0 -> 1313 bytes .../share/osp/bitmaps/480x800/00_category_bg.9.png | Bin 0 -> 3047 bytes .../osp/bitmaps/480x800/00_category_button.9.png | Bin 0 -> 2939 bytes .../bitmaps/480x800/00_category_button_focus.9.png | Bin 0 -> 2971 bytes .../bitmaps/480x800/00_category_left_button.png | Bin 0 -> 2940 bytes .../480x800/00_category_left_button_arrow.png | Bin 0 -> 1178 bytes .../osp/bitmaps/480x800/00_category_left_gd.png | Bin 0 -> 2940 bytes .../osp/bitmaps/480x800/00_category_panel_bg.9.png | Bin 0 -> 976 bytes .../bitmaps/480x800/00_category_panel_bg_ef.9.png | Bin 0 -> 1044 bytes .../bitmaps/480x800/00_category_right_button.png | Bin 0 -> 2941 bytes .../480x800/00_category_right_button_arrow.png | Bin 0 -> 1206 bytes .../osp/bitmaps/480x800/00_category_right_gd.png | Bin 0 -> 2941 bytes .../usr/share/osp/bitmaps/480x800/00_check.png | Bin 0 -> 3850 bytes .../share/osp/bitmaps/480x800/00_check_angle.png | Bin 0 -> 3710 bytes .../usr/share/osp/bitmaps/480x800/00_check_bg.png | Bin 0 -> 3977 bytes .../share/osp/bitmaps/480x800/00_check_bg_dim.png | Bin 0 -> 3885 bytes .../osp/bitmaps/480x800/00_check_bg_press.png | Bin 0 -> 4116 bytes .../osp/bitmaps/480x800/00_check_checking.png | Bin 0 -> 3094 bytes .../osp/bitmaps/480x800/00_check_checking_bg.png | Bin 0 -> 3278 bytes .../osp/bitmaps/480x800/00_check_checking_dim.png | Bin 0 -> 3096 bytes .../usr/share/osp/bitmaps/480x800/00_check_dim.png | Bin 0 -> 3358 bytes .../osp/bitmaps/480x800/00_check_index_bg.png | Bin 0 -> 2928 bytes .../usr/share/osp/bitmaps/480x800/00_circle_bg.png | Bin 0 -> 3263 bytes .../share/osp/bitmaps/480x800/00_circle_bg_ef.png | Bin 0 -> 5726 bytes .../osp/bitmaps/480x800/00_circle_bg_ef_dim.png | Bin 0 -> 5726 bytes .../osp/bitmaps/480x800/00_circle_bg_ef_press.png | Bin 0 -> 5719 bytes .../bitmaps/480x800/00_color_picker_brightness.png | Bin 0 -> 3055 bytes .../480x800/00_color_picker_brightness_h.png | Bin 0 -> 3570 bytes .../bitmaps/480x800/00_color_picker_btn_bg.9.png | Bin 0 -> 3168 bytes .../bitmaps/480x800/00_color_picker_btn_left.png | Bin 0 -> 2981 bytes .../bitmaps/480x800/00_color_picker_btn_right.png | Bin 0 -> 2974 bytes .../osp/bitmaps/480x800/00_color_picker_color.png | Bin 0 -> 3110 bytes .../bitmaps/480x800/00_color_picker_color_h.png | Bin 0 -> 3169 bytes .../480x800/00_color_picker_custom_color.png | Bin 0 -> 2920 bytes .../480x800/00_color_picker_custom_color_h.png | Bin 0 -> 2943 bytes .../osp/bitmaps/480x800/00_color_picker_focus.png | Bin 0 -> 2975 bytes .../bitmaps/480x800/00_color_picker_saturation.png | Bin 0 -> 6534 bytes .../480x800/00_color_picker_saturation_h.png | Bin 0 -> 6716 bytes .../bitmaps/480x800/00_contacts_button_bg.9.png | Bin 0 -> 1185 bytes .../osp/bitmaps/480x800/00_context_popup_bg.9.png | Bin 0 -> 3188 bytes .../bitmaps/480x800/00_context_popup_bg_01.9.png | Bin 0 -> 3913 bytes .../480x800/00_context_popup_bg_effect.9.png | Bin 0 -> 4174 bytes .../480x800/00_context_popup_tail_bottom.png | Bin 0 -> 2947 bytes .../480x800/00_context_popup_tail_bottom_01.png | Bin 0 -> 2954 bytes .../00_context_popup_tail_bottom_effect.png | Bin 0 -> 3072 bytes .../bitmaps/480x800/00_context_popup_tail_left.png | Bin 0 -> 2966 bytes .../480x800/00_context_popup_tail_left_01.png | Bin 0 -> 2951 bytes .../480x800/00_context_popup_tail_left_effect.png | Bin 0 -> 3112 bytes .../480x800/00_context_popup_tail_right.png | Bin 0 -> 2964 bytes .../480x800/00_context_popup_tail_right_01.png | Bin 0 -> 2965 bytes .../480x800/00_context_popup_tail_right_effect.png | Bin 0 -> 3094 bytes .../bitmaps/480x800/00_context_popup_tail_top.png | Bin 0 -> 2947 bytes .../480x800/00_context_popup_tail_top_01.png | Bin 0 -> 2941 bytes .../480x800/00_context_popup_tail_top_effect.png | Bin 0 -> 3088 bytes .../bitmaps/480x800/00_date_picker_center_bg.9.png | Bin 0 -> 2920 bytes .../480x800/00_date_picker_center_bg_effect.9.png | Bin 0 -> 3070 bytes .../00_date_picker_center_bg_press_effect.9.png | Bin 0 -> 3071 bytes .../osp/bitmaps/480x800/00_date_picker_dot.png | Bin 0 -> 2834 bytes .../bitmaps/480x800/00_date_picker_left_bg.9.png | Bin 0 -> 3110 bytes .../480x800/00_date_picker_left_bg_effect.9.png | Bin 0 -> 3487 bytes .../00_date_picker_left_bg_press_effect.9.png | Bin 0 -> 3500 bytes .../bitmaps/480x800/00_date_picker_right_bg.9.png | Bin 0 -> 3095 bytes .../480x800/00_date_picker_right_bg_effect.9.png | Bin 0 -> 3422 bytes .../00_date_picker_right_bg_press_effect.9.png | Bin 0 -> 3537 bytes .../osp/bitmaps/480x800/00_detail_button#5.png | Bin 0 -> 3227 bytes .../share/osp/bitmaps/480x800/00_detail_button.png | Bin 0 -> 3227 bytes .../osp/bitmaps/480x800/00_detail_button_01.png | Bin 0 -> 3189 bytes .../bitmaps/480x800/00_detail_button_01_dim.png | Bin 0 -> 2709 bytes .../bitmaps/480x800/00_detail_button_01_press.png | Bin 0 -> 3234 bytes .../osp/bitmaps/480x800/00_detail_button_dim#1.png | Bin 0 -> 2702 bytes .../osp/bitmaps/480x800/00_detail_button_dim.png | Bin 0 -> 2702 bytes .../bitmaps/480x800/00_detail_button_press#3.png | Bin 0 -> 3329 bytes .../osp/bitmaps/480x800/00_detail_button_press.png | Bin 0 -> 3329 bytes .../osp/bitmaps/480x800/00_dialogue_group_bg.9.png | Bin 0 -> 2849 bytes .../bitmaps/480x800/00_dialogue_group_bg_bar.9.png | Bin 0 -> 2864 bytes .../osp/bitmaps/480x800/00_divider_line.9.png | Bin 0 -> 2827 bytes .../480x800/00_divider_line_translucent.9.png | Bin 0 -> 2819 bytes .../osp/bitmaps/480x800/00_edit_field_bg.9.png | Bin 0 -> 2916 bytes .../osp/bitmaps/480x800/00_edit_field_clear.png | Bin 0 -> 3106 bytes .../480x800/00_edit_field_line_round_bg_01.9.png | Bin 0 -> 3150 bytes .../480x800/00_edit_field_line_squre_bg_01.9.png | Bin 0 -> 2881 bytes .../480x800/00_edit_field_no_line_round_bg.9.png | Bin 0 -> 2996 bytes .../480x800/00_edit_field_no_line_square_bg.9.png | Bin 0 -> 2860 bytes .../bitmaps/480x800/00_edit_field_round_bg.9.png | Bin 0 -> 3248 bytes .../480x800/00_edit_field_round_bg_ef.9.png | Bin 0 -> 3870 bytes .../bitmaps/480x800/00_effect_tab_bounce_left.png | Bin 0 -> 4636 bytes .../bitmaps/480x800/00_effect_tab_bounce_right.png | Bin 0 -> 4409 bytes .../bitmaps/480x800/00_fast_scroll_popup_bg.9.png | Bin 0 -> 1087 bytes .../480x800/00_fast_scroll_popup_bg_ef.9.png | Bin 0 -> 3142 bytes .../480x800/00_fast_scroll_rollover_bg.9.png | Bin 0 -> 1006 bytes .../480x800/00_fast_scroll_rollover_bg_focus.9.png | Bin 0 -> 1004 bytes .../00_fast_scroll_rollover_bg_line_focus.9.png | Bin 0 -> 2856 bytes .../share/osp/bitmaps/480x800/00_footer_bg.9.png | Bin 0 -> 1539 bytes .../osp/bitmaps/480x800/00_footer_bg_01.9.png | Bin 0 -> 1311 bytes .../osp/bitmaps/480x800/00_footer_icon_close.png | Bin 0 -> 3469 bytes .../bitmaps/480x800/00_footer_icon_close_press.png | Bin 0 -> 3069 bytes .../osp/bitmaps/480x800/00_footer_icon_more.png | Bin 0 -> 3119 bytes .../bitmaps/480x800/00_footer_icon_more_press.png | Bin 0 -> 1087 bytes .../osp/bitmaps/480x800/00_grid_select_check.png | Bin 0 -> 3862 bytes .../bitmaps/480x800/00_grid_select_check_bg.png | Bin 0 -> 4520 bytes .../480x800/00_grid_select_check_bg_press.png | Bin 0 -> 5131 bytes .../osp/bitmaps/480x800/00_groupedlist_bg.9.png | Bin 0 -> 2912 bytes .../bitmaps/480x800/00_groupedlist_bg_focus.9.png | Bin 0 -> 3041 bytes .../osp/bitmaps/480x800/00_groupedlist_bg_p.9.png | Bin 0 -> 3446 bytes .../bitmaps/480x800/00_groupedlist_bg_press.9.png | Bin 0 -> 3044 bytes .../bitmaps/480x800/00_groupedlist_bottom_bg.9.png | Bin 0 -> 2880 bytes .../480x800/00_groupedlist_bottom_bg_focus.9.png | Bin 0 -> 3228 bytes .../480x800/00_groupedlist_bottom_bg_press.9.png | Bin 0 -> 3023 bytes .../bitmaps/480x800/00_groupedlist_center_bg.9.png | Bin 0 -> 2849 bytes .../480x800/00_groupedlist_center_bg_focus.9.png | Bin 0 -> 3034 bytes .../480x800/00_groupedlist_center_bg_press.9.png | Bin 0 -> 2966 bytes .../osp/bitmaps/480x800/00_groupedlist_h_bg.9.png | Bin 0 -> 3430 bytes .../480x800/00_groupedlist_input_outline_h.9.png | Bin 0 -> 3716 bytes .../bitmaps/480x800/00_groupedlist_normal_bg.9.png | Bin 0 -> 3437 bytes .../bitmaps/480x800/00_groupedlist_top_bg.9.png | Bin 0 -> 2888 bytes .../480x800/00_groupedlist_top_bg_focus.9.png | Bin 0 -> 3207 bytes .../480x800/00_groupedlist_top_bg_press.9.png | Bin 0 -> 3010 bytes .../share/osp/bitmaps/480x800/00_header_bg.9.png | Bin 0 -> 3068 bytes .../osp/bitmaps/480x800/00_header_bg_01.9.png | Bin 0 -> 3178 bytes .../osp/bitmaps/480x800/00_header_bg_effect.9.png | Bin 0 -> 3134 bytes .../osp/bitmaps/480x800/00_header_button_bg.9.png | Bin 0 -> 3214 bytes .../480x800/00_header_button_bg_effect.9.png | Bin 0 -> 3758 bytes .../480x800/00_header_button_bg_focus.9.png | Bin 0 -> 3298 bytes .../480x800/00_header_button_bg_press_effect.9.png | Bin 0 -> 3902 bytes .../bitmaps/480x800/00_header_title_handler.png | Bin 0 -> 1146 bytes .../usr/share/osp/bitmaps/480x800/00_icon_Back.png | Bin 0 -> 3155 bytes .../share/osp/bitmaps/480x800/00_icon_Back_ef.png | Bin 0 -> 3668 bytes .../osp/bitmaps/480x800/00_icon_Back_ef_02.png | Bin 0 -> 3614 bytes .../osp/bitmaps/480x800/00_icon_Back_trans_ef.png | Bin 0 -> 3201 bytes .../usr/share/osp/bitmaps/480x800/00_icon_back.png | Bin 0 -> 1256 bytes .../usr/share/osp/bitmaps/480x800/00_icon_edit.png | Bin 0 -> 3577 bytes .../share/osp/bitmaps/480x800/00_icon_edit_ef.png | Bin 0 -> 4378 bytes .../usr/share/osp/bitmaps/480x800/00_icon_jump.png | Bin 0 -> 2965 bytes .../share/osp/bitmaps/480x800/00_icon_jump_ef.png | Bin 0 -> 3290 bytes .../osp/bitmaps/480x800/00_icon_jump_left.png | Bin 0 -> 3003 bytes .../osp/bitmaps/480x800/00_icon_jump_left_ef.png | Bin 0 -> 3234 bytes .../usr/share/osp/bitmaps/480x800/00_icon_more.png | Bin 0 -> 2982 bytes .../share/osp/bitmaps/480x800/00_icon_more_ef.png | Bin 0 -> 3110 bytes .../usr/share/osp/bitmaps/480x800/00_icon_plus.png | Bin 0 -> 3141 bytes .../share/osp/bitmaps/480x800/00_icon_plus_ef.png | Bin 0 -> 3565 bytes .../share/osp/bitmaps/480x800/00_iconlist_bg.9.png | Bin 0 -> 473 bytes .../osp/bitmaps/480x800/00_indexlist_bg.9.png | Bin 0 -> 2846 bytes .../osp/bitmaps/480x800/00_indexlist_bg_ef.9.png | Bin 0 -> 2858 bytes .../osp/bitmaps/480x800/00_label_01_normal.9.png | Bin 0 -> 281 bytes .../osp/bitmaps/480x800/00_list_group_bg.9.png | Bin 0 -> 353 bytes .../bitmaps/480x800/00_list_group_bg_bottom.9.png | Bin 0 -> 302 bytes .../480x800/00_list_group_bg_bottom_ef.9.png | Bin 0 -> 490 bytes .../bitmaps/480x800/00_list_group_bg_center.9.png | Bin 0 -> 232 bytes .../480x800/00_list_group_bg_center_ef.9.png | Bin 0 -> 283 bytes .../osp/bitmaps/480x800/00_list_group_bg_ef.9.png | Bin 0 -> 635 bytes .../osp/bitmaps/480x800/00_list_group_bg_top.9.png | Bin 0 -> 310 bytes .../bitmaps/480x800/00_list_group_bg_top_ef.9.png | Bin 0 -> 490 bytes .../osp/bitmaps/480x800/00_list_process_01.png | Bin 0 -> 1778 bytes .../osp/bitmaps/480x800/00_list_process_02.png | Bin 0 -> 1757 bytes .../osp/bitmaps/480x800/00_list_process_03.png | Bin 0 -> 1697 bytes .../osp/bitmaps/480x800/00_list_process_04.png | Bin 0 -> 1799 bytes .../osp/bitmaps/480x800/00_list_process_05.png | Bin 0 -> 1797 bytes .../osp/bitmaps/480x800/00_list_process_06.png | Bin 0 -> 1806 bytes .../osp/bitmaps/480x800/00_list_process_07.png | Bin 0 -> 1772 bytes .../osp/bitmaps/480x800/00_list_process_08.png | Bin 0 -> 1847 bytes .../osp/bitmaps/480x800/00_list_process_09.png | Bin 0 -> 1811 bytes .../osp/bitmaps/480x800/00_list_process_10.png | Bin 0 -> 1788 bytes .../osp/bitmaps/480x800/00_list_process_11.png | Bin 0 -> 1736 bytes .../osp/bitmaps/480x800/00_list_process_12.png | Bin 0 -> 1796 bytes .../osp/bitmaps/480x800/00_list_process_13.png | Bin 0 -> 1819 bytes .../osp/bitmaps/480x800/00_list_process_14.png | Bin 0 -> 1811 bytes .../osp/bitmaps/480x800/00_list_process_15.png | Bin 0 -> 1822 bytes .../osp/bitmaps/480x800/00_list_process_16.png | Bin 0 -> 1799 bytes .../osp/bitmaps/480x800/00_list_process_17.png | Bin 0 -> 1755 bytes .../osp/bitmaps/480x800/00_list_process_18.png | Bin 0 -> 1712 bytes .../osp/bitmaps/480x800/00_list_process_19.png | Bin 0 -> 1792 bytes .../osp/bitmaps/480x800/00_list_process_20.png | Bin 0 -> 1813 bytes .../osp/bitmaps/480x800/00_list_process_21.png | Bin 0 -> 1796 bytes .../osp/bitmaps/480x800/00_list_process_22.png | Bin 0 -> 1759 bytes .../osp/bitmaps/480x800/00_list_process_23.png | Bin 0 -> 1806 bytes .../osp/bitmaps/480x800/00_list_process_24.png | Bin 0 -> 1800 bytes .../osp/bitmaps/480x800/00_list_process_25.png | Bin 0 -> 1758 bytes .../osp/bitmaps/480x800/00_list_process_26.png | Bin 0 -> 1728 bytes .../osp/bitmaps/480x800/00_list_process_27.png | Bin 0 -> 1771 bytes .../osp/bitmaps/480x800/00_list_process_28.png | Bin 0 -> 1782 bytes .../osp/bitmaps/480x800/00_list_process_29.png | Bin 0 -> 1796 bytes .../osp/bitmaps/480x800/00_list_process_30.png | Bin 0 -> 1816 bytes .../osp/bitmaps/480x800/00_list_progress_bar.9.png | Bin 0 -> 968 bytes .../osp/bitmaps/480x800/00_list_progress_bg.9.png | Bin 0 -> 978 bytes .../bitmaps/480x800/00_list_slider_icon_bg.9.png | Bin 0 -> 3168 bytes .../480x800/00_list_slider_icon_bg_effect.9.png | Bin 0 -> 3814 bytes .../480x800/00_list_slider_icon_bg_effect_01.9.png | Bin 0 -> 4063 bytes .../bitmaps/480x800/00_on_button_controller#5.png | Bin 0 -> 5727 bytes .../00_option_panel_contextual_popup_arrow.png | Bin 0 -> 1056 bytes .../bitmaps/480x800/00_option_panel_handle_bg.png | Bin 0 -> 3247 bytes .../480x800/00_option_panel_handle_bg_ef.png | Bin 0 -> 3401 bytes .../480x800/00_option_panel_handle_bg_ef_press.png | Bin 0 -> 3377 bytes .../480x800/00_option_panel_handle_bg_p.png | Bin 0 -> 1204 bytes .../480x800/00_option_panel_handle_bg_p_ef.png | Bin 0 -> 1360 bytes .../480x800/00_option_panel_handle_bg_press.png | Bin 0 -> 3257 bytes .../osp/bitmaps/480x800/00_option_tray_tail_bg.png | Bin 0 -> 1023 bytes .../bitmaps/480x800/00_overscrolling_bottom.9.png | Bin 0 -> 2832 bytes .../bitmaps/480x800/00_overscrolling_left.9.png | Bin 0 -> 2835 bytes .../bitmaps/480x800/00_overscrolling_right.9.png | Bin 0 -> 2835 bytes .../osp/bitmaps/480x800/00_overscrolling_top.9.png | Bin 0 -> 2836 bytes .../share/osp/bitmaps/480x800/00_panel_bg.9.png | Bin 0 -> 1005 bytes .../osp/bitmaps/480x800/00_panel_handle_arrow.png | Bin 0 -> 1103 bytes .../osp/bitmaps/480x800/00_panel_handle_bg.9.png | Bin 0 -> 3556 bytes .../bitmaps/480x800/00_panel_handle_bg_ef.9.png | Bin 0 -> 4705 bytes .../480x800/00_panel_handle_bg_ef_press.9.png | Bin 0 -> 4220 bytes .../bitmaps/480x800/00_panel_handle_bg_p_ef.9.png | Bin 0 -> 1942 bytes .../bitmaps/480x800/00_panel_list_press_bg.9.png | Bin 0 -> 1077 bytes .../480x800/00_panel_list_press_bg_ef.9.png | Bin 0 -> 1237 bytes .../share/osp/bitmaps/480x800/00_popup_bg.9.png | Bin 0 -> 1082 bytes .../share/osp/bitmaps/480x800/00_popup_bg_ef.9.png | Bin 0 -> 1628 bytes .../osp/bitmaps/480x800/00_popup_bg_effect.9.png | Bin 0 -> 2730 bytes .../osp/bitmaps/480x800/00_popup_bottom_bg.9.png | Bin 0 -> 1004 bytes .../osp/bitmaps/480x800/00_popup_bubble_bg.9.png | Bin 0 -> 1129 bytes .../bitmaps/480x800/00_popup_bubble_bg_ef.9.png | Bin 0 -> 1778 bytes .../480x800/00_popup_bubble_tail_bottom_bg.png | Bin 0 -> 1108 bytes .../480x800/00_popup_bubble_tail_bottom_ef.png | Bin 0 -> 1631 bytes .../480x800/00_popup_bubble_tail_left_bg.png | Bin 0 -> 1095 bytes .../480x800/00_popup_bubble_tail_left_ef.png | Bin 0 -> 1615 bytes .../480x800/00_popup_bubble_tail_right_bg.png | Bin 0 -> 1089 bytes .../480x800/00_popup_bubble_tail_right_ef.png | Bin 0 -> 1611 bytes .../480x800/00_popup_bubble_tail_top_bg.png | Bin 0 -> 1098 bytes .../480x800/00_popup_bubble_tail_top_ef.png | Bin 0 -> 1548 bytes .../osp/bitmaps/480x800/00_popup_title_bg.9.png | Bin 0 -> 1010 bytes .../bitmaps/480x800/00_processing_ani_52x52_00.png | Bin 0 -> 4745 bytes .../bitmaps/480x800/00_processing_ani_52x52_01.png | Bin 0 -> 4723 bytes .../bitmaps/480x800/00_processing_ani_52x52_02.png | Bin 0 -> 4750 bytes .../bitmaps/480x800/00_processing_ani_52x52_03.png | Bin 0 -> 4749 bytes .../bitmaps/480x800/00_processing_ani_52x52_04.png | Bin 0 -> 4761 bytes .../bitmaps/480x800/00_processing_ani_52x52_05.png | Bin 0 -> 4756 bytes .../bitmaps/480x800/00_processing_ani_52x52_06.png | Bin 0 -> 4763 bytes .../bitmaps/480x800/00_processing_ani_52x52_07.png | Bin 0 -> 4746 bytes .../bitmaps/480x800/00_processing_ani_52x52_08.png | Bin 0 -> 4727 bytes .../bitmaps/480x800/00_processing_ani_52x52_09.png | Bin 0 -> 4749 bytes .../share/osp/bitmaps/480x800/00_progress.9.png | Bin 0 -> 2829 bytes .../osp/bitmaps/480x800/00_progress_bar.9.png | Bin 0 -> 1172 bytes .../osp/bitmaps/480x800/00_progress_bar_ef.9.png | Bin 0 -> 1409 bytes .../share/osp/bitmaps/480x800/00_progress_bg.9.png | Bin 0 -> 1310 bytes .../share/osp/bitmaps/480x800/00_progress_ef.9.png | Bin 0 -> 2850 bytes .../osp/bitmaps/480x800/00_progress_ef_bg.9.png | Bin 0 -> 1869 bytes .../bitmaps/480x800/00_reorder_group_list_bg.9.png | Bin 0 -> 2922 bytes .../share/osp/bitmaps/480x800/00_scroll_bar.9.png | Bin 0 -> 2937 bytes .../osp/bitmaps/480x800/00_scroll_bar_ef.9.png | Bin 0 -> 3023 bytes .../bitmaps/480x800/00_scroll_bar_handler_bg.9.png | Bin 0 -> 2949 bytes .../480x800/00_scroll_bar_handler_bg_ef.9.png | Bin 0 -> 3192 bytes .../bitmaps/480x800/00_scroll_bar_handler_h.png | Bin 0 -> 2843 bytes .../bitmaps/480x800/00_scroll_bar_handler_v.png | Bin 0 -> 2826 bytes .../osp/bitmaps/480x800/00_scroll_icon_jump.png | Bin 0 -> 1179 bytes .../bitmaps/480x800/00_scroll_icon_jump_left.png | Bin 0 -> 3050 bytes .../480x800/00_search_clear_icon_normal.png | Bin 0 -> 1784 bytes .../bitmaps/480x800/00_search_clear_icon_press.png | Bin 0 -> 3026 bytes .../bitmaps/480x800/00_search_edit_field_bg.9.png | Bin 0 -> 3028 bytes .../480x800/00_search_edit_field_bg_ef.9.png | Bin 0 -> 3560 bytes .../share/osp/bitmaps/480x800/00_search_icon.png | Bin 0 -> 3206 bytes .../osp/bitmaps/480x800/00_search_icon_ef.png | Bin 0 -> 3225 bytes .../usr/share/osp/bitmaps/480x800/00_seg_line.png | Bin 0 -> 2804 bytes .../share/osp/bitmaps/480x800/00_seg_line_tr.png | Bin 0 -> 2804 bytes .../share/osp/bitmaps/480x800/00_slider_bg.9.png | Bin 0 -> 3222 bytes .../osp/bitmaps/480x800/00_slider_bg_effect.9.png | Bin 0 -> 1732 bytes .../osp/bitmaps/480x800/00_slider_handle.9.png | Bin 0 -> 1177 bytes .../share/osp/bitmaps/480x800/00_slider_handle.png | Bin 0 -> 3361 bytes .../osp/bitmaps/480x800/00_slider_handle_dim.png | Bin 0 -> 1134 bytes .../osp/bitmaps/480x800/00_slider_handle_ef.png | Bin 0 -> 4918 bytes .../bitmaps/480x800/00_slider_handle_ef_dim.png | Bin 0 -> 4926 bytes .../bitmaps/480x800/00_slider_handle_ef_press.png | Bin 0 -> 4475 bytes .../osp/bitmaps/480x800/00_slider_handle_press.png | Bin 0 -> 1190 bytes .../osp/bitmaps/480x800/00_slider_popup_bg.png | Bin 0 -> 3155 bytes .../osp/bitmaps/480x800/00_slider_popup_bg_ef.png | Bin 0 -> 3170 bytes .../bitmaps/480x800/00_slider_popup_bottom_bg.png | Bin 0 -> 491 bytes .../480x800/00_slider_popup_bottom_bg_ef.png | Bin 0 -> 504 bytes .../osp/bitmaps/480x800/00_softkey_icon_add.png | Bin 0 -> 2996 bytes .../osp/bitmaps/480x800/00_softkey_icon_zoom.png | Bin 0 -> 3311 bytes .../osp/bitmaps/480x800/00_softkey_left_bg.png | Bin 0 -> 3021 bytes .../osp/bitmaps/480x800/00_softkey_left_bg_ef.png | Bin 0 -> 3143 bytes .../480x800/00_softkey_left_bg_ef_press.png | Bin 0 -> 3194 bytes .../bitmaps/480x800/00_softkey_left_bg_p_ef.png | Bin 0 -> 1436 bytes .../bitmaps/480x800/00_softkey_left_text_bg.png | Bin 0 -> 3050 bytes .../bitmaps/480x800/00_softkey_left_text_bg_ef.png | Bin 0 -> 3154 bytes .../480x800/00_softkey_left_text_bg_ef_press.png | Bin 0 -> 3252 bytes .../480x800/00_softkey_left_text_bg_p_ef.png | Bin 0 -> 1491 bytes .../osp/bitmaps/480x800/00_softkey_right_bg.png | Bin 0 -> 3017 bytes .../osp/bitmaps/480x800/00_softkey_right_bg_ef.png | Bin 0 -> 3298 bytes .../480x800/00_softkey_right_bg_ef_press.png | Bin 0 -> 3112 bytes .../bitmaps/480x800/00_softkey_right_bg_p_ef.png | Bin 0 -> 1319 bytes .../bitmaps/480x800/00_softkey_right_text_bg.png | Bin 0 -> 3046 bytes .../480x800/00_softkey_right_text_bg_ef.png | Bin 0 -> 3348 bytes .../480x800/00_softkey_right_text_bg_ef_press.png | Bin 0 -> 3173 bytes .../480x800/00_softkey_right_text_bg_p_ef.png | Bin 0 -> 1446 bytes .../osp/bitmaps/480x800/00_splite_handler_bg.9.png | Bin 0 -> 2825 bytes .../480x800/00_splite_handler_bg_ef_h.9.png | Bin 0 -> 2840 bytes .../480x800/00_splite_handler_bg_ef_v.9.png | Bin 0 -> 2826 bytes .../osp/bitmaps/480x800/00_splite_handler_h.png | Bin 0 -> 2817 bytes .../osp/bitmaps/480x800/00_splite_handler_v.png | Bin 0 -> 2816 bytes .../usr/share/osp/bitmaps/480x800/00_tab_bg.9.png | Bin 0 -> 976 bytes .../share/osp/bitmaps/480x800/00_tab_focus.9.png | Bin 0 -> 954 bytes .../osp/bitmaps/480x800/00_tab_icon_more_01.png | Bin 0 -> 1146 bytes .../osp/bitmaps/480x800/00_tab_icon_more_02.png | Bin 0 -> 1175 bytes .../share/osp/bitmaps/480x800/00_tab_move_bg.9.png | Bin 0 -> 2935 bytes .../osp/bitmaps/480x800/00_tab_move_bg_ef.9.png | Bin 0 -> 3186 bytes .../osp/bitmaps/480x800/00_tab_press_ef.9.png | Bin 0 -> 2849 bytes .../osp/bitmaps/480x800/00_thumbs_bg_focus.9.png | Bin 0 -> 2874 bytes .../osp/bitmaps/480x800/00_thumbs_line_bg.9.png | Bin 0 -> 2871 bytes .../osp/bitmaps/480x800/00_thumbs_loading_bg.9.png | Bin 0 -> 2861 bytes .../osp/bitmaps/480x800/00_tick_box_normal.png | Bin 0 -> 2946 bytes .../osp/bitmaps/480x800/00_time_picker_btn.9.png | Bin 0 -> 3214 bytes .../480x800/00_time_picker_btn_effect.9.png | Bin 0 -> 3758 bytes .../480x800/00_time_picker_btn_press_effect.9.png | Bin 0 -> 3902 bytes .../bitmaps/480x800/00_time_picker_keypad_bg.9.png | Bin 0 -> 2882 bytes .../480x800/00_time_picker_keypad_button_bg.9.png | Bin 0 -> 1039 bytes .../00_time_picker_keypad_button_bg_ef.9.png | Bin 0 -> 3018 bytes .../bitmaps/480x800/00_timepicker_number_bg.9.png | Bin 0 -> 978 bytes .../osp/bitmaps/480x800/00_timepicker_tail.png | Bin 0 -> 2940 bytes .../osp/bitmaps/480x800/00_timepicker_tail_01.png | Bin 0 -> 2931 bytes .../share/osp/bitmaps/480x800/00_title_bg.9.png | Bin 0 -> 976 bytes .../share/osp/bitmaps/480x800/00_title_bg_ef.9.png | Bin 0 -> 2897 bytes .../osp/bitmaps/480x800/00_title_btn_bg.9.png | Bin 0 -> 2895 bytes .../bitmaps/480x800/00_title_btn_bg_press.9.png | Bin 0 -> 2895 bytes .../bitmaps/480x800/00_title_button_bg_press.9.png | Bin 0 -> 2904 bytes .../osp/bitmaps/480x800/00_title_icon_more.png | Bin 0 -> 3160 bytes .../share/osp/bitmaps/480x800/00_title_line.png | Bin 0 -> 935 bytes .../share/osp/bitmaps/480x800/00_toolbar_bg.9.png | Bin 0 -> 978 bytes .../osp/bitmaps/480x800/00_toolbar_btn_bg.9.png | Bin 0 -> 1077 bytes .../osp/bitmaps/480x800/00_toolbar_btn_bg_ef.9.png | Bin 0 -> 1275 bytes .../bitmaps/480x800/00_toolbar_btn_bg_p_ef.9.png | Bin 0 -> 1287 bytes .../osp/bitmaps/480x800/00_toolbar_button.9.png | Bin 0 -> 5680 bytes .../osp/bitmaps/480x800/00_toolbar_button_bg.9.png | Bin 0 -> 1553 bytes .../480x800/00_toolbar_button_bg_center.9.png | Bin 0 -> 2856 bytes .../480x800/00_toolbar_button_bg_left.9.png | Bin 0 -> 3372 bytes .../480x800/00_toolbar_button_bg_right.9.png | Bin 0 -> 3353 bytes .../480x800/00_toolbar_button_center_ef.9.png | Bin 0 -> 2995 bytes .../00_toolbar_button_center_press_ef.9.png | Bin 0 -> 3003 bytes .../osp/bitmaps/480x800/00_toolbar_button_ef.9.png | Bin 0 -> 3865 bytes .../480x800/00_toolbar_button_ef_press.9.png | Bin 0 -> 3758 bytes .../480x800/00_toolbar_button_left_ef.9.png | Bin 0 -> 5708 bytes .../480x800/00_toolbar_button_left_ef_press.9.png | Bin 0 -> 5846 bytes .../bitmaps/480x800/00_toolbar_button_press.9.png | Bin 0 -> 5988 bytes .../480x800/00_toolbar_button_right_ef.9.png | Bin 0 -> 5778 bytes .../480x800/00_toolbar_button_right_press_ef.9.png | Bin 0 -> 5913 bytes .../share/osp/bitmaps/480x800/00_toolbar_line.png | Bin 0 -> 936 bytes .../osp/bitmaps/480x800/00_toolbar_line_01.png | Bin 0 -> 946 bytes .../osp/bitmaps/480x800/00_toolbar_press.9.png | Bin 0 -> 2920 bytes .../480x800/00_toolbar_trans_button_center.9.png | Bin 0 -> 2930 bytes .../00_toolbar_trans_button_center_press.9.png | Bin 0 -> 2973 bytes .../480x800/00_toolbar_trans_button_left.9.png | Bin 0 -> 5864 bytes .../00_toolbar_trans_button_left_press.9.png | Bin 0 -> 6144 bytes .../480x800/00_toolbar_trans_button_right.9.png | Bin 0 -> 5992 bytes .../00_toolbar_trans_button_right_press.9.png | Bin 0 -> 6271 bytes .../osp/bitmaps/480x800/00_transparent_bg.9.png | Bin 0 -> 198 bytes .../bitmaps/480x800/00_value_progress_bar.9.png | Bin 0 -> 2962 bytes .../480x800/00_value_progress_bar_effect.9.png | Bin 0 -> 2982 bytes .../osp/bitmaps/480x800/00_value_progress_bg.9.png | Bin 0 -> 2956 bytes .../480x800/00_value_progress_bg_effect.9.png | Bin 0 -> 2933 bytes .../480x800/00_winset_Back_btn_normal.9.png | Bin 0 -> 2963 bytes .../bitmaps/480x800/00_winset_Back_btn_press.9.png | Bin 0 -> 2973 bytes .../osp/bitmaps/480x800/00_winset_badge.9.png | Bin 0 -> 1708 bytes .../480x800/00_winset_control_tabbar_bg.9.png | Bin 0 -> 104 bytes .../480x800/00_winset_control_toolbar_bg.9.png | Bin 0 -> 2819 bytes .../bitmaps/480x800/00_winset_divider_line.9.png | Bin 0 -> 2852 bytes .../bitmaps/480x800/00_winset_list_process_01.png | Bin 0 -> 1791 bytes .../480x800/00_winset_list_process_01_32x32.png | Bin 0 -> 3449 bytes .../bitmaps/480x800/00_winset_list_process_02.png | Bin 0 -> 1785 bytes .../480x800/00_winset_list_process_02_32x32.png | Bin 0 -> 3418 bytes .../bitmaps/480x800/00_winset_list_process_03.png | Bin 0 -> 1763 bytes .../480x800/00_winset_list_process_03_32x32.png | Bin 0 -> 3373 bytes .../bitmaps/480x800/00_winset_list_process_04.png | Bin 0 -> 1823 bytes .../480x800/00_winset_list_process_04_32x32.png | Bin 0 -> 3446 bytes .../bitmaps/480x800/00_winset_list_process_05.png | Bin 0 -> 1802 bytes .../480x800/00_winset_list_process_05_32x32.png | Bin 0 -> 3467 bytes .../bitmaps/480x800/00_winset_list_process_06.png | Bin 0 -> 1817 bytes .../480x800/00_winset_list_process_06_32x32.png | Bin 0 -> 3476 bytes .../bitmaps/480x800/00_winset_list_process_07.png | Bin 0 -> 1795 bytes .../480x800/00_winset_list_process_07_32x32.png | Bin 0 -> 3460 bytes .../bitmaps/480x800/00_winset_list_process_08.png | Bin 0 -> 1851 bytes .../480x800/00_winset_list_process_08_32x32.png | Bin 0 -> 3475 bytes .../bitmaps/480x800/00_winset_list_process_09.png | Bin 0 -> 1826 bytes .../480x800/00_winset_list_process_09_32x32.png | Bin 0 -> 3453 bytes .../bitmaps/480x800/00_winset_list_process_10.png | Bin 0 -> 1818 bytes .../480x800/00_winset_list_process_10_32x32.png | Bin 0 -> 3437 bytes .../bitmaps/480x800/00_winset_list_process_11.png | Bin 0 -> 1770 bytes .../480x800/00_winset_list_process_11_32x32.png | Bin 0 -> 3440 bytes .../bitmaps/480x800/00_winset_list_process_12.png | Bin 0 -> 1799 bytes .../480x800/00_winset_list_process_12_32x32.png | Bin 0 -> 3456 bytes .../bitmaps/480x800/00_winset_list_process_13.png | Bin 0 -> 1831 bytes .../480x800/00_winset_list_process_13_32x32.png | Bin 0 -> 3472 bytes .../bitmaps/480x800/00_winset_list_process_14.png | Bin 0 -> 1819 bytes .../480x800/00_winset_list_process_14_32x32.png | Bin 0 -> 3453 bytes .../bitmaps/480x800/00_winset_list_process_15.png | Bin 0 -> 1845 bytes .../480x800/00_winset_list_process_15_32x32.png | Bin 0 -> 3458 bytes .../bitmaps/480x800/00_winset_list_process_16.png | Bin 0 -> 1793 bytes .../480x800/00_winset_list_process_16_32x32.png | Bin 0 -> 3441 bytes .../bitmaps/480x800/00_winset_list_process_17.png | Bin 0 -> 1776 bytes .../480x800/00_winset_list_process_17_32x32.png | Bin 0 -> 3412 bytes .../bitmaps/480x800/00_winset_list_process_18.png | Bin 0 -> 1738 bytes .../480x800/00_winset_list_process_18_32x32.png | Bin 0 -> 3375 bytes .../bitmaps/480x800/00_winset_list_process_19.png | Bin 0 -> 1815 bytes .../480x800/00_winset_list_process_19_32x32.png | Bin 0 -> 3451 bytes .../bitmaps/480x800/00_winset_list_process_20.png | Bin 0 -> 1837 bytes .../480x800/00_winset_list_process_20_32x32.png | Bin 0 -> 3469 bytes .../bitmaps/480x800/00_winset_list_process_21.png | Bin 0 -> 1786 bytes .../480x800/00_winset_list_process_21_32x32.png | Bin 0 -> 3459 bytes .../bitmaps/480x800/00_winset_list_process_22.png | Bin 0 -> 1767 bytes .../480x800/00_winset_list_process_22_32x32.png | Bin 0 -> 3452 bytes .../bitmaps/480x800/00_winset_list_process_23.png | Bin 0 -> 1832 bytes .../480x800/00_winset_list_process_23_32x32.png | Bin 0 -> 3451 bytes .../bitmaps/480x800/00_winset_list_process_24.png | Bin 0 -> 1789 bytes .../480x800/00_winset_list_process_24_32x32.png | Bin 0 -> 3444 bytes .../bitmaps/480x800/00_winset_list_process_25.png | Bin 0 -> 1755 bytes .../480x800/00_winset_list_process_25_32x32.png | Bin 0 -> 3423 bytes .../bitmaps/480x800/00_winset_list_process_26.png | Bin 0 -> 1737 bytes .../480x800/00_winset_list_process_26_32x32.png | Bin 0 -> 3423 bytes .../bitmaps/480x800/00_winset_list_process_27.png | Bin 0 -> 1779 bytes .../480x800/00_winset_list_process_27_32x32.png | Bin 0 -> 3447 bytes .../bitmaps/480x800/00_winset_list_process_28.png | Bin 0 -> 1818 bytes .../480x800/00_winset_list_process_28_32x32.png | Bin 0 -> 3452 bytes .../bitmaps/480x800/00_winset_list_process_29.png | Bin 0 -> 1819 bytes .../480x800/00_winset_list_process_29_32x32.png | Bin 0 -> 3450 bytes .../bitmaps/480x800/00_winset_list_process_30.png | Bin 0 -> 1823 bytes .../480x800/00_winset_list_process_30_32x32.png | Bin 0 -> 3460 bytes .../osp/bitmaps/480x800/00_winset_thumbs_bg.9.png | Bin 0 -> 2914 bytes .../osp/bitmaps/480x800/00_winset_title_bg.9.png | Bin 0 -> 95 bytes .../480x800/04_textinput_qwerty_button.9.png | Bin 0 -> 3439 bytes .../480x800/04_textinput_qwerty_button_01.9.png | Bin 0 -> 3420 bytes .../480x800/04_textinput_qwerty_button_press.9.png | Bin 0 -> 1718 bytes .../share/osp/bitmaps/480x800/Off_Background#5.png | Bin 0 -> 4610 bytes .../share/osp/bitmaps/480x800/On_Background#5.png | Bin 0 -> 4465 bytes .../usr/share/osp/bitmaps/480x800/TTS_focus.9.png | Bin 0 -> 3207 bytes .../share/osp/bitmaps/480x800/TTS_popup_bg.9.png | Bin 0 -> 3659 bytes .../bitmaps/480x800/black/00_btn_circle_bg_ef.png | Bin 0 -> 3839 bytes .../bitmaps/480x800/black/00_button_01_bg_ef.9.png | Bin 0 -> 3078 bytes .../480x800/black/00_button_edit_bg_ef.9.png | Bin 0 -> 3014 bytes .../480x800/black/00_button_radio_normal1.png | Bin 0 -> 3987 bytes .../480x800/black/00_button_radio_normal2.png | Bin 0 -> 3526 bytes .../480x800/black/00_button_seg_bg_ef.9.png | Bin 0 -> 3125 bytes .../480x800/black/00_button_seg_f_bg_ef_01.9.png | Bin 0 -> 3034 bytes .../480x800/black/00_button_seg_f_bg_ef_02.9.png | Bin 0 -> 2886 bytes .../480x800/black/00_button_seg_f_bg_ef_03.9.png | Bin 0 -> 2994 bytes .../osp/bitmaps/480x800/black/00_check_bg.png | Bin 0 -> 2972 bytes .../bitmaps/480x800/black/00_color_picker_bg.9.png | Bin 0 -> 2870 bytes .../480x800/black/00_dialogue_group_bg_line.9.png | Bin 0 -> 2891 bytes .../480x800/black/00_edit_field_bg_ef.9.png | Bin 0 -> 3071 bytes .../480x800/black/00_groupedlist_bg_01.9.png | Bin 0 -> 3000 bytes .../black/00_groupedlist_bottom_bg_01.9.png | Bin 0 -> 2933 bytes .../black/00_groupedlist_center_bg_01.9.png | Bin 0 -> 2858 bytes .../480x800/black/00_groupedlist_top_bg_01.9.png | Bin 0 -> 2946 bytes .../bitmaps/480x800/black/00_indexlist_bg_ef.9.png | Bin 0 -> 2878 bytes .../480x800/black/00_indexlist_icon_line.png | Bin 0 -> 2822 bytes .../480x800/black/00_list_process_01_32x32.png | Bin 0 -> 3449 bytes .../480x800/black/00_list_process_02_32x32.png | Bin 0 -> 3418 bytes .../480x800/black/00_list_process_03_32x32.png | Bin 0 -> 3373 bytes .../480x800/black/00_list_process_04_32x32.png | Bin 0 -> 3446 bytes .../480x800/black/00_list_process_05_32x32.png | Bin 0 -> 3467 bytes .../480x800/black/00_list_process_06_32x32.png | Bin 0 -> 3476 bytes .../480x800/black/00_list_process_07_32x32.png | Bin 0 -> 3460 bytes .../480x800/black/00_list_process_08_32x32.png | Bin 0 -> 3475 bytes .../480x800/black/00_list_process_09_32x32.png | Bin 0 -> 3453 bytes .../480x800/black/00_list_process_10_32x32.png | Bin 0 -> 3437 bytes .../480x800/black/00_list_process_11_32x32.png | Bin 0 -> 3440 bytes .../480x800/black/00_list_process_12_32x32.png | Bin 0 -> 3456 bytes .../480x800/black/00_list_process_13_32x32.png | Bin 0 -> 3472 bytes .../480x800/black/00_list_process_14_32x32.png | Bin 0 -> 3453 bytes .../480x800/black/00_list_process_15_32x32.png | Bin 0 -> 3458 bytes .../480x800/black/00_list_process_16_32x32.png | Bin 0 -> 3441 bytes .../480x800/black/00_list_process_17_32x32.png | Bin 0 -> 3412 bytes .../480x800/black/00_list_process_18_32x32.png | Bin 0 -> 3375 bytes .../480x800/black/00_list_process_19_32x32.png | Bin 0 -> 3451 bytes .../480x800/black/00_list_process_20_32x32.png | Bin 0 -> 3469 bytes .../480x800/black/00_list_process_21_32x32.png | Bin 0 -> 3459 bytes .../480x800/black/00_list_process_22_32x32.png | Bin 0 -> 3452 bytes .../480x800/black/00_list_process_23_32x32.png | Bin 0 -> 3451 bytes .../480x800/black/00_list_process_24_32x32.png | Bin 0 -> 3444 bytes .../480x800/black/00_list_process_25_32x32.png | Bin 0 -> 3423 bytes .../480x800/black/00_list_process_26_32x32.png | Bin 0 -> 3423 bytes .../480x800/black/00_list_process_27_32x32.png | Bin 0 -> 3447 bytes .../480x800/black/00_list_process_28_32x32.png | Bin 0 -> 3452 bytes .../480x800/black/00_list_process_29_32x32.png | Bin 0 -> 3450 bytes .../480x800/black/00_list_process_30_32x32.png | Bin 0 -> 3460 bytes .../osp/bitmaps/480x800/black/00_popup_bg_ef.9.png | Bin 0 -> 3360 bytes .../bitmaps/480x800/black/00_popup_bottom_bg.9.png | Bin 0 -> 2898 bytes .../480x800/black/00_popup_bubble_bg_ef.9.png | Bin 0 -> 3360 bytes .../black/00_popup_bubble_tail_bottom_ef.png | Bin 0 -> 3360 bytes .../480x800/black/00_popup_bubble_tail_left_ef.png | Bin 0 -> 3220 bytes .../black/00_popup_bubble_tail_right_ef.png | Bin 0 -> 3324 bytes .../480x800/black/00_popup_bubble_tail_top_ef.png | Bin 0 -> 3191 bytes .../480x800/black/00_popup_button_bg_ef.9.png | Bin 0 -> 3078 bytes .../bitmaps/480x800/black/00_popup_title_bg.9.png | Bin 0 -> 2911 bytes .../480x800/black/00_popup_title_bg_ef.9.png | Bin 0 -> 2910 bytes .../480x800/black/00_reorder_group_list_bg.9.png | Bin 0 -> 2921 bytes .../480x800/black/00_scroll_bar_handler_h.png | Bin 0 -> 2834 bytes .../480x800/black/00_scroll_bar_handler_v.png | Bin 0 -> 2831 bytes .../480x800/black/00_slider_handle_bg_ef.9.png | Bin 0 -> 3014 bytes .../osp/bitmaps/480x800/black/00_tab_bg_ef.9.png | Bin 0 -> 3184 bytes .../bitmaps/480x800/black/00_tab_bg_focus_ef.9.png | Bin 0 -> 3225 bytes .../bitmaps/480x800/black/00_tab_bg_line_ef.9.png | Bin 0 -> 2910 bytes .../osp/bitmaps/480x800/black/00_title_bg_ef.9.png | Bin 0 -> 2875 bytes .../bitmaps/480x800/black/00_title_btn_bg_ef.9.png | Bin 0 -> 3034 bytes .../black/00_title_button_bg_ef_press.9.png | Bin 0 -> 3080 bytes .../480x800/black/00_title_option_btn_bg_ef.9.png | Bin 0 -> 3113 bytes .../bitmaps/480x800/black/00_toolbar_bg_ef.9.png | Bin 0 -> 2875 bytes .../480x800/black/00_toolbar_ef_press.9.png | Bin 0 -> 3094 bytes .../480x800/black/00_toolbar_press_ef.9.png | Bin 0 -> 3094 bytes .../480x800/black/00_toolbar_tab_bg_ef.9.png | Bin 0 -> 3151 bytes .../480x800/black/00_toolbar_tab_bg_focus_ef.9.png | Bin 0 -> 3160 bytes .../480x800/black/00_toolbar_tab_bg_line_ef.9.png | Bin 0 -> 2916 bytes .../bitmaps/480x800/black/00_winset_badge.9.png | Bin 0 -> 3599 bytes .../osp/bitmaps/480x800/copy&paste_Icon02_left.png | Bin 0 -> 3906 bytes .../480x800/copy&paste_Icon02_left_press.png | Bin 0 -> 4083 bytes .../bitmaps/480x800/copy&paste_Icon02_right.png | Bin 0 -> 3952 bytes .../480x800/copy&paste_Icon02_right_press.png | Bin 0 -> 4143 bytes .../osp/bitmaps/480x800/copy&paste_Icon_left.png | Bin 0 -> 3806 bytes .../bitmaps/480x800/copy&paste_Icon_left_press.png | Bin 0 -> 3932 bytes .../osp/bitmaps/480x800/copy&paste_Icon_right.png | Bin 0 -> 3919 bytes .../480x800/copy&paste_Icon_right_press.png | Bin 0 -> 4120 bytes .../osp/bitmaps/480x800/copy&paste_icon_search.png | Bin 0 -> 3208 bytes .../bitmaps/480x800/white/00_btn_circle_bg_ef.png | Bin 0 -> 4509 bytes .../bitmaps/480x800/white/00_button_01_bg_ef.9.png | Bin 0 -> 3230 bytes .../480x800/white/00_button_edit_bg_ef.9.png | Bin 0 -> 3081 bytes .../480x800/white/00_button_radio_normal1.png | Bin 0 -> 4271 bytes .../480x800/white/00_button_radio_normal2.png | Bin 0 -> 3812 bytes .../480x800/white/00_button_seg_bg_ef.9.png | Bin 0 -> 3097 bytes .../480x800/white/00_button_seg_f_bg_ef_01.9.png | Bin 0 -> 3006 bytes .../480x800/white/00_button_seg_f_bg_ef_02.9.png | Bin 0 -> 2904 bytes .../480x800/white/00_button_seg_f_bg_ef_03.9.png | Bin 0 -> 3010 bytes .../osp/bitmaps/480x800/white/00_check_bg.png | Bin 0 -> 2977 bytes .../bitmaps/480x800/white/00_color_picker_bg.9.png | Bin 0 -> 2871 bytes .../480x800/white/00_dialogue_group_bg_line.9.png | Bin 0 -> 2896 bytes .../480x800/white/00_edit_field_bg_ef.9.png | Bin 0 -> 2983 bytes .../480x800/white/00_groupedlist_bg_01.9.png | Bin 0 -> 3010 bytes .../white/00_groupedlist_bottom_bg_01.9.png | Bin 0 -> 2935 bytes .../white/00_groupedlist_center_bg_01.9.png | Bin 0 -> 2858 bytes .../480x800/white/00_groupedlist_top_bg_01.9.png | Bin 0 -> 2947 bytes .../bitmaps/480x800/white/00_indexlist_bg_ef.9.png | Bin 0 -> 2873 bytes .../480x800/white/00_indexlist_icon_line.png | Bin 0 -> 2824 bytes .../480x800/white/00_list_process_01_32x32.png | Bin 0 -> 1614 bytes .../480x800/white/00_list_process_02_32x32.png | Bin 0 -> 1577 bytes .../480x800/white/00_list_process_03_32x32.png | Bin 0 -> 1551 bytes .../480x800/white/00_list_process_04_32x32.png | Bin 0 -> 1630 bytes .../480x800/white/00_list_process_05_32x32.png | Bin 0 -> 1624 bytes .../480x800/white/00_list_process_06_32x32.png | Bin 0 -> 1604 bytes .../480x800/white/00_list_process_07_32x32.png | Bin 0 -> 1593 bytes .../480x800/white/00_list_process_08_32x32.png | Bin 0 -> 1655 bytes .../480x800/white/00_list_process_09_32x32.png | Bin 0 -> 1630 bytes .../480x800/white/00_list_process_10_32x32.png | Bin 0 -> 1613 bytes .../480x800/white/00_list_process_11_32x32.png | Bin 0 -> 1585 bytes .../480x800/white/00_list_process_12_32x32.png | Bin 0 -> 1607 bytes .../480x800/white/00_list_process_13_32x32.png | Bin 0 -> 1618 bytes .../480x800/white/00_list_process_14_32x32.png | Bin 0 -> 1643 bytes .../480x800/white/00_list_process_15_32x32.png | Bin 0 -> 1634 bytes .../480x800/white/00_list_process_16_32x32.png | Bin 0 -> 1600 bytes .../480x800/white/00_list_process_17_32x32.png | Bin 0 -> 1591 bytes .../480x800/white/00_list_process_18_32x32.png | Bin 0 -> 1561 bytes .../480x800/white/00_list_process_19_32x32.png | Bin 0 -> 1608 bytes .../480x800/white/00_list_process_20_32x32.png | Bin 0 -> 1648 bytes .../480x800/white/00_list_process_21_32x32.png | Bin 0 -> 1625 bytes .../480x800/white/00_list_process_22_32x32.png | Bin 0 -> 1568 bytes .../480x800/white/00_list_process_23_32x32.png | Bin 0 -> 1639 bytes .../480x800/white/00_list_process_24_32x32.png | Bin 0 -> 1604 bytes .../480x800/white/00_list_process_25_32x32.png | Bin 0 -> 1571 bytes .../480x800/white/00_list_process_26_32x32.png | Bin 0 -> 1547 bytes .../480x800/white/00_list_process_27_32x32.png | Bin 0 -> 1586 bytes .../480x800/white/00_list_process_28_32x32.png | Bin 0 -> 1623 bytes .../480x800/white/00_list_process_29_32x32.png | Bin 0 -> 1610 bytes .../480x800/white/00_list_process_30_32x32.png | Bin 0 -> 1636 bytes .../osp/bitmaps/480x800/white/00_popup_bg_ef.9.png | Bin 0 -> 3318 bytes .../bitmaps/480x800/white/00_popup_bottom_bg.9.png | Bin 0 -> 2901 bytes .../480x800/white/00_popup_bubble_bg_ef.9.png | Bin 0 -> 3365 bytes .../white/00_popup_bubble_tail_bottom_ef.png | Bin 0 -> 3393 bytes .../480x800/white/00_popup_bubble_tail_left_ef.png | Bin 0 -> 3232 bytes .../white/00_popup_bubble_tail_right_ef.png | Bin 0 -> 3364 bytes .../480x800/white/00_popup_bubble_tail_top_ef.png | Bin 0 -> 3217 bytes .../480x800/white/00_popup_button_bg_ef.9.png | Bin 0 -> 3230 bytes .../bitmaps/480x800/white/00_popup_title_bg.9.png | Bin 0 -> 2911 bytes .../480x800/white/00_popup_title_bg_ef.9.png | Bin 0 -> 3120 bytes .../480x800/white/00_reorder_group_list_bg.9.png | Bin 0 -> 2923 bytes .../480x800/white/00_scroll_bar_handler_h.png | Bin 0 -> 2843 bytes .../480x800/white/00_scroll_bar_handler_v.png | Bin 0 -> 2826 bytes .../480x800/white/00_slider_handle_bg_ef.9.png | Bin 0 -> 3026 bytes .../osp/bitmaps/480x800/white/00_title_bg_ef.9.png | Bin 0 -> 2897 bytes .../bitmaps/480x800/white/00_title_btn_bg_ef.9.png | Bin 0 -> 3007 bytes .../white/00_title_button_bg_ef_press.9.png | Bin 0 -> 3078 bytes .../480x800/white/00_title_option_btn_bg_ef.9.png | Bin 0 -> 3097 bytes .../bitmaps/480x800/white/00_toolbar_bg_ef.9.png | Bin 0 -> 2896 bytes .../480x800/white/00_toolbar_ef_press.9.png | Bin 0 -> 3122 bytes .../480x800/white/00_toolbar_press_ef.9.png | Bin 0 -> 3122 bytes .../480x800/white/00_toolbar_tab_bg_ef.9.png | Bin 0 -> 3081 bytes .../480x800/white/00_toolbar_tab_bg_focus_ef.9.png | Bin 0 -> 3166 bytes .../480x800/white/00_toolbar_tab_bg_line_ef.9.png | Bin 0 -> 2900 bytes .../bitmaps/480x800/white/00_winset_badge.9.png | Bin 0 -> 3616 bytes .../share/osp/bitmaps/720x1280/00_Title_btn.9.png | Bin 0 -> 2963 bytes .../osp/bitmaps/720x1280/00_Title_btn_press.9.png | Bin 0 -> 2967 bytes .../720x1280/00_arrow_button_press_bg.9.png | Bin 0 -> 976 bytes .../720x1280/00_arrow_button_press_ef.9.png | Bin 0 -> 2970 bytes .../share/osp/bitmaps/720x1280/00_arrow_left.png | Bin 0 -> 3167 bytes .../share/osp/bitmaps/720x1280/00_arrow_right.png | Bin 0 -> 3173 bytes .../share/osp/bitmaps/720x1280/00_badge_bg.9.png | Bin 0 -> 3454 bytes .../osp/bitmaps/720x1280/00_badge_bg_ef.9.png | Bin 0 -> 5612 bytes .../osp/bitmaps/720x1280/00_btn_circle_bg.png | Bin 0 -> 3604 bytes .../osp/bitmaps/720x1280/00_btn_circle_bg_ef.png | Bin 0 -> 3892 bytes .../osp/bitmaps/720x1280/00_btn_circle_bg_p_ef.png | Bin 0 -> 4002 bytes .../share/osp/bitmaps/720x1280/00_button_01.9.png | Bin 0 -> 1264 bytes .../osp/bitmaps/720x1280/00_button_01_bg.9.png | Bin 0 -> 2984 bytes .../bitmaps/720x1280/00_button_01_bg_p_ef.9.png | Bin 0 -> 3027 bytes .../osp/bitmaps/720x1280/00_button_01_ef.9.png | Bin 0 -> 2680 bytes .../osp/bitmaps/720x1280/00_button_01_ef_dim.9.png | Bin 0 -> 2680 bytes .../bitmaps/720x1280/00_button_01_ef_press.9.png | Bin 0 -> 2860 bytes .../share/osp/bitmaps/720x1280/00_button_02.9.png | Bin 0 -> 3087 bytes .../osp/bitmaps/720x1280/00_button_02_ef.9.png | Bin 0 -> 4478 bytes .../bitmaps/720x1280/00_button_02_ef_press.9.png | Bin 0 -> 4648 bytes .../share/osp/bitmaps/720x1280/00_button_03.9.png | Bin 0 -> 3078 bytes .../osp/bitmaps/720x1280/00_button_03_dim_ef.9.png | Bin 0 -> 4529 bytes .../osp/bitmaps/720x1280/00_button_03_ef.9.png | Bin 0 -> 4529 bytes .../bitmaps/720x1280/00_button_03_ef_press.9.png | Bin 0 -> 4696 bytes .../osp/bitmaps/720x1280/00_button_06_dim.9.png | Bin 0 -> 273 bytes .../osp/bitmaps/720x1280/00_button_06_normal.9.png | Bin 0 -> 281 bytes .../osp/bitmaps/720x1280/00_button_06_press.9.png | Bin 0 -> 338 bytes .../share/osp/bitmaps/720x1280/00_button_call.png | Bin 0 -> 1502 bytes .../osp/bitmaps/720x1280/00_button_call_ef.png | Bin 0 -> 3831 bytes .../osp/bitmaps/720x1280/00_button_cancel.png | Bin 0 -> 3160 bytes .../bitmaps/720x1280/00_button_expand_cancel.png | Bin 0 -> 1655 bytes .../720x1280/00_button_expand_cancel_ef.png | Bin 0 -> 3976 bytes .../bitmaps/720x1280/00_button_expand_closed.png | Bin 0 -> 3132 bytes .../720x1280/00_button_expand_closed_ef.png | Bin 0 -> 3420 bytes .../bitmaps/720x1280/00_button_expand_minus.png | Bin 0 -> 1069 bytes .../bitmaps/720x1280/00_button_expand_minus_ef.png | Bin 0 -> 3044 bytes .../bitmaps/720x1280/00_button_expand_opened.png | Bin 0 -> 3075 bytes .../720x1280/00_button_expand_opened_ef.png | Bin 0 -> 3270 bytes .../osp/bitmaps/720x1280/00_button_expand_send.png | Bin 0 -> 1767 bytes .../bitmaps/720x1280/00_button_expand_send_ef.png | Bin 0 -> 4158 bytes .../share/osp/bitmaps/720x1280/00_button_info.png | Bin 0 -> 1467 bytes .../osp/bitmaps/720x1280/00_button_info_ef.png | Bin 0 -> 3705 bytes .../share/osp/bitmaps/720x1280/00_button_left.png | Bin 0 -> 3097 bytes .../osp/bitmaps/720x1280/00_button_left_ef.png | Bin 0 -> 3394 bytes .../share/osp/bitmaps/720x1280/00_button_minus.png | Bin 0 -> 2900 bytes .../osp/bitmaps/720x1280/00_button_normal.9.png | Bin 0 -> 3168 bytes .../osp/bitmaps/720x1280/00_button_normal_bg.9.png | Bin 0 -> 1228 bytes .../720x1280/00_button_normal_effect_01.9.png | Bin 0 -> 3814 bytes .../share/osp/bitmaps/720x1280/00_button_off.png | Bin 0 -> 6337 bytes .../osp/bitmaps/720x1280/00_button_off_01.png | Bin 0 -> 3786 bytes .../osp/bitmaps/720x1280/00_button_off_dim.png | Bin 0 -> 8112 bytes .../bitmaps/720x1280/00_button_off_dim_temp.png | Bin 0 -> 8112 bytes .../osp/bitmaps/720x1280/00_button_off_temp.png | Bin 0 -> 8294 bytes .../share/osp/bitmaps/720x1280/00_button_on.png | Bin 0 -> 6228 bytes .../share/osp/bitmaps/720x1280/00_button_on_01.png | Bin 0 -> 3224 bytes .../osp/bitmaps/720x1280/00_button_on_dim.png | Bin 0 -> 8102 bytes .../osp/bitmaps/720x1280/00_button_on_dim_temp.png | Bin 0 -> 8102 bytes .../bitmaps/720x1280/00_button_on_off_handler.png | Bin 0 -> 6291 bytes .../osp/bitmaps/720x1280/00_button_on_temp.png | Bin 0 -> 8290 bytes .../share/osp/bitmaps/720x1280/00_button_plus.png | Bin 0 -> 3003 bytes .../osp/bitmaps/720x1280/00_button_plus_ef.png | Bin 0 -> 3230 bytes .../share/osp/bitmaps/720x1280/00_button_radio.png | Bin 0 -> 6733 bytes .../osp/bitmaps/720x1280/00_button_radio_dim.png | Bin 0 -> 6093 bytes .../bitmaps/720x1280/00_button_radio_normal1.png | Bin 0 -> 4225 bytes .../bitmaps/720x1280/00_button_radio_normal2.png | Bin 0 -> 3407 bytes .../osp/bitmaps/720x1280/00_button_radio_press.png | Bin 0 -> 7125 bytes .../bitmaps/720x1280/00_button_radio_press1.png | Bin 0 -> 3408 bytes .../bitmaps/720x1280/00_button_radio_press2.png | Bin 0 -> 4235 bytes .../bitmaps/720x1280/00_button_radio_select.png | Bin 0 -> 3222 bytes .../720x1280/00_button_radio_select_dim.png | Bin 0 -> 3190 bytes .../osp/bitmaps/720x1280/00_button_rename.png | Bin 0 -> 1384 bytes .../osp/bitmaps/720x1280/00_button_rename_ef.png | Bin 0 -> 3534 bytes .../osp/bitmaps/720x1280/00_button_reveal.png | Bin 0 -> 3118 bytes .../share/osp/bitmaps/720x1280/00_button_right.png | Bin 0 -> 1296 bytes .../osp/bitmaps/720x1280/00_button_right_ef.png | Bin 0 -> 3380 bytes .../bitmaps/720x1280/00_button_seg_f_bg_01.9.png | Bin 0 -> 1042 bytes .../bitmaps/720x1280/00_button_seg_f_bg_02.9.png | Bin 0 -> 984 bytes .../bitmaps/720x1280/00_button_seg_f_bg_03.9.png | Bin 0 -> 1026 bytes .../720x1280/00_button_seg_f_bg_ef_01.9.png | Bin 0 -> 1153 bytes .../720x1280/00_button_seg_f_bg_ef_02.9.png | Bin 0 -> 1092 bytes .../720x1280/00_button_seg_f_bg_ef_03.9.png | Bin 0 -> 1169 bytes .../share/osp/bitmaps/720x1280/00_button_send.png | Bin 0 -> 3227 bytes .../osp/bitmaps/720x1280/00_button_warning.png | Bin 0 -> 3001 bytes .../osp/bitmaps/720x1280/00_button_warring.png | Bin 0 -> 1193 bytes .../osp/bitmaps/720x1280/00_button_warring_ef.png | Bin 0 -> 2983 bytes .../share/osp/bitmaps/720x1280/00_button_web.9.png | Bin 0 -> 1331 bytes .../osp/bitmaps/720x1280/00_button_web_press.9.png | Bin 0 -> 1313 bytes .../osp/bitmaps/720x1280/00_category_bg.9.png | Bin 0 -> 3047 bytes .../osp/bitmaps/720x1280/00_category_button.9.png | Bin 0 -> 2975 bytes .../720x1280/00_category_button_focus.9.png | Bin 0 -> 3033 bytes .../bitmaps/720x1280/00_category_left_button.png | Bin 0 -> 2940 bytes .../720x1280/00_category_left_button_arrow.png | Bin 0 -> 1178 bytes .../osp/bitmaps/720x1280/00_category_left_gd.png | Bin 0 -> 2940 bytes .../720x1280/00_category_left_gradation.png | Bin 0 -> 3112 bytes .../bitmaps/720x1280/00_category_panel_bg.9.png | Bin 0 -> 2858 bytes .../bitmaps/720x1280/00_category_panel_bg_ef.9.png | Bin 0 -> 2892 bytes .../bitmaps/720x1280/00_category_right_button.png | Bin 0 -> 2941 bytes .../720x1280/00_category_right_button_arrow.png | Bin 0 -> 1206 bytes .../osp/bitmaps/720x1280/00_category_right_gd.png | Bin 0 -> 2941 bytes .../720x1280/00_category_right_gradation.png | Bin 0 -> 3103 bytes .../usr/share/osp/bitmaps/720x1280/00_check.png | Bin 0 -> 3850 bytes .../share/osp/bitmaps/720x1280/00_check_angle.png | Bin 0 -> 3710 bytes .../usr/share/osp/bitmaps/720x1280/00_check_bg.png | Bin 0 -> 4695 bytes .../share/osp/bitmaps/720x1280/00_check_bg_dim.png | Bin 0 -> 4601 bytes .../osp/bitmaps/720x1280/00_check_bg_press.png | Bin 0 -> 4723 bytes .../osp/bitmaps/720x1280/00_check_checking.png | Bin 0 -> 3209 bytes .../osp/bitmaps/720x1280/00_check_checking_bg.png | Bin 0 -> 3278 bytes .../osp/bitmaps/720x1280/00_check_checking_dim.png | Bin 0 -> 3186 bytes .../share/osp/bitmaps/720x1280/00_check_dim.png | Bin 0 -> 3358 bytes .../osp/bitmaps/720x1280/00_check_index_bg.png | Bin 0 -> 2994 bytes .../share/osp/bitmaps/720x1280/00_circle_bg.png | Bin 0 -> 3597 bytes .../share/osp/bitmaps/720x1280/00_circle_bg_ef.png | Bin 0 -> 8260 bytes .../osp/bitmaps/720x1280/00_circle_bg_ef_dim.png | Bin 0 -> 7597 bytes .../osp/bitmaps/720x1280/00_circle_bg_ef_press.png | Bin 0 -> 8565 bytes .../720x1280/00_color_picker_brightness.png | Bin 0 -> 3122 bytes .../720x1280/00_color_picker_brightness_h.png | Bin 0 -> 3304 bytes .../bitmaps/720x1280/00_color_picker_btn_bg.9.png | Bin 0 -> 3168 bytes .../bitmaps/720x1280/00_color_picker_btn_left.png | Bin 0 -> 3115 bytes .../bitmaps/720x1280/00_color_picker_btn_right.png | Bin 0 -> 3102 bytes .../osp/bitmaps/720x1280/00_color_picker_color.png | Bin 0 -> 3227 bytes .../bitmaps/720x1280/00_color_picker_color_h.png | Bin 0 -> 3322 bytes .../720x1280/00_color_picker_custom_color.png | Bin 0 -> 3006 bytes .../720x1280/00_color_picker_custom_color_h.png | Bin 0 -> 3065 bytes .../osp/bitmaps/720x1280/00_color_picker_focus.png | Bin 0 -> 2910 bytes .../720x1280/00_color_picker_saturation.png | Bin 0 -> 10044 bytes .../720x1280/00_color_picker_saturation_h.png | Bin 0 -> 10581 bytes .../bitmaps/720x1280/00_contacts_button_bg.9.png | Bin 0 -> 2951 bytes .../osp/bitmaps/720x1280/00_context_popup_bg.9.png | Bin 0 -> 3188 bytes .../bitmaps/720x1280/00_context_popup_bg_01.9.png | Bin 0 -> 3913 bytes .../720x1280/00_context_popup_bg_effect.9.png | Bin 0 -> 4174 bytes .../720x1280/00_context_popup_tail_bottom.png | Bin 0 -> 2947 bytes .../720x1280/00_context_popup_tail_bottom_01.png | Bin 0 -> 2954 bytes .../00_context_popup_tail_bottom_effect.png | Bin 0 -> 3072 bytes .../720x1280/00_context_popup_tail_left.png | Bin 0 -> 2966 bytes .../720x1280/00_context_popup_tail_left_01.png | Bin 0 -> 2951 bytes .../720x1280/00_context_popup_tail_left_effect.png | Bin 0 -> 3112 bytes .../720x1280/00_context_popup_tail_right.png | Bin 0 -> 2964 bytes .../720x1280/00_context_popup_tail_right_01.png | Bin 0 -> 2965 bytes .../00_context_popup_tail_right_effect.png | Bin 0 -> 3094 bytes .../bitmaps/720x1280/00_context_popup_tail_top.png | Bin 0 -> 2947 bytes .../720x1280/00_context_popup_tail_top_01.png | Bin 0 -> 2941 bytes .../720x1280/00_context_popup_tail_top_effect.png | Bin 0 -> 3088 bytes .../720x1280/00_date_picker_center_bg.9.png | Bin 0 -> 2920 bytes .../720x1280/00_date_picker_center_bg_effect.9.png | Bin 0 -> 3070 bytes .../00_date_picker_center_bg_press_effect.9.png | Bin 0 -> 3071 bytes .../osp/bitmaps/720x1280/00_date_picker_dot.png | Bin 0 -> 2834 bytes .../bitmaps/720x1280/00_date_picker_left_bg.9.png | Bin 0 -> 3110 bytes .../720x1280/00_date_picker_left_bg_effect.9.png | Bin 0 -> 3487 bytes .../00_date_picker_left_bg_press_effect.9.png | Bin 0 -> 3500 bytes .../bitmaps/720x1280/00_date_picker_right_bg.9.png | Bin 0 -> 3095 bytes .../720x1280/00_date_picker_right_bg_effect.9.png | Bin 0 -> 3422 bytes .../00_date_picker_right_bg_press_effect.9.png | Bin 0 -> 3537 bytes .../osp/bitmaps/720x1280/00_detail_button#5.png | Bin 0 -> 3227 bytes .../osp/bitmaps/720x1280/00_detail_button.png | Bin 0 -> 3227 bytes .../osp/bitmaps/720x1280/00_detail_button_01.png | Bin 0 -> 3189 bytes .../bitmaps/720x1280/00_detail_button_01_dim.png | Bin 0 -> 2709 bytes .../bitmaps/720x1280/00_detail_button_01_press.png | Bin 0 -> 3234 bytes .../bitmaps/720x1280/00_detail_button_dim#1.png | Bin 0 -> 2702 bytes .../osp/bitmaps/720x1280/00_detail_button_dim.png | Bin 0 -> 2702 bytes .../bitmaps/720x1280/00_detail_button_press#3.png | Bin 0 -> 3329 bytes .../bitmaps/720x1280/00_detail_button_press.png | Bin 0 -> 3329 bytes .../bitmaps/720x1280/00_dialogue_group_bg.9.png | Bin 0 -> 2858 bytes .../720x1280/00_dialogue_group_bg_bar.9.png | Bin 0 -> 2872 bytes .../osp/bitmaps/720x1280/00_divider_line.9.png | Bin 0 -> 2827 bytes .../720x1280/00_divider_line_translucent.9.png | Bin 0 -> 2819 bytes .../osp/bitmaps/720x1280/00_edit_field_bg.9.png | Bin 0 -> 2955 bytes .../osp/bitmaps/720x1280/00_edit_field_clear.png | Bin 0 -> 3198 bytes .../720x1280/00_edit_field_line_round_bg_01.9.png | Bin 0 -> 3150 bytes .../720x1280/00_edit_field_line_squre_bg_01.9.png | Bin 0 -> 2881 bytes .../720x1280/00_edit_field_no_line_round_bg.9.png | Bin 0 -> 2996 bytes .../720x1280/00_edit_field_no_line_square_bg.9.png | Bin 0 -> 2860 bytes .../bitmaps/720x1280/00_effect_tab_bounce_left.png | Bin 0 -> 4471 bytes .../720x1280/00_effect_tab_bounce_right.png | Bin 0 -> 4309 bytes .../bitmaps/720x1280/00_fast_scroll_popup_bg.9.png | Bin 0 -> 3027 bytes .../720x1280/00_fast_scroll_popup_bg_ef.9.png | Bin 0 -> 3632 bytes .../720x1280/00_fast_scroll_rollover_bg.9.png | Bin 0 -> 1006 bytes .../00_fast_scroll_rollover_bg_focus.9.png | Bin 0 -> 1004 bytes .../00_fast_scroll_rollover_bg_line_focus.9.png | Bin 0 -> 2859 bytes .../share/osp/bitmaps/720x1280/00_footer_bg.9.png | Bin 0 -> 1539 bytes .../osp/bitmaps/720x1280/00_footer_bg_01.9.png | Bin 0 -> 1311 bytes .../osp/bitmaps/720x1280/00_footer_button_bg.9.png | Bin 0 -> 3738 bytes .../osp/bitmaps/720x1280/00_footer_button_ef.9.png | Bin 0 -> 8169 bytes .../720x1280/00_footer_button_ef_press.9.png | Bin 0 -> 8946 bytes .../osp/bitmaps/720x1280/00_footer_icon_Back.png | Bin 0 -> 1514 bytes .../bitmaps/720x1280/00_footer_icon_Back_ef.png | Bin 0 -> 2608 bytes .../bitmaps/720x1280/00_footer_icon_Back_ef_02.png | Bin 0 -> 2264 bytes .../osp/bitmaps/720x1280/00_footer_icon_close.png | Bin 0 -> 3469 bytes .../720x1280/00_footer_icon_close_press.png | Bin 0 -> 3069 bytes .../osp/bitmaps/720x1280/00_footer_icon_more.png | Bin 0 -> 3119 bytes .../osp/bitmaps/720x1280/00_footer_icon_more2.png | Bin 0 -> 1206 bytes .../bitmaps/720x1280/00_footer_icon_more2_ef.png | Bin 0 -> 1440 bytes .../bitmaps/720x1280/00_footer_icon_more_press.png | Bin 0 -> 1087 bytes .../osp/bitmaps/720x1280/00_grid_select_check.png | Bin 0 -> 1928 bytes .../bitmaps/720x1280/00_grid_select_check_bg.png | Bin 0 -> 4672 bytes .../720x1280/00_grid_select_check_bg_press.png | Bin 0 -> 5284 bytes .../osp/bitmaps/720x1280/00_groupedlist_bg.9.png | Bin 0 -> 2966 bytes .../bitmaps/720x1280/00_groupedlist_bg_01.9.png | Bin 0 -> 3069 bytes .../bitmaps/720x1280/00_groupedlist_bg_focus.9.png | Bin 0 -> 3041 bytes .../osp/bitmaps/720x1280/00_groupedlist_bg_p.9.png | Bin 0 -> 3446 bytes .../bitmaps/720x1280/00_groupedlist_bg_press.9.png | Bin 0 -> 3143 bytes .../720x1280/00_groupedlist_bottom_bg.9.png | Bin 0 -> 3095 bytes .../720x1280/00_groupedlist_bottom_bg_01.9.png | Bin 0 -> 3169 bytes .../720x1280/00_groupedlist_bottom_bg_focus.9.png | Bin 0 -> 3228 bytes .../720x1280/00_groupedlist_bottom_bg_press.9.png | Bin 0 -> 3294 bytes .../720x1280/00_groupedlist_center_bg.9.png | Bin 0 -> 3013 bytes .../720x1280/00_groupedlist_center_bg_01.9.png | Bin 0 -> 3001 bytes .../720x1280/00_groupedlist_center_bg_focus.9.png | Bin 0 -> 3034 bytes .../720x1280/00_groupedlist_center_bg_press.9.png | Bin 0 -> 3191 bytes .../osp/bitmaps/720x1280/00_groupedlist_h_bg.9.png | Bin 0 -> 3430 bytes .../720x1280/00_groupedlist_input_outline_h.9.png | Bin 0 -> 3716 bytes .../720x1280/00_groupedlist_normal_bg.9.png | Bin 0 -> 3437 bytes .../bitmaps/720x1280/00_groupedlist_top_bg.9.png | Bin 0 -> 3115 bytes .../720x1280/00_groupedlist_top_bg_01.9.png | Bin 0 -> 3210 bytes .../720x1280/00_groupedlist_top_bg_focus.9.png | Bin 0 -> 3207 bytes .../720x1280/00_groupedlist_top_bg_press.9.png | Bin 0 -> 3351 bytes .../osp/bitmaps/720x1280/00_header_badge_bg.9.png | Bin 0 -> 3486 bytes .../bitmaps/720x1280/00_header_badge_bg_ef.9.png | Bin 0 -> 4829 bytes .../share/osp/bitmaps/720x1280/00_header_bg.9.png | Bin 0 -> 3068 bytes .../osp/bitmaps/720x1280/00_header_bg_01.9.png | Bin 0 -> 3178 bytes .../osp/bitmaps/720x1280/00_header_bg_effect.9.png | Bin 0 -> 3134 bytes .../osp/bitmaps/720x1280/00_header_button_bg.9.png | Bin 0 -> 3214 bytes .../720x1280/00_header_button_bg_effect.9.png | Bin 0 -> 3758 bytes .../720x1280/00_header_button_bg_focus.9.png | Bin 0 -> 3298 bytes .../00_header_button_bg_press_effect.9.png | Bin 0 -> 3902 bytes .../bitmaps/720x1280/00_header_button_web.9.png | Bin 0 -> 1331 bytes .../720x1280/00_header_button_web_press.9.png | Bin 0 -> 1313 bytes .../osp/bitmaps/720x1280/00_header_icon_edit.png | Bin 0 -> 1776 bytes .../bitmaps/720x1280/00_header_icon_edit_ef.png | Bin 0 -> 2616 bytes .../osp/bitmaps/720x1280/00_header_icon_plus.png | Bin 0 -> 1266 bytes .../bitmaps/720x1280/00_header_icon_plus_ef.png | Bin 0 -> 1664 bytes .../bitmaps/720x1280/00_header_tab_press_ef.9.png | Bin 0 -> 989 bytes .../bitmaps/720x1280/00_header_title_handler.png | Bin 0 -> 1146 bytes .../share/osp/bitmaps/720x1280/00_icon_Back.png | Bin 0 -> 3348 bytes .../share/osp/bitmaps/720x1280/00_icon_Back_ef.png | Bin 0 -> 4100 bytes .../osp/bitmaps/720x1280/00_icon_Back_ef_02.png | Bin 0 -> 4145 bytes .../osp/bitmaps/720x1280/00_icon_Back_trans_ef.png | Bin 0 -> 3393 bytes .../usr/share/osp/bitmaps/720x1280/00_icon_add.png | Bin 0 -> 3061 bytes .../share/osp/bitmaps/720x1280/00_icon_back.png | Bin 0 -> 3256 bytes .../share/osp/bitmaps/720x1280/00_icon_edit.png | Bin 0 -> 3577 bytes .../share/osp/bitmaps/720x1280/00_icon_edit_ef.png | Bin 0 -> 4378 bytes .../share/osp/bitmaps/720x1280/00_icon_jump.png | Bin 0 -> 3070 bytes .../share/osp/bitmaps/720x1280/00_icon_jump_ef.png | Bin 0 -> 3414 bytes .../osp/bitmaps/720x1280/00_icon_jump_left.png | Bin 0 -> 3110 bytes .../osp/bitmaps/720x1280/00_icon_jump_left_ef.png | Bin 0 -> 3461 bytes .../share/osp/bitmaps/720x1280/00_icon_more.png | Bin 0 -> 3193 bytes .../share/osp/bitmaps/720x1280/00_icon_more_ef.png | Bin 0 -> 3552 bytes .../share/osp/bitmaps/720x1280/00_icon_plus.png | Bin 0 -> 3141 bytes .../share/osp/bitmaps/720x1280/00_icon_plus_ef.png | Bin 0 -> 3565 bytes .../osp/bitmaps/720x1280/00_iconlist_bg.9.png | Bin 0 -> 473 bytes .../osp/bitmaps/720x1280/00_indexlist_bg.9.png | Bin 0 -> 2846 bytes .../osp/bitmaps/720x1280/00_indexlist_bg_ef.9.png | Bin 0 -> 2858 bytes .../osp/bitmaps/720x1280/00_label_01_normal.9.png | Bin 0 -> 281 bytes .../osp/bitmaps/720x1280/00_list_group_bg.9.png | Bin 0 -> 353 bytes .../bitmaps/720x1280/00_list_group_bg_bottom.9.png | Bin 0 -> 302 bytes .../720x1280/00_list_group_bg_bottom_ef.9.png | Bin 0 -> 490 bytes .../bitmaps/720x1280/00_list_group_bg_center.9.png | Bin 0 -> 232 bytes .../720x1280/00_list_group_bg_center_ef.9.png | Bin 0 -> 283 bytes .../osp/bitmaps/720x1280/00_list_group_bg_ef.9.png | Bin 0 -> 635 bytes .../bitmaps/720x1280/00_list_group_bg_top.9.png | Bin 0 -> 310 bytes .../bitmaps/720x1280/00_list_group_bg_top_ef.9.png | Bin 0 -> 490 bytes .../osp/bitmaps/720x1280/00_list_process_01.png | Bin 0 -> 2164 bytes .../osp/bitmaps/720x1280/00_list_process_02.png | Bin 0 -> 2130 bytes .../osp/bitmaps/720x1280/00_list_process_03.png | Bin 0 -> 2071 bytes .../osp/bitmaps/720x1280/00_list_process_04.png | Bin 0 -> 2213 bytes .../osp/bitmaps/720x1280/00_list_process_05.png | Bin 0 -> 2195 bytes .../osp/bitmaps/720x1280/00_list_process_06.png | Bin 0 -> 2165 bytes .../osp/bitmaps/720x1280/00_list_process_07.png | Bin 0 -> 2154 bytes .../osp/bitmaps/720x1280/00_list_process_08.png | Bin 0 -> 2259 bytes .../osp/bitmaps/720x1280/00_list_process_09.png | Bin 0 -> 2256 bytes .../osp/bitmaps/720x1280/00_list_process_10.png | Bin 0 -> 2170 bytes .../osp/bitmaps/720x1280/00_list_process_11.png | Bin 0 -> 2124 bytes .../osp/bitmaps/720x1280/00_list_process_12.png | Bin 0 -> 2169 bytes .../osp/bitmaps/720x1280/00_list_process_13.png | Bin 0 -> 2206 bytes .../osp/bitmaps/720x1280/00_list_process_14.png | Bin 0 -> 2223 bytes .../osp/bitmaps/720x1280/00_list_process_15.png | Bin 0 -> 2237 bytes .../osp/bitmaps/720x1280/00_list_process_16.png | Bin 0 -> 2150 bytes .../osp/bitmaps/720x1280/00_list_process_17.png | Bin 0 -> 2147 bytes .../osp/bitmaps/720x1280/00_list_process_18.png | Bin 0 -> 2116 bytes .../osp/bitmaps/720x1280/00_list_process_19.png | Bin 0 -> 2217 bytes .../osp/bitmaps/720x1280/00_list_process_20.png | Bin 0 -> 2202 bytes .../osp/bitmaps/720x1280/00_list_process_21.png | Bin 0 -> 2165 bytes .../osp/bitmaps/720x1280/00_list_process_22.png | Bin 0 -> 2110 bytes .../osp/bitmaps/720x1280/00_list_process_23.png | Bin 0 -> 2246 bytes .../osp/bitmaps/720x1280/00_list_process_24.png | Bin 0 -> 2204 bytes .../osp/bitmaps/720x1280/00_list_process_25.png | Bin 0 -> 2131 bytes .../osp/bitmaps/720x1280/00_list_process_26.png | Bin 0 -> 2107 bytes .../osp/bitmaps/720x1280/00_list_process_27.png | Bin 0 -> 2155 bytes .../osp/bitmaps/720x1280/00_list_process_28.png | Bin 0 -> 2185 bytes .../osp/bitmaps/720x1280/00_list_process_29.png | Bin 0 -> 2188 bytes .../osp/bitmaps/720x1280/00_list_process_30.png | Bin 0 -> 2198 bytes .../bitmaps/720x1280/00_list_progress_bar.9.png | Bin 0 -> 968 bytes .../osp/bitmaps/720x1280/00_list_progress_bg.9.png | Bin 0 -> 978 bytes .../bitmaps/720x1280/00_list_slider_icon_bg.9.png | Bin 0 -> 3168 bytes .../720x1280/00_list_slider_icon_bg_effect.9.png | Bin 0 -> 3814 bytes .../00_list_slider_icon_bg_effect_01.9.png | Bin 0 -> 4063 bytes .../bitmaps/720x1280/00_on_button_controller#5.png | Bin 0 -> 5727 bytes .../00_option_panel_contextual_popup_arrow.png | Bin 0 -> 3007 bytes .../bitmaps/720x1280/00_option_panel_handle_bg.png | Bin 0 -> 3469 bytes .../720x1280/00_option_panel_handle_bg_ef.png | Bin 0 -> 3704 bytes .../00_option_panel_handle_bg_ef_press.png | Bin 0 -> 3559 bytes .../720x1280/00_option_panel_handle_bg_p.png | Bin 0 -> 3479 bytes .../720x1280/00_option_panel_handle_bg_p_ef.png | Bin 0 -> 3578 bytes .../720x1280/00_option_panel_handle_bg_press.png | Bin 0 -> 3441 bytes .../osp/bitmaps/720x1280/00_option_tray_bg.9.png | Bin 0 -> 2858 bytes .../bitmaps/720x1280/00_option_tray_bg_ef.9.png | Bin 0 -> 2967 bytes .../bitmaps/720x1280/00_option_tray_tail_bg.png | Bin 0 -> 2944 bytes .../bitmaps/720x1280/00_option_tray_tail_ef.png | Bin 0 -> 3110 bytes .../bitmaps/720x1280/00_overscrolling_bottom.9.png | Bin 0 -> 2832 bytes .../bitmaps/720x1280/00_overscrolling_left.9.png | Bin 0 -> 2835 bytes .../bitmaps/720x1280/00_overscrolling_right.9.png | Bin 0 -> 2835 bytes .../bitmaps/720x1280/00_overscrolling_top.9.png | Bin 0 -> 2836 bytes .../share/osp/bitmaps/720x1280/00_panel_bg.9.png | Bin 0 -> 2858 bytes .../osp/bitmaps/720x1280/00_panel_handle_arrow.png | Bin 0 -> 3175 bytes .../osp/bitmaps/720x1280/00_panel_handle_bg.9.png | Bin 0 -> 3556 bytes .../bitmaps/720x1280/00_panel_handle_bg_ef.9.png | Bin 0 -> 4705 bytes .../720x1280/00_panel_handle_bg_ef_press.9.png | Bin 0 -> 4220 bytes .../bitmaps/720x1280/00_panel_handle_bg_p_ef.9.png | Bin 0 -> 4220 bytes .../bitmaps/720x1280/00_panel_list_press_bg.9.png | Bin 0 -> 2933 bytes .../720x1280/00_panel_list_press_bg_ef.9.png | Bin 0 -> 3104 bytes .../share/osp/bitmaps/720x1280/00_popup_bg.9.png | Bin 0 -> 1295 bytes .../osp/bitmaps/720x1280/00_popup_bg_ef.9.png | Bin 0 -> 1896 bytes .../osp/bitmaps/720x1280/00_popup_bottom_bg.9.png | Bin 0 -> 1004 bytes .../osp/bitmaps/720x1280/00_popup_bubble_bg.9.png | Bin 0 -> 3089 bytes .../bitmaps/720x1280/00_popup_bubble_bg_ef.9.png | Bin 0 -> 1778 bytes .../720x1280/00_popup_bubble_tail_bottom_bg.png | Bin 0 -> 1108 bytes .../720x1280/00_popup_bubble_tail_bottom_ef.png | Bin 0 -> 1631 bytes .../720x1280/00_popup_bubble_tail_left_bg.png | Bin 0 -> 1095 bytes .../720x1280/00_popup_bubble_tail_left_ef.png | Bin 0 -> 1615 bytes .../720x1280/00_popup_bubble_tail_right_bg.png | Bin 0 -> 1089 bytes .../720x1280/00_popup_bubble_tail_right_ef.png | Bin 0 -> 1611 bytes .../720x1280/00_popup_bubble_tail_top_bg.png | Bin 0 -> 1098 bytes .../720x1280/00_popup_bubble_tail_top_ef.png | Bin 0 -> 1548 bytes .../osp/bitmaps/720x1280/00_popup_title_bg.9.png | Bin 0 -> 1010 bytes .../720x1280/00_processing_ani_52x52_00.png | Bin 0 -> 4745 bytes .../720x1280/00_processing_ani_52x52_01.png | Bin 0 -> 4723 bytes .../720x1280/00_processing_ani_52x52_02.png | Bin 0 -> 4750 bytes .../720x1280/00_processing_ani_52x52_03.png | Bin 0 -> 4749 bytes .../720x1280/00_processing_ani_52x52_04.png | Bin 0 -> 4761 bytes .../720x1280/00_processing_ani_52x52_05.png | Bin 0 -> 4756 bytes .../720x1280/00_processing_ani_52x52_06.png | Bin 0 -> 4763 bytes .../720x1280/00_processing_ani_52x52_07.png | Bin 0 -> 4746 bytes .../720x1280/00_processing_ani_52x52_08.png | Bin 0 -> 4727 bytes .../720x1280/00_processing_ani_52x52_09.png | Bin 0 -> 4749 bytes .../share/osp/bitmaps/720x1280/00_progress.9.png | Bin 0 -> 2830 bytes .../osp/bitmaps/720x1280/00_progress_bar.9.png | Bin 0 -> 3034 bytes .../osp/bitmaps/720x1280/00_progress_bar_ef.9.png | Bin 0 -> 3392 bytes .../bitmaps/720x1280/00_progress_bar_ef_m.9.png | Bin 0 -> 3364 bytes .../osp/bitmaps/720x1280/00_progress_bar_m.9.png | Bin 0 -> 3007 bytes .../osp/bitmaps/720x1280/00_progress_bg.9.png | Bin 0 -> 3212 bytes .../osp/bitmaps/720x1280/00_progress_ef.9.png | Bin 0 -> 2858 bytes .../osp/bitmaps/720x1280/00_progress_ef_bg.9.png | Bin 0 -> 4107 bytes .../720x1280/00_reorder_group_list_bg.9.png | Bin 0 -> 2922 bytes .../share/osp/bitmaps/720x1280/00_scroll_bar.9.png | Bin 0 -> 2937 bytes .../osp/bitmaps/720x1280/00_scroll_bar_ef.9.png | Bin 0 -> 3023 bytes .../720x1280/00_scroll_bar_handler_bg.9.png | Bin 0 -> 2986 bytes .../720x1280/00_scroll_bar_handler_bg_ef.9.png | Bin 0 -> 3379 bytes .../bitmaps/720x1280/00_scroll_bar_handler_h.png | Bin 0 -> 2886 bytes .../bitmaps/720x1280/00_scroll_bar_handler_v.png | Bin 0 -> 2868 bytes .../720x1280/00_search_clear_icon_normal.png | Bin 0 -> 1784 bytes .../720x1280/00_search_clear_icon_press.png | Bin 0 -> 3026 bytes .../bitmaps/720x1280/00_search_edit_field_bg.9.png | Bin 0 -> 3028 bytes .../720x1280/00_search_edit_field_bg_ef.9.png | Bin 0 -> 3560 bytes .../share/osp/bitmaps/720x1280/00_search_icon.png | Bin 0 -> 3414 bytes .../osp/bitmaps/720x1280/00_search_icon_ef.png | Bin 0 -> 3386 bytes .../usr/share/osp/bitmaps/720x1280/00_seg_line.png | Bin 0 -> 2815 bytes .../share/osp/bitmaps/720x1280/00_seg_line_tr.png | Bin 0 -> 2804 bytes .../share/osp/bitmaps/720x1280/00_slider_bg.9.png | Bin 0 -> 3222 bytes .../osp/bitmaps/720x1280/00_slider_bg_effect.9.png | Bin 0 -> 1732 bytes .../osp/bitmaps/720x1280/00_slider_handle.9.png | Bin 0 -> 3139 bytes .../osp/bitmaps/720x1280/00_slider_handle.png | Bin 0 -> 1641 bytes .../osp/bitmaps/720x1280/00_slider_handle_dim.png | Bin 0 -> 1134 bytes .../osp/bitmaps/720x1280/00_slider_handle_ef.png | Bin 0 -> 6367 bytes .../bitmaps/720x1280/00_slider_handle_ef_dim.png | Bin 0 -> 6378 bytes .../bitmaps/720x1280/00_slider_handle_ef_press.png | Bin 0 -> 5594 bytes .../bitmaps/720x1280/00_slider_handle_press.png | Bin 0 -> 1190 bytes .../osp/bitmaps/720x1280/00_slider_popup_bg.png | Bin 0 -> 3376 bytes .../osp/bitmaps/720x1280/00_slider_popup_bg_ef.png | Bin 0 -> 3371 bytes .../bitmaps/720x1280/00_slider_popup_bottom_bg.png | Bin 0 -> 784 bytes .../720x1280/00_slider_popup_bottom_bg_ef.png | Bin 0 -> 799 bytes .../osp/bitmaps/720x1280/00_softkey_icon_add.png | Bin 0 -> 3041 bytes .../osp/bitmaps/720x1280/00_softkey_icon_zoom.png | Bin 0 -> 3709 bytes .../osp/bitmaps/720x1280/00_softkey_left_bg.png | Bin 0 -> 3158 bytes .../osp/bitmaps/720x1280/00_softkey_left_bg_ef.png | Bin 0 -> 3299 bytes .../720x1280/00_softkey_left_bg_ef_press.png | Bin 0 -> 3569 bytes .../bitmaps/720x1280/00_softkey_left_bg_p_ef.png | Bin 0 -> 3569 bytes .../bitmaps/720x1280/00_softkey_left_text_bg.png | Bin 0 -> 3209 bytes .../720x1280/00_softkey_left_text_bg_ef.png | Bin 0 -> 3372 bytes .../720x1280/00_softkey_left_text_bg_ef_press.png | Bin 0 -> 3624 bytes .../720x1280/00_softkey_left_text_bg_p_ef.png | Bin 0 -> 3624 bytes .../osp/bitmaps/720x1280/00_softkey_right_bg.png | Bin 0 -> 3171 bytes .../bitmaps/720x1280/00_softkey_right_bg_ef.png | Bin 0 -> 3559 bytes .../720x1280/00_softkey_right_bg_ef_press.png | Bin 0 -> 3543 bytes .../bitmaps/720x1280/00_softkey_right_bg_p_ef.png | Bin 0 -> 3543 bytes .../bitmaps/720x1280/00_softkey_right_text_bg.png | Bin 0 -> 3211 bytes .../720x1280/00_softkey_right_text_bg_ef.png | Bin 0 -> 3626 bytes .../720x1280/00_softkey_right_text_bg_ef_press.png | Bin 0 -> 3580 bytes .../720x1280/00_softkey_right_text_bg_p_ef.png | Bin 0 -> 3580 bytes .../bitmaps/720x1280/00_splite_handler_bg.9.png | Bin 0 -> 2825 bytes .../720x1280/00_splite_handler_bg_ef_h.9.png | Bin 0 -> 2840 bytes .../720x1280/00_splite_handler_bg_ef_v.9.png | Bin 0 -> 2826 bytes .../osp/bitmaps/720x1280/00_splite_handler_h.png | Bin 0 -> 2827 bytes .../osp/bitmaps/720x1280/00_splite_handler_v.png | Bin 0 -> 2824 bytes .../usr/share/osp/bitmaps/720x1280/00_tab_bg.9.png | Bin 0 -> 976 bytes .../share/osp/bitmaps/720x1280/00_tab_focus.9.png | Bin 0 -> 954 bytes .../osp/bitmaps/720x1280/00_tab_icon_more_01.png | Bin 0 -> 3190 bytes .../osp/bitmaps/720x1280/00_tab_icon_more_02.png | Bin 0 -> 3220 bytes .../osp/bitmaps/720x1280/00_tab_move_bg.9.png | Bin 0 -> 2952 bytes .../osp/bitmaps/720x1280/00_tab_move_bg_ef.9.png | Bin 0 -> 3255 bytes .../osp/bitmaps/720x1280/00_tab_press_ef.9.png | Bin 0 -> 2849 bytes .../osp/bitmaps/720x1280/00_thumbs_bg_focus.9.png | Bin 0 -> 2874 bytes .../osp/bitmaps/720x1280/00_thumbs_line_bg.9.png | Bin 0 -> 2871 bytes .../bitmaps/720x1280/00_thumbs_loading_bg.9.png | Bin 0 -> 2861 bytes .../osp/bitmaps/720x1280/00_tick_box_normal.png | Bin 0 -> 2946 bytes .../osp/bitmaps/720x1280/00_time_picker_btn.9.png | Bin 0 -> 3214 bytes .../720x1280/00_time_picker_btn_effect.9.png | Bin 0 -> 3758 bytes .../720x1280/00_time_picker_btn_press_effect.9.png | Bin 0 -> 3902 bytes .../720x1280/00_time_picker_keypad_bg.9.png | Bin 0 -> 2885 bytes .../720x1280/00_time_picker_keypad_button_bg.9.png | Bin 0 -> 2963 bytes .../00_time_picker_keypad_button_bg_ef.9.png | Bin 0 -> 3164 bytes .../bitmaps/720x1280/00_timepicker_number_bg.9.png | Bin 0 -> 978 bytes .../osp/bitmaps/720x1280/00_timepicker_tail.png | Bin 0 -> 2994 bytes .../osp/bitmaps/720x1280/00_timepicker_tail_01.png | Bin 0 -> 3005 bytes .../share/osp/bitmaps/720x1280/00_title_bg.9.png | Bin 0 -> 2858 bytes .../osp/bitmaps/720x1280/00_title_bg_ef.9.png | Bin 0 -> 2882 bytes .../osp/bitmaps/720x1280/00_title_btn_bg.9.png | Bin 0 -> 2926 bytes .../bitmaps/720x1280/00_title_btn_bg_press.9.png | Bin 0 -> 3020 bytes .../720x1280/00_title_button_bg_press.9.png | Bin 0 -> 2969 bytes .../osp/bitmaps/720x1280/00_title_icon_more.png | Bin 0 -> 3247 bytes .../osp/bitmaps/720x1280/00_title_icon_search.png | Bin 0 -> 4362 bytes .../share/osp/bitmaps/720x1280/00_title_line.png | Bin 0 -> 2812 bytes .../share/osp/bitmaps/720x1280/00_toolbar_bg.9.png | Bin 0 -> 2858 bytes .../osp/bitmaps/720x1280/00_toolbar_btn_bg.9.png | Bin 0 -> 2984 bytes .../bitmaps/720x1280/00_toolbar_btn_bg_ef.9.png | Bin 0 -> 3280 bytes .../bitmaps/720x1280/00_toolbar_btn_bg_ef_01.9.png | Bin 0 -> 3234 bytes .../bitmaps/720x1280/00_toolbar_btn_bg_p_ef.9.png | Bin 0 -> 3257 bytes .../bitmaps/720x1280/00_toolbar_btn_focus.9.png | Bin 0 -> 3027 bytes .../osp/bitmaps/720x1280/00_toolbar_button.9.png | Bin 0 -> 8019 bytes .../bitmaps/720x1280/00_toolbar_button_bg.9.png | Bin 0 -> 3731 bytes .../720x1280/00_toolbar_button_bg_center.9.png | Bin 0 -> 2856 bytes .../720x1280/00_toolbar_button_bg_left.9.png | Bin 0 -> 3372 bytes .../720x1280/00_toolbar_button_bg_right.9.png | Bin 0 -> 3353 bytes .../720x1280/00_toolbar_button_center_ef.9.png | Bin 0 -> 2995 bytes .../00_toolbar_button_center_press_ef.9.png | Bin 0 -> 3003 bytes .../bitmaps/720x1280/00_toolbar_button_ef.9.png | Bin 0 -> 7750 bytes .../720x1280/00_toolbar_button_ef_press.9.png | Bin 0 -> 8288 bytes .../720x1280/00_toolbar_button_left_ef.9.png | Bin 0 -> 5708 bytes .../720x1280/00_toolbar_button_left_ef_press.9.png | Bin 0 -> 5846 bytes .../bitmaps/720x1280/00_toolbar_button_press.9.png | Bin 0 -> 8394 bytes .../720x1280/00_toolbar_button_right_ef.9.png | Bin 0 -> 5778 bytes .../00_toolbar_button_right_press_ef.9.png | Bin 0 -> 5913 bytes .../bitmaps/720x1280/00_toolbar_divider_line.9.png | Bin 0 -> 2827 bytes .../share/osp/bitmaps/720x1280/00_toolbar_line.png | Bin 0 -> 2812 bytes .../osp/bitmaps/720x1280/00_toolbar_line_01.png | Bin 0 -> 946 bytes .../osp/bitmaps/720x1280/00_toolbar_press.9.png | Bin 0 -> 2996 bytes .../720x1280/00_toolbar_trans_button_center.9.png | Bin 0 -> 2930 bytes .../00_toolbar_trans_button_center_press.9.png | Bin 0 -> 2973 bytes .../720x1280/00_toolbar_trans_button_left.9.png | Bin 0 -> 5864 bytes .../00_toolbar_trans_button_left_press.9.png | Bin 0 -> 6144 bytes .../720x1280/00_toolbar_trans_button_right.9.png | Bin 0 -> 5992 bytes .../00_toolbar_trans_button_right_press.9.png | Bin 0 -> 6271 bytes .../osp/bitmaps/720x1280/00_transparent_bg.9.png | Bin 0 -> 198 bytes .../bitmaps/720x1280/00_value_progress_bar.9.png | Bin 0 -> 2962 bytes .../720x1280/00_value_progress_bar_effect.9.png | Bin 0 -> 2982 bytes .../bitmaps/720x1280/00_value_progress_bg.9.png | Bin 0 -> 2956 bytes .../720x1280/00_value_progress_bg_effect.9.png | Bin 0 -> 2933 bytes .../720x1280/00_winset_Back_btn_normal.9.png | Bin 0 -> 2963 bytes .../720x1280/00_winset_Back_btn_press.9.png | Bin 0 -> 2973 bytes .../osp/bitmaps/720x1280/00_winset_badge.9.png | Bin 0 -> 4155 bytes .../720x1280/00_winset_control_tabbar_bg.9.png | Bin 0 -> 104 bytes .../720x1280/00_winset_control_toolbar_bg.9.png | Bin 0 -> 2819 bytes .../bitmaps/720x1280/00_winset_divider_line.9.png | Bin 0 -> 2852 bytes .../bitmaps/720x1280/00_winset_list_process_01.png | Bin 0 -> 3940 bytes .../bitmaps/720x1280/00_winset_list_process_02.png | Bin 0 -> 3894 bytes .../bitmaps/720x1280/00_winset_list_process_03.png | Bin 0 -> 3876 bytes .../bitmaps/720x1280/00_winset_list_process_04.png | Bin 0 -> 3969 bytes .../bitmaps/720x1280/00_winset_list_process_05.png | Bin 0 -> 3951 bytes .../bitmaps/720x1280/00_winset_list_process_06.png | Bin 0 -> 3932 bytes .../bitmaps/720x1280/00_winset_list_process_07.png | Bin 0 -> 3908 bytes .../bitmaps/720x1280/00_winset_list_process_08.png | Bin 0 -> 4014 bytes .../bitmaps/720x1280/00_winset_list_process_09.png | Bin 0 -> 4049 bytes .../bitmaps/720x1280/00_winset_list_process_10.png | Bin 0 -> 3974 bytes .../bitmaps/720x1280/00_winset_list_process_11.png | Bin 0 -> 3912 bytes .../bitmaps/720x1280/00_winset_list_process_12.png | Bin 0 -> 3963 bytes .../bitmaps/720x1280/00_winset_list_process_13.png | Bin 0 -> 4000 bytes .../bitmaps/720x1280/00_winset_list_process_14.png | Bin 0 -> 3963 bytes .../bitmaps/720x1280/00_winset_list_process_15.png | Bin 0 -> 4013 bytes .../bitmaps/720x1280/00_winset_list_process_16.png | Bin 0 -> 3939 bytes .../bitmaps/720x1280/00_winset_list_process_17.png | Bin 0 -> 3903 bytes .../bitmaps/720x1280/00_winset_list_process_18.png | Bin 0 -> 3887 bytes .../bitmaps/720x1280/00_winset_list_process_19.png | Bin 0 -> 3982 bytes .../bitmaps/720x1280/00_winset_list_process_20.png | Bin 0 -> 3988 bytes .../bitmaps/720x1280/00_winset_list_process_21.png | Bin 0 -> 3916 bytes .../bitmaps/720x1280/00_winset_list_process_22.png | Bin 0 -> 3932 bytes .../bitmaps/720x1280/00_winset_list_process_23.png | Bin 0 -> 4002 bytes .../bitmaps/720x1280/00_winset_list_process_24.png | Bin 0 -> 3995 bytes .../bitmaps/720x1280/00_winset_list_process_25.png | Bin 0 -> 3932 bytes .../bitmaps/720x1280/00_winset_list_process_26.png | Bin 0 -> 3913 bytes .../bitmaps/720x1280/00_winset_list_process_27.png | Bin 0 -> 3934 bytes .../bitmaps/720x1280/00_winset_list_process_28.png | Bin 0 -> 3979 bytes .../bitmaps/720x1280/00_winset_list_process_29.png | Bin 0 -> 3978 bytes .../bitmaps/720x1280/00_winset_list_process_30.png | Bin 0 -> 3988 bytes .../osp/bitmaps/720x1280/00_winset_thumbs_bg.9.png | Bin 0 -> 2914 bytes .../osp/bitmaps/720x1280/00_winset_title_bg.9.png | Bin 0 -> 95 bytes .../720x1280/04_textinput_qwerty_button.9.png | Bin 0 -> 3439 bytes .../720x1280/04_textinput_qwerty_button_01.9.png | Bin 0 -> 3420 bytes .../04_textinput_qwerty_button_press.9.png | Bin 0 -> 1718 bytes .../osp/bitmaps/720x1280/Off_Background#5.png | Bin 0 -> 4610 bytes .../share/osp/bitmaps/720x1280/On_Background#5.png | Bin 0 -> 4465 bytes .../usr/share/osp/bitmaps/720x1280/TTS_focus.9.png | Bin 0 -> 3207 bytes .../share/osp/bitmaps/720x1280/TTS_popup_bg.9.png | Bin 0 -> 3659 bytes .../bitmaps/720x1280/black/00_btn_circle_bg_ef.png | Bin 0 -> 4391 bytes .../720x1280/black/00_button_01_bg_ef.9.png | Bin 0 -> 3208 bytes .../720x1280/black/00_button_edit_bg_ef.9.png | Bin 0 -> 3094 bytes .../720x1280/black/00_button_radio_normal1.png | Bin 0 -> 4623 bytes .../720x1280/black/00_button_radio_normal2.png | Bin 0 -> 3929 bytes .../720x1280/black/00_button_seg_bg_ef.9.png | Bin 0 -> 3279 bytes .../720x1280/black/00_button_seg_f_bg_ef_01.9.png | Bin 0 -> 3133 bytes .../720x1280/black/00_button_seg_f_bg_ef_02.9.png | Bin 0 -> 2903 bytes .../720x1280/black/00_button_seg_f_bg_ef_03.9.png | Bin 0 -> 3067 bytes .../osp/bitmaps/720x1280/black/00_check_bg.png | Bin 0 -> 3070 bytes .../720x1280/black/00_color_picker_bg.9.png | Bin 0 -> 2884 bytes .../720x1280/black/00_dialogue_group_bg_line.9.png | Bin 0 -> 2890 bytes .../720x1280/black/00_edit_field_bg_ef.9.png | Bin 0 -> 3186 bytes .../720x1280/black/00_groupedlist_bg_01.9.png | Bin 0 -> 3059 bytes .../black/00_groupedlist_bottom_bg_01.9.png | Bin 0 -> 3166 bytes .../black/00_groupedlist_center_bg_01.9.png | Bin 0 -> 3007 bytes .../720x1280/black/00_groupedlist_top_bg_01.9.png | Bin 0 -> 3193 bytes .../720x1280/black/00_indexlist_bg_ef.9.png | Bin 0 -> 2871 bytes .../720x1280/black/00_indexlist_icon_line.png | Bin 0 -> 2822 bytes .../720x1280/black/00_list_process_01_32x32.png | Bin 0 -> 3449 bytes .../720x1280/black/00_list_process_02_32x32.png | Bin 0 -> 3418 bytes .../720x1280/black/00_list_process_03_32x32.png | Bin 0 -> 3373 bytes .../720x1280/black/00_list_process_04_32x32.png | Bin 0 -> 3446 bytes .../720x1280/black/00_list_process_05_32x32.png | Bin 0 -> 3467 bytes .../720x1280/black/00_list_process_06_32x32.png | Bin 0 -> 3476 bytes .../720x1280/black/00_list_process_07_32x32.png | Bin 0 -> 3460 bytes .../720x1280/black/00_list_process_08_32x32.png | Bin 0 -> 3475 bytes .../720x1280/black/00_list_process_09_32x32.png | Bin 0 -> 3453 bytes .../720x1280/black/00_list_process_10_32x32.png | Bin 0 -> 3437 bytes .../720x1280/black/00_list_process_11_32x32.png | Bin 0 -> 3440 bytes .../720x1280/black/00_list_process_12_32x32.png | Bin 0 -> 3456 bytes .../720x1280/black/00_list_process_13_32x32.png | Bin 0 -> 3472 bytes .../720x1280/black/00_list_process_14_32x32.png | Bin 0 -> 3453 bytes .../720x1280/black/00_list_process_15_32x32.png | Bin 0 -> 3458 bytes .../720x1280/black/00_list_process_16_32x32.png | Bin 0 -> 3441 bytes .../720x1280/black/00_list_process_17_32x32.png | Bin 0 -> 3412 bytes .../720x1280/black/00_list_process_18_32x32.png | Bin 0 -> 3375 bytes .../720x1280/black/00_list_process_19_32x32.png | Bin 0 -> 3451 bytes .../720x1280/black/00_list_process_20_32x32.png | Bin 0 -> 3469 bytes .../720x1280/black/00_list_process_21_32x32.png | Bin 0 -> 3459 bytes .../720x1280/black/00_list_process_22_32x32.png | Bin 0 -> 3452 bytes .../720x1280/black/00_list_process_23_32x32.png | Bin 0 -> 3451 bytes .../720x1280/black/00_list_process_24_32x32.png | Bin 0 -> 3444 bytes .../720x1280/black/00_list_process_25_32x32.png | Bin 0 -> 3423 bytes .../720x1280/black/00_list_process_26_32x32.png | Bin 0 -> 3423 bytes .../720x1280/black/00_list_process_27_32x32.png | Bin 0 -> 3447 bytes .../720x1280/black/00_list_process_28_32x32.png | Bin 0 -> 3452 bytes .../720x1280/black/00_list_process_29_32x32.png | Bin 0 -> 3450 bytes .../720x1280/black/00_list_process_30_32x32.png | Bin 0 -> 3460 bytes .../bitmaps/720x1280/black/00_popup_bg_ef.9.png | Bin 0 -> 3865 bytes .../720x1280/black/00_popup_bottom_bg.9.png | Bin 0 -> 2956 bytes .../720x1280/black/00_popup_bubble_bg_ef.9.png | Bin 0 -> 3671 bytes .../black/00_popup_bubble_tail_bottom_ef.png | Bin 0 -> 3696 bytes .../black/00_popup_bubble_tail_left_ef.png | Bin 0 -> 3434 bytes .../black/00_popup_bubble_tail_right_ef.png | Bin 0 -> 3671 bytes .../720x1280/black/00_popup_bubble_tail_top_ef.png | Bin 0 -> 3356 bytes .../720x1280/black/00_popup_button_bg_ef.9.png | Bin 0 -> 3208 bytes .../bitmaps/720x1280/black/00_popup_title_bg.9.png | Bin 0 -> 2981 bytes .../720x1280/black/00_popup_title_bg_ef.9.png | Bin 0 -> 2954 bytes .../720x1280/black/00_reorder_group_list_bg.9.png | Bin 0 -> 3016 bytes .../720x1280/black/00_scroll_bar_handler_h.png | Bin 0 -> 2847 bytes .../720x1280/black/00_scroll_bar_handler_v.png | Bin 0 -> 2857 bytes .../720x1280/black/00_slider_handle_bg_ef.9.png | Bin 0 -> 3135 bytes .../osp/bitmaps/720x1280/black/00_tab_bg_ef.9.png | Bin 0 -> 3260 bytes .../720x1280/black/00_tab_bg_focus_ef.9.png | Bin 0 -> 3350 bytes .../bitmaps/720x1280/black/00_tab_bg_line_ef.9.png | Bin 0 -> 2939 bytes .../bitmaps/720x1280/black/00_title_bg_ef.9.png | Bin 0 -> 2879 bytes .../720x1280/black/00_title_btn_bg_ef.9.png | Bin 0 -> 3133 bytes .../black/00_title_button_bg_ef_press.9.png | Bin 0 -> 3270 bytes .../720x1280/black/00_title_option_btn_bg_ef.9.png | Bin 0 -> 3244 bytes .../bitmaps/720x1280/black/00_toolbar_bg_ef.9.png | Bin 0 -> 2881 bytes .../720x1280/black/00_toolbar_ef_press.9.png | Bin 0 -> 3295 bytes .../720x1280/black/00_toolbar_press_ef.9.png | Bin 0 -> 3295 bytes .../720x1280/black/00_toolbar_tab_bg_ef.9.png | Bin 0 -> 3268 bytes .../black/00_toolbar_tab_bg_focus_ef.9.png | Bin 0 -> 3283 bytes .../720x1280/black/00_toolbar_tab_bg_line_ef.9.png | Bin 0 -> 2948 bytes .../bitmaps/720x1280/black/00_winset_badge.9.png | Bin 0 -> 4163 bytes .../bitmaps/720x1280/copy&paste_Icon02_left.png | Bin 0 -> 3906 bytes .../720x1280/copy&paste_Icon02_left_press.png | Bin 0 -> 4083 bytes .../bitmaps/720x1280/copy&paste_Icon02_right.png | Bin 0 -> 3952 bytes .../720x1280/copy&paste_Icon02_right_press.png | Bin 0 -> 4143 bytes .../osp/bitmaps/720x1280/copy&paste_Icon_left.png | Bin 0 -> 3806 bytes .../720x1280/copy&paste_Icon_left_press.png | Bin 0 -> 3932 bytes .../osp/bitmaps/720x1280/copy&paste_Icon_right.png | Bin 0 -> 3919 bytes .../720x1280/copy&paste_Icon_right_press.png | Bin 0 -> 4120 bytes .../bitmaps/720x1280/copy&paste_icon_search.png | Bin 0 -> 3393 bytes .../bitmaps/720x1280/white/00_btn_circle_bg_ef.png | Bin 0 -> 5333 bytes .../720x1280/white/00_button_01_bg_ef.9.png | Bin 0 -> 3433 bytes .../720x1280/white/00_button_edit_bg_ef.9.png | Bin 0 -> 3081 bytes .../720x1280/white/00_button_radio_normal1.png | Bin 0 -> 5131 bytes .../720x1280/white/00_button_radio_normal2.png | Bin 0 -> 4378 bytes .../720x1280/white/00_button_seg_bg_ef.9.png | Bin 0 -> 3213 bytes .../720x1280/white/00_button_seg_f_bg_ef_01.9.png | Bin 0 -> 3071 bytes .../720x1280/white/00_button_seg_f_bg_ef_02.9.png | Bin 0 -> 2916 bytes .../720x1280/white/00_button_seg_f_bg_ef_03.9.png | Bin 0 -> 3073 bytes .../osp/bitmaps/720x1280/white/00_check_bg.png | Bin 0 -> 3151 bytes .../720x1280/white/00_color_picker_bg.9.png | Bin 0 -> 2888 bytes .../720x1280/white/00_dialogue_group_bg_line.9.png | Bin 0 -> 2912 bytes .../720x1280/white/00_edit_field_bg_ef.9.png | Bin 0 -> 3056 bytes .../720x1280/white/00_edit_field_round_bg.9.png | Bin 0 -> 3248 bytes .../720x1280/white/00_edit_field_round_bg_ef.9.png | Bin 0 -> 3870 bytes .../720x1280/white/00_groupedlist_bg_01.9.png | Bin 0 -> 3068 bytes .../white/00_groupedlist_bottom_bg_01.9.png | Bin 0 -> 3170 bytes .../white/00_groupedlist_center_bg_01.9.png | Bin 0 -> 3001 bytes .../720x1280/white/00_groupedlist_top_bg_01.9.png | Bin 0 -> 3202 bytes .../720x1280/white/00_indexlist_bg_ef.9.png | Bin 0 -> 2891 bytes .../720x1280/white/00_indexlist_icon_line.png | Bin 0 -> 2824 bytes .../720x1280/white/00_list_process_01_32x32.png | Bin 0 -> 1614 bytes .../720x1280/white/00_list_process_02_32x32.png | Bin 0 -> 1577 bytes .../720x1280/white/00_list_process_03_32x32.png | Bin 0 -> 1551 bytes .../720x1280/white/00_list_process_04_32x32.png | Bin 0 -> 1630 bytes .../720x1280/white/00_list_process_05_32x32.png | Bin 0 -> 1624 bytes .../720x1280/white/00_list_process_06_32x32.png | Bin 0 -> 1604 bytes .../720x1280/white/00_list_process_07_32x32.png | Bin 0 -> 1593 bytes .../720x1280/white/00_list_process_08_32x32.png | Bin 0 -> 1655 bytes .../720x1280/white/00_list_process_09_32x32.png | Bin 0 -> 1630 bytes .../720x1280/white/00_list_process_10_32x32.png | Bin 0 -> 1613 bytes .../720x1280/white/00_list_process_11_32x32.png | Bin 0 -> 1585 bytes .../720x1280/white/00_list_process_12_32x32.png | Bin 0 -> 1607 bytes .../720x1280/white/00_list_process_13_32x32.png | Bin 0 -> 1618 bytes .../720x1280/white/00_list_process_14_32x32.png | Bin 0 -> 1643 bytes .../720x1280/white/00_list_process_15_32x32.png | Bin 0 -> 1634 bytes .../720x1280/white/00_list_process_16_32x32.png | Bin 0 -> 1600 bytes .../720x1280/white/00_list_process_17_32x32.png | Bin 0 -> 1591 bytes .../720x1280/white/00_list_process_18_32x32.png | Bin 0 -> 1561 bytes .../720x1280/white/00_list_process_19_32x32.png | Bin 0 -> 1608 bytes .../720x1280/white/00_list_process_20_32x32.png | Bin 0 -> 1648 bytes .../720x1280/white/00_list_process_21_32x32.png | Bin 0 -> 1625 bytes .../720x1280/white/00_list_process_22_32x32.png | Bin 0 -> 1568 bytes .../720x1280/white/00_list_process_23_32x32.png | Bin 0 -> 1639 bytes .../720x1280/white/00_list_process_24_32x32.png | Bin 0 -> 1604 bytes .../720x1280/white/00_list_process_25_32x32.png | Bin 0 -> 1571 bytes .../720x1280/white/00_list_process_26_32x32.png | Bin 0 -> 1547 bytes .../720x1280/white/00_list_process_27_32x32.png | Bin 0 -> 1586 bytes .../720x1280/white/00_list_process_28_32x32.png | Bin 0 -> 1623 bytes .../720x1280/white/00_list_process_29_32x32.png | Bin 0 -> 1610 bytes .../720x1280/white/00_list_process_30_32x32.png | Bin 0 -> 1636 bytes .../bitmaps/720x1280/white/00_popup_bg_ef.9.png | Bin 0 -> 3626 bytes .../720x1280/white/00_popup_bottom_bg.9.png | Bin 0 -> 2952 bytes .../720x1280/white/00_popup_bubble_bg_ef.9.png | Bin 0 -> 3684 bytes .../white/00_popup_bubble_tail_bottom_ef.png | Bin 0 -> 3713 bytes .../white/00_popup_bubble_tail_left_ef.png | Bin 0 -> 3446 bytes .../white/00_popup_bubble_tail_right_ef.png | Bin 0 -> 3668 bytes .../720x1280/white/00_popup_bubble_tail_top_ef.png | Bin 0 -> 3403 bytes .../720x1280/white/00_popup_button_bg_ef.9.png | Bin 0 -> 3433 bytes .../bitmaps/720x1280/white/00_popup_title_bg.9.png | Bin 0 -> 2974 bytes .../720x1280/white/00_popup_title_bg_ef.9.png | Bin 0 -> 3219 bytes .../720x1280/white/00_reorder_group_list_bg.9.png | Bin 0 -> 3031 bytes .../720x1280/white/00_scroll_bar_handler_h.png | Bin 0 -> 2886 bytes .../720x1280/white/00_scroll_bar_handler_v.png | Bin 0 -> 2868 bytes .../osp/bitmaps/720x1280/white/00_slider_bg.9.png | Bin 0 -> 3222 bytes .../bitmaps/720x1280/white/00_slider_handle.9.png | Bin 0 -> 3194 bytes .../720x1280/white/00_slider_handle_bg_ef.9.png | Bin 0 -> 3145 bytes .../720x1280/white/00_slider_handle_dim.9.png | Bin 0 -> 3165 bytes .../720x1280/white/00_slider_handle_press.9.png | Bin 0 -> 3239 bytes .../bitmaps/720x1280/white/00_title_bg_ef.9.png | Bin 0 -> 2910 bytes .../720x1280/white/00_title_btn_bg_ef.9.png | Bin 0 -> 3122 bytes .../white/00_title_button_bg_ef_press.9.png | Bin 0 -> 3262 bytes .../720x1280/white/00_title_option_btn_bg_ef.9.png | Bin 0 -> 3217 bytes .../bitmaps/720x1280/white/00_toolbar_bg_ef.9.png | Bin 0 -> 2910 bytes .../720x1280/white/00_toolbar_ef_press.9.png | Bin 0 -> 3329 bytes .../720x1280/white/00_toolbar_press_ef.9.png | Bin 0 -> 3329 bytes .../720x1280/white/00_toolbar_tab_bg_ef.9.png | Bin 0 -> 3182 bytes .../white/00_toolbar_tab_bg_focus_ef.9.png | Bin 0 -> 3258 bytes .../720x1280/white/00_toolbar_tab_bg_line_ef.9.png | Bin 0 -> 2945 bytes .../bitmaps/720x1280/white/00_winset_badge.9.png | Bin 0 -> 4177 bytes .../usr/share/osp/effects/gallery_page_curling.eff | Bin 0 -> 6305 bytes res/common/usr/share/osp/themes/black.xml | 244 + res/common/usr/share/osp/themes/white.xml | 243 + src/CMakeLists.txt | 42 + src/app/FAppUiApp.cpp | 176 + src/app/FApp_AppFrame.cpp | 162 + src/app/FApp_AppResourceBitmap.cpp | 200 + src/app/FApp_AppResourceBitmap.h | 112 + src/app/FApp_AppResourceBitmapUtil.cpp | 559 ++ src/app/FApp_AppResourceBitmapUtil.h | 118 + src/app/FApp_UiAppImpl.cpp | 522 ++ src/app/inc/FApp_AppFrame.h | 123 + src/app/inc/FApp_UiAppImpl.h | 331 + src/graphics/CMakeLists.txt | 108 + src/graphics/FGrpBitmap.cpp | 356 + src/graphics/FGrpBufferInfo.cpp | 136 + src/graphics/FGrpCanvas.cpp | 763 ++ src/graphics/FGrpColor.cpp | 235 + src/graphics/FGrpCoordinateSystem.cpp | 120 + src/graphics/FGrpDimension.cpp | 119 + src/graphics/FGrpEnrichedText.cpp | 424 + src/graphics/FGrpFloatDimension.cpp | 134 + src/graphics/FGrpFloatMatrix4.cpp | 699 ++ src/graphics/FGrpFloatPoint.cpp | 183 + src/graphics/FGrpFloatPoint3.cpp | 177 + src/graphics/FGrpFloatRectangle.cpp | 334 + src/graphics/FGrpFloatVector4.cpp | 225 + src/graphics/FGrpFont.cpp | 304 + src/graphics/FGrpPoint.cpp | 168 + src/graphics/FGrpRectangle.cpp | 321 + src/graphics/FGrpTextElement.cpp | 237 + src/graphics/FGrp_Bitmap.cpp | 1139 +++ src/graphics/FGrp_Bitmap.h | 142 + src/graphics/FGrp_BitmapCoordHolder.h | 51 + src/graphics/FGrp_BitmapImpl.cpp | 1828 +++++ src/graphics/FGrp_BitmapScreenCapture.cpp | 209 + src/graphics/FGrp_BitmapTool.cpp | 52 + src/graphics/FGrp_BitmapUtil.cpp | 302 + src/graphics/FGrp_BitmapUtil.h | 218 + src/graphics/FGrp_BufferInfoImpl.cpp | 164 + src/graphics/FGrp_Callback.cpp | 48 + src/graphics/FGrp_Callback.h | 42 + src/graphics/FGrp_Canvas.cpp | 3932 +++++++++ src/graphics/FGrp_Canvas.h | 266 + src/graphics/FGrp_CanvasCairo.cpp | 727 ++ src/graphics/FGrp_CanvasCairo.h | 108 + src/graphics/FGrp_CanvasCoordHolder.h | 57 + src/graphics/FGrp_CanvasGpArc.cpp | 1640 ++++ src/graphics/FGrp_CanvasGpEllipse.cpp | 537 ++ src/graphics/FGrp_CanvasGpFillPolygon.cpp | 402 + src/graphics/FGrp_CanvasGpLine.cpp | 2393 ++++++ src/graphics/FGrp_CanvasGpPrimitive.h | 492 ++ src/graphics/FGrp_CanvasGpRoundRect.cpp | 1097 +++ src/graphics/FGrp_CanvasGpTriangle.cpp | 242 + src/graphics/FGrp_CanvasImpl.cpp | 2185 +++++ src/graphics/FGrp_CanvasImplPrivate.h | 432 + src/graphics/FGrp_CanvasPixman.cpp | 348 + src/graphics/FGrp_CanvasPixman.h | 56 + src/graphics/FGrp_CanvasRasterOp.cpp | 225 + src/graphics/FGrp_CanvasRasterOp.h | 44 + src/graphics/FGrp_CanvasShow.cpp | 184 + src/graphics/FGrp_CoordinateSystem.cpp | 466 ++ src/graphics/FGrp_CoordinateSystemDeviceSpec.cpp | 1683 ++++ src/graphics/FGrp_CoordinateSystemImpl.cpp | 698 ++ src/graphics/FGrp_CoordinateSystemImpl.h | 90 + src/graphics/FGrp_EnrichedTextImpl.cpp | 1494 ++++ src/graphics/FGrp_Font.cpp | 1945 +++++ src/graphics/FGrp_Font.h | 183 + src/graphics/FGrp_FontBidiManager.cpp | 393 + src/graphics/FGrp_FontBidiManager.h | 45 + src/graphics/FGrp_FontCache.cpp | 423 + src/graphics/FGrp_FontCache.h | 70 + src/graphics/FGrp_FontFt2.cpp | 1219 +++ src/graphics/FGrp_FontFt2.h | 102 + src/graphics/FGrp_FontImpl.cpp | 560 ++ src/graphics/FGrp_FontMemoryManager.cpp | 232 + src/graphics/FGrp_FontMemoryManager.h | 68 + src/graphics/FGrp_FontRsrcManager.cpp | 1223 +++ src/graphics/FGrp_FontRsrcManager.h | 105 + src/graphics/FGrp_FontUtil.h | 62 + src/graphics/FGrp_IFont.h | 188 + src/graphics/FGrp_NonScale.cpp | 200 + src/graphics/FGrp_ResUtil.h | 1335 ++++ src/graphics/FGrp_Screen.cpp | 92 + src/graphics/FGrp_TextElementImpl.cpp | 1110 +++ src/graphics/effect/FGrp_Effect.h | 83 + src/graphics/effect/FGrp_EffectAlpha.cpp | 346 + src/graphics/effect/FGrp_EffectFlip.cpp | 117 + src/graphics/effect/FGrp_EffectFunc.h | 377 + src/graphics/effect/FGrp_EffectManip.cpp | 181 + src/graphics/effect/FGrp_EffectRotate.cpp | 909 +++ src/graphics/effect/FGrp_EffectScale.cpp | 533 ++ src/graphics/effect/FGrp_EffectScale2.cpp | 1268 +++ src/graphics/inc/FGrp_BitmapImpl.h | 249 + src/graphics/inc/FGrp_BitmapTool.h | 55 + src/graphics/inc/FGrp_BufferInfoImpl.h | 156 + src/graphics/inc/FGrp_CanvasImpl.h | 280 + src/graphics/inc/FGrp_CanvasTextureImpl.h | 69 + src/graphics/inc/FGrp_CoordinateSystem.h | 236 + src/graphics/inc/FGrp_EnrichedTextImpl.h | 168 + src/graphics/inc/FGrp_FontImpl.h | 187 + src/graphics/inc/FGrp_GlPlayerImpl.h | 122 + src/graphics/inc/FGrp_NonScale.h | 68 + src/graphics/inc/FGrp_Screen.h | 41 + src/graphics/inc/FGrp_TextCommon.h | 208 + src/graphics/inc/FGrp_TextElementImpl.h | 135 + src/graphics/inc/FGrp_TextTextCutLink.h | 114 + src/graphics/inc/FGrp_TextTextElement.h | 121 + src/graphics/inc/FGrp_TextTextImage.h | 106 + src/graphics/inc/FGrp_TextTextObject.h | 332 + src/graphics/inc/FGrp_TextTextSimple.h | 166 + src/graphics/inc/FGrp_VideoTextureImpl.h | 66 + src/graphics/opengl/CMakeLists.txt | 40 + src/graphics/opengl/FGrpCanvasTexture.cpp | 68 + src/graphics/opengl/FGrpEgl.cpp | 2315 ++++++ src/graphics/opengl/FGrpGlPlayer.cpp | 180 + src/graphics/opengl/FGrpGles1.cpp | 3044 +++++++ src/graphics/opengl/FGrpGles2.cpp | 2737 +++++++ src/graphics/opengl/FGrpVideoTexture.cpp | 76 + src/graphics/opengl/FGrp_CanvasTexture.cpp | 170 + src/graphics/opengl/FGrp_CanvasTexture.h | 64 + src/graphics/opengl/FGrp_CanvasTextureImpl.cpp | 82 + src/graphics/opengl/FGrp_GlPlayerImpl.cpp | 474 ++ src/graphics/opengl/FGrp_VideoTexture.cpp | 491 ++ src/graphics/opengl/FGrp_VideoTexture.h | 127 + src/graphics/opengl/FGrp_VideoTextureImpl.cpp | 95 + src/graphics/text/FGrp_TextTextColumn.cpp | 2190 ++++++ src/graphics/text/FGrp_TextTextColumn.h | 251 + src/graphics/text/FGrp_TextTextComposite.cpp | 4951 ++++++++++++ src/graphics/text/FGrp_TextTextComposite.h | 312 + src/graphics/text/FGrp_TextTextCutLink.cpp | 328 + src/graphics/text/FGrp_TextTextCutLinkListInfo.cpp | 579 ++ src/graphics/text/FGrp_TextTextCutLinkListInfo.h | 92 + src/graphics/text/FGrp_TextTextCutLinkParser.cpp | 814 ++ src/graphics/text/FGrp_TextTextCutLinkParser.h | 81 + src/graphics/text/FGrp_TextTextElement.cpp | 218 + src/graphics/text/FGrp_TextTextImage.cpp | 415 + src/graphics/text/FGrp_TextTextLine.cpp | 352 + src/graphics/text/FGrp_TextTextLine.h | 146 + src/graphics/text/FGrp_TextTextObject.cpp | 3882 +++++++++ src/graphics/text/FGrp_TextTextSimple.cpp | 1345 ++++ src/graphics/text/FGrp_TextTextSimpleList.cpp | 562 ++ src/graphics/text/FGrp_TextTextSimpleList.h | 92 + src/graphics/text/FGrp_TextTextUtility.cpp | 377 + src/graphics/text/FGrp_TextTextUtility.h | 71 + src/graphics/text/FGrp_TextTextWidthManager.cpp | 2352 ++++++ src/graphics/text/FGrp_TextTextWidthManager.h | 120 + src/graphics/util/FGrp_Util.cpp | 515 ++ src/graphics/util/FGrp_Util.h | 338 + src/graphics/util/FGrp_UtilPixmap.cpp | 449 ++ src/graphics/util/FGrp_UtilPixmap.h | 201 + src/graphics/util/FGrp_UtilScratchpad.cpp | 228 + src/graphics/util/FGrp_UtilScratchpad.h | 261 + src/graphics/util/FGrp_UtilTemplate.h | 560 ++ src/graphics/util/FGrp_UtilType.h | 143 + src/ui/CMakeLists.txt | 717 ++ src/ui/FUiAccessibilityContainer.cpp | 134 + src/ui/FUiAccessibilityElement.cpp | 117 + src/ui/FUiCardLayout.cpp | 62 + src/ui/FUiClipboard.cpp | 149 + src/ui/FUiClipboardItem.cpp | 79 + src/ui/FUiContainer.cpp | 369 + src/ui/FUiControl.cpp | 1177 +++ src/ui/FUiCustomControlBase.cpp | 92 + src/ui/FUiDataBindingContext.cpp | 115 + src/ui/FUiFocusManager.cpp | 80 + src/ui/FUiGridLayout.cpp | 324 + src/ui/FUiHorizontalBoxLayout.cpp | 238 + src/ui/FUiInputConnection.cpp | 232 + src/ui/FUiKeyEventManager.cpp | 100 + src/ui/FUiKeyboardMap.cpp | 2158 +++++ src/ui/FUiLayout.cpp | 60 + src/ui/FUiRelativeLayout.cpp | 220 + src/ui/FUiSystemUtil.cpp | 297 + src/ui/FUiTouch.cpp | 253 + src/ui/FUiTouchEventInfo.cpp | 145 + src/ui/FUiTouchEventManager.cpp | 70 + src/ui/FUiTouchFlickGestureDetector.cpp | 103 + src/ui/FUiTouchGestureDetector.cpp | 175 + src/ui/FUiTouchLongPressGestureDetector.cpp | 137 + src/ui/FUiTouchPanningGestureDetector.cpp | 105 + src/ui/FUiTouchPinchGestureDetector.cpp | 92 + src/ui/FUiTouchRotationGestureDetector.cpp | 98 + src/ui/FUiTouchTapGestureDetector.cpp | 158 + src/ui/FUiUiConfiguration.cpp | 56 + src/ui/FUiVariant.cpp | 1385 ++++ src/ui/FUiVerticalBoxLayout.cpp | 231 + src/ui/FUiWindow.cpp | 156 + src/ui/FUi_AccessibilityContainer.cpp | 654 ++ src/ui/FUi_AccessibilityContainerImpl.cpp | 339 + src/ui/FUi_AccessibilityElement.cpp | 293 + src/ui/FUi_AccessibilityElementImpl.cpp | 202 + src/ui/FUi_AccessibilityGesture.cpp | 81 + src/ui/FUi_AccessibilityManager.cpp | 1994 +++++ src/ui/FUi_AccessibilitySystemSettingLoader.cpp | 74 + src/ui/FUi_AccessibilityTtsPlayer.cpp | 161 + src/ui/FUi_ActiveWindowEvent.cpp | 141 + src/ui/FUi_ActiveWindowEvent.h | 52 + src/ui/FUi_CardLayoutImpl.cpp | 107 + src/ui/FUi_CardLayoutImpl.h | 135 + src/ui/FUi_Clipboard.cpp | 985 +++ src/ui/FUi_Clipboard.h | 97 + src/ui/FUi_ClipboardImpl.cpp | 297 + src/ui/FUi_ClipboardImpl.h | 73 + src/ui/FUi_ClipboardItem.cpp | 127 + src/ui/FUi_ClipboardItem.h | 61 + src/ui/FUi_ClipboardItemImpl.cpp | 131 + src/ui/FUi_ClipboardItemImpl.h | 66 + src/ui/FUi_ContainerImpl.cpp | 737 ++ src/ui/FUi_Control.cpp | 4309 ++++++++++ src/ui/FUi_ControlImpl.cpp | 3545 +++++++++ src/ui/FUi_ControlImplManager.cpp | 365 + src/ui/FUi_ControlManager.cpp | 1684 ++++ src/ui/FUi_CoordinateSystemUtils.cpp | 141 + src/ui/FUi_CustomControlBaseImpl.cpp | 132 + src/ui/FUi_DataBinding.cpp | 1442 ++++ src/ui/FUi_DataBinding.h | 88 + src/ui/FUi_DataBindingContext.cpp | 241 + src/ui/FUi_DataBindingContext.h | 77 + src/ui/FUi_DataBindingContextImpl.cpp | 167 + src/ui/FUi_DataBindingContextImpl.h | 84 + src/ui/FUi_DragDropEvent.cpp | 155 + src/ui/FUi_DragDropEventArg.cpp | 98 + src/ui/FUi_EcoreEvas.cpp | 3407 ++++++++ src/ui/FUi_EcoreEvasMgr.cpp | 113 + src/ui/FUi_EflUiEventManager.cpp | 1302 +++ src/ui/FUi_EflUiEventManager.h | 75 + src/ui/FUi_EflWindow.cpp | 87 + src/ui/FUi_EflWindow.h | 63 + src/ui/FUi_ErrorMessages.cpp | 25 + src/ui/FUi_FingerInfo.cpp | 126 + src/ui/FUi_FocusManagerImpl.cpp | 122 + src/ui/FUi_GridLayoutImpl.cpp | 456 ++ src/ui/FUi_GridLayoutImpl.h | 364 + src/ui/FUi_HorizontalBoxLayoutImpl.cpp | 273 + src/ui/FUi_HorizontalBoxLayoutImpl.h | 278 + src/ui/FUi_InputConnectionImpl.cpp | 1341 ++++ src/ui/FUi_InputConnectionImpl.h | 127 + src/ui/FUi_KeyEventManager.cpp | 299 + src/ui/FUi_KeyEventManagerImpl.cpp | 237 + src/ui/FUi_LayoutImpl.cpp | 541 ++ src/ui/FUi_LayoutImpl.h | 309 + src/ui/FUi_Matrix3Df.cpp | 854 ++ src/ui/FUi_ModalLoopManager.cpp | 245 + src/ui/FUi_OrientationAgent.cpp | 260 + src/ui/FUi_OrientationAgent.h | 70 + src/ui/FUi_PropertyBase.cpp | 110 + src/ui/FUi_PropertyUtils.cpp | 172 + src/ui/FUi_PublicOrientationEvent.cpp | 149 + src/ui/FUi_RelativeLayoutImpl.cpp | 324 + src/ui/FUi_RelativeLayoutImpl.h | 271 + src/ui/FUi_ResourceManager.cpp | 1111 +++ src/ui/FUi_TouchEventArg.cpp | 97 + src/ui/FUi_TouchEventInfoImpl.cpp | 103 + src/ui/FUi_TouchEventManagerImpl.cpp | 131 + src/ui/FUi_TouchFlickGestureDetector.cpp | 569 ++ src/ui/FUi_TouchFlickGestureDetectorImpl.cpp | 112 + src/ui/FUi_TouchGestureDetector.cpp | 1175 +++ src/ui/FUi_TouchGestureDetectorImpl.cpp | 358 + src/ui/FUi_TouchGestureTimerManager.cpp | 237 + src/ui/FUi_TouchGestureTimerManager.h | 68 + src/ui/FUi_TouchLongPressGestureDetector.cpp | 384 + src/ui/FUi_TouchLongPressGestureDetectorImpl.cpp | 128 + src/ui/FUi_TouchManager.cpp | 992 +++ src/ui/FUi_TouchPanningGestureDetector.cpp | 374 + src/ui/FUi_TouchPanningGestureDetectorImpl.cpp | 195 + src/ui/FUi_TouchPinchGestureDetector.cpp | 267 + src/ui/FUi_TouchPinchGestureDetectorImpl.cpp | 104 + src/ui/FUi_TouchRotationGestureDetector.cpp | 396 + src/ui/FUi_TouchRotationGestureDetectorImpl.cpp | 103 + src/ui/FUi_TouchTapGestureDetector.cpp | 437 + src/ui/FUi_TouchTapGestureDetectorImpl.cpp | 138 + src/ui/FUi_UiBuilder.cpp | 466 ++ src/ui/FUi_UiBuilderControl.cpp | 429 + src/ui/FUi_UiBuilderControlElement.cpp | 66 + src/ui/FUi_UiBuilderControlItem.cpp | 95 + src/ui/FUi_UiBuilderControlLayout.cpp | 138 + src/ui/FUi_UiBuilderControlMaker.cpp | 1832 +++++ src/ui/FUi_UiBuilderControlTable.cpp | 201 + src/ui/FUi_UiBuilderXmlHandler.cpp | 409 + src/ui/FUi_UiEvent.cpp | 192 + src/ui/FUi_UiEventManager.cpp | 763 ++ src/ui/FUi_UiFocusEvent.cpp | 139 + src/ui/FUi_UiKeyEvent.cpp | 303 + src/ui/FUi_UiNotificationEvent.cpp | 140 + src/ui/FUi_UiTouchEvent.cpp | 541 ++ src/ui/FUi_VariantImpl.cpp | 308 + src/ui/FUi_VerticalBoxLayoutImpl.cpp | 274 + src/ui/FUi_VerticalBoxLayoutImpl.h | 278 + src/ui/FUi_Window.cpp | 636 ++ src/ui/FUi_WindowImpl.cpp | 387 + src/ui/animations/FUiAnimAnimationBase.cpp | 334 + src/ui/animations/FUiAnimAnimationGroup.cpp | 95 + src/ui/animations/FUiAnimAnimationTransaction.cpp | 309 + src/ui/animations/FUiAnimBezierTimingFunction.cpp | 219 + src/ui/animations/FUiAnimControlAnimator.cpp | 1255 +++ src/ui/animations/FUiAnimDimensionAnimation.cpp | 431 + .../animations/FUiAnimDiscreteTimingFunction.cpp | 75 + src/ui/animations/FUiAnimDisplayContext.cpp | 49 + .../FUiAnimEaseElasticInTimingFunction.cpp | 79 + .../FUiAnimEaseElasticOutTimingFunction.cpp | 78 + .../animations/FUiAnimEaseInOutTimingFunction.cpp | 58 + src/ui/animations/FUiAnimEaseInTimingFunction.cpp | 53 + .../animations/FUiAnimEaseOutInTimingFunction.cpp | 53 + src/ui/animations/FUiAnimEaseOutTimingFunction.cpp | 53 + src/ui/animations/FUiAnimExpInTimingFunction.cpp | 73 + src/ui/animations/FUiAnimExpOutTimingFunction.cpp | 73 + src/ui/animations/FUiAnimFloatAnimation.cpp | 396 + src/ui/animations/FUiAnimFrameAnimator.cpp | 200 + ...mIVisualElementAnimationStatusEventListener.cpp | 35 + ...nimIVisualElementAnimationTickEventListener.cpp | 36 + ...UiAnimIVisualElementAnimationTimingFunction.cpp | 42 + ...nimIVisualElementAnimationValueInterpolator.cpp | 42 + src/ui/animations/FUiAnimIntegerAnimation.cpp | 396 + src/ui/animations/FUiAnimLinearTimingFunction.cpp | 50 + .../animations/FUiAnimParallelAnimationGroup.cpp | 342 + src/ui/animations/FUiAnimPointAnimation.cpp | 396 + src/ui/animations/FUiAnimRectangleAnimation.cpp | 446 ++ src/ui/animations/FUiAnimRotateAnimation.cpp | 181 + .../animations/FUiAnimSequentialAnimationGroup.cpp | 367 + src/ui/animations/FUiAnimVisualElement.cpp | 872 ++ .../animations/FUiAnimVisualElementAnimation.cpp | 465 ++ .../FUiAnimVisualElementAnimationGroup.cpp | 162 + .../FUiAnimVisualElementAnimationProvider.cpp | 46 + .../FUiAnimVisualElementContentProvider.cpp | 58 + .../FUiAnimVisualElementPropertyAnimation.cpp | 137 + src/ui/animations/FUiAnimVisualElementSurface.cpp | 144 + .../FUiAnimVisualElementValueAnimation.cpp | 223 + src/ui/animations/FUiAnim_AnimationBaseImpl.cpp | 250 + src/ui/animations/FUiAnim_AnimationBaseImpl.h | 186 + src/ui/animations/FUiAnim_AnimationGroupImpl.cpp | 357 + src/ui/animations/FUiAnim_AnimationGroupImpl.h | 153 + src/ui/animations/FUiAnim_AnimationImpl.cpp | 51 + src/ui/animations/FUiAnim_AnimationManager.cpp | 628 ++ src/ui/animations/FUiAnim_AnimationManager.h | 113 + src/ui/animations/FUiAnim_ControlAnimatorImpl.cpp | 3144 ++++++++ src/ui/animations/FUiAnim_ControlAnimatorImpl.h | 924 +++ src/ui/animations/FUiAnim_ControlVisualElement.cpp | 343 + src/ui/animations/FUiAnim_ControlVisualElement.h | 130 + src/ui/animations/FUiAnim_Debug.cpp | 1244 +++ src/ui/animations/FUiAnim_Debug.h | 180 + .../animations/FUiAnim_DimensionAnimationImpl.cpp | 129 + src/ui/animations/FUiAnim_DimensionAnimationImpl.h | 116 + src/ui/animations/FUiAnim_DisplayContextImpl.cpp | 101 + src/ui/animations/FUiAnim_DisplayManager.cpp | 324 + src/ui/animations/FUiAnim_EflLayer.cpp | 627 ++ src/ui/animations/FUiAnim_EflNode.cpp | 1642 ++++ .../FUiAnim_EflVisualElementSurfaceImpl.cpp | 272 + .../FUiAnim_EflVisualElementSurfaceImpl.h | 74 + src/ui/animations/FUiAnim_FloatAnimationImpl.cpp | 127 + src/ui/animations/FUiAnim_FloatAnimationImpl.h | 108 + src/ui/animations/FUiAnim_FrameAnimatorImpl.cpp | 959 +++ src/ui/animations/FUiAnim_FrameAnimatorImpl.h | 632 ++ src/ui/animations/FUiAnim_INativeNode.cpp | 72 + src/ui/animations/FUiAnim_IntegerAnimationImpl.cpp | 125 + src/ui/animations/FUiAnim_IntegerAnimationImpl.h | 108 + src/ui/animations/FUiAnim_MatrixUtil.cpp | 464 ++ src/ui/animations/FUiAnim_MatrixUtil.h | 144 + src/ui/animations/FUiAnim_NativeLayer.cpp | 109 + src/ui/animations/FUiAnim_PointAnimationImpl.cpp | 127 + src/ui/animations/FUiAnim_PointAnimationImpl.h | 107 + .../animations/FUiAnim_RectangleAnimationImpl.cpp | 132 + src/ui/animations/FUiAnim_RectangleAnimationImpl.h | 116 + src/ui/animations/FUiAnim_RootVisualElement.cpp | 97 + src/ui/animations/FUiAnim_RotateAnimationImpl.cpp | 46 + src/ui/animations/FUiAnim_RotateAnimationImpl.h | 78 + src/ui/animations/FUiAnim_TimingFunction.h | 40 + src/ui/animations/FUiAnim_TransactionNode.cpp | 2143 +++++ src/ui/animations/FUiAnim_TransactionNode.h | 292 + src/ui/animations/FUiAnim_TransformMatrix3Df.cpp | 1152 +++ src/ui/animations/FUiAnim_VariantEx.cpp | 79 + src/ui/animations/FUiAnim_VariantEx.h | 79 + src/ui/animations/FUiAnim_VisualElement.cpp | 204 + .../FUiAnim_VisualElementAnimationGroupImpl.cpp | 196 + .../FUiAnim_VisualElementAnimationGroupImpl.h | 77 + .../FUiAnim_VisualElementAnimationImpl.cpp | 208 + .../FUiAnim_VisualElementAnimationImpl.h | 91 + .../FUiAnim_VisualElementAnimationKeyFrame.cpp | 242 + .../FUiAnim_VisualElementAnimationKeyFrame.h | 196 + .../FUiAnim_VisualElementAnimationTiming.cpp | 133 + .../FUiAnim_VisualElementAnimationTiming.h | 180 + ...m_VisualElementAnimationVariantInterpolator.cpp | 279 + ...nim_VisualElementAnimationVariantInterpolator.h | 56 + src/ui/animations/FUiAnim_VisualElementCanvas.cpp | 97 + .../FUiAnim_VisualElementCoordinateSystem.cpp | 87 + .../FUiAnim_VisualElementEnvironment.cpp | 376 + .../animations/FUiAnim_VisualElementEnvironment.h | 48 + src/ui/animations/FUiAnim_VisualElementImpl.cpp | 7114 +++++++++++++++++ .../FUiAnim_VisualElementPropertyAnimationImpl.cpp | 134 + .../FUiAnim_VisualElementPropertyAnimationImpl.h | 73 + .../animations/FUiAnim_VisualElementSharedData.cpp | 173 + .../FUiAnim_VisualElementSurfaceImpl.cpp | 189 + .../FUiAnim_VisualElementValueAnimationImpl.cpp | 288 + .../FUiAnim_VisualElementValueAnimationImpl.h | 101 + src/ui/controls/FUiCtrlAnimation.cpp | 188 + src/ui/controls/FUiCtrlAnimationFrame.cpp | 99 + src/ui/controls/FUiCtrlButton.cpp | 382 + src/ui/controls/FUiCtrlButtonItem.cpp | 126 + src/ui/controls/FUiCtrlCheckButton.cpp | 514 ++ src/ui/controls/FUiCtrlColorPicker.cpp | 174 + src/ui/controls/FUiCtrlContextMenu.cpp | 618 ++ src/ui/controls/FUiCtrlCustomItem.cpp | 162 + src/ui/controls/FUiCtrlCustomList.cpp | 424 + src/ui/controls/FUiCtrlCustomListItem.cpp | 175 + src/ui/controls/FUiCtrlCustomListItemFormat.cpp | 175 + src/ui/controls/FUiCtrlDatePicker.cpp | 219 + src/ui/controls/FUiCtrlDateTimePicker.cpp | 287 + src/ui/controls/FUiCtrlEditArea.cpp | 858 ++ src/ui/controls/FUiCtrlEditDate.cpp | 200 + src/ui/controls/FUiCtrlEditField.cpp | 896 +++ src/ui/controls/FUiCtrlEditTime.cpp | 172 + src/ui/controls/FUiCtrlExpandableEditArea.cpp | 877 +++ src/ui/controls/FUiCtrlExpandableList.cpp | 651 ++ src/ui/controls/FUiCtrlFooter.cpp | 539 ++ src/ui/controls/FUiCtrlFooterItem.cpp | 132 + src/ui/controls/FUiCtrlForm.cpp | 640 ++ src/ui/controls/FUiCtrlFrame.cpp | 227 + src/ui/controls/FUiCtrlGallery.cpp | 366 + src/ui/controls/FUiCtrlGalleryItem.cpp | 83 + src/ui/controls/FUiCtrlGroupItem.cpp | 127 + src/ui/controls/FUiCtrlGroupedList.cpp | 636 ++ src/ui/controls/FUiCtrlGroupedListView.cpp | 530 ++ src/ui/controls/FUiCtrlGroupedTableView.cpp | 460 ++ src/ui/controls/FUiCtrlHeader.cpp | 718 ++ src/ui/controls/FUiCtrlHeaderItem.cpp | 129 + .../FUiCtrlIGroupedListViewItemEventListener.cpp | 47 + .../FUiCtrlIGroupedListViewItemProvider.cpp | 36 + .../controls/FUiCtrlIListViewItemEventListener.cpp | 41 + src/ui/controls/FUiCtrlIconList.cpp | 474 ++ src/ui/controls/FUiCtrlIconListView.cpp | 638 ++ src/ui/controls/FUiCtrlIconListViewItem.cpp | 80 + src/ui/controls/FUiCtrlKeypad.cpp | 145 + src/ui/controls/FUiCtrlLabel.cpp | 259 + src/ui/controls/FUiCtrlList.cpp | 655 ++ src/ui/controls/FUiCtrlListContextItem.cpp | 114 + src/ui/controls/FUiCtrlListItemBase.cpp | 134 + src/ui/controls/FUiCtrlListView.cpp | 477 ++ src/ui/controls/FUiCtrlMessageBox.cpp | 182 + src/ui/controls/FUiCtrlOptionMenu.cpp | 284 + src/ui/controls/FUiCtrlOverlayPanel.cpp | 134 + src/ui/controls/FUiCtrlOverlayRegion.cpp | 319 + src/ui/controls/FUiCtrlPanel.cpp | 176 + src/ui/controls/FUiCtrlPopup.cpp | 246 + src/ui/controls/FUiCtrlProgress.cpp | 139 + src/ui/controls/FUiCtrlProgressPopup.cpp | 140 + src/ui/controls/FUiCtrlRadioGroup.cpp | 134 + src/ui/controls/FUiCtrlScrollPanel.cpp | 327 + src/ui/controls/FUiCtrlSearchBar.cpp | 755 ++ src/ui/controls/FUiCtrlSectionTableView.cpp | 392 + src/ui/controls/FUiCtrlSimpleItem.cpp | 69 + src/ui/controls/FUiCtrlSlidableGroupedList.cpp | 649 ++ src/ui/controls/FUiCtrlSlidableList.cpp | 489 ++ src/ui/controls/FUiCtrlSlider.cpp | 333 + src/ui/controls/FUiCtrlSplitPanel.cpp | 190 + src/ui/controls/FUiCtrlTab.cpp | 348 + src/ui/controls/FUiCtrlTabBar.cpp | 220 + src/ui/controls/FUiCtrlTabBarItem.cpp | 141 + src/ui/controls/FUiCtrlTableView.cpp | 386 + src/ui/controls/FUiCtrlTableViewContextItem.cpp | 55 + src/ui/controls/FUiCtrlTableViewGroupItem.cpp | 84 + src/ui/controls/FUiCtrlTableViewItem.cpp | 103 + src/ui/controls/FUiCtrlTableViewItemBase.cpp | 93 + .../controls/FUiCtrlTableViewSimpleGroupItem.cpp | 93 + src/ui/controls/FUiCtrlTableViewSimpleItem.cpp | 98 + src/ui/controls/FUiCtrlTextBox.cpp | 384 + src/ui/controls/FUiCtrlTimePicker.cpp | 186 + src/ui/controls/FUiCtrl_ActionEvent.cpp | 166 + src/ui/controls/FUiCtrl_AdjustmentEvent.cpp | 142 + src/ui/controls/FUiCtrl_Animation.cpp | 327 + src/ui/controls/FUiCtrl_AnimationEvent.cpp | 114 + src/ui/controls/FUiCtrl_AnimationFrameImpl.cpp | 101 + src/ui/controls/FUiCtrl_AnimationImpl.cpp | 244 + src/ui/controls/FUiCtrl_AnimationModel.cpp | 96 + src/ui/controls/FUiCtrl_AnimationPresenter.cpp | 388 + src/ui/controls/FUiCtrl_Button.cpp | 1210 +++ src/ui/controls/FUiCtrl_ButtonImpl.cpp | 798 ++ src/ui/controls/FUiCtrl_ButtonItemImpl.cpp | 160 + src/ui/controls/FUiCtrl_ButtonModel.cpp | 47 + src/ui/controls/FUiCtrl_ButtonPresenter.cpp | 872 ++ src/ui/controls/FUiCtrl_CheckButton.cpp | 1579 ++++ src/ui/controls/FUiCtrl_CheckButtonImpl.cpp | 971 +++ src/ui/controls/FUiCtrl_CheckButtonModel.cpp | 48 + src/ui/controls/FUiCtrl_CheckButtonPresenter.cpp | 1119 +++ src/ui/controls/FUiCtrl_ColorChangeEvent.cpp | 130 + src/ui/controls/FUiCtrl_ColorPicker.cpp | 671 ++ src/ui/controls/FUiCtrl_ColorPickerImpl.cpp | 336 + src/ui/controls/FUiCtrl_ColorPickerModel.cpp | 316 + src/ui/controls/FUiCtrl_ColorPickerPresenter.cpp | 1380 ++++ src/ui/controls/FUiCtrl_ContextMenu.cpp | 1230 +++ .../controls/FUiCtrl_ContextMenuGridPresenter.cpp | 1559 ++++ src/ui/controls/FUiCtrl_ContextMenuImpl.cpp | 547 ++ src/ui/controls/FUiCtrl_ContextMenuItem.cpp | 424 + .../controls/FUiCtrl_ContextMenuListPresenter.cpp | 1131 +++ src/ui/controls/FUiCtrl_ContextMenuModel.cpp | 167 + src/ui/controls/FUiCtrl_CustomElement.cpp | 86 + src/ui/controls/FUiCtrl_CustomItemImpl.cpp | 429 + src/ui/controls/FUiCtrl_CustomListElements.cpp | 711 ++ src/ui/controls/FUiCtrl_CustomListImpl.cpp | 1004 +++ .../controls/FUiCtrl_CustomListItemFormatImpl.cpp | 356 + src/ui/controls/FUiCtrl_CustomListItemImpl.cpp | 1158 +++ src/ui/controls/FUiCtrl_DatePickerImpl.cpp | 393 + src/ui/controls/FUiCtrl_DateTimeBar.cpp | 689 ++ src/ui/controls/FUiCtrl_DateTimeBarItem.cpp | 121 + src/ui/controls/FUiCtrl_DateTimeBarModel.cpp | 234 + src/ui/controls/FUiCtrl_DateTimeBarPresenter.cpp | 1537 ++++ src/ui/controls/FUiCtrl_DateTimeChangeEvent.cpp | 175 + src/ui/controls/FUiCtrl_DateTimeDisplayBox.cpp | 318 + src/ui/controls/FUiCtrl_DateTimeModel.cpp | 210 + src/ui/controls/FUiCtrl_DateTimePicker.cpp | 1160 +++ src/ui/controls/FUiCtrl_DateTimePickerImpl.cpp | 450 ++ src/ui/controls/FUiCtrl_DateTimePresenter.cpp | 1912 +++++ src/ui/controls/FUiCtrl_DateTimeUtils.cpp | 147 + src/ui/controls/FUiCtrl_DimmingLayer.cpp | 221 + src/ui/controls/FUiCtrl_Edit.cpp | 2866 +++++++ src/ui/controls/FUiCtrl_EditAreaImpl.cpp | 1841 +++++ src/ui/controls/FUiCtrl_EditCopyPasteEvent.cpp | 171 + src/ui/controls/FUiCtrl_EditCopyPasteManager.cpp | 1585 ++++ src/ui/controls/FUiCtrl_EditDate.cpp | 981 +++ src/ui/controls/FUiCtrl_EditDateImpl.cpp | 506 ++ src/ui/controls/FUiCtrl_EditDatePresenter.cpp | 1100 +++ src/ui/controls/FUiCtrl_EditFieldImpl.cpp | 2223 ++++++ src/ui/controls/FUiCtrl_EditModel.cpp | 293 + src/ui/controls/FUiCtrl_EditPresenter.cpp | 8322 ++++++++++++++++++++ src/ui/controls/FUiCtrl_EditTime.cpp | 867 ++ src/ui/controls/FUiCtrl_EditTimeImpl.cpp | 440 ++ src/ui/controls/FUiCtrl_EditTimePresenter.cpp | 1363 ++++ .../controls/FUiCtrl_ExpandableEditAreaEvent.cpp | 204 + src/ui/controls/FUiCtrl_ExpandableEditAreaImpl.cpp | 1907 +++++ src/ui/controls/FUiCtrl_ExpandableListData.cpp | 119 + src/ui/controls/FUiCtrl_ExpandableListImpl.cpp | 1936 +++++ src/ui/controls/FUiCtrl_FastScroll.cpp | 296 + src/ui/controls/FUiCtrl_FastScrollEvent.cpp | 93 + src/ui/controls/FUiCtrl_FastScrollEventArg.cpp | 62 + src/ui/controls/FUiCtrl_FastScrollIndex.cpp | 523 ++ src/ui/controls/FUiCtrl_FastScrollIndexNode.cpp | 110 + src/ui/controls/FUiCtrl_FastScrollModel.cpp | 78 + src/ui/controls/FUiCtrl_FastScrollPresenter.cpp | 3154 ++++++++ src/ui/controls/FUiCtrl_FlickAnimation.cpp | 666 ++ src/ui/controls/FUiCtrl_FooterImpl.cpp | 1868 +++++ src/ui/controls/FUiCtrl_FooterItemImpl.cpp | 160 + src/ui/controls/FUiCtrl_Form.cpp | 2227 ++++++ src/ui/controls/FUiCtrl_FormImpl.cpp | 1748 ++++ src/ui/controls/FUiCtrl_FormModel.cpp | 35 + src/ui/controls/FUiCtrl_FormPresenter.cpp | 79 + src/ui/controls/FUiCtrl_Frame.cpp | 686 ++ src/ui/controls/FUiCtrl_FrameEvent.cpp | 179 + src/ui/controls/FUiCtrl_FrameImpl.cpp | 470 ++ src/ui/controls/FUiCtrl_FrameModel.cpp | 37 + src/ui/controls/FUiCtrl_FramePresenter.cpp | 84 + src/ui/controls/FUiCtrl_Gallery.cpp | 479 ++ src/ui/controls/FUiCtrl_GalleryBitmap.cpp | 323 + src/ui/controls/FUiCtrl_GalleryCanvas.cpp | 707 ++ src/ui/controls/FUiCtrl_GalleryCanvasManager.cpp | 309 + src/ui/controls/FUiCtrl_GalleryCoreEvent.cpp | 67 + src/ui/controls/FUiCtrl_GalleryCoreEventArg.cpp | 60 + .../controls/FUiCtrl_GalleryCoreEventListener.cpp | 77 + src/ui/controls/FUiCtrl_GalleryImageReader.cpp | 171 + src/ui/controls/FUiCtrl_GalleryImpl.cpp | 554 ++ src/ui/controls/FUiCtrl_GalleryImplEvent.cpp | 74 + src/ui/controls/FUiCtrl_GalleryImplEventArg.cpp | 45 + src/ui/controls/FUiCtrl_GalleryItem.cpp | 138 + src/ui/controls/FUiCtrl_GalleryItemImpl.cpp | 118 + src/ui/controls/FUiCtrl_GalleryItemProvider.cpp | 71 + .../FUiCtrl_GalleryItemProviderAdaptor.cpp | 135 + .../FUiCtrl_GalleryItemProviderAdaptorImpl.cpp | 114 + src/ui/controls/FUiCtrl_GalleryModel.cpp | 217 + src/ui/controls/FUiCtrl_GalleryPresenter.cpp | 1256 +++ src/ui/controls/FUiCtrl_GalleryRenderer.cpp | 1280 +++ .../controls/FUiCtrl_GalleryRendererNotifier.cpp | 70 + src/ui/controls/FUiCtrl_GalleryViewEvent.cpp | 47 + .../controls/FUiCtrl_GalleryViewEventHandler.cpp | 1100 +++ src/ui/controls/FUiCtrl_GalleryViewEventInfo.cpp | 129 + src/ui/controls/FUiCtrl_GroupItemImpl.cpp | 247 + src/ui/controls/FUiCtrl_GroupedListImpl.cpp | 1573 ++++ src/ui/controls/FUiCtrl_GroupedListViewImpl.cpp | 1659 ++++ .../FUiCtrl_GroupedListViewItemProviderAdaptor.cpp | 415 + src/ui/controls/FUiCtrl_HeaderImpl.cpp | 2179 +++++ src/ui/controls/FUiCtrl_HeaderItemImpl.cpp | 160 + src/ui/controls/FUiCtrl_IconListData.cpp | 122 + src/ui/controls/FUiCtrl_IconListImpl.cpp | 1024 +++ src/ui/controls/FUiCtrl_IconListItem.cpp | 973 +++ .../FUiCtrl_IconListItemDrawingProperty.cpp | 743 ++ src/ui/controls/FUiCtrl_IconListItemProvider.cpp | 95 + .../FUiCtrl_IconListItemProviderAdaptor.cpp | 264 + src/ui/controls/FUiCtrl_IconListPresenter.cpp | 4621 +++++++++++ src/ui/controls/FUiCtrl_IconListUtils.cpp | 189 + src/ui/controls/FUiCtrl_IconListView.cpp | 1236 +++ src/ui/controls/FUiCtrl_IconListViewImpl.cpp | 991 +++ src/ui/controls/FUiCtrl_IconListViewItemEvent.cpp | 103 + .../controls/FUiCtrl_IconListViewItemEventArg.cpp | 97 + src/ui/controls/FUiCtrl_IconListViewItemImpl.cpp | 87 + src/ui/controls/FUiCtrl_Indicator.cpp | 362 + src/ui/controls/FUiCtrl_IndicatorManager.cpp | 382 + src/ui/controls/FUiCtrl_InputPad.cpp | 324 + src/ui/controls/FUiCtrl_InputPadPresenter.cpp | 619 ++ src/ui/controls/FUiCtrl_Keypad.cpp | 797 ++ src/ui/controls/FUiCtrl_KeypadEvent.cpp | 210 + src/ui/controls/FUiCtrl_KeypadImpl.cpp | 271 + src/ui/controls/FUiCtrl_Label.cpp | 508 ++ src/ui/controls/FUiCtrl_LabelImpl.cpp | 468 ++ src/ui/controls/FUiCtrl_LabelModel.cpp | 47 + src/ui/controls/FUiCtrl_LabelPresenter.cpp | 428 + src/ui/controls/FUiCtrl_LanguageEvent.cpp | 187 + src/ui/controls/FUiCtrl_LinkEvent.cpp | 185 + src/ui/controls/FUiCtrl_ListBaseImpl.cpp | 805 ++ src/ui/controls/FUiCtrl_ListContextItemImpl.cpp | 189 + src/ui/controls/FUiCtrl_ListImpl.cpp | 2171 +++++ src/ui/controls/FUiCtrl_ListItemBaseImpl.cpp | 421 + src/ui/controls/FUiCtrl_ListItemCommon.cpp | 158 + src/ui/controls/FUiCtrl_ListItemEvent.cpp | 284 + src/ui/controls/FUiCtrl_ListItemEventArg.cpp | 88 + src/ui/controls/FUiCtrl_ListViewContextItem.cpp | 331 + src/ui/controls/FUiCtrl_ListViewImpl.cpp | 1543 ++++ src/ui/controls/FUiCtrl_ListViewItem.cpp | 1940 +++++ .../FUiCtrl_ListViewItemProviderAdaptor.cpp | 329 + src/ui/controls/FUiCtrl_ListViewModel.cpp | 1750 ++++ src/ui/controls/FUiCtrl_MessageBox.cpp | 380 + src/ui/controls/FUiCtrl_MessageBoxImpl.cpp | 294 + src/ui/controls/FUiCtrl_MessageBoxPresenter.cpp | 1146 +++ src/ui/controls/FUiCtrl_OptionMenu.cpp | 642 ++ src/ui/controls/FUiCtrl_OptionMenuImpl.cpp | 301 + src/ui/controls/FUiCtrl_OptionMenuItem.cpp | 205 + src/ui/controls/FUiCtrl_OptionMenuModel.cpp | 382 + src/ui/controls/FUiCtrl_OptionMenuPresenter.cpp | 1426 ++++ src/ui/controls/FUiCtrl_OverlayAgent.cpp | 1896 +++++ src/ui/controls/FUiCtrl_OverlayPanel.cpp | 346 + src/ui/controls/FUiCtrl_OverlayPanelImpl.cpp | 338 + src/ui/controls/FUiCtrl_OverlayRegionImpl.cpp | 976 +++ src/ui/controls/FUiCtrl_Panel.cpp | 345 + src/ui/controls/FUiCtrl_PanelImpl.cpp | 413 + src/ui/controls/FUiCtrl_PanelPresenter.cpp | 244 + src/ui/controls/FUiCtrl_Popup.cpp | 649 ++ src/ui/controls/FUiCtrl_PopupImpl.cpp | 603 ++ src/ui/controls/FUiCtrl_PopupPresenter.cpp | 538 ++ src/ui/controls/FUiCtrl_Progress.cpp | 352 + src/ui/controls/FUiCtrl_ProgressImpl.cpp | 283 + src/ui/controls/FUiCtrl_ProgressModel.cpp | 77 + src/ui/controls/FUiCtrl_ProgressPopup.cpp | 671 ++ src/ui/controls/FUiCtrl_ProgressPopupEvent.cpp | 123 + src/ui/controls/FUiCtrl_ProgressPopupImpl.cpp | 431 + src/ui/controls/FUiCtrl_ProgressPopupPresenter.cpp | 763 ++ src/ui/controls/FUiCtrl_ProgressPresenter.cpp | 377 + src/ui/controls/FUiCtrl_PublicActionEvent.cpp | 166 + src/ui/controls/FUiCtrl_PublicAdjustmentEvent.cpp | 142 + src/ui/controls/FUiCtrl_PublicAnimationEvent.cpp | 116 + .../controls/FUiCtrl_PublicClipboardPopupEvent.cpp | 128 + src/ui/controls/FUiCtrl_PublicColorChangeEvent.cpp | 130 + .../controls/FUiCtrl_PublicDateTimeChangeEvent.cpp | 214 + .../FUiCtrl_PublicExpandableEditAreaEvent.cpp | 203 + src/ui/controls/FUiCtrl_PublicFrameEvent.cpp | 188 + src/ui/controls/FUiCtrl_PublicKeypadEvent.cpp | 221 + src/ui/controls/FUiCtrl_PublicLanguageEvent.cpp | 200 + src/ui/controls/FUiCtrl_PublicLinkEvent.cpp | 201 + .../controls/FUiCtrl_PublicProgressPopupEvent.cpp | 131 + src/ui/controls/FUiCtrl_PublicScrollPanelEvent.cpp | 180 + src/ui/controls/FUiCtrl_PublicSearchBarEvent.cpp | 190 + src/ui/controls/FUiCtrl_PublicSliderEvent.cpp | 142 + src/ui/controls/FUiCtrl_PublicSplitPanelEvent.cpp | 176 + src/ui/controls/FUiCtrl_PublicTextBlockEvent.cpp | 188 + src/ui/controls/FUiCtrl_PublicTextEvent.cpp | 184 + src/ui/controls/FUiCtrl_RadioGroup.cpp | 248 + src/ui/controls/FUiCtrl_RadioGroupImpl.cpp | 203 + src/ui/controls/FUiCtrl_RadioGroupModel.cpp | 47 + src/ui/controls/FUiCtrl_RadioGroupPresenter.cpp | 98 + src/ui/controls/FUiCtrl_Scroll.cpp | 309 + src/ui/controls/FUiCtrl_ScrollEvent.cpp | 101 + src/ui/controls/FUiCtrl_ScrollEventArg.cpp | 103 + src/ui/controls/FUiCtrl_ScrollPanel.cpp | 1037 +++ src/ui/controls/FUiCtrl_ScrollPanelEvent.cpp | 189 + src/ui/controls/FUiCtrl_ScrollPanelImpl.cpp | 567 ++ src/ui/controls/FUiCtrl_ScrollPanelModel.cpp | 102 + src/ui/controls/FUiCtrl_ScrollPanelPresenter.cpp | 1915 +++++ src/ui/controls/FUiCtrl_ScrollPresenter.cpp | 2548 ++++++ src/ui/controls/FUiCtrl_SearchBar.cpp | 2454 ++++++ src/ui/controls/FUiCtrl_SearchBarEvent.cpp | 192 + src/ui/controls/FUiCtrl_SearchBarImpl.cpp | 1700 ++++ src/ui/controls/FUiCtrl_SearchBarModel.cpp | 88 + src/ui/controls/FUiCtrl_SearchBarPresenter.cpp | 608 ++ src/ui/controls/FUiCtrl_SimpleItemImpl.cpp | 174 + .../controls/FUiCtrl_SlidableGroupedListImpl.cpp | 2426 ++++++ src/ui/controls/FUiCtrl_SlidableListImpl.cpp | 1888 +++++ src/ui/controls/FUiCtrl_Slider.cpp | 830 ++ src/ui/controls/FUiCtrl_SliderEvent.cpp | 141 + src/ui/controls/FUiCtrl_SliderImpl.cpp | 696 ++ src/ui/controls/FUiCtrl_SliderModel.cpp | 77 + src/ui/controls/FUiCtrl_SliderOverlay.cpp | 319 + src/ui/controls/FUiCtrl_SliderPresenter.cpp | 1726 ++++ src/ui/controls/FUiCtrl_SplitPanel.cpp | 888 +++ src/ui/controls/FUiCtrl_SplitPanelEvent.cpp | 175 + src/ui/controls/FUiCtrl_SplitPanelImpl.cpp | 435 + src/ui/controls/FUiCtrl_SplitPanelModel.cpp | 83 + src/ui/controls/FUiCtrl_SplitPanelPresenter.cpp | 1203 +++ src/ui/controls/FUiCtrl_Tab.cpp | 1388 ++++ src/ui/controls/FUiCtrl_TabBar.cpp | 569 ++ src/ui/controls/FUiCtrl_TabBarImpl.cpp | 446 ++ src/ui/controls/FUiCtrl_TabBarItem.cpp | 126 + src/ui/controls/FUiCtrl_TabBarItemImpl.cpp | 67 + src/ui/controls/FUiCtrl_TabBarModel.cpp | 244 + src/ui/controls/FUiCtrl_TabBarPresenter.cpp | 964 +++ src/ui/controls/FUiCtrl_TabImpl.cpp | 531 ++ src/ui/controls/FUiCtrl_TabItem.cpp | 190 + src/ui/controls/FUiCtrl_TabModel.cpp | 107 + src/ui/controls/FUiCtrl_TabPresenter.cpp | 2444 ++++++ src/ui/controls/FUiCtrl_TableView.cpp | 1150 +++ src/ui/controls/FUiCtrl_TableViewImpl.cpp | 1385 ++++ src/ui/controls/FUiCtrl_TableViewItem.cpp | 2925 +++++++ src/ui/controls/FUiCtrl_TableViewItemEvent.cpp | 485 ++ src/ui/controls/FUiCtrl_TableViewItemEventArg.cpp | 87 + src/ui/controls/FUiCtrl_TableViewItemImpl.cpp | 343 + src/ui/controls/FUiCtrl_TableViewItemProvider.cpp | 440 ++ .../FUiCtrl_TableViewItemProviderAdaptor.cpp | 558 ++ src/ui/controls/FUiCtrl_TableViewPresenter.cpp | 4408 +++++++++++ src/ui/controls/FUiCtrl_TextBlockEvent.cpp | 185 + src/ui/controls/FUiCtrl_TextBoxImpl.cpp | 794 ++ src/ui/controls/FUiCtrl_TextEvent.cpp | 194 + src/ui/controls/FUiCtrl_TimePickerImpl.cpp | 370 + src/ui/controls/FUiCtrl_TokenEdit.cpp | 539 ++ src/ui/controls/FUiCtrl_TokenEditModel.cpp | 39 + src/ui/controls/FUiCtrl_TokenEditPresenter.cpp | 3628 +++++++++ src/ui/controls/FUiCtrl_Toolbar.cpp | 5251 ++++++++++++ src/ui/controls/FUiCtrl_ToolbarModel.cpp | 59 + src/ui/controls/FUiCtrl_ToolbarPresenter.cpp | 1497 ++++ src/ui/controls/FUiCtrl_UiFastScrollEvent.cpp | 90 + src/ui/controls/FUiCtrl_UiFastScrollEventArg.cpp | 57 + src/ui/controls/FUiCtrl_UiIconListItemEvent.cpp | 90 + src/ui/controls/FUiCtrl_UiListViewItemEvent.cpp | 92 + src/ui/controls/FUiCtrl_UiListViewItemEventArg.cpp | 72 + src/ui/controls/FUiCtrl_UiScrollEvent.cpp | 102 + src/ui/controls/FUiCtrl_UiScrollEventArg.cpp | 106 + src/ui/controls/FUiCtrl_UiTableViewItemEvent.cpp | 298 + src/ui/effects/FUiEffectsEffect.cpp | 316 + src/ui/effects/FUiEffectsEffectManager.cpp | 90 + src/ui/effects/FUiEffectsEffectTouchInfo.cpp | 93 + src/ui/effects/FUiEffectsEffectTouchInfo.h | 150 + src/ui/effects/FUiEffects_EffectErrorMessages.cpp | 46 + src/ui/effects/FUiEffects_EffectErrorMessages.h | 64 + src/ui/effects/FUiEffects_EffectImpl.cpp | 653 ++ src/ui/effects/FUiEffects_EffectImpl.h | 454 ++ src/ui/effects/FUiEffects_EffectManagerImpl.cpp | 201 + src/ui/effects/FUiEffects_EffectManagerImpl.h | 123 + src/ui/effects/FUiEffects_EffectTimer.h | 206 + src/ui/effects/inc/FUiEffects_LoggingProfiler.h | 135 + src/ui/effects/inc/FUiEffects_Parser.h | 28 + src/ui/effects/inc/FUiEffects_ParserEffectParser.h | 290 + src/ui/effects/inc/FUiEffects_ParserXMLParser.h | 119 + src/ui/effects/inc/FUiEffects_Pe.h | 32 + src/ui/effects/inc/FUiEffects_PeElementSurface.h | 187 + src/ui/effects/inc/FUiEffects_PePointSurface.h | 264 + .../effects/inc/FUiEffects_PePointSurfaceNURBS.h | 234 + src/ui/effects/inc/FUiEffects_PeRodSurface.h | 191 + src/ui/effects/inc/FUiEffects_PeRodSurfaceNURBS.h | 179 + src/ui/effects/inc/FUiEffects_PeSpringSurface.h | 179 + src/ui/effects/inc/FUiEffects_Renderer.h | 34 + .../inc/FUiEffects_RendererDirectionalLight.h | 195 + .../inc/FUiEffects_RendererEffectRenderer.h | 380 + .../effects/inc/FUiEffects_RendererEffectShader.h | 124 + .../inc/FUiEffects_RendererLightingParameters.h | 157 + src/ui/effects/inc/FUiEffects_RendererLog.h | 67 + .../FUiEffects_RendererMemoryTexture2DProperty.h | 161 + src/ui/effects/inc/FUiEffects_RendererPointLight.h | 256 + .../inc/FUiEffects_RendererRendererGeometry.h | 294 + .../inc/FUiEffects_RendererRendererObject.h | 166 + src/ui/effects/inc/FUiEffects_RendererSpotLight.h | 359 + src/ui/effects/inc/FUiEffects_RendererViewport.h | 77 + src/ui/effects/inc/FUiEffects_Runtime.h | 40 + .../inc/FUiEffects_RuntimeDirectionalLight.h | 165 + src/ui/effects/inc/FUiEffects_RuntimeEffectModel.h | 531 ++ .../inc/FUiEffects_RuntimeEffectModelScript.h | 429 + .../inc/FUiEffects_RuntimeGraphicalSurface.h | 270 + .../inc/FUiEffects_RuntimeGraphicalSurfaceNurbs.h | 364 + .../inc/FUiEffects_RuntimeIEffectModelListener.h | 81 + .../inc/FUiEffects_RuntimeIEffectModelManager.h | 162 + .../inc/FUiEffects_RuntimeIEffectModelScript.h | 260 + .../inc/FUiEffects_RuntimeIScriptProcessing.h | 124 + .../effects/inc/FUiEffects_RuntimeLuaProcessing.h | 215 + src/ui/effects/inc/FUiEffects_RuntimeModel.h | 273 + .../effects/inc/FUiEffects_RuntimeModelSurface.h | 275 + src/ui/effects/inc/FUiEffects_RuntimePointLight.h | 164 + .../effects/inc/FUiEffects_RuntimePropertyCast.h | 91 + .../inc/FUiEffects_RuntimeRenderDataScene.h | 322 + .../inc/FUiEffects_RuntimeRenderDataSurface.h | 135 + .../inc/FUiEffects_RuntimeScriptProcessing.h | 37 + src/ui/effects/inc/FUiEffects_RuntimeSpotLight.h | 209 + src/ui/effects/inc/FUiEffects_RuntimeUnitLight.h | 194 + .../FUiEffects_RendererEngineModelAabb.h | 84 + ...Effects_RendererEngineModelAlphaBlendProperty.h | 90 + .../FUiEffects_RendererEngineModelAttribute.h | 37 + .../FUiEffects_RendererEngineModelBuffer.h | 235 + .../FUiEffects_RendererEngineModelBufferVisitor.h | 51 + .../FUiEffects_RendererEngineModelCache.h | 48 + .../FUiEffects_RendererEngineModelCamera.h | 75 + .../FUiEffects_RendererEngineModelDrawable.h | 71 + ...ts_RendererEngineModelExternalRenderInterface.h | 42 + ...Effects_RendererEngineModelFloatArrayProperty.h | 45 + .../FUiEffects_RendererEngineModelFloatProperty.h | 52 + ...ffects_RendererEngineModelFloatPropertyHolder.h | 52 + ...Effects_RendererEngineModelForwardDeclaration.h | 75 + .../FUiEffects_RendererEngineModelFrustum.h | 47 + .../FUiEffects_RendererEngineModelGeometry.h | 64 + .../FUiEffects_RendererEngineModelGroup.h | 79 + .../FUiEffects_RendererEngineModelIntProperty.h | 52 + ...iEffects_RendererEngineModelIntPropertyHolder.h | 69 + .../FUiEffects_RendererEngineModelMaterial.h | 60 + ...UiEffects_RendererEngineModelMatrix4fProperty.h | 57 + ...cts_RendererEngineModelMatrix4fPropertyHolder.h | 59 + .../FUiEffects_RendererEngineModelNode.h | 90 + ...FUiEffects_RendererEngineModelProgramProperty.h | 77 + .../FUiEffects_RendererEngineModelProperty.h | 49 + ...cts_RendererEngineModelPropertyHolderMaterial.h | 61 + ...FUiEffects_RendererEngineModelPropertyVisitor.h | 75 + .../FUiEffects_RendererEngineModelRenderTarget.h | 129 + ...RendererEngineModelRenderTargetExternalRender.h | 53 + ...ffects_RendererEngineModelRenderTargetVisitor.h | 46 + ...endererEngineModelShaderHolderProgramProperty.h | 52 + .../FUiEffects_RendererEngineModelShaderProperty.h | 105 + ...fects_RendererEngineModelStringShaderProperty.h | 56 + .../FUiEffects_RendererEngineModelStubAttachment.h | 58 + ...endererEngineModelTexture2DAttachmentProperty.h | 88 + ...iEffects_RendererEngineModelTexture2DProperty.h | 63 + ...iEffects_RendererEngineModelTextureAttachment.h | 57 + ...FUiEffects_RendererEngineModelTextureProperty.h | 139 + ...Effects_RendererEngineModelTypedArrayProperty.h | 49 + ...s_RendererEngineModelTypedArrayPropertyHolder.h | 79 + ...UiEffects_RendererEngineModelVector2fProperty.h | 57 + ...cts_RendererEngineModelVector2fPropertyHolder.h | 56 + ...UiEffects_RendererEngineModelVector3fProperty.h | 57 + ...cts_RendererEngineModelVector3fPropertyHolder.h | 56 + ...UiEffects_RendererEngineModelVector4fProperty.h | 57 + ...cts_RendererEngineModelVector4fPropertyHolder.h | 56 + .../FUiEffects_RendererEngineModelVisitor.h | 46 + ...ts_RendererGraphicsEngineOpenGLImplementation.h | 67 + .../FUiEffects_RendererGraphicsEngineRender.h | 146 + ...fects_RendererGraphicsEngineRenderBufferCache.h | 165 + .../FUiEffects_RendererGraphicsEngineRenderCache.h | 91 + ...UiEffects_RendererGraphicsEngineRenderCommand.h | 47 + ...cts_RendererGraphicsEngineRenderDrawableCache.h | 294 + ...RendererGraphicsEngineRenderRenderTargetCache.h | 117 + ...fects_RendererGraphicsEngineRenderShaderCache.h | 116 + ...ffects_RendererGraphicsEngineRenderStateCache.h | 74 + ...ects_RendererGraphicsEngineRenderTextureCache.h | 85 + .../math/FUiEffects_RendererMathAdapterFunctions.h | 290 + .../renderer/math/FUiEffects_RendererMathCommon.h | 61 + .../renderer/math/FUiEffects_RendererMathMatrix.h | 1088 +++ .../math/FUiEffects_RendererMathMatrix1Traits.h | 99 + .../math/FUiEffects_RendererMathMatrix2Traits.h | 251 + .../math/FUiEffects_RendererMathMatrix3Traits.h | 533 ++ .../math/FUiEffects_RendererMathMatrixTraits.h | 1413 ++++ .../math/FUiEffects_RendererMathMatrixTraitsBase.h | 55 + .../renderer/math/FUiEffects_RendererMathVector.h | 686 ++ .../math/FUiEffects_RendererMathVector1Traits.h | 69 + .../math/FUiEffects_RendererMathVector2Traits.h | 87 + .../math/FUiEffects_RendererMathVector3Traits.h | 133 + .../math/FUiEffects_RendererMathVectorTraits.h | 119 + .../math/FUiEffects_RendererMathVectorTraitsBase.h | 51 + .../FUiEffects_RendererSystemConstnessPolicy.h | 44 + .../system/FUiEffects_RendererSystemData.h | 459 ++ .../system/FUiEffects_RendererSystemDataType.h | 46 + .../system/FUiEffects_RendererSystemException.h | 51 + .../system/FUiEffects_RendererSystemNonCopyable.h | 46 + .../FUiEffects_RendererSystemPlatformDefine.h | 48 + .../system/FUiEffects_RendererSystemSelectType.h | 49 + .../system/FUiEffects_RendererSystemSmartPtr.h | 654 ++ ...fects_RendererSystemSmartPtrAssertCheckPolicy.h | 100 + ...ts_RendererSystemSmartPtrDefaultStoragePolicy.h | 172 + ...UiEffects_RendererSystemSmartPtrNoCheckPolicy.h | 87 + ...ects_RendererSystemSmartPtrRefCountedMTPolicy.h | 178 + .../FUiEffects_RendererSystemSmartPtrRefCounter.h | 48 + ...RendererSystemSmartPtrRefCounterHandlerAtomic.h | 84 + .../system/FUiEffects_RendererSystemStaticAssert.h | 45 + .../system/FUiEffects_RendererSystemTypeNull.h | 36 + .../system/FUiEffects_RendererSystemTypeTraits.h | 184 + src/ui/effects/inc/utils/FUiEffects_Utils.h | 36 + .../inc/utils/FUiEffects_UtilsAdapterFunctions.h | 261 + src/ui/effects/inc/utils/FUiEffects_UtilsCommon.h | 58 + src/ui/effects/inc/utils/FUiEffects_UtilsLuaMat4.h | 603 ++ src/ui/effects/inc/utils/FUiEffects_UtilsMatrix2.h | 713 ++ src/ui/effects/inc/utils/FUiEffects_UtilsMatrix3.h | 1136 +++ src/ui/effects/inc/utils/FUiEffects_UtilsMatrix4.h | 1833 +++++ src/ui/effects/inc/utils/FUiEffects_UtilsVector2.h | 435 + src/ui/effects/inc/utils/FUiEffects_UtilsVector3.h | 486 ++ src/ui/effects/inc/utils/FUiEffects_UtilsVector4.h | 487 ++ .../parser/FUiEffects_ParserEffectParser.cpp | 2286 ++++++ .../effects/parser/FUiEffects_ParserXMLParser.cpp | 181 + .../physics-engine/FUiEffects_PeElementSurface.cpp | 84 + .../physics-engine/FUiEffects_PePointSurface.cpp | 326 + .../FUiEffects_PePointSurfaceNURBS.cpp | 152 + .../physics-engine/FUiEffects_PeRodSurface.cpp | 180 + .../FUiEffects_PeRodSurfaceNURBS.cpp | 113 + .../physics-engine/FUiEffects_PeSpringSurface.cpp | 151 + .../renderer/FUiEffects_RendererEffectRenderer.cpp | 1055 +++ .../renderer/FUiEffects_RendererEffectShader.cpp | 216 + src/ui/effects/renderer/FUiEffects_RendererLog.cpp | 121 + .../FUiEffects_RendererMemoryTexture2DProperty.cpp | 80 + .../FUiEffects_RendererRendererGeometry.cpp | 80 + ...fects_RendererEngineModelAlphaBlendProperty.cpp | 115 + .../FUiEffects_RendererEngineModelBuffer.cpp | 41 + .../FUiEffects_RendererEngineModelCache.cpp | 30 + .../FUiEffects_RendererEngineModelCamera.cpp | 169 + .../FUiEffects_RendererEngineModelDrawable.cpp | 149 + ...fects_RendererEngineModelFloatArrayProperty.cpp | 36 + ...ects_RendererEngineModelFloatPropertyHolder.cpp | 52 + .../FUiEffects_RendererEngineModelGeometry.cpp | 80 + .../FUiEffects_RendererEngineModelGroup.cpp | 236 + .../FUiEffects_RendererEngineModelMaterial.cpp | 68 + ...s_RendererEngineModelMatrix4fPropertyHolder.cpp | 62 + .../FUiEffects_RendererEngineModelNode.cpp | 221 + .../FUiEffects_RendererEngineModelProperty.cpp | 45 + ...s_RendererEngineModelPropertyHolderMaterial.cpp | 113 + .../FUiEffects_RendererEngineModelRenderTarget.cpp | 156 + ...ndererEngineModelRenderTargetExternalRender.cpp | 59 + ...dererEngineModelShaderHolderProgramProperty.cpp | 52 + ...cts_RendererEngineModelStringShaderProperty.cpp | 73 + ...UiEffects_RendererEngineModelStubAttachment.cpp | 75 + ...dererEngineModelTexture2DAttachmentProperty.cpp | 153 + ...ffects_RendererEngineModelTexture2DProperty.cpp | 75 + ...ffects_RendererEngineModelTextureAttachment.cpp | 77 + ...iEffects_RendererEngineModelTextureProperty.cpp | 44 + ...s_RendererEngineModelVector2fPropertyHolder.cpp | 58 + ...s_RendererEngineModelVector3fPropertyHolder.cpp | 59 + ...s_RendererEngineModelVector4fPropertyHolder.cpp | 59 + .../FUiEffects_RendererGraphicsEngineRender.cpp | 493 ++ ...cts_RendererGraphicsEngineRenderBufferCache.cpp | 473 ++ ...UiEffects_RendererGraphicsEngineRenderCache.cpp | 58 + ...s_RendererGraphicsEngineRenderDrawableCache.cpp | 732 ++ ...ndererGraphicsEngineRenderRenderTargetCache.cpp | 404 + ...cts_RendererGraphicsEngineRenderShaderCache.cpp | 385 + ...ects_RendererGraphicsEngineRenderStateCache.cpp | 136 + ...ts_RendererGraphicsEngineRenderTextureCache.cpp | 278 + .../system/FUiEffects_RendererSystemData.cpp | 36 + .../system/FUiEffects_RendererSystemException.cpp | 33 + .../FUiEffects_RendererSystemPlatformDefine.cpp | 51 + .../runtime/FUiEffects_RuntimeDirectionalLight.cpp | 124 + .../runtime/FUiEffects_RuntimeEffectModel.cpp | 708 ++ .../FUiEffects_RuntimeEffectModelScript.cpp | 235 + .../runtime/FUiEffects_RuntimeGraphicalSurface.cpp | 373 + .../FUiEffects_RuntimeGraphicalSurfaceNurbs.cpp | 596 ++ .../runtime/FUiEffects_RuntimeLuaProcessing.cpp | 246 + .../runtime/FUiEffects_RuntimeModelSurface.cpp | 335 + .../runtime/FUiEffects_RuntimePointLight.cpp | 124 + .../runtime/FUiEffects_RuntimeRenderDataScene.cpp | 377 + .../runtime/FUiEffects_RuntimeSpotLight.cpp | 187 + .../runtime/FUiEffects_RuntimeUnitLight.cpp | 201 + src/ui/effects/runtime/lua-cpp-binding/tolua.cpp | 6872 ++++++++++++++++ src/ui/effects/runtime/lua-cpp-binding/tolua.h | 20 + src/ui/inc/FUiAnim_DisplayContextImpl.h | 61 + src/ui/inc/FUiAnim_DisplayManager.h | 87 + src/ui/inc/FUiAnim_EflLayer.h | 123 + src/ui/inc/FUiAnim_EflNode.h | 118 + src/ui/inc/FUiAnim_INativeNode.h | 63 + src/ui/inc/FUiAnim_NativeLayer.h | 184 + src/ui/inc/FUiAnim_RootVisualElement.h | 81 + src/ui/inc/FUiAnim_TransformMatrix3Df.h | 202 + src/ui/inc/FUiAnim_VisualElement.h | 152 + src/ui/inc/FUiAnim_VisualElementCanvas.h | 57 + src/ui/inc/FUiAnim_VisualElementCoordinateSystem.h | 167 + src/ui/inc/FUiAnim_VisualElementImpl.h | 1391 ++++ src/ui/inc/FUiAnim_VisualElementSharedData.h | 105 + src/ui/inc/FUiAnim_VisualElementSurfaceImpl.h | 100 + src/ui/inc/FUiCtrl_ActionEvent.h | 99 + src/ui/inc/FUiCtrl_AdjustmentEvent.h | 63 + src/ui/inc/FUiCtrl_Animation.h | 100 + src/ui/inc/FUiCtrl_AnimationEvent.h | 63 + src/ui/inc/FUiCtrl_AnimationFrameImpl.h | 58 + src/ui/inc/FUiCtrl_AnimationImpl.h | 80 + src/ui/inc/FUiCtrl_AnimationModel.h | 63 + src/ui/inc/FUiCtrl_AnimationPresenter.h | 82 + src/ui/inc/FUiCtrl_Button.h | 274 + src/ui/inc/FUiCtrl_ButtonImpl.h | 131 + src/ui/inc/FUiCtrl_ButtonItemImpl.h | 89 + src/ui/inc/FUiCtrl_ButtonModel.h | 57 + src/ui/inc/FUiCtrl_ButtonPresenter.h | 108 + src/ui/inc/FUiCtrl_CheckButton.h | 326 + src/ui/inc/FUiCtrl_CheckButtonImpl.h | 129 + src/ui/inc/FUiCtrl_CheckButtonModel.h | 57 + src/ui/inc/FUiCtrl_CheckButtonPresenter.h | 131 + src/ui/inc/FUiCtrl_ColorChangeEvent.h | 102 + src/ui/inc/FUiCtrl_ColorPicker.h | 181 + src/ui/inc/FUiCtrl_ColorPickerImpl.h | 103 + src/ui/inc/FUiCtrl_ColorPickerModel.h | 86 + src/ui/inc/FUiCtrl_ColorPickerPresenter.h | 210 + src/ui/inc/FUiCtrl_ContextMenu.h | 267 + src/ui/inc/FUiCtrl_ContextMenuGridPresenter.h | 147 + src/ui/inc/FUiCtrl_ContextMenuImpl.h | 119 + src/ui/inc/FUiCtrl_ContextMenuItem.h | 154 + src/ui/inc/FUiCtrl_ContextMenuListPresenter.h | 143 + src/ui/inc/FUiCtrl_ContextMenuModel.h | 76 + src/ui/inc/FUiCtrl_CustomElement.h | 56 + src/ui/inc/FUiCtrl_CustomItemImpl.h | 85 + src/ui/inc/FUiCtrl_CustomListElements.h | 292 + src/ui/inc/FUiCtrl_CustomListImpl.h | 152 + src/ui/inc/FUiCtrl_CustomListItemFormatImpl.h | 93 + src/ui/inc/FUiCtrl_CustomListItemImpl.h | 218 + src/ui/inc/FUiCtrl_DatePickerImpl.h | 98 + src/ui/inc/FUiCtrl_DateTimeBar.h | 139 + src/ui/inc/FUiCtrl_DateTimeBarItem.h | 68 + src/ui/inc/FUiCtrl_DateTimeBarModel.h | 85 + src/ui/inc/FUiCtrl_DateTimeBarPresenter.h | 158 + src/ui/inc/FUiCtrl_DateTimeChangeEvent.h | 129 + src/ui/inc/FUiCtrl_DateTimeDefine.h | 166 + src/ui/inc/FUiCtrl_DateTimeDisplayBox.h | 91 + src/ui/inc/FUiCtrl_DateTimeModel.h | 89 + src/ui/inc/FUiCtrl_DateTimePicker.h | 196 + src/ui/inc/FUiCtrl_DateTimePickerImpl.h | 105 + src/ui/inc/FUiCtrl_DateTimePresenter.h | 221 + src/ui/inc/FUiCtrl_DateTimeUtils.h | 54 + src/ui/inc/FUiCtrl_DimmingLayer.h | 64 + src/ui/inc/FUiCtrl_Edit.h | 533 ++ src/ui/inc/FUiCtrl_EditAreaImpl.h | 211 + src/ui/inc/FUiCtrl_EditCopyPasteEvent.h | 103 + src/ui/inc/FUiCtrl_EditCopyPasteManager.h | 137 + src/ui/inc/FUiCtrl_EditDate.h | 161 + src/ui/inc/FUiCtrl_EditDateImpl.h | 101 + src/ui/inc/FUiCtrl_EditDatePresenter.h | 133 + src/ui/inc/FUiCtrl_EditFieldImpl.h | 231 + src/ui/inc/FUiCtrl_EditModel.h | 361 + src/ui/inc/FUiCtrl_EditPresenter.h | 508 ++ src/ui/inc/FUiCtrl_EditTime.h | 151 + src/ui/inc/FUiCtrl_EditTimeImpl.h | 98 + src/ui/inc/FUiCtrl_EditTimePresenter.h | 147 + src/ui/inc/FUiCtrl_ExpandableEditAreaEvent.h | 110 + src/ui/inc/FUiCtrl_ExpandableEditAreaImpl.h | 214 + src/ui/inc/FUiCtrl_ExpandableListData.h | 99 + src/ui/inc/FUiCtrl_ExpandableListImpl.h | 235 + src/ui/inc/FUiCtrl_FastScroll.h | 96 + src/ui/inc/FUiCtrl_FastScrollEvent.h | 111 + src/ui/inc/FUiCtrl_FastScrollEventArg.h | 65 + src/ui/inc/FUiCtrl_FastScrollIndex.h | 124 + src/ui/inc/FUiCtrl_FastScrollIndexNode.h | 80 + src/ui/inc/FUiCtrl_FastScrollModel.h | 57 + src/ui/inc/FUiCtrl_FastScrollPresenter.h | 384 + src/ui/inc/FUiCtrl_FlickAnimation.h | 151 + src/ui/inc/FUiCtrl_FooterImpl.h | 197 + src/ui/inc/FUiCtrl_FooterItemImpl.h | 88 + src/ui/inc/FUiCtrl_Form.h | 249 + src/ui/inc/FUiCtrl_FormImpl.h | 176 + src/ui/inc/FUiCtrl_FormModel.h | 54 + src/ui/inc/FUiCtrl_FormPresenter.h | 69 + src/ui/inc/FUiCtrl_Frame.h | 115 + src/ui/inc/FUiCtrl_FrameEvent.h | 110 + src/ui/inc/FUiCtrl_FrameImpl.h | 110 + src/ui/inc/FUiCtrl_FrameModel.h | 54 + src/ui/inc/FUiCtrl_FramePresenter.h | 72 + src/ui/inc/FUiCtrl_Gallery.h | 169 + src/ui/inc/FUiCtrl_GalleryBitmap.h | 69 + src/ui/inc/FUiCtrl_GalleryCanvas.h | 176 + src/ui/inc/FUiCtrl_GalleryCanvasManager.h | 76 + src/ui/inc/FUiCtrl_GalleryCoreEvent.h | 41 + src/ui/inc/FUiCtrl_GalleryCoreEventArg.h | 64 + src/ui/inc/FUiCtrl_GalleryCoreEventListener.h | 55 + src/ui/inc/FUiCtrl_GalleryImageReader.h | 62 + src/ui/inc/FUiCtrl_GalleryImpl.h | 105 + src/ui/inc/FUiCtrl_GalleryImplEvent.h | 49 + src/ui/inc/FUiCtrl_GalleryImplEventArg.h | 56 + src/ui/inc/FUiCtrl_GalleryItem.h | 70 + src/ui/inc/FUiCtrl_GalleryItemImpl.h | 71 + src/ui/inc/FUiCtrl_GalleryItemProvider.h | 50 + src/ui/inc/FUiCtrl_GalleryItemProviderAdaptor.h | 59 + .../inc/FUiCtrl_GalleryItemProviderAdaptorImpl.h | 48 + src/ui/inc/FUiCtrl_GalleryModel.h | 70 + src/ui/inc/FUiCtrl_GalleryPresenter.h | 208 + src/ui/inc/FUiCtrl_GalleryRenderer.h | 175 + src/ui/inc/FUiCtrl_GalleryRendererNotification.h | 62 + src/ui/inc/FUiCtrl_GalleryRendererNotifier.h | 51 + src/ui/inc/FUiCtrl_GalleryTypes.h | 83 + src/ui/inc/FUiCtrl_GalleryViewEvent.h | 59 + src/ui/inc/FUiCtrl_GalleryViewEventHandler.h | 116 + src/ui/inc/FUiCtrl_GalleryViewEventInfo.h | 70 + src/ui/inc/FUiCtrl_GroupItemImpl.h | 89 + src/ui/inc/FUiCtrl_GroupedListImpl.h | 206 + src/ui/inc/FUiCtrl_GroupedListViewImpl.h | 267 + .../FUiCtrl_GroupedListViewItemProviderAdaptor.h | 109 + src/ui/inc/FUiCtrl_HeaderImpl.h | 226 + src/ui/inc/FUiCtrl_HeaderItemImpl.h | 87 + src/ui/inc/FUiCtrl_IActionEventListener.h | 72 + src/ui/inc/FUiCtrl_IAdjustmentEventListener.h | 74 + src/ui/inc/FUiCtrl_IAnimationEventListener.h | 71 + src/ui/inc/FUiCtrl_IColorChangeEventListener.h | 77 + src/ui/inc/FUiCtrl_IContextMenuPresenter.h | 104 + src/ui/inc/FUiCtrl_ICustomElement.h | 44 + src/ui/inc/FUiCtrl_IDateTimeChangeEventListener.h | 84 + src/ui/inc/FUiCtrl_IEditCopyPasteEventListener.h | 76 + .../inc/FUiCtrl_IExpandableEditAreaEventListener.h | 84 + src/ui/inc/FUiCtrl_IFastScrollListener.h | 89 + .../FUiCtrl_IFormActivationChangeEventListener.h | 63 + src/ui/inc/FUiCtrl_IFormBackEventListener.h | 105 + src/ui/inc/FUiCtrl_IFrameEventListener.h | 62 + src/ui/inc/FUiCtrl_IGalleryCoreEventListener.h | 40 + src/ui/inc/FUiCtrl_IGalleryItemProvider.h | 36 + src/ui/inc/FUiCtrl_IGalleryRenderer.h | 78 + src/ui/inc/FUiCtrl_IGalleryRendererNotiListener.h | 39 + src/ui/inc/FUiCtrl_IIconListItemEventListener.h | 66 + src/ui/inc/FUiCtrl_IInputPadEventListener.h | 76 + src/ui/inc/FUiCtrl_IKeypadEventListener.h | 135 + src/ui/inc/FUiCtrl_ILanguageEventListener.h | 89 + src/ui/inc/FUiCtrl_IListItemCommon.h | 89 + src/ui/inc/FUiCtrl_IListItemProviderAdaptor.h | 55 + src/ui/inc/FUiCtrl_IProgressPopupEventListener.h | 74 + src/ui/inc/FUiCtrl_IScrollEventListener.h | 98 + src/ui/inc/FUiCtrl_IScrollPanelEventListener.h | 98 + src/ui/inc/FUiCtrl_IScrollableContainer.h | 63 + src/ui/inc/FUiCtrl_ISearchBarEventListener.h | 73 + src/ui/inc/FUiCtrl_ISliderEventListener.h | 73 + src/ui/inc/FUiCtrl_ISplitPanelEventListener.h | 83 + src/ui/inc/FUiCtrl_ITableViewItemEventListener.h | 218 + src/ui/inc/FUiCtrl_ITextBlockEventListener.h | 74 + src/ui/inc/FUiCtrl_ITextEventListener.h | 107 + src/ui/inc/FUiCtrl_ITokenFilter.h | 52 + src/ui/inc/FUiCtrl_IUiLinkEventListener.h | 79 + src/ui/inc/FUiCtrl_IUiListViewItemEventListener.h | 90 + src/ui/inc/FUiCtrl_IconListData.h | 74 + src/ui/inc/FUiCtrl_IconListImpl.h | 130 + src/ui/inc/FUiCtrl_IconListItem.h | 137 + src/ui/inc/FUiCtrl_IconListItemDrawingProperty.h | 215 + src/ui/inc/FUiCtrl_IconListItemProvider.h | 57 + src/ui/inc/FUiCtrl_IconListItemProviderAdaptor.h | 88 + src/ui/inc/FUiCtrl_IconListPresenter.h | 442 ++ src/ui/inc/FUiCtrl_IconListUtils.h | 114 + src/ui/inc/FUiCtrl_IconListView.h | 380 + src/ui/inc/FUiCtrl_IconListViewImpl.h | 203 + src/ui/inc/FUiCtrl_IconListViewItemEvent.h | 74 + src/ui/inc/FUiCtrl_IconListViewItemEventArg.h | 102 + src/ui/inc/FUiCtrl_IconListViewItemImpl.h | 62 + src/ui/inc/FUiCtrl_Indicator.h | 83 + src/ui/inc/FUiCtrl_IndicatorManager.h | 95 + src/ui/inc/FUiCtrl_InputPad.h | 84 + src/ui/inc/FUiCtrl_InputPadPresenter.h | 122 + src/ui/inc/FUiCtrl_Keypad.h | 123 + src/ui/inc/FUiCtrl_KeypadEvent.h | 114 + src/ui/inc/FUiCtrl_KeypadImpl.h | 99 + src/ui/inc/FUiCtrl_Label.h | 147 + src/ui/inc/FUiCtrl_LabelImpl.h | 100 + src/ui/inc/FUiCtrl_LabelModel.h | 60 + src/ui/inc/FUiCtrl_LabelPresenter.h | 106 + src/ui/inc/FUiCtrl_LanguageEvent.h | 96 + src/ui/inc/FUiCtrl_LinkEvent.h | 103 + src/ui/inc/FUiCtrl_LinkedList.h | 621 ++ src/ui/inc/FUiCtrl_ListBaseImpl.h | 141 + src/ui/inc/FUiCtrl_ListContextItemImpl.h | 88 + src/ui/inc/FUiCtrl_ListImpl.h | 246 + src/ui/inc/FUiCtrl_ListItemBaseImpl.h | 127 + src/ui/inc/FUiCtrl_ListItemCommon.h | 91 + src/ui/inc/FUiCtrl_ListItemEvent.h | 74 + src/ui/inc/FUiCtrl_ListItemEventArg.h | 93 + src/ui/inc/FUiCtrl_ListListener.h | 53 + src/ui/inc/FUiCtrl_ListViewContextItem.h | 93 + src/ui/inc/FUiCtrl_ListViewImpl.h | 252 + src/ui/inc/FUiCtrl_ListViewItem.h | 335 + src/ui/inc/FUiCtrl_ListViewItemProviderAdaptor.h | 98 + src/ui/inc/FUiCtrl_ListViewModel.h | 191 + src/ui/inc/FUiCtrl_ListViewTypes.h | 53 + src/ui/inc/FUiCtrl_MessageBox.h | 123 + src/ui/inc/FUiCtrl_MessageBoxImpl.h | 91 + src/ui/inc/FUiCtrl_MessageBoxPresenter.h | 185 + src/ui/inc/FUiCtrl_OptionMenu.h | 157 + src/ui/inc/FUiCtrl_OptionMenuImpl.h | 109 + src/ui/inc/FUiCtrl_OptionMenuItem.h | 82 + src/ui/inc/FUiCtrl_OptionMenuModel.h | 78 + src/ui/inc/FUiCtrl_OptionMenuPresenter.h | 256 + src/ui/inc/FUiCtrl_OverlayAgent.h | 197 + src/ui/inc/FUiCtrl_OverlayPanel.h | 83 + src/ui/inc/FUiCtrl_OverlayPanelImpl.h | 93 + src/ui/inc/FUiCtrl_OverlayRegionImpl.h | 126 + src/ui/inc/FUiCtrl_Panel.h | 140 + src/ui/inc/FUiCtrl_PanelImpl.h | 88 + src/ui/inc/FUiCtrl_PanelPresenter.h | 66 + src/ui/inc/FUiCtrl_Popup.h | 176 + src/ui/inc/FUiCtrl_PopupImpl.h | 122 + src/ui/inc/FUiCtrl_PopupPresenter.h | 111 + src/ui/inc/FUiCtrl_Progress.h | 93 + src/ui/inc/FUiCtrl_ProgressImpl.h | 73 + src/ui/inc/FUiCtrl_ProgressModel.h | 59 + src/ui/inc/FUiCtrl_ProgressPopup.h | 150 + src/ui/inc/FUiCtrl_ProgressPopupEvent.h | 73 + src/ui/inc/FUiCtrl_ProgressPopupImpl.h | 94 + src/ui/inc/FUiCtrl_ProgressPopupPresenter.h | 136 + src/ui/inc/FUiCtrl_ProgressPresenter.h | 74 + src/ui/inc/FUiCtrl_PublicActionEvent.h | 99 + src/ui/inc/FUiCtrl_PublicAdjustmentEvent.h | 59 + src/ui/inc/FUiCtrl_PublicAnimationEvent.h | 63 + src/ui/inc/FUiCtrl_PublicClipboardPopupEvent.h | 57 + src/ui/inc/FUiCtrl_PublicColorChangeEvent.h | 103 + src/ui/inc/FUiCtrl_PublicDateTimeChangeEvent.h | 156 + src/ui/inc/FUiCtrl_PublicExpandableEditAreaEvent.h | 117 + src/ui/inc/FUiCtrl_PublicFrameEvent.h | 110 + src/ui/inc/FUiCtrl_PublicKeypadEvent.h | 111 + src/ui/inc/FUiCtrl_PublicLanguageEvent.h | 96 + src/ui/inc/FUiCtrl_PublicLinkEvent.h | 103 + src/ui/inc/FUiCtrl_PublicProgressPopupEvent.h | 81 + src/ui/inc/FUiCtrl_PublicScrollPanelEvent.h | 115 + src/ui/inc/FUiCtrl_PublicSearchBarEvent.h | 114 + src/ui/inc/FUiCtrl_PublicSliderEvent.h | 56 + src/ui/inc/FUiCtrl_PublicSplitPanelEvent.h | 110 + src/ui/inc/FUiCtrl_PublicTextBlockEvent.h | 103 + src/ui/inc/FUiCtrl_PublicTextEvent.h | 113 + src/ui/inc/FUiCtrl_RadioGroup.h | 84 + src/ui/inc/FUiCtrl_RadioGroupImpl.h | 84 + src/ui/inc/FUiCtrl_RadioGroupModel.h | 57 + src/ui/inc/FUiCtrl_RadioGroupPresenter.h | 75 + src/ui/inc/FUiCtrl_Scroll.h | 125 + src/ui/inc/FUiCtrl_ScrollEvent.h | 73 + src/ui/inc/FUiCtrl_ScrollEventArg.h | 139 + src/ui/inc/FUiCtrl_ScrollEventTypes.h | 42 + src/ui/inc/FUiCtrl_ScrollPanel.h | 276 + src/ui/inc/FUiCtrl_ScrollPanelEvent.h | 121 + src/ui/inc/FUiCtrl_ScrollPanelImpl.h | 118 + src/ui/inc/FUiCtrl_ScrollPanelModel.h | 87 + src/ui/inc/FUiCtrl_ScrollPanelPresenter.h | 246 + src/ui/inc/FUiCtrl_ScrollPresenter.h | 265 + src/ui/inc/FUiCtrl_SearchBar.h | 1068 +++ src/ui/inc/FUiCtrl_SearchBarEvent.h | 113 + src/ui/inc/FUiCtrl_SearchBarImpl.h | 1019 +++ src/ui/inc/FUiCtrl_SearchBarModel.h | 147 + src/ui/inc/FUiCtrl_SearchBarPresenter.h | 202 + src/ui/inc/FUiCtrl_SimpleItemImpl.h | 66 + src/ui/inc/FUiCtrl_SlidableGroupedListImpl.h | 302 + src/ui/inc/FUiCtrl_SlidableListImpl.h | 238 + src/ui/inc/FUiCtrl_Slider.h | 174 + src/ui/inc/FUiCtrl_SliderEvent.h | 55 + src/ui/inc/FUiCtrl_SliderImpl.h | 96 + src/ui/inc/FUiCtrl_SliderModel.h | 59 + src/ui/inc/FUiCtrl_SliderOverlay.h | 77 + src/ui/inc/FUiCtrl_SliderPresenter.h | 163 + src/ui/inc/FUiCtrl_SplitPanel.h | 185 + src/ui/inc/FUiCtrl_SplitPanelEvent.h | 115 + src/ui/inc/FUiCtrl_SplitPanelImpl.h | 104 + src/ui/inc/FUiCtrl_SplitPanelModel.h | 68 + src/ui/inc/FUiCtrl_SplitPanelPresenter.h | 143 + src/ui/inc/FUiCtrl_Tab.h | 242 + src/ui/inc/FUiCtrl_TabBar.h | 165 + src/ui/inc/FUiCtrl_TabBarImpl.h | 97 + src/ui/inc/FUiCtrl_TabBarItem.h | 97 + src/ui/inc/FUiCtrl_TabBarItemImpl.h | 52 + src/ui/inc/FUiCtrl_TabBarModel.h | 85 + src/ui/inc/FUiCtrl_TabBarPresenter.h | 128 + src/ui/inc/FUiCtrl_TabImpl.h | 137 + src/ui/inc/FUiCtrl_TabItem.h | 120 + src/ui/inc/FUiCtrl_TabModel.h | 75 + src/ui/inc/FUiCtrl_TabPresenter.h | 267 + src/ui/inc/FUiCtrl_TableView.h | 270 + src/ui/inc/FUiCtrl_TableViewImpl.h | 227 + src/ui/inc/FUiCtrl_TableViewItem.h | 350 + src/ui/inc/FUiCtrl_TableViewItemEvent.h | 63 + src/ui/inc/FUiCtrl_TableViewItemEventArg.h | 96 + src/ui/inc/FUiCtrl_TableViewItemImpl.h | 95 + src/ui/inc/FUiCtrl_TableViewItemProvider.h | 93 + src/ui/inc/FUiCtrl_TableViewItemProviderAdaptor.h | 93 + src/ui/inc/FUiCtrl_TableViewPresenter.h | 352 + src/ui/inc/FUiCtrl_TextBlockEvent.h | 105 + src/ui/inc/FUiCtrl_TextBoxImpl.h | 596 ++ src/ui/inc/FUiCtrl_TextEvent.h | 114 + src/ui/inc/FUiCtrl_TimePickerImpl.h | 97 + src/ui/inc/FUiCtrl_TokenEdit.h | 131 + src/ui/inc/FUiCtrl_TokenEditModel.h | 42 + src/ui/inc/FUiCtrl_TokenEditPresenter.h | 257 + src/ui/inc/FUiCtrl_Toolbar.h | 481 ++ src/ui/inc/FUiCtrl_ToolbarModel.h | 66 + src/ui/inc/FUiCtrl_ToolbarPresenter.h | 191 + src/ui/inc/FUiCtrl_UiFastScrollEvent.h | 111 + src/ui/inc/FUiCtrl_UiFastScrollEventArg.h | 67 + src/ui/inc/FUiCtrl_UiIconListItemEvent.h | 65 + src/ui/inc/FUiCtrl_UiListViewItemEvent.h | 55 + src/ui/inc/FUiCtrl_UiListViewItemEventArg.h | 73 + src/ui/inc/FUiCtrl_UiScrollEvent.h | 73 + src/ui/inc/FUiCtrl_UiScrollEventArg.h | 133 + src/ui/inc/FUiCtrl_UiTableViewItemEvent.h | 66 + src/ui/inc/FUi_AccessibilityContainer.h | 189 + src/ui/inc/FUi_AccessibilityContainerImpl.h | 110 + src/ui/inc/FUi_AccessibilityElement.h | 95 + src/ui/inc/FUi_AccessibilityElementImpl.h | 89 + src/ui/inc/FUi_AccessibilityGesture.h | 80 + src/ui/inc/FUi_AccessibilityManager.h | 147 + src/ui/inc/FUi_AccessibilitySystemSettingLoader.h | 57 + src/ui/inc/FUi_AccessibilityTtsPlayer.h | 86 + src/ui/inc/FUi_Colorf.h | 107 + src/ui/inc/FUi_ContainerImpl.h | 114 + src/ui/inc/FUi_Control.h | 628 ++ src/ui/inc/FUi_ControlImpl.h | 384 + src/ui/inc/FUi_ControlImplManager.h | 80 + src/ui/inc/FUi_ControlManager.h | 193 + src/ui/inc/FUi_CoordinateSystemUtils.h | 71 + src/ui/inc/FUi_CustomControlBaseImpl.h | 62 + src/ui/inc/FUi_Dimensionf.h | 84 + src/ui/inc/FUi_DragDropEvent.h | 157 + src/ui/inc/FUi_DragDropEventArg.h | 140 + src/ui/inc/FUi_EcoreEvas.h | 253 + src/ui/inc/FUi_EcoreEvasMgr.h | 63 + src/ui/inc/FUi_ErrorMessages.h | 32 + src/ui/inc/FUi_FingerInfo.h | 161 + src/ui/inc/FUi_FocusManagerImpl.h | 108 + src/ui/inc/FUi_IAccessibilityListener.h | 48 + src/ui/inc/FUi_IFocusEventListener.h | 79 + src/ui/inc/FUi_IKeyEventListener.h | 88 + src/ui/inc/FUi_IKeyEventPreviewer.h | 90 + src/ui/inc/FUi_INotificationEventListener.h | 58 + src/ui/inc/FUi_INotificationEventPreviewer.h | 58 + src/ui/inc/FUi_IPropertyChangeEventListener.h | 76 + src/ui/inc/FUi_ITouchCustomGestureEventListener.h | 87 + src/ui/inc/FUi_ITouchEventListener.h | 102 + src/ui/inc/FUi_ITouchEventPreviewer.h | 103 + src/ui/inc/FUi_ITouchFlickGestureEventListener.h | 70 + src/ui/inc/FUi_ITouchGestureDelegate.h | 50 + src/ui/inc/FUi_ITouchGestureEventListener.h | 51 + src/ui/inc/FUi_ITouchGestureStateChangedListener.h | 55 + .../inc/FUi_ITouchLongPressGestureEventListener.h | 72 + src/ui/inc/FUi_ITouchPanningGestureEventListener.h | 83 + src/ui/inc/FUi_ITouchPinchGestureEventListener.h | 88 + .../inc/FUi_ITouchRotationGestureEventListener.h | 88 + src/ui/inc/FUi_ITouchTapGestureEventListener.h | 72 + src/ui/inc/FUi_IUiEventListener.h | 48 + src/ui/inc/FUi_IUiEventManager.h | 59 + src/ui/inc/FUi_IUiEventPreviewer.h | 48 + src/ui/inc/FUi_IWindow.h | 41 + src/ui/inc/FUi_KeyEventManager.h | 142 + src/ui/inc/FUi_KeyEventManagerImpl.h | 131 + src/ui/inc/FUi_LayoutAbsoluteLayout.h | 63 + src/ui/inc/FUi_LayoutILayoutItemHandler.h | 54 + src/ui/inc/FUi_LayoutLayout.h | 446 ++ src/ui/inc/FUi_LayoutLayoutContainer.h | 246 + src/ui/inc/FUi_LayoutLayoutItem.h | 244 + src/ui/inc/FUi_LayoutLayoutTypes.h | 132 + src/ui/inc/FUi_LayoutLinearLayout.h | 381 + src/ui/inc/FUi_LayoutRelativeLayout.h | 319 + src/ui/inc/FUi_LayoutTableLayout.h | 671 ++ src/ui/inc/FUi_Math.h | 87 + src/ui/inc/FUi_Matrix3Df.h | 244 + src/ui/inc/FUi_ModalLoopManager.h | 90 + src/ui/inc/FUi_Pointf.h | 106 + src/ui/inc/FUi_PropertyBase.h | 338 + src/ui/inc/FUi_PropertyUtils.h | 76 + src/ui/inc/FUi_PublicOrientationEvent.h | 71 + src/ui/inc/FUi_Rectanglef.h | 273 + src/ui/inc/FUi_ResourceManager.h | 166 + src/ui/inc/FUi_ResourceSizeInfo.h | 77 + src/ui/inc/FUi_SharedPtr.h | 171 + src/ui/inc/FUi_TouchEventArg.h | 144 + src/ui/inc/FUi_TouchEventInfoImpl.h | 97 + src/ui/inc/FUi_TouchEventManagerImpl.h | 63 + src/ui/inc/FUi_TouchFlickGestureDetector.h | 99 + src/ui/inc/FUi_TouchFlickGestureDetectorImpl.h | 68 + src/ui/inc/FUi_TouchGestureDetector.h | 165 + src/ui/inc/FUi_TouchGestureDetectorImpl.h | 95 + src/ui/inc/FUi_TouchLongPressGestureDetector.h | 87 + src/ui/inc/FUi_TouchLongPressGestureDetectorImpl.h | 73 + src/ui/inc/FUi_TouchManager.h | 413 + src/ui/inc/FUi_TouchPanningGestureDetector.h | 70 + src/ui/inc/FUi_TouchPanningGestureDetectorImpl.h | 67 + src/ui/inc/FUi_TouchPinchGestureDetector.h | 68 + src/ui/inc/FUi_TouchPinchGestureDetectorImpl.h | 59 + src/ui/inc/FUi_TouchRotationGestureDetector.h | 77 + src/ui/inc/FUi_TouchRotationGestureDetectorImpl.h | 64 + src/ui/inc/FUi_TouchTapGestureDetector.h | 89 + src/ui/inc/FUi_TouchTapGestureDetectorImpl.h | 73 + src/ui/inc/FUi_Types.h | 100 + src/ui/inc/FUi_UiBuilder.h | 86 + src/ui/inc/FUi_UiBuilderConfig.h | 63 + src/ui/inc/FUi_UiBuilderControl.h | 85 + src/ui/inc/FUi_UiBuilderControlElement.h | 63 + src/ui/inc/FUi_UiBuilderControlItem.h | 62 + src/ui/inc/FUi_UiBuilderControlLayout.h | 80 + src/ui/inc/FUi_UiBuilderControlMaker.h | 199 + src/ui/inc/FUi_UiBuilderControlTable.h | 90 + src/ui/inc/FUi_UiBuilderRegister.h | 746 ++ src/ui/inc/FUi_UiBuilderXmlHandler.h | 84 + src/ui/inc/FUi_UiEvent.h | 108 + src/ui/inc/FUi_UiEventManager.h | 124 + src/ui/inc/FUi_UiEventTypes.h | 57 + src/ui/inc/FUi_UiFocusEvent.h | 82 + src/ui/inc/FUi_UiKeyEvent.h | 587 ++ src/ui/inc/FUi_UiNotificationEvent.h | 86 + src/ui/inc/FUi_UiTouchEvent.h | 150 + src/ui/inc/FUi_VariantImpl.h | 119 + src/ui/inc/FUi_Window.h | 149 + src/ui/inc/FUi_WindowImpl.h | 104 + src/ui/layout/FUi_LayoutAbsoluteLayout.cpp | 143 + src/ui/layout/FUi_LayoutLayout.cpp | 896 +++ src/ui/layout/FUi_LayoutLayoutContainer.cpp | 416 + src/ui/layout/FUi_LayoutLayoutItem.cpp | 313 + src/ui/layout/FUi_LayoutLayoutItemInfo.cpp | 90 + src/ui/layout/FUi_LayoutLayoutItemInfo.h | 146 + src/ui/layout/FUi_LayoutLayoutItemProxy.cpp | 254 + src/ui/layout/FUi_LayoutLayoutItemProxy.h | 110 + src/ui/layout/FUi_LayoutLayoutList.cpp | 126 + src/ui/layout/FUi_LayoutLayoutList.h | 65 + src/ui/layout/FUi_LayoutLayoutListNode.cpp | 50 + src/ui/layout/FUi_LayoutLayoutListNode.h | 61 + src/ui/layout/FUi_LayoutLinearLayout.cpp | 1419 ++++ src/ui/layout/FUi_LayoutLinkedList.cpp | 241 + src/ui/layout/FUi_LayoutLinkedList.h | 69 + src/ui/layout/FUi_LayoutLinkedListNode.cpp | 46 + src/ui/layout/FUi_LayoutLinkedListNode.h | 61 + src/ui/layout/FUi_LayoutProxyList.cpp | 504 ++ src/ui/layout/FUi_LayoutProxyList.h | 165 + src/ui/layout/FUi_LayoutProxyListNode.cpp | 64 + src/ui/layout/FUi_LayoutProxyListNode.h | 70 + src/ui/layout/FUi_LayoutRelativeLayout.cpp | 926 +++ src/ui/layout/FUi_LayoutTableLayout.cpp | 2385 ++++++ .../resource/FUi_ResourceAccessibilityConfig.cpp | 42 + src/ui/resource/FUi_ResourceButtonConfig.cpp | 68 + src/ui/resource/FUi_ResourceCheckButtonConfig.cpp | 189 + src/ui/resource/FUi_ResourceColorPickerConfig.cpp | 91 + src/ui/resource/FUi_ResourceConfigLoader.cpp | 73 + src/ui/resource/FUi_ResourceConfigLoader.h | 58 + src/ui/resource/FUi_ResourceConfigMacro.h | 313 + src/ui/resource/FUi_ResourceConfigParser.cpp | 666 ++ src/ui/resource/FUi_ResourceConfigParser.h | 86 + src/ui/resource/FUi_ResourceContextMenuConfig.cpp | 106 + src/ui/resource/FUi_ResourceDateTimeBarConfig.cpp | 74 + .../resource/FUi_ResourceDateTimePickerConfig.cpp | 95 + src/ui/resource/FUi_ResourceEditConfig.cpp | 141 + src/ui/resource/FUi_ResourceEditDateConfig.cpp | 62 + src/ui/resource/FUi_ResourceEditTimeConfig.cpp | 77 + src/ui/resource/FUi_ResourceFastScrollConfig.cpp | 60 + src/ui/resource/FUi_ResourceFooterConfig.cpp | 303 + src/ui/resource/FUi_ResourceFormConfig.cpp | 49 + src/ui/resource/FUi_ResourceGalleryConfig.cpp | 35 + src/ui/resource/FUi_ResourceHeaderConfig.cpp | 291 + src/ui/resource/FUi_ResourceIconListConfig.cpp | 83 + src/ui/resource/FUi_ResourceInputPadConfig.cpp | 71 + src/ui/resource/FUi_ResourceLabelConfig.cpp | 46 + src/ui/resource/FUi_ResourceListConfig.cpp | 67 + src/ui/resource/FUi_ResourceListViewConfig.cpp | 63 + src/ui/resource/FUi_ResourceMap.h | 203 + src/ui/resource/FUi_ResourceMapContainer.cpp | 238 + src/ui/resource/FUi_ResourceMapContainer.h | 98 + src/ui/resource/FUi_ResourceMessageBoxConfig.cpp | 82 + src/ui/resource/FUi_ResourceOptionMenuConfig.cpp | 76 + src/ui/resource/FUi_ResourceOverlayPanelConfig.cpp | 25 + src/ui/resource/FUi_ResourcePanelConfig.cpp | 65 + src/ui/resource/FUi_ResourcePopupConfig.cpp | 145 + src/ui/resource/FUi_ResourceRadioGroupConfig.cpp | 39 + src/ui/resource/FUi_ResourceScrollConfig.cpp | 80 + src/ui/resource/FUi_ResourceSearchBarConfig.cpp | 75 + src/ui/resource/FUi_ResourceSizeInfo.cpp | 275 + src/ui/resource/FUi_ResourceSliderConfig.cpp | 125 + src/ui/resource/FUi_ResourceSplitPanelConfig.cpp | 42 + src/ui/resource/FUi_ResourceStringLoader.cpp | 49 + src/ui/resource/FUi_ResourceStringLoader.h | 52 + src/ui/resource/FUi_ResourceTabBarConfig.cpp | 63 + src/ui/resource/FUi_ResourceTabConfig.cpp | 112 + src/ui/resource/FUi_ResourceTableViewConfig.cpp | 99 + src/ui/resource/FUi_ResourceTokenEditConfig.cpp | 57 + src/ui/scenes/FUiScenesBackwardSceneTransition.cpp | 56 + src/ui/scenes/FUiScenesForwardSceneTransition.cpp | 57 + src/ui/scenes/FUiScenesScene.cpp | 98 + src/ui/scenes/FUiScenesSceneManager.cpp | 286 + src/ui/scenes/FUiScenesSceneTransition.cpp | 162 + .../scenes/FUiScenes_ISceneControlEventListener.h | 46 + src/ui/scenes/FUiScenes_SceneControlEvent.cpp | 47 + src/ui/scenes/FUiScenes_SceneControlEvent.h | 45 + src/ui/scenes/FUiScenes_SceneControlEventArg.cpp | 48 + src/ui/scenes/FUiScenes_SceneControlEventArg.h | 63 + src/ui/scenes/FUiScenes_SceneImpl.cpp | 261 + src/ui/scenes/FUiScenes_SceneImpl.h | 115 + src/ui/scenes/FUiScenes_SceneManagerImpl.cpp | 1808 +++++ src/ui/scenes/FUiScenes_SceneManagerImpl.h | 211 + src/ui/scenes/FUiScenes_SceneTransitionImpl.cpp | 201 + src/ui/scenes/FUiScenes_SceneTransitionImpl.h | 88 + src/uifw/CMakeLists.txt | 121 + 3117 files changed, 587880 insertions(+) create mode 100644 AUTHORS create mode 100755 CMakeLists.txt create mode 100644 LICENSE.APLv2 create mode 100644 LICENSE.Flora create mode 100644 NOTICE create mode 100644 inc/FGraphics.h create mode 100644 inc/FGraphicsOpengl.h create mode 100644 inc/FGraphicsOpengl2.h create mode 100644 inc/FGrpBitmap.h create mode 100644 inc/FGrpBufferInfo.h create mode 100644 inc/FGrpCanvas.h create mode 100644 inc/FGrpCanvasCommon.h create mode 100644 inc/FGrpCanvasTexture.h create mode 100644 inc/FGrpColor.h create mode 100644 inc/FGrpCoordinateSystem.h create mode 100644 inc/FGrpDimension.h create mode 100644 inc/FGrpEnrichedText.h create mode 100644 inc/FGrpFloatDimension.h create mode 100644 inc/FGrpFloatMatrix4.h create mode 100644 inc/FGrpFloatPoint.h create mode 100644 inc/FGrpFloatPoint3.h create mode 100644 inc/FGrpFloatRectangle.h create mode 100644 inc/FGrpFloatVector4.h create mode 100644 inc/FGrpFont.h create mode 100644 inc/FGrpFontCommon.h create mode 100644 inc/FGrpGlPlayer.h create mode 100644 inc/FGrpIGlRenderer.h create mode 100644 inc/FGrpIVideoTextureUpdateListener.h create mode 100644 inc/FGrpPixelFormat.h create mode 100644 inc/FGrpPoint.h create mode 100644 inc/FGrpRectangle.h create mode 100644 inc/FGrpTextElement.h create mode 100644 inc/FGrpVideoTexture.h create mode 100644 inc/FUi.h create mode 100644 inc/FUiAccessibilityContainer.h create mode 100644 inc/FUiAccessibilityElement.h create mode 100644 inc/FUiAccessibilityTypes.h create mode 100644 inc/FUiAnimAnimationBase.h create mode 100644 inc/FUiAnimAnimationGroup.h create mode 100644 inc/FUiAnimAnimationTransaction.h create mode 100644 inc/FUiAnimBezierTimingFunction.h create mode 100644 inc/FUiAnimControlAnimator.h create mode 100644 inc/FUiAnimDimensionAnimation.h create mode 100644 inc/FUiAnimDiscreteTimingFunction.h create mode 100644 inc/FUiAnimDisplayContext.h create mode 100644 inc/FUiAnimEaseElasticInTimingFunction.h create mode 100644 inc/FUiAnimEaseElasticOutTimingFunction.h create mode 100644 inc/FUiAnimEaseInOutTimingFunction.h create mode 100644 inc/FUiAnimEaseInTimingFunction.h create mode 100644 inc/FUiAnimEaseOutInTimingFunction.h create mode 100644 inc/FUiAnimEaseOutTimingFunction.h create mode 100644 inc/FUiAnimExpInTimingFunction.h create mode 100644 inc/FUiAnimExpOutTimingFunction.h create mode 100644 inc/FUiAnimFloatAnimation.h create mode 100644 inc/FUiAnimFrameAnimator.h create mode 100644 inc/FUiAnimIAnimationTransactionEventListener.h create mode 100644 inc/FUiAnimIControlAnimatorDetailedEventListener.h create mode 100644 inc/FUiAnimIControlAnimatorEventListener.h create mode 100644 inc/FUiAnimIFrameAnimatorEventListener.h create mode 100644 inc/FUiAnimIVisualElementAnimationProvider.h create mode 100644 inc/FUiAnimIVisualElementAnimationStatusEventListener.h create mode 100644 inc/FUiAnimIVisualElementAnimationTickEventListener.h create mode 100644 inc/FUiAnimIVisualElementAnimationTimingFunction.h create mode 100644 inc/FUiAnimIVisualElementAnimationValueInterpolator.h create mode 100644 inc/FUiAnimIVisualElementContentProvider.h create mode 100644 inc/FUiAnimIVisualElementEventListener.h create mode 100644 inc/FUiAnimIntegerAnimation.h create mode 100644 inc/FUiAnimLinearTimingFunction.h create mode 100644 inc/FUiAnimParallelAnimationGroup.h create mode 100644 inc/FUiAnimPointAnimation.h create mode 100644 inc/FUiAnimRectangleAnimation.h create mode 100644 inc/FUiAnimRotateAnimation.h create mode 100644 inc/FUiAnimSequentialAnimationGroup.h create mode 100644 inc/FUiAnimTypes.h create mode 100644 inc/FUiAnimVisualElement.h create mode 100644 inc/FUiAnimVisualElementAnimation.h create mode 100644 inc/FUiAnimVisualElementAnimationGroup.h create mode 100644 inc/FUiAnimVisualElementAnimationProvider.h create mode 100644 inc/FUiAnimVisualElementContentProvider.h create mode 100644 inc/FUiAnimVisualElementPropertyAnimation.h create mode 100644 inc/FUiAnimVisualElementSurface.h create mode 100644 inc/FUiAnimVisualElementValueAnimation.h create mode 100644 inc/FUiAnimations.h create mode 100755 inc/FUiCardLayout.h create mode 100644 inc/FUiClipboard.h create mode 100644 inc/FUiClipboardItem.h create mode 100644 inc/FUiClipboardTypes.h create mode 100644 inc/FUiCompositeMode.h create mode 100644 inc/FUiContainer.h create mode 100644 inc/FUiControl.h create mode 100644 inc/FUiControls.h create mode 100644 inc/FUiCtrlAnimation.h create mode 100644 inc/FUiCtrlAnimationFrame.h create mode 100644 inc/FUiCtrlButton.h create mode 100644 inc/FUiCtrlButtonItem.h create mode 100644 inc/FUiCtrlCheckButton.h create mode 100644 inc/FUiCtrlColorPicker.h create mode 100644 inc/FUiCtrlContextMenu.h create mode 100644 inc/FUiCtrlControlsTypes.h create mode 100644 inc/FUiCtrlCustomItem.h create mode 100644 inc/FUiCtrlCustomList.h create mode 100644 inc/FUiCtrlCustomListItem.h create mode 100644 inc/FUiCtrlCustomListItemFormat.h create mode 100644 inc/FUiCtrlCustomListTypes.h create mode 100644 inc/FUiCtrlDatePicker.h create mode 100644 inc/FUiCtrlDateTimePicker.h create mode 100644 inc/FUiCtrlEditArea.h create mode 100644 inc/FUiCtrlEditDate.h create mode 100644 inc/FUiCtrlEditField.h create mode 100644 inc/FUiCtrlEditTime.h create mode 100644 inc/FUiCtrlEditTypes.h create mode 100644 inc/FUiCtrlExpandableEditArea.h create mode 100644 inc/FUiCtrlExpandableList.h create mode 100644 inc/FUiCtrlFooter.h create mode 100644 inc/FUiCtrlFooterItem.h create mode 100644 inc/FUiCtrlForm.h create mode 100644 inc/FUiCtrlFrame.h create mode 100644 inc/FUiCtrlFrameTypes.h create mode 100644 inc/FUiCtrlGallery.h create mode 100644 inc/FUiCtrlGalleryItem.h create mode 100644 inc/FUiCtrlGalleryTypes.h create mode 100644 inc/FUiCtrlGroupItem.h create mode 100644 inc/FUiCtrlGroupTypes.h create mode 100644 inc/FUiCtrlGroupedList.h create mode 100644 inc/FUiCtrlGroupedListView.h create mode 100644 inc/FUiCtrlGroupedListViewTypes.h create mode 100644 inc/FUiCtrlGroupedTableView.h create mode 100644 inc/FUiCtrlHeader.h create mode 100644 inc/FUiCtrlHeaderItem.h create mode 100644 inc/FUiCtrlICustomElement.h create mode 100644 inc/FUiCtrlICustomListElement.h create mode 100644 inc/FUiCtrlIExpandableEditAreaEventListener.h create mode 100644 inc/FUiCtrlIFastScrollListener.h create mode 100644 inc/FUiCtrlIFormBackEventListener.h create mode 100644 inc/FUiCtrlIFrameEventListener.h create mode 100644 inc/FUiCtrlIGalleryEventListener.h create mode 100644 inc/FUiCtrlIGalleryItemProvider.h create mode 100644 inc/FUiCtrlIGroupedListViewItemEventListener.h create mode 100644 inc/FUiCtrlIGroupedListViewItemProvider.h create mode 100644 inc/FUiCtrlIGroupedTableViewItemEventListener.h create mode 100644 inc/FUiCtrlIGroupedTableViewItemProvider.h create mode 100644 inc/FUiCtrlIIconListViewItemEventListener.h create mode 100644 inc/FUiCtrlIIconListViewItemProvider.h create mode 100644 inc/FUiCtrlIListViewItemEventListener.h create mode 100644 inc/FUiCtrlIListViewItemProvider.h create mode 100644 inc/FUiCtrlIProgressPopupEventListener.h create mode 100644 inc/FUiCtrlIScrollEventListener.h create mode 100644 inc/FUiCtrlISearchBarEventListener.h create mode 100644 inc/FUiCtrlISectionTableViewItemEventListener.h create mode 100644 inc/FUiCtrlISectionTableViewItemProvider.h create mode 100644 inc/FUiCtrlISliderEventListener.h create mode 100644 inc/FUiCtrlISplitPanelEventListener.h create mode 100644 inc/FUiCtrlITableViewItemEventListener.h create mode 100644 inc/FUiCtrlITableViewItemProvider.h create mode 100644 inc/FUiCtrlITokenFilter.h create mode 100644 inc/FUiCtrlIconList.h create mode 100644 inc/FUiCtrlIconListTypes.h create mode 100644 inc/FUiCtrlIconListView.h create mode 100644 inc/FUiCtrlIconListViewItem.h create mode 100644 inc/FUiCtrlIconListViewTypes.h create mode 100644 inc/FUiCtrlInputTypes.h create mode 100644 inc/FUiCtrlKeypad.h create mode 100644 inc/FUiCtrlLabel.h create mode 100644 inc/FUiCtrlLabelTypes.h create mode 100644 inc/FUiCtrlList.h create mode 100644 inc/FUiCtrlListContextItem.h create mode 100644 inc/FUiCtrlListItemBase.h create mode 100644 inc/FUiCtrlListTypes.h create mode 100644 inc/FUiCtrlListView.h create mode 100644 inc/FUiCtrlListViewTypes.h create mode 100644 inc/FUiCtrlMessageBox.h create mode 100644 inc/FUiCtrlOptionMenu.h create mode 100644 inc/FUiCtrlOverlayPanel.h create mode 100644 inc/FUiCtrlOverlayRegion.h create mode 100644 inc/FUiCtrlPanel.h create mode 100644 inc/FUiCtrlPopup.h create mode 100644 inc/FUiCtrlProgress.h create mode 100644 inc/FUiCtrlProgressPopup.h create mode 100644 inc/FUiCtrlRadioGroup.h create mode 100644 inc/FUiCtrlScrollEventTypes.h create mode 100644 inc/FUiCtrlScrollPanel.h create mode 100644 inc/FUiCtrlScrollPanelTypes.h create mode 100644 inc/FUiCtrlSearchBar.h create mode 100644 inc/FUiCtrlSectionTableView.h create mode 100644 inc/FUiCtrlSimpleItem.h create mode 100644 inc/FUiCtrlSlidableGroupedList.h create mode 100644 inc/FUiCtrlSlidableList.h create mode 100644 inc/FUiCtrlSlider.h create mode 100644 inc/FUiCtrlSliderTypes.h create mode 100644 inc/FUiCtrlSplitPanel.h create mode 100644 inc/FUiCtrlSplitPanelTypes.h create mode 100644 inc/FUiCtrlTab.h create mode 100644 inc/FUiCtrlTabBar.h create mode 100644 inc/FUiCtrlTabBarItem.h create mode 100644 inc/FUiCtrlTableView.h create mode 100644 inc/FUiCtrlTableViewContextItem.h create mode 100644 inc/FUiCtrlTableViewGroupItem.h create mode 100644 inc/FUiCtrlTableViewItem.h create mode 100644 inc/FUiCtrlTableViewItemBase.h create mode 100644 inc/FUiCtrlTableViewSimpleGroupItem.h create mode 100644 inc/FUiCtrlTableViewSimpleItem.h create mode 100644 inc/FUiCtrlTableViewTypes.h create mode 100644 inc/FUiCtrlTextBox.h create mode 100644 inc/FUiCtrlTimePicker.h create mode 100644 inc/FUiCustomControlBase.h create mode 100644 inc/FUiDataBindingContext.h create mode 100644 inc/FUiDataBindingTypes.h create mode 100644 inc/FUiEffects.h create mode 100644 inc/FUiEffectsEffect.h create mode 100644 inc/FUiEffectsEffectManager.h create mode 100644 inc/FUiEffectsIEffectEventListener.h create mode 100644 inc/FUiEffectsIEffectResourceProvider.h create mode 100644 inc/FUiEffectsTypes.h create mode 100644 inc/FUiFocusManager.h create mode 100755 inc/FUiGridLayout.h create mode 100755 inc/FUiHorizontalBoxLayout.h create mode 100644 inc/FUiIAccessibilityListener.h create mode 100644 inc/FUiIActionEventListener.h create mode 100644 inc/FUiIAdjustmentEventListener.h create mode 100644 inc/FUiIAnimationEventListener.h create mode 100644 inc/FUiIClipboard.h create mode 100644 inc/FUiIClipboardPopupEventListener.h create mode 100644 inc/FUiIColorChangeEventListener.h create mode 100644 inc/FUiICustomItemEventListener.h create mode 100644 inc/FUiIDataBindingDataTransformer.h create mode 100644 inc/FUiIDataBindingDataValidator.h create mode 100644 inc/FUiIDataBindingListener.h create mode 100644 inc/FUiIDateChangeEventListener.h create mode 100644 inc/FUiIDateTimeChangeEventListener.h create mode 100644 inc/FUiIDragDropEventListener.h create mode 100644 inc/FUiIExpandableItemEventListener.h create mode 100644 inc/FUiIFastScrollEventListener.h create mode 100644 inc/FUiIFocusEventListener.h create mode 100644 inc/FUiIGroupedItemEventListener.h create mode 100644 inc/FUiIInputConnectionEventListener.h create mode 100644 inc/FUiIInputConnectionProvider.h create mode 100644 inc/FUiIItemEventListener.h create mode 100644 inc/FUiIKeyEventListener.h create mode 100644 inc/FUiIKeypadEventListener.h create mode 100644 inc/FUiILanguageEventListener.h create mode 100644 inc/FUiIOrientationEventListener.h create mode 100644 inc/FUiIScrollPanelEventListener.h create mode 100644 inc/FUiISlidableGroupedListEventListener.h create mode 100644 inc/FUiISlidableListEventListener.h create mode 100644 inc/FUiITextBlockEventListener.h create mode 100644 inc/FUiITextEventListener.h create mode 100644 inc/FUiITimeChangeEventListener.h create mode 100644 inc/FUiITouchCustomGestureEventListener.h create mode 100644 inc/FUiITouchEventListener.h create mode 100644 inc/FUiITouchFlickGestureEventListener.h create mode 100644 inc/FUiITouchGestureEventListener.h create mode 100644 inc/FUiITouchLongPressGestureEventListener.h create mode 100644 inc/FUiITouchModeChangedEventListener.h create mode 100644 inc/FUiITouchPanningGestureEventListener.h create mode 100644 inc/FUiITouchPinchGestureEventListener.h create mode 100644 inc/FUiITouchRotationGestureEventListener.h create mode 100644 inc/FUiITouchTapGestureEventListener.h create mode 100644 inc/FUiIUiLinkEventListener.h create mode 100644 inc/FUiIWindowEventListener.h create mode 100644 inc/FUiInputConnection.h create mode 100644 inc/FUiInputConnectionTypes.h create mode 100644 inc/FUiKeyEventManager.h create mode 100644 inc/FUiKeyboardMap.h create mode 100644 inc/FUiLayout.h create mode 100644 inc/FUiLayoutTypes.h create mode 100755 inc/FUiRelativeLayout.h create mode 100644 inc/FUiScenes.h create mode 100644 inc/FUiScenesBackwardSceneTransition.h create mode 100644 inc/FUiScenesForwardSceneTransition.h create mode 100644 inc/FUiScenesIFormFactory.h create mode 100644 inc/FUiScenesIPanelFactory.h create mode 100644 inc/FUiScenesISceneAnimationProvider.h create mode 100644 inc/FUiScenesISceneEventListener.h create mode 100644 inc/FUiScenesISceneManagerEventListener.h create mode 100644 inc/FUiScenesISceneTransitionPolicyProvider.h create mode 100644 inc/FUiScenesScene.h create mode 100644 inc/FUiScenesSceneManager.h create mode 100644 inc/FUiScenesSceneTransition.h create mode 100644 inc/FUiScenesTypes.h create mode 100755 inc/FUiSystemUtil.h create mode 100644 inc/FUiTouch.h create mode 100644 inc/FUiTouchEventInfo.h create mode 100644 inc/FUiTouchEventManager.h create mode 100644 inc/FUiTouchFlickGestureDetector.h create mode 100644 inc/FUiTouchGestureDetector.h create mode 100644 inc/FUiTouchInfo.h create mode 100644 inc/FUiTouchLongPressGestureDetector.h create mode 100644 inc/FUiTouchPanningGestureDetector.h create mode 100644 inc/FUiTouchPinchGestureDetector.h create mode 100644 inc/FUiTouchRotationGestureDetector.h create mode 100644 inc/FUiTouchTapGestureDetector.h create mode 100644 inc/FUiUiConfiguration.h create mode 100644 inc/FUiVariant.h create mode 100644 inc/FUiVerticalBoxLayout.h create mode 100755 inc/FUiWindow.h create mode 100644 inc/egl.h create mode 100644 inc/egl_macro.h create mode 100644 inc/eglext.h create mode 100644 inc/eglplatform.h create mode 100644 inc/gl.h create mode 100644 inc/gl2.h create mode 100644 inc/gl2ext.h create mode 100644 inc/gl2macro.h create mode 100644 inc/gl2platform.h create mode 100644 inc/glext.h create mode 100644 inc/glmacro.h create mode 100644 inc/glplatform.h create mode 100644 inc/khrplatform.h create mode 100644 osp-uifw.manifest create mode 100755 osp-uifw.pc.in create mode 100755 packaging/osp-uifw.spec create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_Title_btn.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_Title_btn_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_arrow_button_press_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_arrow_button_press_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_arrow_left.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_arrow_right.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_badge_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_badge_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_btn_circle_bg.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_btn_circle_bg_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_btn_circle_bg_p_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_button_01_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_button_01_bg_p_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_01_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_01_ef_dim.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_01_ef_press.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_02.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_02_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_02_ef_press.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_03.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_03_dim_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_03_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_03_ef_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_button_06_dim.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_button_06_normal.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_button_06_press.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_call.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_call_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_button_cancel.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_expand_cancel.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_expand_cancel_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_expand_closed.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_expand_closed_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_expand_minus.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_expand_minus_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_expand_opened.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_expand_opened_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_expand_send.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_expand_send_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_info.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_info_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_left.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_left_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_button_minus.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_button_normal.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_button_normal_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_button_normal_effect_01.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_off.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_button_off_01.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_off_dim.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_off_dim_temp.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_off_temp.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_on.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_button_on_01.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_on_dim.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_on_dim_temp.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_on_off_handler.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_on_temp.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_plus.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_plus_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_radio.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_radio_dim.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_button_radio_normal1.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_button_radio_normal2.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_radio_press.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_button_radio_press1.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_button_radio_press2.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_radio_select.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_radio_select_dim.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_rename.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_rename_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_button_reveal.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_right.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_right_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_button_seg_f_bg_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_button_seg_f_bg_02.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_button_seg_f_bg_03.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_button_seg_f_bg_ef_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_button_seg_f_bg_ef_02.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_button_seg_f_bg_ef_03.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_button_send.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_button_warning.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_warring.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_warring_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_web.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_button_web_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_category_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_category_button.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_category_button_focus.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_category_left_button.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_category_left_button_arrow.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_category_left_gd.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_category_panel_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_category_panel_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_category_right_button.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_category_right_button_arrow.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_category_right_gd.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_check.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_check_angle.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_check_bg.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_check_bg_dim.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_check_bg_press.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_check_checking.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_check_checking_bg.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_check_checking_dim.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_check_dim.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_check_index_bg.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_circle_bg.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_circle_bg_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_circle_bg_ef_dim.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_circle_bg_ef_press.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_color_picker_brightness.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_color_picker_brightness_h.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_color_picker_btn_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_color_picker_btn_left.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_color_picker_btn_right.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_color_picker_color.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_color_picker_color_h.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_color_picker_custom_color.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_color_picker_custom_color_h.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_color_picker_focus.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_color_picker_saturation.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_color_picker_saturation_h.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_contacts_button_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_context_popup_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_context_popup_bg_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_context_popup_bg_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_context_popup_tail_bottom.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_context_popup_tail_bottom_01.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_context_popup_tail_bottom_effect.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_context_popup_tail_left.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_context_popup_tail_left_01.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_context_popup_tail_left_effect.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_context_popup_tail_right.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_context_popup_tail_right_01.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_context_popup_tail_right_effect.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_context_popup_tail_top.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_context_popup_tail_top_01.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_context_popup_tail_top_effect.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_date_picker_center_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_date_picker_center_bg_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_date_picker_center_bg_press_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_date_picker_dot.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_date_picker_left_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_date_picker_left_bg_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_date_picker_left_bg_press_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_date_picker_right_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_date_picker_right_bg_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_date_picker_right_bg_press_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_detail_button#5.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_detail_button.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_detail_button_01.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_detail_button_01_dim.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_detail_button_01_press.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_detail_button_dim#1.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_detail_button_dim.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_detail_button_press#3.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_detail_button_press.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_dialogue_group_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_dialogue_group_bg_bar.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_divider_line.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_divider_line_translucent.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_edit_field_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_edit_field_clear.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_edit_field_line_round_bg_01.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_edit_field_line_squre_bg_01.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_edit_field_no_line_round_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_edit_field_no_line_square_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_edit_field_round_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_edit_field_round_bg_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_effect_tab_bounce_left.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_effect_tab_bounce_right.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_fast_scroll_popup_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_fast_scroll_popup_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_fast_scroll_rollover_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_fast_scroll_rollover_bg_focus.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_fast_scroll_rollover_bg_line_focus.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_footer_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_footer_bg_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_footer_icon_close.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_footer_icon_close_press.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_footer_icon_more.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_footer_icon_more_press.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_grid_select_check.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_grid_select_check_bg.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_grid_select_check_bg_press.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_bg_focus.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_bg_p.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_bg_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_bottom_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_bottom_bg_focus.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_bottom_bg_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_center_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_center_bg_focus.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_center_bg_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_h_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_input_outline_h.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_normal_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_top_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_top_bg_focus.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_top_bg_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_header_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_header_bg_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_header_bg_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_header_button_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_header_button_bg_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_header_button_bg_focus.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_header_button_bg_press_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_header_title_handler.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_icon_Back.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_icon_Back_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_icon_Back_ef_02.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_icon_Back_trans_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_icon_back.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_icon_edit.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_icon_edit_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_icon_jump.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_icon_jump_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_icon_jump_left.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_icon_jump_left_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_icon_more.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_icon_more_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_icon_plus.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_icon_plus_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_iconlist_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_indexlist_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_indexlist_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_label_01_normal.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_bottom.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_bottom_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_center.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_center_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_top.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_top_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_01.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_02.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_03.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_04.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_05.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_06.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_07.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_08.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_09.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_10.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_11.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_12.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_13.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_14.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_15.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_16.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_17.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_18.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_19.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_20.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_21.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_22.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_23.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_24.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_25.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_26.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_27.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_28.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_29.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_process_30.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_list_progress_bar.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_list_progress_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_list_slider_icon_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_list_slider_icon_bg_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_list_slider_icon_bg_effect_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_on_button_controller#5.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_option_panel_contextual_popup_arrow.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_option_panel_handle_bg.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_option_panel_handle_bg_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_option_panel_handle_bg_ef_press.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_option_panel_handle_bg_p.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_option_panel_handle_bg_p_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_option_panel_handle_bg_press.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_option_tray_tail_bg.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_overscrolling_bottom.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_overscrolling_left.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_overscrolling_right.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_overscrolling_top.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_panel_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_panel_handle_arrow.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_panel_handle_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_panel_handle_bg_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_panel_handle_bg_ef_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_panel_handle_bg_p_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_panel_list_press_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_panel_list_press_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_popup_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_popup_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_popup_bg_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_popup_bottom_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_popup_bubble_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_popup_bubble_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_popup_bubble_tail_bottom_bg.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_popup_bubble_tail_bottom_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_popup_bubble_tail_left_bg.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_popup_bubble_tail_left_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_popup_bubble_tail_right_bg.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_popup_bubble_tail_right_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_popup_bubble_tail_top_bg.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_popup_bubble_tail_top_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_popup_title_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_processing_ani_52x52_00.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_processing_ani_52x52_01.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_processing_ani_52x52_02.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_processing_ani_52x52_03.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_processing_ani_52x52_04.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_processing_ani_52x52_05.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_processing_ani_52x52_06.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_processing_ani_52x52_07.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_processing_ani_52x52_08.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_processing_ani_52x52_09.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_progress.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_progress_bar.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_progress_bar_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_progress_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_progress_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_progress_ef_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_reorder_group_list_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_scroll_bar.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_scroll_bar_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_scroll_bar_handler_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_scroll_bar_handler_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_scroll_bar_handler_h.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_scroll_bar_handler_v.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_scroll_icon_jump.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_scroll_icon_jump_left.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_search_clear_icon_normal.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_search_clear_icon_press.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_search_edit_field_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_search_edit_field_bg_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_search_icon.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_search_icon_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_seg_line.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_seg_line_tr.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_slider_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_slider_bg_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_slider_handle.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_slider_handle.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_slider_handle_dim.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_slider_handle_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_slider_handle_ef_dim.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_slider_handle_ef_press.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_slider_handle_press.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_slider_popup_bg.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_slider_popup_bg_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_slider_popup_bottom_bg.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_slider_popup_bottom_bg_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_softkey_icon_add.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_softkey_icon_zoom.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_softkey_left_bg.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_softkey_left_bg_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_softkey_left_bg_ef_press.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_softkey_left_bg_p_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_softkey_left_text_bg.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_softkey_left_text_bg_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_softkey_left_text_bg_ef_press.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_softkey_left_text_bg_p_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_softkey_right_bg.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_softkey_right_bg_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_softkey_right_bg_ef_press.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_softkey_right_bg_p_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_softkey_right_text_bg.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_softkey_right_text_bg_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_softkey_right_text_bg_ef_press.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_softkey_right_text_bg_p_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_splite_handler_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_splite_handler_bg_ef_h.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_splite_handler_bg_ef_v.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_splite_handler_h.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_splite_handler_v.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_tab_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_tab_focus.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_tab_icon_more_01.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_tab_icon_more_02.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_tab_move_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_tab_move_bg_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_tab_press_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_thumbs_bg_focus.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_thumbs_line_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_thumbs_loading_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_tick_box_normal.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_time_picker_btn.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_time_picker_btn_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_time_picker_btn_press_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_time_picker_keypad_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_time_picker_keypad_button_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_time_picker_keypad_button_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_timepicker_number_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_timepicker_tail.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_timepicker_tail_01.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_title_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_title_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_title_btn_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_title_btn_bg_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_title_button_bg_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_title_icon_more.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_title_line.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_toolbar_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_toolbar_btn_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_toolbar_btn_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_toolbar_btn_bg_p_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_toolbar_button.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_toolbar_button_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_toolbar_button_bg_center.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_toolbar_button_bg_left.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_toolbar_button_bg_right.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_toolbar_button_center_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_toolbar_button_center_press_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_toolbar_button_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_toolbar_button_ef_press.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_toolbar_button_left_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_toolbar_button_left_ef_press.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_toolbar_button_press.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_toolbar_button_right_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_toolbar_button_right_press_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_toolbar_line.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_toolbar_line_01.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_toolbar_press.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_toolbar_trans_button_center.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_toolbar_trans_button_center_press.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_toolbar_trans_button_left.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_toolbar_trans_button_left_press.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_toolbar_trans_button_right.9.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_toolbar_trans_button_right_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_transparent_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_value_progress_bar.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_value_progress_bar_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_value_progress_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_value_progress_bg_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_Back_btn_normal.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_Back_btn_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_badge.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_control_tabbar_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_control_toolbar_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_divider_line.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_01.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_01_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_02.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_02_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_03.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_03_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_04.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_04_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_05.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_05_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_06.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_06_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_07.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_07_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_08.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_08_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_09.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_09_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_10.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_10_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_11.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_11_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_12.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_12_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_13.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_13_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_14.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_14_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_15.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_15_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_16.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_16_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_17.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_17_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_18.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_18_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_19.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_19_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_20.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_20_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_21.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_21_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_22.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_22_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_23.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_23_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_24.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_24_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_25.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_25_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_26.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_26_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_27.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_27_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_28.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_28_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_29.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_29_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_30.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_list_process_30_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_thumbs_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/00_winset_title_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/04_textinput_qwerty_button.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/04_textinput_qwerty_button_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/04_textinput_qwerty_button_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/Off_Background#5.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/On_Background#5.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/TTS_focus.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/TTS_popup_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_btn_circle_bg_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_button_01_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_button_edit_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_button_radio_normal1.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_button_radio_normal2.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_button_seg_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_button_seg_f_bg_ef_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_button_seg_f_bg_ef_02.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_button_seg_f_bg_ef_03.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_check_bg.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_color_picker_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_dialogue_group_bg_line.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_edit_field_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_groupedlist_bg_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_groupedlist_bottom_bg_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_groupedlist_center_bg_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_groupedlist_top_bg_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_indexlist_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_indexlist_icon_line.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_01_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_02_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_03_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_04_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_05_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_06_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_07_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_08_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_09_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_10_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_11_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_12_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_13_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_14_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_15_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_16_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_17_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_18_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_19_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_20_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_21_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_22_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_23_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_24_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_25_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_26_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_27_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_28_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_29_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_process_30_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_popup_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_popup_bottom_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_popup_bubble_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_popup_bubble_tail_bottom_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_popup_bubble_tail_left_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_popup_bubble_tail_right_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_popup_bubble_tail_top_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_popup_button_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_popup_title_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_popup_title_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_reorder_group_list_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_scroll_bar_handler_h.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_scroll_bar_handler_v.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_slider_handle_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_tab_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_tab_bg_focus_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_tab_bg_line_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_title_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_title_btn_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_title_button_bg_ef_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_title_option_btn_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_toolbar_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_toolbar_ef_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_toolbar_press_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_toolbar_tab_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_toolbar_tab_bg_focus_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_toolbar_tab_bg_line_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/black/00_winset_badge.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/copy&paste_Icon02_left.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/copy&paste_Icon02_left_press.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/copy&paste_Icon02_right.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/copy&paste_Icon02_right_press.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/copy&paste_Icon_left.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/copy&paste_Icon_left_press.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/copy&paste_Icon_right.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/copy&paste_Icon_right_press.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/copy&paste_icon_search.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_btn_circle_bg_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_button_01_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_button_edit_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_button_radio_normal1.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_button_radio_normal2.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_button_seg_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_button_seg_f_bg_ef_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_button_seg_f_bg_ef_02.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_button_seg_f_bg_ef_03.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_check_bg.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_color_picker_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_dialogue_group_bg_line.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_edit_field_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_groupedlist_bg_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_groupedlist_bottom_bg_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_groupedlist_center_bg_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_groupedlist_top_bg_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_indexlist_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_indexlist_icon_line.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_01_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_02_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_03_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_04_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_05_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_06_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_07_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_08_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_09_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_10_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_11_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_12_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_13_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_14_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_15_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_16_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_17_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_18_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_19_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_20_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_21_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_22_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_23_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_24_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_25_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_26_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_27_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_28_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_29_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_list_process_30_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_popup_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_popup_bottom_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_popup_bubble_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_popup_bubble_tail_bottom_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_popup_bubble_tail_left_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_popup_bubble_tail_right_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_popup_bubble_tail_top_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_popup_button_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_popup_title_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_popup_title_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_reorder_group_list_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_scroll_bar_handler_h.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_scroll_bar_handler_v.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_slider_handle_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_title_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_title_btn_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_title_button_bg_ef_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_title_option_btn_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_toolbar_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_toolbar_ef_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_toolbar_press_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_toolbar_tab_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_toolbar_tab_bg_focus_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_toolbar_tab_bg_line_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/480x800/white/00_winset_badge.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_Title_btn.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_Title_btn_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_arrow_button_press_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_arrow_button_press_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_arrow_left.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_arrow_right.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_badge_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_badge_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_btn_circle_bg.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_btn_circle_bg_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_btn_circle_bg_p_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_button_01_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_button_01_bg_p_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_01_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_01_ef_dim.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_01_ef_press.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_02.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_02_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_02_ef_press.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_03.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_03_dim_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_03_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_03_ef_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_button_06_dim.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_button_06_normal.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_button_06_press.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_call.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_call_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_button_cancel.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_expand_cancel.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_expand_cancel_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_expand_closed.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_expand_closed_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_expand_minus.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_expand_minus_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_expand_opened.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_expand_opened_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_expand_send.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_expand_send_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_info.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_info_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_left.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_left_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_button_minus.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_button_normal.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_button_normal_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_button_normal_effect_01.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_off.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_button_off_01.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_off_dim.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_off_dim_temp.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_off_temp.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_on.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_button_on_01.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_on_dim.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_on_dim_temp.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_on_off_handler.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_on_temp.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_plus.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_plus_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_radio.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_radio_dim.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_button_radio_normal1.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_button_radio_normal2.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_radio_press.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_button_radio_press1.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_button_radio_press2.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_radio_select.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_radio_select_dim.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_rename.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_rename_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_button_reveal.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_right.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_right_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_button_seg_f_bg_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_button_seg_f_bg_02.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_button_seg_f_bg_03.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_button_seg_f_bg_ef_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_button_seg_f_bg_ef_02.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_button_seg_f_bg_ef_03.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_button_send.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_button_warning.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_warring.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_warring_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_web.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_button_web_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_category_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_category_button.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_category_button_focus.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_category_left_button.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_category_left_button_arrow.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_category_left_gd.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_category_left_gradation.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_category_panel_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_category_panel_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_category_right_button.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_category_right_button_arrow.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_category_right_gd.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_category_right_gradation.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_check.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_check_angle.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_check_bg.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_check_bg_dim.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_check_bg_press.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_check_checking.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_check_checking_bg.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_check_checking_dim.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_check_dim.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_check_index_bg.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_circle_bg.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_circle_bg_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_circle_bg_ef_dim.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_circle_bg_ef_press.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_color_picker_brightness.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_color_picker_brightness_h.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_color_picker_btn_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_color_picker_btn_left.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_color_picker_btn_right.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_color_picker_color.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_color_picker_color_h.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_color_picker_custom_color.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_color_picker_custom_color_h.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_color_picker_focus.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_color_picker_saturation.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_color_picker_saturation_h.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_contacts_button_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_context_popup_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_context_popup_bg_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_context_popup_bg_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_context_popup_tail_bottom.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_context_popup_tail_bottom_01.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_context_popup_tail_bottom_effect.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_context_popup_tail_left.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_context_popup_tail_left_01.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_context_popup_tail_left_effect.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_context_popup_tail_right.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_context_popup_tail_right_01.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_context_popup_tail_right_effect.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_context_popup_tail_top.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_context_popup_tail_top_01.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_context_popup_tail_top_effect.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_date_picker_center_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_date_picker_center_bg_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_date_picker_center_bg_press_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_date_picker_dot.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_date_picker_left_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_date_picker_left_bg_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_date_picker_left_bg_press_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_date_picker_right_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_date_picker_right_bg_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_date_picker_right_bg_press_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_detail_button#5.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_detail_button.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_detail_button_01.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_detail_button_01_dim.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_detail_button_01_press.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_detail_button_dim#1.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_detail_button_dim.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_detail_button_press#3.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_detail_button_press.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_dialogue_group_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_dialogue_group_bg_bar.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_divider_line.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_divider_line_translucent.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_edit_field_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_edit_field_clear.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_edit_field_line_round_bg_01.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_edit_field_line_squre_bg_01.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_edit_field_no_line_round_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_edit_field_no_line_square_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_effect_tab_bounce_left.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_effect_tab_bounce_right.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_fast_scroll_popup_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_fast_scroll_popup_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_fast_scroll_rollover_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_fast_scroll_rollover_bg_focus.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_fast_scroll_rollover_bg_line_focus.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_footer_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_footer_bg_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_footer_button_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_footer_button_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_footer_button_ef_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_footer_icon_Back.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_footer_icon_Back_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_footer_icon_Back_ef_02.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_footer_icon_close.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_footer_icon_close_press.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_footer_icon_more.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_footer_icon_more2.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_footer_icon_more2_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_footer_icon_more_press.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_grid_select_check.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_grid_select_check_bg.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_grid_select_check_bg_press.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_groupedlist_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_groupedlist_bg_01.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_groupedlist_bg_focus.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_groupedlist_bg_p.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_groupedlist_bg_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_groupedlist_bottom_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_groupedlist_bottom_bg_01.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_groupedlist_bottom_bg_focus.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_groupedlist_bottom_bg_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_groupedlist_center_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_groupedlist_center_bg_01.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_groupedlist_center_bg_focus.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_groupedlist_center_bg_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_groupedlist_h_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_groupedlist_input_outline_h.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_groupedlist_normal_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_groupedlist_top_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_groupedlist_top_bg_01.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_groupedlist_top_bg_focus.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_groupedlist_top_bg_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_header_badge_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_header_badge_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_header_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_header_bg_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_header_bg_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_header_button_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_header_button_bg_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_header_button_bg_focus.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_header_button_bg_press_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_header_button_web.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_header_button_web_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_header_icon_edit.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_header_icon_edit_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_header_icon_plus.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_header_icon_plus_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_header_tab_press_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_header_title_handler.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_icon_Back.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_icon_Back_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_icon_Back_ef_02.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_icon_Back_trans_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_icon_add.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_icon_back.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_icon_edit.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_icon_edit_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_icon_jump.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_icon_jump_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_icon_jump_left.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_icon_jump_left_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_icon_more.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_icon_more_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_icon_plus.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_icon_plus_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_iconlist_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_indexlist_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_indexlist_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_label_01_normal.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_group_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_group_bg_bottom.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_group_bg_bottom_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_group_bg_center.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_group_bg_center_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_group_bg_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_group_bg_top.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_group_bg_top_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_01.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_02.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_03.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_04.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_05.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_06.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_07.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_08.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_09.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_10.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_11.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_12.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_13.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_14.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_15.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_16.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_17.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_18.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_19.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_20.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_21.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_22.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_23.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_24.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_25.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_26.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_27.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_28.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_29.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_process_30.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_list_progress_bar.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_list_progress_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_list_slider_icon_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_list_slider_icon_bg_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_list_slider_icon_bg_effect_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_on_button_controller#5.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_option_panel_contextual_popup_arrow.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_option_panel_handle_bg.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_option_panel_handle_bg_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_option_panel_handle_bg_ef_press.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_option_panel_handle_bg_p.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_option_panel_handle_bg_p_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_option_panel_handle_bg_press.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_option_tray_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_option_tray_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_option_tray_tail_bg.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_option_tray_tail_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_overscrolling_bottom.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_overscrolling_left.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_overscrolling_right.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_overscrolling_top.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_panel_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_panel_handle_arrow.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_panel_handle_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_panel_handle_bg_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_panel_handle_bg_ef_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_panel_handle_bg_p_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_panel_list_press_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_panel_list_press_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_popup_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_popup_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_popup_bottom_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_popup_bubble_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_popup_bubble_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_popup_bubble_tail_bottom_bg.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_popup_bubble_tail_bottom_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_popup_bubble_tail_left_bg.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_popup_bubble_tail_left_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_popup_bubble_tail_right_bg.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_popup_bubble_tail_right_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_popup_bubble_tail_top_bg.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_popup_bubble_tail_top_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_popup_title_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_processing_ani_52x52_00.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_processing_ani_52x52_01.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_processing_ani_52x52_02.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_processing_ani_52x52_03.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_processing_ani_52x52_04.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_processing_ani_52x52_05.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_processing_ani_52x52_06.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_processing_ani_52x52_07.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_processing_ani_52x52_08.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_processing_ani_52x52_09.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_progress.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_progress_bar.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_progress_bar_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_progress_bar_ef_m.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_progress_bar_m.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_progress_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_progress_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_progress_ef_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_reorder_group_list_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_scroll_bar.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_scroll_bar_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_scroll_bar_handler_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_scroll_bar_handler_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_scroll_bar_handler_h.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_scroll_bar_handler_v.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_search_clear_icon_normal.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_search_clear_icon_press.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_search_edit_field_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_search_edit_field_bg_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_search_icon.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_search_icon_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_seg_line.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_seg_line_tr.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_slider_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_slider_bg_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_slider_handle.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_slider_handle.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_slider_handle_dim.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_slider_handle_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_slider_handle_ef_dim.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_slider_handle_ef_press.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_slider_handle_press.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_slider_popup_bg.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_slider_popup_bg_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_slider_popup_bottom_bg.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_slider_popup_bottom_bg_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_softkey_icon_add.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_softkey_icon_zoom.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_softkey_left_bg.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_softkey_left_bg_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_softkey_left_bg_ef_press.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_softkey_left_bg_p_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_softkey_left_text_bg.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_softkey_left_text_bg_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_softkey_left_text_bg_ef_press.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_softkey_left_text_bg_p_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_softkey_right_bg.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_softkey_right_bg_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_softkey_right_bg_ef_press.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_softkey_right_bg_p_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_softkey_right_text_bg.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_softkey_right_text_bg_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_softkey_right_text_bg_ef_press.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_softkey_right_text_bg_p_ef.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_splite_handler_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_splite_handler_bg_ef_h.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_splite_handler_bg_ef_v.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_splite_handler_h.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_splite_handler_v.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_tab_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_tab_focus.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_tab_icon_more_01.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_tab_icon_more_02.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_tab_move_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_tab_move_bg_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_tab_press_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_thumbs_bg_focus.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_thumbs_line_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_thumbs_loading_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_tick_box_normal.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_time_picker_btn.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_time_picker_btn_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_time_picker_btn_press_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_time_picker_keypad_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_time_picker_keypad_button_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_time_picker_keypad_button_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_timepicker_number_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_timepicker_tail.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_timepicker_tail_01.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_title_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_title_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_title_btn_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_title_btn_bg_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_title_button_bg_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_title_icon_more.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_title_icon_search.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_title_line.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_btn_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_btn_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_btn_bg_ef_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_btn_bg_p_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_btn_focus.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_button.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_button_bg.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_button_bg_center.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_button_bg_left.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_button_bg_right.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_button_center_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_button_center_press_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_button_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_button_ef_press.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_button_left_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_button_left_ef_press.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_button_press.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_button_right_ef.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_button_right_press_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_divider_line.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_line.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_line_01.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_press.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_trans_button_center.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_trans_button_center_press.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_trans_button_left.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_trans_button_left_press.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_trans_button_right.9.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_toolbar_trans_button_right_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_transparent_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_value_progress_bar.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_value_progress_bar_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_value_progress_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_value_progress_bg_effect.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_Back_btn_normal.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_Back_btn_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_badge.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_control_tabbar_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_control_toolbar_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_divider_line.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_01.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_02.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_03.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_04.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_05.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_06.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_07.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_08.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_09.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_10.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_11.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_12.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_13.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_14.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_15.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_16.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_17.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_18.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_19.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_20.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_21.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_22.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_23.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_24.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_25.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_26.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_27.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_28.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_29.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_list_process_30.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_thumbs_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/00_winset_title_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/04_textinput_qwerty_button.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/04_textinput_qwerty_button_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/04_textinput_qwerty_button_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/Off_Background#5.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/On_Background#5.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/TTS_focus.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/TTS_popup_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_btn_circle_bg_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_button_01_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_button_edit_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_button_radio_normal1.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_button_radio_normal2.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_button_seg_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_button_seg_f_bg_ef_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_button_seg_f_bg_ef_02.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_button_seg_f_bg_ef_03.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_check_bg.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_color_picker_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_dialogue_group_bg_line.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_edit_field_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_groupedlist_bg_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_groupedlist_bottom_bg_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_groupedlist_center_bg_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_groupedlist_top_bg_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_indexlist_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_indexlist_icon_line.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_01_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_02_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_03_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_04_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_05_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_06_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_07_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_08_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_09_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_10_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_11_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_12_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_13_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_14_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_15_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_16_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_17_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_18_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_19_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_20_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_21_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_22_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_23_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_24_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_25_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_26_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_27_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_28_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_29_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_process_30_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_popup_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_popup_bottom_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_popup_bubble_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_popup_bubble_tail_bottom_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_popup_bubble_tail_left_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_popup_bubble_tail_right_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_popup_bubble_tail_top_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_popup_button_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_popup_title_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_popup_title_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_reorder_group_list_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_scroll_bar_handler_h.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_scroll_bar_handler_v.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_slider_handle_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_tab_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_tab_bg_focus_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_tab_bg_line_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_title_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_title_btn_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_title_button_bg_ef_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_title_option_btn_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_toolbar_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_toolbar_ef_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_toolbar_press_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_toolbar_tab_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_toolbar_tab_bg_focus_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_toolbar_tab_bg_line_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/black/00_winset_badge.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/copy&paste_Icon02_left.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/copy&paste_Icon02_left_press.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/copy&paste_Icon02_right.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/copy&paste_Icon02_right_press.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/copy&paste_Icon_left.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/copy&paste_Icon_left_press.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/copy&paste_Icon_right.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/copy&paste_Icon_right_press.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/copy&paste_icon_search.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_btn_circle_bg_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_button_01_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_button_edit_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_button_radio_normal1.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_button_radio_normal2.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_button_seg_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_button_seg_f_bg_ef_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_button_seg_f_bg_ef_02.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_button_seg_f_bg_ef_03.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_check_bg.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_color_picker_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_dialogue_group_bg_line.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_edit_field_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_edit_field_round_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_edit_field_round_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_groupedlist_bg_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_groupedlist_bottom_bg_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_groupedlist_center_bg_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_groupedlist_top_bg_01.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_indexlist_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_indexlist_icon_line.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_01_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_02_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_03_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_04_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_05_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_06_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_07_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_08_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_09_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_10_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_11_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_12_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_13_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_14_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_15_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_16_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_17_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_18_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_19_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_20_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_21_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_22_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_23_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_24_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_25_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_26_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_27_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_28_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_29_32x32.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_process_30_32x32.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_popup_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_popup_bottom_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_popup_bubble_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_popup_bubble_tail_bottom_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_popup_bubble_tail_left_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_popup_bubble_tail_right_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_popup_bubble_tail_top_ef.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_popup_button_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_popup_title_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_popup_title_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_reorder_group_list_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_scroll_bar_handler_h.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_scroll_bar_handler_v.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_slider_bg.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_slider_handle.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_slider_handle_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_slider_handle_dim.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_slider_handle_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_title_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_title_btn_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_title_button_bg_ef_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_title_option_btn_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_toolbar_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_toolbar_ef_press.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_toolbar_press_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_toolbar_tab_bg_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_toolbar_tab_bg_focus_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_toolbar_tab_bg_line_ef.9.png create mode 100755 res/common/usr/share/osp/bitmaps/720x1280/white/00_winset_badge.9.png create mode 100755 res/common/usr/share/osp/effects/gallery_page_curling.eff create mode 100755 res/common/usr/share/osp/themes/black.xml create mode 100755 res/common/usr/share/osp/themes/white.xml create mode 100755 src/CMakeLists.txt create mode 100644 src/app/FAppUiApp.cpp create mode 100644 src/app/FApp_AppFrame.cpp create mode 100644 src/app/FApp_AppResourceBitmap.cpp create mode 100644 src/app/FApp_AppResourceBitmap.h create mode 100644 src/app/FApp_AppResourceBitmapUtil.cpp create mode 100644 src/app/FApp_AppResourceBitmapUtil.h create mode 100644 src/app/FApp_UiAppImpl.cpp create mode 100644 src/app/inc/FApp_AppFrame.h create mode 100644 src/app/inc/FApp_UiAppImpl.h create mode 100755 src/graphics/CMakeLists.txt create mode 100644 src/graphics/FGrpBitmap.cpp create mode 100644 src/graphics/FGrpBufferInfo.cpp create mode 100644 src/graphics/FGrpCanvas.cpp create mode 100644 src/graphics/FGrpColor.cpp create mode 100644 src/graphics/FGrpCoordinateSystem.cpp create mode 100644 src/graphics/FGrpDimension.cpp create mode 100644 src/graphics/FGrpEnrichedText.cpp create mode 100644 src/graphics/FGrpFloatDimension.cpp create mode 100644 src/graphics/FGrpFloatMatrix4.cpp create mode 100644 src/graphics/FGrpFloatPoint.cpp create mode 100644 src/graphics/FGrpFloatPoint3.cpp create mode 100644 src/graphics/FGrpFloatRectangle.cpp create mode 100644 src/graphics/FGrpFloatVector4.cpp create mode 100644 src/graphics/FGrpFont.cpp create mode 100644 src/graphics/FGrpPoint.cpp create mode 100644 src/graphics/FGrpRectangle.cpp create mode 100644 src/graphics/FGrpTextElement.cpp create mode 100644 src/graphics/FGrp_Bitmap.cpp create mode 100644 src/graphics/FGrp_Bitmap.h create mode 100644 src/graphics/FGrp_BitmapCoordHolder.h create mode 100644 src/graphics/FGrp_BitmapImpl.cpp create mode 100644 src/graphics/FGrp_BitmapScreenCapture.cpp create mode 100644 src/graphics/FGrp_BitmapTool.cpp create mode 100644 src/graphics/FGrp_BitmapUtil.cpp create mode 100644 src/graphics/FGrp_BitmapUtil.h create mode 100644 src/graphics/FGrp_BufferInfoImpl.cpp create mode 100644 src/graphics/FGrp_Callback.cpp create mode 100644 src/graphics/FGrp_Callback.h create mode 100644 src/graphics/FGrp_Canvas.cpp create mode 100644 src/graphics/FGrp_Canvas.h create mode 100644 src/graphics/FGrp_CanvasCairo.cpp create mode 100644 src/graphics/FGrp_CanvasCairo.h create mode 100644 src/graphics/FGrp_CanvasCoordHolder.h create mode 100644 src/graphics/FGrp_CanvasGpArc.cpp create mode 100644 src/graphics/FGrp_CanvasGpEllipse.cpp create mode 100644 src/graphics/FGrp_CanvasGpFillPolygon.cpp create mode 100644 src/graphics/FGrp_CanvasGpLine.cpp create mode 100644 src/graphics/FGrp_CanvasGpPrimitive.h create mode 100644 src/graphics/FGrp_CanvasGpRoundRect.cpp create mode 100644 src/graphics/FGrp_CanvasGpTriangle.cpp create mode 100644 src/graphics/FGrp_CanvasImpl.cpp create mode 100644 src/graphics/FGrp_CanvasImplPrivate.h create mode 100644 src/graphics/FGrp_CanvasPixman.cpp create mode 100644 src/graphics/FGrp_CanvasPixman.h create mode 100644 src/graphics/FGrp_CanvasRasterOp.cpp create mode 100644 src/graphics/FGrp_CanvasRasterOp.h create mode 100644 src/graphics/FGrp_CanvasShow.cpp create mode 100644 src/graphics/FGrp_CoordinateSystem.cpp create mode 100644 src/graphics/FGrp_CoordinateSystemDeviceSpec.cpp create mode 100644 src/graphics/FGrp_CoordinateSystemImpl.cpp create mode 100644 src/graphics/FGrp_CoordinateSystemImpl.h create mode 100644 src/graphics/FGrp_EnrichedTextImpl.cpp create mode 100644 src/graphics/FGrp_Font.cpp create mode 100644 src/graphics/FGrp_Font.h create mode 100644 src/graphics/FGrp_FontBidiManager.cpp create mode 100644 src/graphics/FGrp_FontBidiManager.h create mode 100644 src/graphics/FGrp_FontCache.cpp create mode 100644 src/graphics/FGrp_FontCache.h create mode 100644 src/graphics/FGrp_FontFt2.cpp create mode 100644 src/graphics/FGrp_FontFt2.h create mode 100644 src/graphics/FGrp_FontImpl.cpp create mode 100644 src/graphics/FGrp_FontMemoryManager.cpp create mode 100644 src/graphics/FGrp_FontMemoryManager.h create mode 100644 src/graphics/FGrp_FontRsrcManager.cpp create mode 100644 src/graphics/FGrp_FontRsrcManager.h create mode 100644 src/graphics/FGrp_FontUtil.h create mode 100644 src/graphics/FGrp_IFont.h create mode 100644 src/graphics/FGrp_NonScale.cpp create mode 100644 src/graphics/FGrp_ResUtil.h create mode 100644 src/graphics/FGrp_Screen.cpp create mode 100644 src/graphics/FGrp_TextElementImpl.cpp create mode 100644 src/graphics/effect/FGrp_Effect.h create mode 100644 src/graphics/effect/FGrp_EffectAlpha.cpp create mode 100644 src/graphics/effect/FGrp_EffectFlip.cpp create mode 100644 src/graphics/effect/FGrp_EffectFunc.h create mode 100644 src/graphics/effect/FGrp_EffectManip.cpp create mode 100644 src/graphics/effect/FGrp_EffectRotate.cpp create mode 100644 src/graphics/effect/FGrp_EffectScale.cpp create mode 100644 src/graphics/effect/FGrp_EffectScale2.cpp create mode 100644 src/graphics/inc/FGrp_BitmapImpl.h create mode 100644 src/graphics/inc/FGrp_BitmapTool.h create mode 100644 src/graphics/inc/FGrp_BufferInfoImpl.h create mode 100644 src/graphics/inc/FGrp_CanvasImpl.h create mode 100644 src/graphics/inc/FGrp_CanvasTextureImpl.h create mode 100644 src/graphics/inc/FGrp_CoordinateSystem.h create mode 100644 src/graphics/inc/FGrp_EnrichedTextImpl.h create mode 100644 src/graphics/inc/FGrp_FontImpl.h create mode 100644 src/graphics/inc/FGrp_GlPlayerImpl.h create mode 100644 src/graphics/inc/FGrp_NonScale.h create mode 100644 src/graphics/inc/FGrp_Screen.h create mode 100644 src/graphics/inc/FGrp_TextCommon.h create mode 100644 src/graphics/inc/FGrp_TextElementImpl.h create mode 100644 src/graphics/inc/FGrp_TextTextCutLink.h create mode 100644 src/graphics/inc/FGrp_TextTextElement.h create mode 100644 src/graphics/inc/FGrp_TextTextImage.h create mode 100644 src/graphics/inc/FGrp_TextTextObject.h create mode 100644 src/graphics/inc/FGrp_TextTextSimple.h create mode 100644 src/graphics/inc/FGrp_VideoTextureImpl.h create mode 100755 src/graphics/opengl/CMakeLists.txt create mode 100644 src/graphics/opengl/FGrpCanvasTexture.cpp create mode 100644 src/graphics/opengl/FGrpEgl.cpp create mode 100644 src/graphics/opengl/FGrpGlPlayer.cpp create mode 100644 src/graphics/opengl/FGrpGles1.cpp create mode 100644 src/graphics/opengl/FGrpGles2.cpp create mode 100644 src/graphics/opengl/FGrpVideoTexture.cpp create mode 100644 src/graphics/opengl/FGrp_CanvasTexture.cpp create mode 100644 src/graphics/opengl/FGrp_CanvasTexture.h create mode 100644 src/graphics/opengl/FGrp_CanvasTextureImpl.cpp create mode 100644 src/graphics/opengl/FGrp_GlPlayerImpl.cpp create mode 100644 src/graphics/opengl/FGrp_VideoTexture.cpp create mode 100644 src/graphics/opengl/FGrp_VideoTexture.h create mode 100644 src/graphics/opengl/FGrp_VideoTextureImpl.cpp create mode 100644 src/graphics/text/FGrp_TextTextColumn.cpp create mode 100644 src/graphics/text/FGrp_TextTextColumn.h create mode 100644 src/graphics/text/FGrp_TextTextComposite.cpp create mode 100644 src/graphics/text/FGrp_TextTextComposite.h create mode 100644 src/graphics/text/FGrp_TextTextCutLink.cpp create mode 100644 src/graphics/text/FGrp_TextTextCutLinkListInfo.cpp create mode 100644 src/graphics/text/FGrp_TextTextCutLinkListInfo.h create mode 100644 src/graphics/text/FGrp_TextTextCutLinkParser.cpp create mode 100644 src/graphics/text/FGrp_TextTextCutLinkParser.h create mode 100644 src/graphics/text/FGrp_TextTextElement.cpp create mode 100644 src/graphics/text/FGrp_TextTextImage.cpp create mode 100644 src/graphics/text/FGrp_TextTextLine.cpp create mode 100644 src/graphics/text/FGrp_TextTextLine.h create mode 100644 src/graphics/text/FGrp_TextTextObject.cpp create mode 100644 src/graphics/text/FGrp_TextTextSimple.cpp create mode 100644 src/graphics/text/FGrp_TextTextSimpleList.cpp create mode 100644 src/graphics/text/FGrp_TextTextSimpleList.h create mode 100644 src/graphics/text/FGrp_TextTextUtility.cpp create mode 100644 src/graphics/text/FGrp_TextTextUtility.h create mode 100644 src/graphics/text/FGrp_TextTextWidthManager.cpp create mode 100644 src/graphics/text/FGrp_TextTextWidthManager.h create mode 100644 src/graphics/util/FGrp_Util.cpp create mode 100644 src/graphics/util/FGrp_Util.h create mode 100644 src/graphics/util/FGrp_UtilPixmap.cpp create mode 100644 src/graphics/util/FGrp_UtilPixmap.h create mode 100644 src/graphics/util/FGrp_UtilScratchpad.cpp create mode 100644 src/graphics/util/FGrp_UtilScratchpad.h create mode 100644 src/graphics/util/FGrp_UtilTemplate.h create mode 100644 src/graphics/util/FGrp_UtilType.h create mode 100644 src/ui/CMakeLists.txt create mode 100644 src/ui/FUiAccessibilityContainer.cpp create mode 100644 src/ui/FUiAccessibilityElement.cpp create mode 100644 src/ui/FUiCardLayout.cpp create mode 100644 src/ui/FUiClipboard.cpp create mode 100644 src/ui/FUiClipboardItem.cpp create mode 100644 src/ui/FUiContainer.cpp create mode 100644 src/ui/FUiControl.cpp create mode 100644 src/ui/FUiCustomControlBase.cpp create mode 100644 src/ui/FUiDataBindingContext.cpp create mode 100644 src/ui/FUiFocusManager.cpp create mode 100644 src/ui/FUiGridLayout.cpp create mode 100644 src/ui/FUiHorizontalBoxLayout.cpp create mode 100644 src/ui/FUiInputConnection.cpp create mode 100644 src/ui/FUiKeyEventManager.cpp create mode 100644 src/ui/FUiKeyboardMap.cpp create mode 100644 src/ui/FUiLayout.cpp create mode 100644 src/ui/FUiRelativeLayout.cpp create mode 100644 src/ui/FUiSystemUtil.cpp create mode 100644 src/ui/FUiTouch.cpp create mode 100644 src/ui/FUiTouchEventInfo.cpp create mode 100644 src/ui/FUiTouchEventManager.cpp create mode 100644 src/ui/FUiTouchFlickGestureDetector.cpp create mode 100644 src/ui/FUiTouchGestureDetector.cpp create mode 100644 src/ui/FUiTouchLongPressGestureDetector.cpp create mode 100644 src/ui/FUiTouchPanningGestureDetector.cpp create mode 100644 src/ui/FUiTouchPinchGestureDetector.cpp create mode 100644 src/ui/FUiTouchRotationGestureDetector.cpp create mode 100644 src/ui/FUiTouchTapGestureDetector.cpp create mode 100644 src/ui/FUiUiConfiguration.cpp create mode 100644 src/ui/FUiVariant.cpp create mode 100644 src/ui/FUiVerticalBoxLayout.cpp create mode 100644 src/ui/FUiWindow.cpp create mode 100644 src/ui/FUi_AccessibilityContainer.cpp create mode 100644 src/ui/FUi_AccessibilityContainerImpl.cpp create mode 100644 src/ui/FUi_AccessibilityElement.cpp create mode 100644 src/ui/FUi_AccessibilityElementImpl.cpp create mode 100644 src/ui/FUi_AccessibilityGesture.cpp create mode 100644 src/ui/FUi_AccessibilityManager.cpp create mode 100644 src/ui/FUi_AccessibilitySystemSettingLoader.cpp create mode 100644 src/ui/FUi_AccessibilityTtsPlayer.cpp create mode 100644 src/ui/FUi_ActiveWindowEvent.cpp create mode 100644 src/ui/FUi_ActiveWindowEvent.h create mode 100644 src/ui/FUi_CardLayoutImpl.cpp create mode 100644 src/ui/FUi_CardLayoutImpl.h create mode 100644 src/ui/FUi_Clipboard.cpp create mode 100644 src/ui/FUi_Clipboard.h create mode 100644 src/ui/FUi_ClipboardImpl.cpp create mode 100644 src/ui/FUi_ClipboardImpl.h create mode 100644 src/ui/FUi_ClipboardItem.cpp create mode 100644 src/ui/FUi_ClipboardItem.h create mode 100644 src/ui/FUi_ClipboardItemImpl.cpp create mode 100644 src/ui/FUi_ClipboardItemImpl.h create mode 100644 src/ui/FUi_ContainerImpl.cpp create mode 100644 src/ui/FUi_Control.cpp create mode 100755 src/ui/FUi_ControlImpl.cpp create mode 100644 src/ui/FUi_ControlImplManager.cpp create mode 100755 src/ui/FUi_ControlManager.cpp create mode 100644 src/ui/FUi_CoordinateSystemUtils.cpp create mode 100644 src/ui/FUi_CustomControlBaseImpl.cpp create mode 100644 src/ui/FUi_DataBinding.cpp create mode 100644 src/ui/FUi_DataBinding.h create mode 100644 src/ui/FUi_DataBindingContext.cpp create mode 100644 src/ui/FUi_DataBindingContext.h create mode 100644 src/ui/FUi_DataBindingContextImpl.cpp create mode 100644 src/ui/FUi_DataBindingContextImpl.h create mode 100644 src/ui/FUi_DragDropEvent.cpp create mode 100644 src/ui/FUi_DragDropEventArg.cpp create mode 100644 src/ui/FUi_EcoreEvas.cpp create mode 100644 src/ui/FUi_EcoreEvasMgr.cpp create mode 100644 src/ui/FUi_EflUiEventManager.cpp create mode 100644 src/ui/FUi_EflUiEventManager.h create mode 100644 src/ui/FUi_EflWindow.cpp create mode 100644 src/ui/FUi_EflWindow.h create mode 100644 src/ui/FUi_ErrorMessages.cpp create mode 100644 src/ui/FUi_FingerInfo.cpp create mode 100644 src/ui/FUi_FocusManagerImpl.cpp create mode 100644 src/ui/FUi_GridLayoutImpl.cpp create mode 100644 src/ui/FUi_GridLayoutImpl.h create mode 100644 src/ui/FUi_HorizontalBoxLayoutImpl.cpp create mode 100644 src/ui/FUi_HorizontalBoxLayoutImpl.h create mode 100644 src/ui/FUi_InputConnectionImpl.cpp create mode 100644 src/ui/FUi_InputConnectionImpl.h create mode 100644 src/ui/FUi_KeyEventManager.cpp create mode 100644 src/ui/FUi_KeyEventManagerImpl.cpp create mode 100644 src/ui/FUi_LayoutImpl.cpp create mode 100644 src/ui/FUi_LayoutImpl.h create mode 100644 src/ui/FUi_Matrix3Df.cpp create mode 100644 src/ui/FUi_ModalLoopManager.cpp create mode 100644 src/ui/FUi_OrientationAgent.cpp create mode 100644 src/ui/FUi_OrientationAgent.h create mode 100644 src/ui/FUi_PropertyBase.cpp create mode 100644 src/ui/FUi_PropertyUtils.cpp create mode 100644 src/ui/FUi_PublicOrientationEvent.cpp create mode 100644 src/ui/FUi_RelativeLayoutImpl.cpp create mode 100644 src/ui/FUi_RelativeLayoutImpl.h create mode 100644 src/ui/FUi_ResourceManager.cpp create mode 100644 src/ui/FUi_TouchEventArg.cpp create mode 100644 src/ui/FUi_TouchEventInfoImpl.cpp create mode 100644 src/ui/FUi_TouchEventManagerImpl.cpp create mode 100644 src/ui/FUi_TouchFlickGestureDetector.cpp create mode 100644 src/ui/FUi_TouchFlickGestureDetectorImpl.cpp create mode 100644 src/ui/FUi_TouchGestureDetector.cpp create mode 100644 src/ui/FUi_TouchGestureDetectorImpl.cpp create mode 100644 src/ui/FUi_TouchGestureTimerManager.cpp create mode 100644 src/ui/FUi_TouchGestureTimerManager.h create mode 100644 src/ui/FUi_TouchLongPressGestureDetector.cpp create mode 100644 src/ui/FUi_TouchLongPressGestureDetectorImpl.cpp create mode 100644 src/ui/FUi_TouchManager.cpp create mode 100644 src/ui/FUi_TouchPanningGestureDetector.cpp create mode 100644 src/ui/FUi_TouchPanningGestureDetectorImpl.cpp create mode 100644 src/ui/FUi_TouchPinchGestureDetector.cpp create mode 100644 src/ui/FUi_TouchPinchGestureDetectorImpl.cpp create mode 100644 src/ui/FUi_TouchRotationGestureDetector.cpp create mode 100644 src/ui/FUi_TouchRotationGestureDetectorImpl.cpp create mode 100644 src/ui/FUi_TouchTapGestureDetector.cpp create mode 100644 src/ui/FUi_TouchTapGestureDetectorImpl.cpp create mode 100644 src/ui/FUi_UiBuilder.cpp create mode 100644 src/ui/FUi_UiBuilderControl.cpp create mode 100644 src/ui/FUi_UiBuilderControlElement.cpp create mode 100644 src/ui/FUi_UiBuilderControlItem.cpp create mode 100644 src/ui/FUi_UiBuilderControlLayout.cpp create mode 100755 src/ui/FUi_UiBuilderControlMaker.cpp create mode 100644 src/ui/FUi_UiBuilderControlTable.cpp create mode 100755 src/ui/FUi_UiBuilderXmlHandler.cpp create mode 100644 src/ui/FUi_UiEvent.cpp create mode 100644 src/ui/FUi_UiEventManager.cpp create mode 100644 src/ui/FUi_UiFocusEvent.cpp create mode 100644 src/ui/FUi_UiKeyEvent.cpp create mode 100644 src/ui/FUi_UiNotificationEvent.cpp create mode 100644 src/ui/FUi_UiTouchEvent.cpp create mode 100644 src/ui/FUi_VariantImpl.cpp create mode 100644 src/ui/FUi_VerticalBoxLayoutImpl.cpp create mode 100644 src/ui/FUi_VerticalBoxLayoutImpl.h create mode 100644 src/ui/FUi_Window.cpp create mode 100644 src/ui/FUi_WindowImpl.cpp create mode 100644 src/ui/animations/FUiAnimAnimationBase.cpp create mode 100644 src/ui/animations/FUiAnimAnimationGroup.cpp create mode 100644 src/ui/animations/FUiAnimAnimationTransaction.cpp create mode 100644 src/ui/animations/FUiAnimBezierTimingFunction.cpp create mode 100644 src/ui/animations/FUiAnimControlAnimator.cpp create mode 100644 src/ui/animations/FUiAnimDimensionAnimation.cpp create mode 100644 src/ui/animations/FUiAnimDiscreteTimingFunction.cpp create mode 100644 src/ui/animations/FUiAnimDisplayContext.cpp create mode 100644 src/ui/animations/FUiAnimEaseElasticInTimingFunction.cpp create mode 100644 src/ui/animations/FUiAnimEaseElasticOutTimingFunction.cpp create mode 100644 src/ui/animations/FUiAnimEaseInOutTimingFunction.cpp create mode 100644 src/ui/animations/FUiAnimEaseInTimingFunction.cpp create mode 100644 src/ui/animations/FUiAnimEaseOutInTimingFunction.cpp create mode 100644 src/ui/animations/FUiAnimEaseOutTimingFunction.cpp create mode 100644 src/ui/animations/FUiAnimExpInTimingFunction.cpp create mode 100644 src/ui/animations/FUiAnimExpOutTimingFunction.cpp create mode 100644 src/ui/animations/FUiAnimFloatAnimation.cpp create mode 100644 src/ui/animations/FUiAnimFrameAnimator.cpp create mode 100644 src/ui/animations/FUiAnimIVisualElementAnimationStatusEventListener.cpp create mode 100644 src/ui/animations/FUiAnimIVisualElementAnimationTickEventListener.cpp create mode 100644 src/ui/animations/FUiAnimIVisualElementAnimationTimingFunction.cpp create mode 100644 src/ui/animations/FUiAnimIVisualElementAnimationValueInterpolator.cpp create mode 100644 src/ui/animations/FUiAnimIntegerAnimation.cpp create mode 100644 src/ui/animations/FUiAnimLinearTimingFunction.cpp create mode 100644 src/ui/animations/FUiAnimParallelAnimationGroup.cpp create mode 100644 src/ui/animations/FUiAnimPointAnimation.cpp create mode 100644 src/ui/animations/FUiAnimRectangleAnimation.cpp create mode 100644 src/ui/animations/FUiAnimRotateAnimation.cpp create mode 100644 src/ui/animations/FUiAnimSequentialAnimationGroup.cpp create mode 100644 src/ui/animations/FUiAnimVisualElement.cpp create mode 100644 src/ui/animations/FUiAnimVisualElementAnimation.cpp create mode 100644 src/ui/animations/FUiAnimVisualElementAnimationGroup.cpp create mode 100644 src/ui/animations/FUiAnimVisualElementAnimationProvider.cpp create mode 100644 src/ui/animations/FUiAnimVisualElementContentProvider.cpp create mode 100644 src/ui/animations/FUiAnimVisualElementPropertyAnimation.cpp create mode 100644 src/ui/animations/FUiAnimVisualElementSurface.cpp create mode 100644 src/ui/animations/FUiAnimVisualElementValueAnimation.cpp create mode 100644 src/ui/animations/FUiAnim_AnimationBaseImpl.cpp create mode 100644 src/ui/animations/FUiAnim_AnimationBaseImpl.h create mode 100644 src/ui/animations/FUiAnim_AnimationGroupImpl.cpp create mode 100644 src/ui/animations/FUiAnim_AnimationGroupImpl.h create mode 100644 src/ui/animations/FUiAnim_AnimationImpl.cpp create mode 100644 src/ui/animations/FUiAnim_AnimationManager.cpp create mode 100644 src/ui/animations/FUiAnim_AnimationManager.h create mode 100644 src/ui/animations/FUiAnim_ControlAnimatorImpl.cpp create mode 100644 src/ui/animations/FUiAnim_ControlAnimatorImpl.h create mode 100644 src/ui/animations/FUiAnim_ControlVisualElement.cpp create mode 100644 src/ui/animations/FUiAnim_ControlVisualElement.h create mode 100644 src/ui/animations/FUiAnim_Debug.cpp create mode 100644 src/ui/animations/FUiAnim_Debug.h create mode 100644 src/ui/animations/FUiAnim_DimensionAnimationImpl.cpp create mode 100644 src/ui/animations/FUiAnim_DimensionAnimationImpl.h create mode 100644 src/ui/animations/FUiAnim_DisplayContextImpl.cpp create mode 100644 src/ui/animations/FUiAnim_DisplayManager.cpp create mode 100755 src/ui/animations/FUiAnim_EflLayer.cpp create mode 100644 src/ui/animations/FUiAnim_EflNode.cpp create mode 100644 src/ui/animations/FUiAnim_EflVisualElementSurfaceImpl.cpp create mode 100644 src/ui/animations/FUiAnim_EflVisualElementSurfaceImpl.h create mode 100644 src/ui/animations/FUiAnim_FloatAnimationImpl.cpp create mode 100644 src/ui/animations/FUiAnim_FloatAnimationImpl.h create mode 100644 src/ui/animations/FUiAnim_FrameAnimatorImpl.cpp create mode 100644 src/ui/animations/FUiAnim_FrameAnimatorImpl.h create mode 100644 src/ui/animations/FUiAnim_INativeNode.cpp create mode 100644 src/ui/animations/FUiAnim_IntegerAnimationImpl.cpp create mode 100644 src/ui/animations/FUiAnim_IntegerAnimationImpl.h create mode 100644 src/ui/animations/FUiAnim_MatrixUtil.cpp create mode 100644 src/ui/animations/FUiAnim_MatrixUtil.h create mode 100644 src/ui/animations/FUiAnim_NativeLayer.cpp create mode 100644 src/ui/animations/FUiAnim_PointAnimationImpl.cpp create mode 100644 src/ui/animations/FUiAnim_PointAnimationImpl.h create mode 100644 src/ui/animations/FUiAnim_RectangleAnimationImpl.cpp create mode 100644 src/ui/animations/FUiAnim_RectangleAnimationImpl.h create mode 100644 src/ui/animations/FUiAnim_RootVisualElement.cpp create mode 100644 src/ui/animations/FUiAnim_RotateAnimationImpl.cpp create mode 100644 src/ui/animations/FUiAnim_RotateAnimationImpl.h create mode 100644 src/ui/animations/FUiAnim_TimingFunction.h create mode 100644 src/ui/animations/FUiAnim_TransactionNode.cpp create mode 100644 src/ui/animations/FUiAnim_TransactionNode.h create mode 100644 src/ui/animations/FUiAnim_TransformMatrix3Df.cpp create mode 100644 src/ui/animations/FUiAnim_VariantEx.cpp create mode 100644 src/ui/animations/FUiAnim_VariantEx.h create mode 100644 src/ui/animations/FUiAnim_VisualElement.cpp create mode 100644 src/ui/animations/FUiAnim_VisualElementAnimationGroupImpl.cpp create mode 100644 src/ui/animations/FUiAnim_VisualElementAnimationGroupImpl.h create mode 100644 src/ui/animations/FUiAnim_VisualElementAnimationImpl.cpp create mode 100644 src/ui/animations/FUiAnim_VisualElementAnimationImpl.h create mode 100644 src/ui/animations/FUiAnim_VisualElementAnimationKeyFrame.cpp create mode 100644 src/ui/animations/FUiAnim_VisualElementAnimationKeyFrame.h create mode 100644 src/ui/animations/FUiAnim_VisualElementAnimationTiming.cpp create mode 100644 src/ui/animations/FUiAnim_VisualElementAnimationTiming.h create mode 100644 src/ui/animations/FUiAnim_VisualElementAnimationVariantInterpolator.cpp create mode 100644 src/ui/animations/FUiAnim_VisualElementAnimationVariantInterpolator.h create mode 100644 src/ui/animations/FUiAnim_VisualElementCanvas.cpp create mode 100644 src/ui/animations/FUiAnim_VisualElementCoordinateSystem.cpp create mode 100644 src/ui/animations/FUiAnim_VisualElementEnvironment.cpp create mode 100644 src/ui/animations/FUiAnim_VisualElementEnvironment.h create mode 100644 src/ui/animations/FUiAnim_VisualElementImpl.cpp create mode 100644 src/ui/animations/FUiAnim_VisualElementPropertyAnimationImpl.cpp create mode 100644 src/ui/animations/FUiAnim_VisualElementPropertyAnimationImpl.h create mode 100644 src/ui/animations/FUiAnim_VisualElementSharedData.cpp create mode 100644 src/ui/animations/FUiAnim_VisualElementSurfaceImpl.cpp create mode 100644 src/ui/animations/FUiAnim_VisualElementValueAnimationImpl.cpp create mode 100644 src/ui/animations/FUiAnim_VisualElementValueAnimationImpl.h create mode 100644 src/ui/controls/FUiCtrlAnimation.cpp create mode 100644 src/ui/controls/FUiCtrlAnimationFrame.cpp create mode 100644 src/ui/controls/FUiCtrlButton.cpp create mode 100644 src/ui/controls/FUiCtrlButtonItem.cpp create mode 100644 src/ui/controls/FUiCtrlCheckButton.cpp create mode 100644 src/ui/controls/FUiCtrlColorPicker.cpp create mode 100644 src/ui/controls/FUiCtrlContextMenu.cpp create mode 100644 src/ui/controls/FUiCtrlCustomItem.cpp create mode 100644 src/ui/controls/FUiCtrlCustomList.cpp create mode 100644 src/ui/controls/FUiCtrlCustomListItem.cpp create mode 100644 src/ui/controls/FUiCtrlCustomListItemFormat.cpp create mode 100644 src/ui/controls/FUiCtrlDatePicker.cpp create mode 100644 src/ui/controls/FUiCtrlDateTimePicker.cpp create mode 100644 src/ui/controls/FUiCtrlEditArea.cpp create mode 100644 src/ui/controls/FUiCtrlEditDate.cpp create mode 100644 src/ui/controls/FUiCtrlEditField.cpp create mode 100644 src/ui/controls/FUiCtrlEditTime.cpp create mode 100644 src/ui/controls/FUiCtrlExpandableEditArea.cpp create mode 100644 src/ui/controls/FUiCtrlExpandableList.cpp create mode 100644 src/ui/controls/FUiCtrlFooter.cpp create mode 100644 src/ui/controls/FUiCtrlFooterItem.cpp create mode 100644 src/ui/controls/FUiCtrlForm.cpp create mode 100644 src/ui/controls/FUiCtrlFrame.cpp create mode 100644 src/ui/controls/FUiCtrlGallery.cpp create mode 100644 src/ui/controls/FUiCtrlGalleryItem.cpp create mode 100644 src/ui/controls/FUiCtrlGroupItem.cpp create mode 100644 src/ui/controls/FUiCtrlGroupedList.cpp create mode 100644 src/ui/controls/FUiCtrlGroupedListView.cpp create mode 100644 src/ui/controls/FUiCtrlGroupedTableView.cpp create mode 100644 src/ui/controls/FUiCtrlHeader.cpp create mode 100644 src/ui/controls/FUiCtrlHeaderItem.cpp create mode 100644 src/ui/controls/FUiCtrlIGroupedListViewItemEventListener.cpp create mode 100644 src/ui/controls/FUiCtrlIGroupedListViewItemProvider.cpp create mode 100644 src/ui/controls/FUiCtrlIListViewItemEventListener.cpp create mode 100644 src/ui/controls/FUiCtrlIconList.cpp create mode 100644 src/ui/controls/FUiCtrlIconListView.cpp create mode 100644 src/ui/controls/FUiCtrlIconListViewItem.cpp create mode 100644 src/ui/controls/FUiCtrlKeypad.cpp create mode 100644 src/ui/controls/FUiCtrlLabel.cpp create mode 100644 src/ui/controls/FUiCtrlList.cpp create mode 100644 src/ui/controls/FUiCtrlListContextItem.cpp create mode 100644 src/ui/controls/FUiCtrlListItemBase.cpp create mode 100644 src/ui/controls/FUiCtrlListView.cpp create mode 100644 src/ui/controls/FUiCtrlMessageBox.cpp create mode 100644 src/ui/controls/FUiCtrlOptionMenu.cpp create mode 100644 src/ui/controls/FUiCtrlOverlayPanel.cpp create mode 100644 src/ui/controls/FUiCtrlOverlayRegion.cpp create mode 100644 src/ui/controls/FUiCtrlPanel.cpp create mode 100644 src/ui/controls/FUiCtrlPopup.cpp create mode 100644 src/ui/controls/FUiCtrlProgress.cpp create mode 100644 src/ui/controls/FUiCtrlProgressPopup.cpp create mode 100644 src/ui/controls/FUiCtrlRadioGroup.cpp create mode 100644 src/ui/controls/FUiCtrlScrollPanel.cpp create mode 100644 src/ui/controls/FUiCtrlSearchBar.cpp create mode 100644 src/ui/controls/FUiCtrlSectionTableView.cpp create mode 100644 src/ui/controls/FUiCtrlSimpleItem.cpp create mode 100644 src/ui/controls/FUiCtrlSlidableGroupedList.cpp create mode 100644 src/ui/controls/FUiCtrlSlidableList.cpp create mode 100644 src/ui/controls/FUiCtrlSlider.cpp create mode 100644 src/ui/controls/FUiCtrlSplitPanel.cpp create mode 100644 src/ui/controls/FUiCtrlTab.cpp create mode 100644 src/ui/controls/FUiCtrlTabBar.cpp create mode 100644 src/ui/controls/FUiCtrlTabBarItem.cpp create mode 100644 src/ui/controls/FUiCtrlTableView.cpp create mode 100644 src/ui/controls/FUiCtrlTableViewContextItem.cpp create mode 100644 src/ui/controls/FUiCtrlTableViewGroupItem.cpp create mode 100644 src/ui/controls/FUiCtrlTableViewItem.cpp create mode 100644 src/ui/controls/FUiCtrlTableViewItemBase.cpp create mode 100644 src/ui/controls/FUiCtrlTableViewSimpleGroupItem.cpp create mode 100644 src/ui/controls/FUiCtrlTableViewSimpleItem.cpp create mode 100644 src/ui/controls/FUiCtrlTextBox.cpp create mode 100644 src/ui/controls/FUiCtrlTimePicker.cpp create mode 100644 src/ui/controls/FUiCtrl_ActionEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_AdjustmentEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_Animation.cpp create mode 100644 src/ui/controls/FUiCtrl_AnimationEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_AnimationFrameImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_AnimationImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_AnimationModel.cpp create mode 100644 src/ui/controls/FUiCtrl_AnimationPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_Button.cpp create mode 100644 src/ui/controls/FUiCtrl_ButtonImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_ButtonItemImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_ButtonModel.cpp create mode 100644 src/ui/controls/FUiCtrl_ButtonPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_CheckButton.cpp create mode 100644 src/ui/controls/FUiCtrl_CheckButtonImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_CheckButtonModel.cpp create mode 100644 src/ui/controls/FUiCtrl_CheckButtonPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_ColorChangeEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_ColorPicker.cpp create mode 100644 src/ui/controls/FUiCtrl_ColorPickerImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_ColorPickerModel.cpp create mode 100644 src/ui/controls/FUiCtrl_ColorPickerPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_ContextMenu.cpp create mode 100644 src/ui/controls/FUiCtrl_ContextMenuGridPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_ContextMenuImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_ContextMenuItem.cpp create mode 100644 src/ui/controls/FUiCtrl_ContextMenuListPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_ContextMenuModel.cpp create mode 100644 src/ui/controls/FUiCtrl_CustomElement.cpp create mode 100644 src/ui/controls/FUiCtrl_CustomItemImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_CustomListElements.cpp create mode 100644 src/ui/controls/FUiCtrl_CustomListImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_CustomListItemFormatImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_CustomListItemImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_DatePickerImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_DateTimeBar.cpp create mode 100644 src/ui/controls/FUiCtrl_DateTimeBarItem.cpp create mode 100644 src/ui/controls/FUiCtrl_DateTimeBarModel.cpp create mode 100644 src/ui/controls/FUiCtrl_DateTimeBarPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_DateTimeChangeEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_DateTimeDisplayBox.cpp create mode 100644 src/ui/controls/FUiCtrl_DateTimeModel.cpp create mode 100644 src/ui/controls/FUiCtrl_DateTimePicker.cpp create mode 100644 src/ui/controls/FUiCtrl_DateTimePickerImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_DateTimePresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_DateTimeUtils.cpp create mode 100644 src/ui/controls/FUiCtrl_DimmingLayer.cpp create mode 100644 src/ui/controls/FUiCtrl_Edit.cpp create mode 100644 src/ui/controls/FUiCtrl_EditAreaImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_EditCopyPasteEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_EditCopyPasteManager.cpp create mode 100644 src/ui/controls/FUiCtrl_EditDate.cpp create mode 100644 src/ui/controls/FUiCtrl_EditDateImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_EditDatePresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_EditFieldImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_EditModel.cpp create mode 100644 src/ui/controls/FUiCtrl_EditPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_EditTime.cpp create mode 100644 src/ui/controls/FUiCtrl_EditTimeImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_EditTimePresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_ExpandableEditAreaEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_ExpandableEditAreaImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_ExpandableListData.cpp create mode 100644 src/ui/controls/FUiCtrl_ExpandableListImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_FastScroll.cpp create mode 100644 src/ui/controls/FUiCtrl_FastScrollEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_FastScrollEventArg.cpp create mode 100644 src/ui/controls/FUiCtrl_FastScrollIndex.cpp create mode 100644 src/ui/controls/FUiCtrl_FastScrollIndexNode.cpp create mode 100644 src/ui/controls/FUiCtrl_FastScrollModel.cpp create mode 100644 src/ui/controls/FUiCtrl_FastScrollPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_FlickAnimation.cpp create mode 100644 src/ui/controls/FUiCtrl_FooterImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_FooterItemImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_Form.cpp create mode 100644 src/ui/controls/FUiCtrl_FormImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_FormModel.cpp create mode 100644 src/ui/controls/FUiCtrl_FormPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_Frame.cpp create mode 100644 src/ui/controls/FUiCtrl_FrameEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_FrameImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_FrameModel.cpp create mode 100644 src/ui/controls/FUiCtrl_FramePresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_Gallery.cpp create mode 100644 src/ui/controls/FUiCtrl_GalleryBitmap.cpp create mode 100644 src/ui/controls/FUiCtrl_GalleryCanvas.cpp create mode 100644 src/ui/controls/FUiCtrl_GalleryCanvasManager.cpp create mode 100644 src/ui/controls/FUiCtrl_GalleryCoreEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_GalleryCoreEventArg.cpp create mode 100644 src/ui/controls/FUiCtrl_GalleryCoreEventListener.cpp create mode 100644 src/ui/controls/FUiCtrl_GalleryImageReader.cpp create mode 100644 src/ui/controls/FUiCtrl_GalleryImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_GalleryImplEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_GalleryImplEventArg.cpp create mode 100644 src/ui/controls/FUiCtrl_GalleryItem.cpp create mode 100644 src/ui/controls/FUiCtrl_GalleryItemImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_GalleryItemProvider.cpp create mode 100644 src/ui/controls/FUiCtrl_GalleryItemProviderAdaptor.cpp create mode 100644 src/ui/controls/FUiCtrl_GalleryItemProviderAdaptorImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_GalleryModel.cpp create mode 100644 src/ui/controls/FUiCtrl_GalleryPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_GalleryRenderer.cpp create mode 100644 src/ui/controls/FUiCtrl_GalleryRendererNotifier.cpp create mode 100644 src/ui/controls/FUiCtrl_GalleryViewEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_GalleryViewEventHandler.cpp create mode 100644 src/ui/controls/FUiCtrl_GalleryViewEventInfo.cpp create mode 100644 src/ui/controls/FUiCtrl_GroupItemImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_GroupedListImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_GroupedListViewImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_GroupedListViewItemProviderAdaptor.cpp create mode 100644 src/ui/controls/FUiCtrl_HeaderImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_HeaderItemImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_IconListData.cpp create mode 100644 src/ui/controls/FUiCtrl_IconListImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_IconListItem.cpp create mode 100644 src/ui/controls/FUiCtrl_IconListItemDrawingProperty.cpp create mode 100644 src/ui/controls/FUiCtrl_IconListItemProvider.cpp create mode 100644 src/ui/controls/FUiCtrl_IconListItemProviderAdaptor.cpp create mode 100755 src/ui/controls/FUiCtrl_IconListPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_IconListUtils.cpp create mode 100644 src/ui/controls/FUiCtrl_IconListView.cpp create mode 100644 src/ui/controls/FUiCtrl_IconListViewImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_IconListViewItemEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_IconListViewItemEventArg.cpp create mode 100644 src/ui/controls/FUiCtrl_IconListViewItemImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_Indicator.cpp create mode 100644 src/ui/controls/FUiCtrl_IndicatorManager.cpp create mode 100644 src/ui/controls/FUiCtrl_InputPad.cpp create mode 100644 src/ui/controls/FUiCtrl_InputPadPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_Keypad.cpp create mode 100644 src/ui/controls/FUiCtrl_KeypadEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_KeypadImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_Label.cpp create mode 100644 src/ui/controls/FUiCtrl_LabelImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_LabelModel.cpp create mode 100644 src/ui/controls/FUiCtrl_LabelPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_LanguageEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_LinkEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_ListBaseImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_ListContextItemImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_ListImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_ListItemBaseImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_ListItemCommon.cpp create mode 100644 src/ui/controls/FUiCtrl_ListItemEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_ListItemEventArg.cpp create mode 100644 src/ui/controls/FUiCtrl_ListViewContextItem.cpp create mode 100644 src/ui/controls/FUiCtrl_ListViewImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_ListViewItem.cpp create mode 100644 src/ui/controls/FUiCtrl_ListViewItemProviderAdaptor.cpp create mode 100644 src/ui/controls/FUiCtrl_ListViewModel.cpp create mode 100644 src/ui/controls/FUiCtrl_MessageBox.cpp create mode 100644 src/ui/controls/FUiCtrl_MessageBoxImpl.cpp create mode 100755 src/ui/controls/FUiCtrl_MessageBoxPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_OptionMenu.cpp create mode 100644 src/ui/controls/FUiCtrl_OptionMenuImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_OptionMenuItem.cpp create mode 100644 src/ui/controls/FUiCtrl_OptionMenuModel.cpp create mode 100644 src/ui/controls/FUiCtrl_OptionMenuPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_OverlayAgent.cpp create mode 100644 src/ui/controls/FUiCtrl_OverlayPanel.cpp create mode 100644 src/ui/controls/FUiCtrl_OverlayPanelImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_OverlayRegionImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_Panel.cpp create mode 100644 src/ui/controls/FUiCtrl_PanelImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_PanelPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_Popup.cpp create mode 100644 src/ui/controls/FUiCtrl_PopupImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_PopupPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_Progress.cpp create mode 100644 src/ui/controls/FUiCtrl_ProgressImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_ProgressModel.cpp create mode 100644 src/ui/controls/FUiCtrl_ProgressPopup.cpp create mode 100644 src/ui/controls/FUiCtrl_ProgressPopupEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_ProgressPopupImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_ProgressPopupPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_ProgressPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_PublicActionEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_PublicAdjustmentEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_PublicAnimationEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_PublicClipboardPopupEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_PublicColorChangeEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_PublicDateTimeChangeEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_PublicExpandableEditAreaEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_PublicFrameEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_PublicKeypadEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_PublicLanguageEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_PublicLinkEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_PublicProgressPopupEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_PublicScrollPanelEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_PublicSearchBarEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_PublicSliderEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_PublicSplitPanelEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_PublicTextBlockEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_PublicTextEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_RadioGroup.cpp create mode 100644 src/ui/controls/FUiCtrl_RadioGroupImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_RadioGroupModel.cpp create mode 100644 src/ui/controls/FUiCtrl_RadioGroupPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_Scroll.cpp create mode 100644 src/ui/controls/FUiCtrl_ScrollEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_ScrollEventArg.cpp create mode 100644 src/ui/controls/FUiCtrl_ScrollPanel.cpp create mode 100644 src/ui/controls/FUiCtrl_ScrollPanelEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_ScrollPanelImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_ScrollPanelModel.cpp create mode 100644 src/ui/controls/FUiCtrl_ScrollPanelPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_ScrollPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_SearchBar.cpp create mode 100644 src/ui/controls/FUiCtrl_SearchBarEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_SearchBarImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_SearchBarModel.cpp create mode 100644 src/ui/controls/FUiCtrl_SearchBarPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_SimpleItemImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_SlidableGroupedListImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_SlidableListImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_Slider.cpp create mode 100644 src/ui/controls/FUiCtrl_SliderEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_SliderImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_SliderModel.cpp create mode 100644 src/ui/controls/FUiCtrl_SliderOverlay.cpp create mode 100644 src/ui/controls/FUiCtrl_SliderPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_SplitPanel.cpp create mode 100644 src/ui/controls/FUiCtrl_SplitPanelEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_SplitPanelImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_SplitPanelModel.cpp create mode 100644 src/ui/controls/FUiCtrl_SplitPanelPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_Tab.cpp create mode 100644 src/ui/controls/FUiCtrl_TabBar.cpp create mode 100644 src/ui/controls/FUiCtrl_TabBarImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_TabBarItem.cpp create mode 100644 src/ui/controls/FUiCtrl_TabBarItemImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_TabBarModel.cpp create mode 100644 src/ui/controls/FUiCtrl_TabBarPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_TabImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_TabItem.cpp create mode 100644 src/ui/controls/FUiCtrl_TabModel.cpp create mode 100644 src/ui/controls/FUiCtrl_TabPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_TableView.cpp create mode 100644 src/ui/controls/FUiCtrl_TableViewImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_TableViewItem.cpp create mode 100644 src/ui/controls/FUiCtrl_TableViewItemEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_TableViewItemEventArg.cpp create mode 100644 src/ui/controls/FUiCtrl_TableViewItemImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_TableViewItemProvider.cpp create mode 100644 src/ui/controls/FUiCtrl_TableViewItemProviderAdaptor.cpp create mode 100644 src/ui/controls/FUiCtrl_TableViewPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_TextBlockEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_TextBoxImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_TextEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_TimePickerImpl.cpp create mode 100644 src/ui/controls/FUiCtrl_TokenEdit.cpp create mode 100644 src/ui/controls/FUiCtrl_TokenEditModel.cpp create mode 100644 src/ui/controls/FUiCtrl_TokenEditPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_Toolbar.cpp create mode 100644 src/ui/controls/FUiCtrl_ToolbarModel.cpp create mode 100644 src/ui/controls/FUiCtrl_ToolbarPresenter.cpp create mode 100644 src/ui/controls/FUiCtrl_UiFastScrollEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_UiFastScrollEventArg.cpp create mode 100644 src/ui/controls/FUiCtrl_UiIconListItemEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_UiListViewItemEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_UiListViewItemEventArg.cpp create mode 100644 src/ui/controls/FUiCtrl_UiScrollEvent.cpp create mode 100644 src/ui/controls/FUiCtrl_UiScrollEventArg.cpp create mode 100644 src/ui/controls/FUiCtrl_UiTableViewItemEvent.cpp create mode 100644 src/ui/effects/FUiEffectsEffect.cpp create mode 100644 src/ui/effects/FUiEffectsEffectManager.cpp create mode 100644 src/ui/effects/FUiEffectsEffectTouchInfo.cpp create mode 100644 src/ui/effects/FUiEffectsEffectTouchInfo.h create mode 100644 src/ui/effects/FUiEffects_EffectErrorMessages.cpp create mode 100644 src/ui/effects/FUiEffects_EffectErrorMessages.h create mode 100644 src/ui/effects/FUiEffects_EffectImpl.cpp create mode 100644 src/ui/effects/FUiEffects_EffectImpl.h create mode 100644 src/ui/effects/FUiEffects_EffectManagerImpl.cpp create mode 100644 src/ui/effects/FUiEffects_EffectManagerImpl.h create mode 100644 src/ui/effects/FUiEffects_EffectTimer.h create mode 100644 src/ui/effects/inc/FUiEffects_LoggingProfiler.h create mode 100644 src/ui/effects/inc/FUiEffects_Parser.h create mode 100644 src/ui/effects/inc/FUiEffects_ParserEffectParser.h create mode 100644 src/ui/effects/inc/FUiEffects_ParserXMLParser.h create mode 100644 src/ui/effects/inc/FUiEffects_Pe.h create mode 100644 src/ui/effects/inc/FUiEffects_PeElementSurface.h create mode 100644 src/ui/effects/inc/FUiEffects_PePointSurface.h create mode 100644 src/ui/effects/inc/FUiEffects_PePointSurfaceNURBS.h create mode 100644 src/ui/effects/inc/FUiEffects_PeRodSurface.h create mode 100644 src/ui/effects/inc/FUiEffects_PeRodSurfaceNURBS.h create mode 100644 src/ui/effects/inc/FUiEffects_PeSpringSurface.h create mode 100644 src/ui/effects/inc/FUiEffects_Renderer.h create mode 100644 src/ui/effects/inc/FUiEffects_RendererDirectionalLight.h create mode 100644 src/ui/effects/inc/FUiEffects_RendererEffectRenderer.h create mode 100644 src/ui/effects/inc/FUiEffects_RendererEffectShader.h create mode 100644 src/ui/effects/inc/FUiEffects_RendererLightingParameters.h create mode 100644 src/ui/effects/inc/FUiEffects_RendererLog.h create mode 100644 src/ui/effects/inc/FUiEffects_RendererMemoryTexture2DProperty.h create mode 100644 src/ui/effects/inc/FUiEffects_RendererPointLight.h create mode 100644 src/ui/effects/inc/FUiEffects_RendererRendererGeometry.h create mode 100644 src/ui/effects/inc/FUiEffects_RendererRendererObject.h create mode 100644 src/ui/effects/inc/FUiEffects_RendererSpotLight.h create mode 100644 src/ui/effects/inc/FUiEffects_RendererViewport.h create mode 100644 src/ui/effects/inc/FUiEffects_Runtime.h create mode 100644 src/ui/effects/inc/FUiEffects_RuntimeDirectionalLight.h create mode 100644 src/ui/effects/inc/FUiEffects_RuntimeEffectModel.h create mode 100644 src/ui/effects/inc/FUiEffects_RuntimeEffectModelScript.h create mode 100644 src/ui/effects/inc/FUiEffects_RuntimeGraphicalSurface.h create mode 100644 src/ui/effects/inc/FUiEffects_RuntimeGraphicalSurfaceNurbs.h create mode 100644 src/ui/effects/inc/FUiEffects_RuntimeIEffectModelListener.h create mode 100644 src/ui/effects/inc/FUiEffects_RuntimeIEffectModelManager.h create mode 100644 src/ui/effects/inc/FUiEffects_RuntimeIEffectModelScript.h create mode 100644 src/ui/effects/inc/FUiEffects_RuntimeIScriptProcessing.h create mode 100644 src/ui/effects/inc/FUiEffects_RuntimeLuaProcessing.h create mode 100644 src/ui/effects/inc/FUiEffects_RuntimeModel.h create mode 100644 src/ui/effects/inc/FUiEffects_RuntimeModelSurface.h create mode 100644 src/ui/effects/inc/FUiEffects_RuntimePointLight.h create mode 100644 src/ui/effects/inc/FUiEffects_RuntimePropertyCast.h create mode 100644 src/ui/effects/inc/FUiEffects_RuntimeRenderDataScene.h create mode 100644 src/ui/effects/inc/FUiEffects_RuntimeRenderDataSurface.h create mode 100644 src/ui/effects/inc/FUiEffects_RuntimeScriptProcessing.h create mode 100644 src/ui/effects/inc/FUiEffects_RuntimeSpotLight.h create mode 100644 src/ui/effects/inc/FUiEffects_RuntimeUnitLight.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelAabb.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelAlphaBlendProperty.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelAttribute.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelBuffer.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelBufferVisitor.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelCache.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelCamera.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelDrawable.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelExternalRenderInterface.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelFloatArrayProperty.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelFloatProperty.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelFloatPropertyHolder.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelForwardDeclaration.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelFrustum.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelGeometry.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelGroup.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelIntProperty.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelIntPropertyHolder.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelMaterial.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelMatrix4fProperty.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelMatrix4fPropertyHolder.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelNode.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelProgramProperty.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelProperty.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelPropertyHolderMaterial.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelPropertyVisitor.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelRenderTarget.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelRenderTargetExternalRender.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelRenderTargetVisitor.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelShaderHolderProgramProperty.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelShaderProperty.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelStringShaderProperty.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelStubAttachment.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelTexture2DAttachmentProperty.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelTexture2DProperty.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelTextureAttachment.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelTextureProperty.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelTypedArrayProperty.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelTypedArrayPropertyHolder.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelVector2fProperty.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelVector2fPropertyHolder.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelVector3fProperty.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelVector3fPropertyHolder.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelVector4fProperty.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelVector4fPropertyHolder.h create mode 100644 src/ui/effects/inc/renderer/engine-model/FUiEffects_RendererEngineModelVisitor.h create mode 100644 src/ui/effects/inc/renderer/graphics-engine/FUiEffects_RendererGraphicsEngineOpenGLImplementation.h create mode 100644 src/ui/effects/inc/renderer/graphics-engine/FUiEffects_RendererGraphicsEngineRender.h create mode 100644 src/ui/effects/inc/renderer/graphics-engine/FUiEffects_RendererGraphicsEngineRenderBufferCache.h create mode 100644 src/ui/effects/inc/renderer/graphics-engine/FUiEffects_RendererGraphicsEngineRenderCache.h create mode 100644 src/ui/effects/inc/renderer/graphics-engine/FUiEffects_RendererGraphicsEngineRenderCommand.h create mode 100644 src/ui/effects/inc/renderer/graphics-engine/FUiEffects_RendererGraphicsEngineRenderDrawableCache.h create mode 100644 src/ui/effects/inc/renderer/graphics-engine/FUiEffects_RendererGraphicsEngineRenderRenderTargetCache.h create mode 100644 src/ui/effects/inc/renderer/graphics-engine/FUiEffects_RendererGraphicsEngineRenderShaderCache.h create mode 100644 src/ui/effects/inc/renderer/graphics-engine/FUiEffects_RendererGraphicsEngineRenderStateCache.h create mode 100644 src/ui/effects/inc/renderer/graphics-engine/FUiEffects_RendererGraphicsEngineRenderTextureCache.h create mode 100644 src/ui/effects/inc/renderer/math/FUiEffects_RendererMathAdapterFunctions.h create mode 100644 src/ui/effects/inc/renderer/math/FUiEffects_RendererMathCommon.h create mode 100644 src/ui/effects/inc/renderer/math/FUiEffects_RendererMathMatrix.h create mode 100644 src/ui/effects/inc/renderer/math/FUiEffects_RendererMathMatrix1Traits.h create mode 100644 src/ui/effects/inc/renderer/math/FUiEffects_RendererMathMatrix2Traits.h create mode 100644 src/ui/effects/inc/renderer/math/FUiEffects_RendererMathMatrix3Traits.h create mode 100644 src/ui/effects/inc/renderer/math/FUiEffects_RendererMathMatrixTraits.h create mode 100644 src/ui/effects/inc/renderer/math/FUiEffects_RendererMathMatrixTraitsBase.h create mode 100644 src/ui/effects/inc/renderer/math/FUiEffects_RendererMathVector.h create mode 100644 src/ui/effects/inc/renderer/math/FUiEffects_RendererMathVector1Traits.h create mode 100644 src/ui/effects/inc/renderer/math/FUiEffects_RendererMathVector2Traits.h create mode 100644 src/ui/effects/inc/renderer/math/FUiEffects_RendererMathVector3Traits.h create mode 100644 src/ui/effects/inc/renderer/math/FUiEffects_RendererMathVectorTraits.h create mode 100644 src/ui/effects/inc/renderer/math/FUiEffects_RendererMathVectorTraitsBase.h create mode 100644 src/ui/effects/inc/renderer/system/FUiEffects_RendererSystemConstnessPolicy.h create mode 100644 src/ui/effects/inc/renderer/system/FUiEffects_RendererSystemData.h create mode 100644 src/ui/effects/inc/renderer/system/FUiEffects_RendererSystemDataType.h create mode 100644 src/ui/effects/inc/renderer/system/FUiEffects_RendererSystemException.h create mode 100644 src/ui/effects/inc/renderer/system/FUiEffects_RendererSystemNonCopyable.h create mode 100644 src/ui/effects/inc/renderer/system/FUiEffects_RendererSystemPlatformDefine.h create mode 100644 src/ui/effects/inc/renderer/system/FUiEffects_RendererSystemSelectType.h create mode 100644 src/ui/effects/inc/renderer/system/FUiEffects_RendererSystemSmartPtr.h create mode 100644 src/ui/effects/inc/renderer/system/FUiEffects_RendererSystemSmartPtrAssertCheckPolicy.h create mode 100644 src/ui/effects/inc/renderer/system/FUiEffects_RendererSystemSmartPtrDefaultStoragePolicy.h create mode 100644 src/ui/effects/inc/renderer/system/FUiEffects_RendererSystemSmartPtrNoCheckPolicy.h create mode 100644 src/ui/effects/inc/renderer/system/FUiEffects_RendererSystemSmartPtrRefCountedMTPolicy.h create mode 100644 src/ui/effects/inc/renderer/system/FUiEffects_RendererSystemSmartPtrRefCounter.h create mode 100644 src/ui/effects/inc/renderer/system/FUiEffects_RendererSystemSmartPtrRefCounterHandlerAtomic.h create mode 100644 src/ui/effects/inc/renderer/system/FUiEffects_RendererSystemStaticAssert.h create mode 100644 src/ui/effects/inc/renderer/system/FUiEffects_RendererSystemTypeNull.h create mode 100644 src/ui/effects/inc/renderer/system/FUiEffects_RendererSystemTypeTraits.h create mode 100644 src/ui/effects/inc/utils/FUiEffects_Utils.h create mode 100644 src/ui/effects/inc/utils/FUiEffects_UtilsAdapterFunctions.h create mode 100644 src/ui/effects/inc/utils/FUiEffects_UtilsCommon.h create mode 100644 src/ui/effects/inc/utils/FUiEffects_UtilsLuaMat4.h create mode 100644 src/ui/effects/inc/utils/FUiEffects_UtilsMatrix2.h create mode 100644 src/ui/effects/inc/utils/FUiEffects_UtilsMatrix3.h create mode 100644 src/ui/effects/inc/utils/FUiEffects_UtilsMatrix4.h create mode 100644 src/ui/effects/inc/utils/FUiEffects_UtilsVector2.h create mode 100644 src/ui/effects/inc/utils/FUiEffects_UtilsVector3.h create mode 100644 src/ui/effects/inc/utils/FUiEffects_UtilsVector4.h create mode 100644 src/ui/effects/parser/FUiEffects_ParserEffectParser.cpp create mode 100644 src/ui/effects/parser/FUiEffects_ParserXMLParser.cpp create mode 100644 src/ui/effects/physics-engine/FUiEffects_PeElementSurface.cpp create mode 100644 src/ui/effects/physics-engine/FUiEffects_PePointSurface.cpp create mode 100644 src/ui/effects/physics-engine/FUiEffects_PePointSurfaceNURBS.cpp create mode 100644 src/ui/effects/physics-engine/FUiEffects_PeRodSurface.cpp create mode 100644 src/ui/effects/physics-engine/FUiEffects_PeRodSurfaceNURBS.cpp create mode 100644 src/ui/effects/physics-engine/FUiEffects_PeSpringSurface.cpp create mode 100644 src/ui/effects/renderer/FUiEffects_RendererEffectRenderer.cpp create mode 100644 src/ui/effects/renderer/FUiEffects_RendererEffectShader.cpp create mode 100644 src/ui/effects/renderer/FUiEffects_RendererLog.cpp create mode 100644 src/ui/effects/renderer/FUiEffects_RendererMemoryTexture2DProperty.cpp create mode 100644 src/ui/effects/renderer/FUiEffects_RendererRendererGeometry.cpp create mode 100644 src/ui/effects/renderer/engine-model/FUiEffects_RendererEngineModelAlphaBlendProperty.cpp create mode 100644 src/ui/effects/renderer/engine-model/FUiEffects_RendererEngineModelBuffer.cpp create mode 100644 src/ui/effects/renderer/engine-model/FUiEffects_RendererEngineModelCache.cpp create mode 100644 src/ui/effects/renderer/engine-model/FUiEffects_RendererEngineModelCamera.cpp create mode 100644 src/ui/effects/renderer/engine-model/FUiEffects_RendererEngineModelDrawable.cpp create mode 100644 src/ui/effects/renderer/engine-model/FUiEffects_RendererEngineModelFloatArrayProperty.cpp create mode 100644 src/ui/effects/renderer/engine-model/FUiEffects_RendererEngineModelFloatPropertyHolder.cpp create mode 100644 src/ui/effects/renderer/engine-model/FUiEffects_RendererEngineModelGeometry.cpp create mode 100644 src/ui/effects/renderer/engine-model/FUiEffects_RendererEngineModelGroup.cpp create mode 100644 src/ui/effects/renderer/engine-model/FUiEffects_RendererEngineModelMaterial.cpp create mode 100644 src/ui/effects/renderer/engine-model/FUiEffects_RendererEngineModelMatrix4fPropertyHolder.cpp create mode 100644 src/ui/effects/renderer/engine-model/FUiEffects_RendererEngineModelNode.cpp create mode 100644 src/ui/effects/renderer/engine-model/FUiEffects_RendererEngineModelProperty.cpp create mode 100644 src/ui/effects/renderer/engine-model/FUiEffects_RendererEngineModelPropertyHolderMaterial.cpp create mode 100644 src/ui/effects/renderer/engine-model/FUiEffects_RendererEngineModelRenderTarget.cpp create mode 100644 src/ui/effects/renderer/engine-model/FUiEffects_RendererEngineModelRenderTargetExternalRender.cpp create mode 100644 src/ui/effects/renderer/engine-model/FUiEffects_RendererEngineModelShaderHolderProgramProperty.cpp create mode 100644 src/ui/effects/renderer/engine-model/FUiEffects_RendererEngineModelStringShaderProperty.cpp create mode 100644 src/ui/effects/renderer/engine-model/FUiEffects_RendererEngineModelStubAttachment.cpp create mode 100644 src/ui/effects/renderer/engine-model/FUiEffects_RendererEngineModelTexture2DAttachmentProperty.cpp create mode 100644 src/ui/effects/renderer/engine-model/FUiEffects_RendererEngineModelTexture2DProperty.cpp create mode 100644 src/ui/effects/renderer/engine-model/FUiEffects_RendererEngineModelTextureAttachment.cpp create mode 100644 src/ui/effects/renderer/engine-model/FUiEffects_RendererEngineModelTextureProperty.cpp create mode 100644 src/ui/effects/renderer/engine-model/FUiEffects_RendererEngineModelVector2fPropertyHolder.cpp create mode 100644 src/ui/effects/renderer/engine-model/FUiEffects_RendererEngineModelVector3fPropertyHolder.cpp create mode 100644 src/ui/effects/renderer/engine-model/FUiEffects_RendererEngineModelVector4fPropertyHolder.cpp create mode 100644 src/ui/effects/renderer/graphics-engine/FUiEffects_RendererGraphicsEngineRender.cpp create mode 100644 src/ui/effects/renderer/graphics-engine/FUiEffects_RendererGraphicsEngineRenderBufferCache.cpp create mode 100644 src/ui/effects/renderer/graphics-engine/FUiEffects_RendererGraphicsEngineRenderCache.cpp create mode 100644 src/ui/effects/renderer/graphics-engine/FUiEffects_RendererGraphicsEngineRenderDrawableCache.cpp create mode 100644 src/ui/effects/renderer/graphics-engine/FUiEffects_RendererGraphicsEngineRenderRenderTargetCache.cpp create mode 100644 src/ui/effects/renderer/graphics-engine/FUiEffects_RendererGraphicsEngineRenderShaderCache.cpp create mode 100644 src/ui/effects/renderer/graphics-engine/FUiEffects_RendererGraphicsEngineRenderStateCache.cpp create mode 100644 src/ui/effects/renderer/graphics-engine/FUiEffects_RendererGraphicsEngineRenderTextureCache.cpp create mode 100644 src/ui/effects/renderer/system/FUiEffects_RendererSystemData.cpp create mode 100644 src/ui/effects/renderer/system/FUiEffects_RendererSystemException.cpp create mode 100644 src/ui/effects/renderer/system/FUiEffects_RendererSystemPlatformDefine.cpp create mode 100644 src/ui/effects/runtime/FUiEffects_RuntimeDirectionalLight.cpp create mode 100644 src/ui/effects/runtime/FUiEffects_RuntimeEffectModel.cpp create mode 100644 src/ui/effects/runtime/FUiEffects_RuntimeEffectModelScript.cpp create mode 100644 src/ui/effects/runtime/FUiEffects_RuntimeGraphicalSurface.cpp create mode 100644 src/ui/effects/runtime/FUiEffects_RuntimeGraphicalSurfaceNurbs.cpp create mode 100644 src/ui/effects/runtime/FUiEffects_RuntimeLuaProcessing.cpp create mode 100644 src/ui/effects/runtime/FUiEffects_RuntimeModelSurface.cpp create mode 100644 src/ui/effects/runtime/FUiEffects_RuntimePointLight.cpp create mode 100644 src/ui/effects/runtime/FUiEffects_RuntimeRenderDataScene.cpp create mode 100644 src/ui/effects/runtime/FUiEffects_RuntimeSpotLight.cpp create mode 100644 src/ui/effects/runtime/FUiEffects_RuntimeUnitLight.cpp create mode 100644 src/ui/effects/runtime/lua-cpp-binding/tolua.cpp create mode 100644 src/ui/effects/runtime/lua-cpp-binding/tolua.h create mode 100644 src/ui/inc/FUiAnim_DisplayContextImpl.h create mode 100644 src/ui/inc/FUiAnim_DisplayManager.h create mode 100755 src/ui/inc/FUiAnim_EflLayer.h create mode 100644 src/ui/inc/FUiAnim_EflNode.h create mode 100644 src/ui/inc/FUiAnim_INativeNode.h create mode 100755 src/ui/inc/FUiAnim_NativeLayer.h create mode 100644 src/ui/inc/FUiAnim_RootVisualElement.h create mode 100644 src/ui/inc/FUiAnim_TransformMatrix3Df.h create mode 100644 src/ui/inc/FUiAnim_VisualElement.h create mode 100644 src/ui/inc/FUiAnim_VisualElementCanvas.h create mode 100644 src/ui/inc/FUiAnim_VisualElementCoordinateSystem.h create mode 100644 src/ui/inc/FUiAnim_VisualElementImpl.h create mode 100644 src/ui/inc/FUiAnim_VisualElementSharedData.h create mode 100644 src/ui/inc/FUiAnim_VisualElementSurfaceImpl.h create mode 100644 src/ui/inc/FUiCtrl_ActionEvent.h create mode 100644 src/ui/inc/FUiCtrl_AdjustmentEvent.h create mode 100644 src/ui/inc/FUiCtrl_Animation.h create mode 100644 src/ui/inc/FUiCtrl_AnimationEvent.h create mode 100644 src/ui/inc/FUiCtrl_AnimationFrameImpl.h create mode 100644 src/ui/inc/FUiCtrl_AnimationImpl.h create mode 100644 src/ui/inc/FUiCtrl_AnimationModel.h create mode 100644 src/ui/inc/FUiCtrl_AnimationPresenter.h create mode 100644 src/ui/inc/FUiCtrl_Button.h create mode 100644 src/ui/inc/FUiCtrl_ButtonImpl.h create mode 100644 src/ui/inc/FUiCtrl_ButtonItemImpl.h create mode 100644 src/ui/inc/FUiCtrl_ButtonModel.h create mode 100644 src/ui/inc/FUiCtrl_ButtonPresenter.h create mode 100644 src/ui/inc/FUiCtrl_CheckButton.h create mode 100644 src/ui/inc/FUiCtrl_CheckButtonImpl.h create mode 100644 src/ui/inc/FUiCtrl_CheckButtonModel.h create mode 100644 src/ui/inc/FUiCtrl_CheckButtonPresenter.h create mode 100644 src/ui/inc/FUiCtrl_ColorChangeEvent.h create mode 100644 src/ui/inc/FUiCtrl_ColorPicker.h create mode 100644 src/ui/inc/FUiCtrl_ColorPickerImpl.h create mode 100644 src/ui/inc/FUiCtrl_ColorPickerModel.h create mode 100644 src/ui/inc/FUiCtrl_ColorPickerPresenter.h create mode 100644 src/ui/inc/FUiCtrl_ContextMenu.h create mode 100644 src/ui/inc/FUiCtrl_ContextMenuGridPresenter.h create mode 100644 src/ui/inc/FUiCtrl_ContextMenuImpl.h create mode 100644 src/ui/inc/FUiCtrl_ContextMenuItem.h create mode 100644 src/ui/inc/FUiCtrl_ContextMenuListPresenter.h create mode 100644 src/ui/inc/FUiCtrl_ContextMenuModel.h create mode 100644 src/ui/inc/FUiCtrl_CustomElement.h create mode 100644 src/ui/inc/FUiCtrl_CustomItemImpl.h create mode 100644 src/ui/inc/FUiCtrl_CustomListElements.h create mode 100644 src/ui/inc/FUiCtrl_CustomListImpl.h create mode 100644 src/ui/inc/FUiCtrl_CustomListItemFormatImpl.h create mode 100644 src/ui/inc/FUiCtrl_CustomListItemImpl.h create mode 100644 src/ui/inc/FUiCtrl_DatePickerImpl.h create mode 100644 src/ui/inc/FUiCtrl_DateTimeBar.h create mode 100644 src/ui/inc/FUiCtrl_DateTimeBarItem.h create mode 100644 src/ui/inc/FUiCtrl_DateTimeBarModel.h create mode 100644 src/ui/inc/FUiCtrl_DateTimeBarPresenter.h create mode 100644 src/ui/inc/FUiCtrl_DateTimeChangeEvent.h create mode 100644 src/ui/inc/FUiCtrl_DateTimeDefine.h create mode 100644 src/ui/inc/FUiCtrl_DateTimeDisplayBox.h create mode 100644 src/ui/inc/FUiCtrl_DateTimeModel.h create mode 100644 src/ui/inc/FUiCtrl_DateTimePicker.h create mode 100644 src/ui/inc/FUiCtrl_DateTimePickerImpl.h create mode 100644 src/ui/inc/FUiCtrl_DateTimePresenter.h create mode 100644 src/ui/inc/FUiCtrl_DateTimeUtils.h create mode 100644 src/ui/inc/FUiCtrl_DimmingLayer.h create mode 100644 src/ui/inc/FUiCtrl_Edit.h create mode 100644 src/ui/inc/FUiCtrl_EditAreaImpl.h create mode 100644 src/ui/inc/FUiCtrl_EditCopyPasteEvent.h create mode 100644 src/ui/inc/FUiCtrl_EditCopyPasteManager.h create mode 100644 src/ui/inc/FUiCtrl_EditDate.h create mode 100644 src/ui/inc/FUiCtrl_EditDateImpl.h create mode 100644 src/ui/inc/FUiCtrl_EditDatePresenter.h create mode 100644 src/ui/inc/FUiCtrl_EditFieldImpl.h create mode 100644 src/ui/inc/FUiCtrl_EditModel.h create mode 100644 src/ui/inc/FUiCtrl_EditPresenter.h create mode 100644 src/ui/inc/FUiCtrl_EditTime.h create mode 100644 src/ui/inc/FUiCtrl_EditTimeImpl.h create mode 100644 src/ui/inc/FUiCtrl_EditTimePresenter.h create mode 100644 src/ui/inc/FUiCtrl_ExpandableEditAreaEvent.h create mode 100644 src/ui/inc/FUiCtrl_ExpandableEditAreaImpl.h create mode 100644 src/ui/inc/FUiCtrl_ExpandableListData.h create mode 100644 src/ui/inc/FUiCtrl_ExpandableListImpl.h create mode 100644 src/ui/inc/FUiCtrl_FastScroll.h create mode 100644 src/ui/inc/FUiCtrl_FastScrollEvent.h create mode 100644 src/ui/inc/FUiCtrl_FastScrollEventArg.h create mode 100644 src/ui/inc/FUiCtrl_FastScrollIndex.h create mode 100644 src/ui/inc/FUiCtrl_FastScrollIndexNode.h create mode 100644 src/ui/inc/FUiCtrl_FastScrollModel.h create mode 100644 src/ui/inc/FUiCtrl_FastScrollPresenter.h create mode 100644 src/ui/inc/FUiCtrl_FlickAnimation.h create mode 100644 src/ui/inc/FUiCtrl_FooterImpl.h create mode 100644 src/ui/inc/FUiCtrl_FooterItemImpl.h create mode 100644 src/ui/inc/FUiCtrl_Form.h create mode 100644 src/ui/inc/FUiCtrl_FormImpl.h create mode 100644 src/ui/inc/FUiCtrl_FormModel.h create mode 100644 src/ui/inc/FUiCtrl_FormPresenter.h create mode 100644 src/ui/inc/FUiCtrl_Frame.h create mode 100644 src/ui/inc/FUiCtrl_FrameEvent.h create mode 100644 src/ui/inc/FUiCtrl_FrameImpl.h create mode 100644 src/ui/inc/FUiCtrl_FrameModel.h create mode 100644 src/ui/inc/FUiCtrl_FramePresenter.h create mode 100644 src/ui/inc/FUiCtrl_Gallery.h create mode 100644 src/ui/inc/FUiCtrl_GalleryBitmap.h create mode 100644 src/ui/inc/FUiCtrl_GalleryCanvas.h create mode 100644 src/ui/inc/FUiCtrl_GalleryCanvasManager.h create mode 100644 src/ui/inc/FUiCtrl_GalleryCoreEvent.h create mode 100644 src/ui/inc/FUiCtrl_GalleryCoreEventArg.h create mode 100644 src/ui/inc/FUiCtrl_GalleryCoreEventListener.h create mode 100644 src/ui/inc/FUiCtrl_GalleryImageReader.h create mode 100644 src/ui/inc/FUiCtrl_GalleryImpl.h create mode 100644 src/ui/inc/FUiCtrl_GalleryImplEvent.h create mode 100644 src/ui/inc/FUiCtrl_GalleryImplEventArg.h create mode 100644 src/ui/inc/FUiCtrl_GalleryItem.h create mode 100644 src/ui/inc/FUiCtrl_GalleryItemImpl.h create mode 100644 src/ui/inc/FUiCtrl_GalleryItemProvider.h create mode 100644 src/ui/inc/FUiCtrl_GalleryItemProviderAdaptor.h create mode 100644 src/ui/inc/FUiCtrl_GalleryItemProviderAdaptorImpl.h create mode 100644 src/ui/inc/FUiCtrl_GalleryModel.h create mode 100644 src/ui/inc/FUiCtrl_GalleryPresenter.h create mode 100644 src/ui/inc/FUiCtrl_GalleryRenderer.h create mode 100644 src/ui/inc/FUiCtrl_GalleryRendererNotification.h create mode 100644 src/ui/inc/FUiCtrl_GalleryRendererNotifier.h create mode 100644 src/ui/inc/FUiCtrl_GalleryTypes.h create mode 100644 src/ui/inc/FUiCtrl_GalleryViewEvent.h create mode 100644 src/ui/inc/FUiCtrl_GalleryViewEventHandler.h create mode 100644 src/ui/inc/FUiCtrl_GalleryViewEventInfo.h create mode 100644 src/ui/inc/FUiCtrl_GroupItemImpl.h create mode 100644 src/ui/inc/FUiCtrl_GroupedListImpl.h create mode 100644 src/ui/inc/FUiCtrl_GroupedListViewImpl.h create mode 100644 src/ui/inc/FUiCtrl_GroupedListViewItemProviderAdaptor.h create mode 100644 src/ui/inc/FUiCtrl_HeaderImpl.h create mode 100644 src/ui/inc/FUiCtrl_HeaderItemImpl.h create mode 100644 src/ui/inc/FUiCtrl_IActionEventListener.h create mode 100644 src/ui/inc/FUiCtrl_IAdjustmentEventListener.h create mode 100644 src/ui/inc/FUiCtrl_IAnimationEventListener.h create mode 100644 src/ui/inc/FUiCtrl_IColorChangeEventListener.h create mode 100644 src/ui/inc/FUiCtrl_IContextMenuPresenter.h create mode 100644 src/ui/inc/FUiCtrl_ICustomElement.h create mode 100644 src/ui/inc/FUiCtrl_IDateTimeChangeEventListener.h create mode 100644 src/ui/inc/FUiCtrl_IEditCopyPasteEventListener.h create mode 100644 src/ui/inc/FUiCtrl_IExpandableEditAreaEventListener.h create mode 100644 src/ui/inc/FUiCtrl_IFastScrollListener.h create mode 100644 src/ui/inc/FUiCtrl_IFormActivationChangeEventListener.h create mode 100644 src/ui/inc/FUiCtrl_IFormBackEventListener.h create mode 100644 src/ui/inc/FUiCtrl_IFrameEventListener.h create mode 100644 src/ui/inc/FUiCtrl_IGalleryCoreEventListener.h create mode 100644 src/ui/inc/FUiCtrl_IGalleryItemProvider.h create mode 100644 src/ui/inc/FUiCtrl_IGalleryRenderer.h create mode 100644 src/ui/inc/FUiCtrl_IGalleryRendererNotiListener.h create mode 100644 src/ui/inc/FUiCtrl_IIconListItemEventListener.h create mode 100644 src/ui/inc/FUiCtrl_IInputPadEventListener.h create mode 100644 src/ui/inc/FUiCtrl_IKeypadEventListener.h create mode 100644 src/ui/inc/FUiCtrl_ILanguageEventListener.h create mode 100644 src/ui/inc/FUiCtrl_IListItemCommon.h create mode 100644 src/ui/inc/FUiCtrl_IListItemProviderAdaptor.h create mode 100644 src/ui/inc/FUiCtrl_IProgressPopupEventListener.h create mode 100644 src/ui/inc/FUiCtrl_IScrollEventListener.h create mode 100644 src/ui/inc/FUiCtrl_IScrollPanelEventListener.h create mode 100644 src/ui/inc/FUiCtrl_IScrollableContainer.h create mode 100644 src/ui/inc/FUiCtrl_ISearchBarEventListener.h create mode 100644 src/ui/inc/FUiCtrl_ISliderEventListener.h create mode 100644 src/ui/inc/FUiCtrl_ISplitPanelEventListener.h create mode 100644 src/ui/inc/FUiCtrl_ITableViewItemEventListener.h create mode 100644 src/ui/inc/FUiCtrl_ITextBlockEventListener.h create mode 100644 src/ui/inc/FUiCtrl_ITextEventListener.h create mode 100644 src/ui/inc/FUiCtrl_ITokenFilter.h create mode 100644 src/ui/inc/FUiCtrl_IUiLinkEventListener.h create mode 100644 src/ui/inc/FUiCtrl_IUiListViewItemEventListener.h create mode 100644 src/ui/inc/FUiCtrl_IconListData.h create mode 100644 src/ui/inc/FUiCtrl_IconListImpl.h create mode 100644 src/ui/inc/FUiCtrl_IconListItem.h create mode 100644 src/ui/inc/FUiCtrl_IconListItemDrawingProperty.h create mode 100644 src/ui/inc/FUiCtrl_IconListItemProvider.h create mode 100644 src/ui/inc/FUiCtrl_IconListItemProviderAdaptor.h create mode 100644 src/ui/inc/FUiCtrl_IconListPresenter.h create mode 100644 src/ui/inc/FUiCtrl_IconListUtils.h create mode 100644 src/ui/inc/FUiCtrl_IconListView.h create mode 100644 src/ui/inc/FUiCtrl_IconListViewImpl.h create mode 100644 src/ui/inc/FUiCtrl_IconListViewItemEvent.h create mode 100644 src/ui/inc/FUiCtrl_IconListViewItemEventArg.h create mode 100644 src/ui/inc/FUiCtrl_IconListViewItemImpl.h create mode 100644 src/ui/inc/FUiCtrl_Indicator.h create mode 100644 src/ui/inc/FUiCtrl_IndicatorManager.h create mode 100644 src/ui/inc/FUiCtrl_InputPad.h create mode 100644 src/ui/inc/FUiCtrl_InputPadPresenter.h create mode 100644 src/ui/inc/FUiCtrl_Keypad.h create mode 100644 src/ui/inc/FUiCtrl_KeypadEvent.h create mode 100644 src/ui/inc/FUiCtrl_KeypadImpl.h create mode 100644 src/ui/inc/FUiCtrl_Label.h create mode 100644 src/ui/inc/FUiCtrl_LabelImpl.h create mode 100644 src/ui/inc/FUiCtrl_LabelModel.h create mode 100644 src/ui/inc/FUiCtrl_LabelPresenter.h create mode 100644 src/ui/inc/FUiCtrl_LanguageEvent.h create mode 100644 src/ui/inc/FUiCtrl_LinkEvent.h create mode 100644 src/ui/inc/FUiCtrl_LinkedList.h create mode 100644 src/ui/inc/FUiCtrl_ListBaseImpl.h create mode 100644 src/ui/inc/FUiCtrl_ListContextItemImpl.h create mode 100644 src/ui/inc/FUiCtrl_ListImpl.h create mode 100644 src/ui/inc/FUiCtrl_ListItemBaseImpl.h create mode 100644 src/ui/inc/FUiCtrl_ListItemCommon.h create mode 100644 src/ui/inc/FUiCtrl_ListItemEvent.h create mode 100644 src/ui/inc/FUiCtrl_ListItemEventArg.h create mode 100644 src/ui/inc/FUiCtrl_ListListener.h create mode 100644 src/ui/inc/FUiCtrl_ListViewContextItem.h create mode 100644 src/ui/inc/FUiCtrl_ListViewImpl.h create mode 100644 src/ui/inc/FUiCtrl_ListViewItem.h create mode 100644 src/ui/inc/FUiCtrl_ListViewItemProviderAdaptor.h create mode 100644 src/ui/inc/FUiCtrl_ListViewModel.h create mode 100644 src/ui/inc/FUiCtrl_ListViewTypes.h create mode 100644 src/ui/inc/FUiCtrl_MessageBox.h create mode 100644 src/ui/inc/FUiCtrl_MessageBoxImpl.h create mode 100644 src/ui/inc/FUiCtrl_MessageBoxPresenter.h create mode 100644 src/ui/inc/FUiCtrl_OptionMenu.h create mode 100644 src/ui/inc/FUiCtrl_OptionMenuImpl.h create mode 100644 src/ui/inc/FUiCtrl_OptionMenuItem.h create mode 100644 src/ui/inc/FUiCtrl_OptionMenuModel.h create mode 100644 src/ui/inc/FUiCtrl_OptionMenuPresenter.h create mode 100644 src/ui/inc/FUiCtrl_OverlayAgent.h create mode 100644 src/ui/inc/FUiCtrl_OverlayPanel.h create mode 100644 src/ui/inc/FUiCtrl_OverlayPanelImpl.h create mode 100644 src/ui/inc/FUiCtrl_OverlayRegionImpl.h create mode 100644 src/ui/inc/FUiCtrl_Panel.h create mode 100644 src/ui/inc/FUiCtrl_PanelImpl.h create mode 100644 src/ui/inc/FUiCtrl_PanelPresenter.h create mode 100644 src/ui/inc/FUiCtrl_Popup.h create mode 100644 src/ui/inc/FUiCtrl_PopupImpl.h create mode 100644 src/ui/inc/FUiCtrl_PopupPresenter.h create mode 100644 src/ui/inc/FUiCtrl_Progress.h create mode 100644 src/ui/inc/FUiCtrl_ProgressImpl.h create mode 100644 src/ui/inc/FUiCtrl_ProgressModel.h create mode 100644 src/ui/inc/FUiCtrl_ProgressPopup.h create mode 100644 src/ui/inc/FUiCtrl_ProgressPopupEvent.h create mode 100644 src/ui/inc/FUiCtrl_ProgressPopupImpl.h create mode 100644 src/ui/inc/FUiCtrl_ProgressPopupPresenter.h create mode 100644 src/ui/inc/FUiCtrl_ProgressPresenter.h create mode 100644 src/ui/inc/FUiCtrl_PublicActionEvent.h create mode 100644 src/ui/inc/FUiCtrl_PublicAdjustmentEvent.h create mode 100644 src/ui/inc/FUiCtrl_PublicAnimationEvent.h create mode 100644 src/ui/inc/FUiCtrl_PublicClipboardPopupEvent.h create mode 100644 src/ui/inc/FUiCtrl_PublicColorChangeEvent.h create mode 100644 src/ui/inc/FUiCtrl_PublicDateTimeChangeEvent.h create mode 100644 src/ui/inc/FUiCtrl_PublicExpandableEditAreaEvent.h create mode 100644 src/ui/inc/FUiCtrl_PublicFrameEvent.h create mode 100644 src/ui/inc/FUiCtrl_PublicKeypadEvent.h create mode 100644 src/ui/inc/FUiCtrl_PublicLanguageEvent.h create mode 100644 src/ui/inc/FUiCtrl_PublicLinkEvent.h create mode 100644 src/ui/inc/FUiCtrl_PublicProgressPopupEvent.h create mode 100644 src/ui/inc/FUiCtrl_PublicScrollPanelEvent.h create mode 100644 src/ui/inc/FUiCtrl_PublicSearchBarEvent.h create mode 100644 src/ui/inc/FUiCtrl_PublicSliderEvent.h create mode 100644 src/ui/inc/FUiCtrl_PublicSplitPanelEvent.h create mode 100644 src/ui/inc/FUiCtrl_PublicTextBlockEvent.h create mode 100644 src/ui/inc/FUiCtrl_PublicTextEvent.h create mode 100644 src/ui/inc/FUiCtrl_RadioGroup.h create mode 100644 src/ui/inc/FUiCtrl_RadioGroupImpl.h create mode 100644 src/ui/inc/FUiCtrl_RadioGroupModel.h create mode 100644 src/ui/inc/FUiCtrl_RadioGroupPresenter.h create mode 100644 src/ui/inc/FUiCtrl_Scroll.h create mode 100644 src/ui/inc/FUiCtrl_ScrollEvent.h create mode 100644 src/ui/inc/FUiCtrl_ScrollEventArg.h create mode 100644 src/ui/inc/FUiCtrl_ScrollEventTypes.h create mode 100644 src/ui/inc/FUiCtrl_ScrollPanel.h create mode 100644 src/ui/inc/FUiCtrl_ScrollPanelEvent.h create mode 100644 src/ui/inc/FUiCtrl_ScrollPanelImpl.h create mode 100644 src/ui/inc/FUiCtrl_ScrollPanelModel.h create mode 100644 src/ui/inc/FUiCtrl_ScrollPanelPresenter.h create mode 100644 src/ui/inc/FUiCtrl_ScrollPresenter.h create mode 100644 src/ui/inc/FUiCtrl_SearchBar.h create mode 100644 src/ui/inc/FUiCtrl_SearchBarEvent.h create mode 100644 src/ui/inc/FUiCtrl_SearchBarImpl.h create mode 100644 src/ui/inc/FUiCtrl_SearchBarModel.h create mode 100644 src/ui/inc/FUiCtrl_SearchBarPresenter.h create mode 100644 src/ui/inc/FUiCtrl_SimpleItemImpl.h create mode 100644 src/ui/inc/FUiCtrl_SlidableGroupedListImpl.h create mode 100644 src/ui/inc/FUiCtrl_SlidableListImpl.h create mode 100644 src/ui/inc/FUiCtrl_Slider.h create mode 100644 src/ui/inc/FUiCtrl_SliderEvent.h create mode 100644 src/ui/inc/FUiCtrl_SliderImpl.h create mode 100644 src/ui/inc/FUiCtrl_SliderModel.h create mode 100644 src/ui/inc/FUiCtrl_SliderOverlay.h create mode 100644 src/ui/inc/FUiCtrl_SliderPresenter.h create mode 100644 src/ui/inc/FUiCtrl_SplitPanel.h create mode 100644 src/ui/inc/FUiCtrl_SplitPanelEvent.h create mode 100644 src/ui/inc/FUiCtrl_SplitPanelImpl.h create mode 100644 src/ui/inc/FUiCtrl_SplitPanelModel.h create mode 100644 src/ui/inc/FUiCtrl_SplitPanelPresenter.h create mode 100644 src/ui/inc/FUiCtrl_Tab.h create mode 100644 src/ui/inc/FUiCtrl_TabBar.h create mode 100644 src/ui/inc/FUiCtrl_TabBarImpl.h create mode 100644 src/ui/inc/FUiCtrl_TabBarItem.h create mode 100644 src/ui/inc/FUiCtrl_TabBarItemImpl.h create mode 100644 src/ui/inc/FUiCtrl_TabBarModel.h create mode 100644 src/ui/inc/FUiCtrl_TabBarPresenter.h create mode 100644 src/ui/inc/FUiCtrl_TabImpl.h create mode 100644 src/ui/inc/FUiCtrl_TabItem.h create mode 100644 src/ui/inc/FUiCtrl_TabModel.h create mode 100644 src/ui/inc/FUiCtrl_TabPresenter.h create mode 100644 src/ui/inc/FUiCtrl_TableView.h create mode 100644 src/ui/inc/FUiCtrl_TableViewImpl.h create mode 100644 src/ui/inc/FUiCtrl_TableViewItem.h create mode 100644 src/ui/inc/FUiCtrl_TableViewItemEvent.h create mode 100644 src/ui/inc/FUiCtrl_TableViewItemEventArg.h create mode 100644 src/ui/inc/FUiCtrl_TableViewItemImpl.h create mode 100644 src/ui/inc/FUiCtrl_TableViewItemProvider.h create mode 100644 src/ui/inc/FUiCtrl_TableViewItemProviderAdaptor.h create mode 100644 src/ui/inc/FUiCtrl_TableViewPresenter.h create mode 100644 src/ui/inc/FUiCtrl_TextBlockEvent.h create mode 100644 src/ui/inc/FUiCtrl_TextBoxImpl.h create mode 100644 src/ui/inc/FUiCtrl_TextEvent.h create mode 100644 src/ui/inc/FUiCtrl_TimePickerImpl.h create mode 100644 src/ui/inc/FUiCtrl_TokenEdit.h create mode 100644 src/ui/inc/FUiCtrl_TokenEditModel.h create mode 100644 src/ui/inc/FUiCtrl_TokenEditPresenter.h create mode 100644 src/ui/inc/FUiCtrl_Toolbar.h create mode 100644 src/ui/inc/FUiCtrl_ToolbarModel.h create mode 100644 src/ui/inc/FUiCtrl_ToolbarPresenter.h create mode 100644 src/ui/inc/FUiCtrl_UiFastScrollEvent.h create mode 100644 src/ui/inc/FUiCtrl_UiFastScrollEventArg.h create mode 100644 src/ui/inc/FUiCtrl_UiIconListItemEvent.h create mode 100644 src/ui/inc/FUiCtrl_UiListViewItemEvent.h create mode 100644 src/ui/inc/FUiCtrl_UiListViewItemEventArg.h create mode 100644 src/ui/inc/FUiCtrl_UiScrollEvent.h create mode 100644 src/ui/inc/FUiCtrl_UiScrollEventArg.h create mode 100644 src/ui/inc/FUiCtrl_UiTableViewItemEvent.h create mode 100644 src/ui/inc/FUi_AccessibilityContainer.h create mode 100644 src/ui/inc/FUi_AccessibilityContainerImpl.h create mode 100644 src/ui/inc/FUi_AccessibilityElement.h create mode 100644 src/ui/inc/FUi_AccessibilityElementImpl.h create mode 100644 src/ui/inc/FUi_AccessibilityGesture.h create mode 100644 src/ui/inc/FUi_AccessibilityManager.h create mode 100644 src/ui/inc/FUi_AccessibilitySystemSettingLoader.h create mode 100644 src/ui/inc/FUi_AccessibilityTtsPlayer.h create mode 100644 src/ui/inc/FUi_Colorf.h create mode 100644 src/ui/inc/FUi_ContainerImpl.h create mode 100644 src/ui/inc/FUi_Control.h create mode 100644 src/ui/inc/FUi_ControlImpl.h create mode 100644 src/ui/inc/FUi_ControlImplManager.h create mode 100644 src/ui/inc/FUi_ControlManager.h create mode 100644 src/ui/inc/FUi_CoordinateSystemUtils.h create mode 100644 src/ui/inc/FUi_CustomControlBaseImpl.h create mode 100644 src/ui/inc/FUi_Dimensionf.h create mode 100644 src/ui/inc/FUi_DragDropEvent.h create mode 100644 src/ui/inc/FUi_DragDropEventArg.h create mode 100644 src/ui/inc/FUi_EcoreEvas.h create mode 100644 src/ui/inc/FUi_EcoreEvasMgr.h create mode 100644 src/ui/inc/FUi_ErrorMessages.h create mode 100644 src/ui/inc/FUi_FingerInfo.h create mode 100644 src/ui/inc/FUi_FocusManagerImpl.h create mode 100644 src/ui/inc/FUi_IAccessibilityListener.h create mode 100644 src/ui/inc/FUi_IFocusEventListener.h create mode 100644 src/ui/inc/FUi_IKeyEventListener.h create mode 100644 src/ui/inc/FUi_IKeyEventPreviewer.h create mode 100644 src/ui/inc/FUi_INotificationEventListener.h create mode 100644 src/ui/inc/FUi_INotificationEventPreviewer.h create mode 100644 src/ui/inc/FUi_IPropertyChangeEventListener.h create mode 100644 src/ui/inc/FUi_ITouchCustomGestureEventListener.h create mode 100644 src/ui/inc/FUi_ITouchEventListener.h create mode 100644 src/ui/inc/FUi_ITouchEventPreviewer.h create mode 100644 src/ui/inc/FUi_ITouchFlickGestureEventListener.h create mode 100644 src/ui/inc/FUi_ITouchGestureDelegate.h create mode 100644 src/ui/inc/FUi_ITouchGestureEventListener.h create mode 100644 src/ui/inc/FUi_ITouchGestureStateChangedListener.h create mode 100644 src/ui/inc/FUi_ITouchLongPressGestureEventListener.h create mode 100644 src/ui/inc/FUi_ITouchPanningGestureEventListener.h create mode 100644 src/ui/inc/FUi_ITouchPinchGestureEventListener.h create mode 100644 src/ui/inc/FUi_ITouchRotationGestureEventListener.h create mode 100644 src/ui/inc/FUi_ITouchTapGestureEventListener.h create mode 100644 src/ui/inc/FUi_IUiEventListener.h create mode 100644 src/ui/inc/FUi_IUiEventManager.h create mode 100644 src/ui/inc/FUi_IUiEventPreviewer.h create mode 100644 src/ui/inc/FUi_IWindow.h create mode 100644 src/ui/inc/FUi_KeyEventManager.h create mode 100644 src/ui/inc/FUi_KeyEventManagerImpl.h create mode 100644 src/ui/inc/FUi_LayoutAbsoluteLayout.h create mode 100644 src/ui/inc/FUi_LayoutILayoutItemHandler.h create mode 100644 src/ui/inc/FUi_LayoutLayout.h create mode 100644 src/ui/inc/FUi_LayoutLayoutContainer.h create mode 100644 src/ui/inc/FUi_LayoutLayoutItem.h create mode 100644 src/ui/inc/FUi_LayoutLayoutTypes.h create mode 100644 src/ui/inc/FUi_LayoutLinearLayout.h create mode 100644 src/ui/inc/FUi_LayoutRelativeLayout.h create mode 100755 src/ui/inc/FUi_LayoutTableLayout.h create mode 100644 src/ui/inc/FUi_Math.h create mode 100644 src/ui/inc/FUi_Matrix3Df.h create mode 100644 src/ui/inc/FUi_ModalLoopManager.h create mode 100644 src/ui/inc/FUi_Pointf.h create mode 100644 src/ui/inc/FUi_PropertyBase.h create mode 100644 src/ui/inc/FUi_PropertyUtils.h create mode 100644 src/ui/inc/FUi_PublicOrientationEvent.h create mode 100644 src/ui/inc/FUi_Rectanglef.h create mode 100644 src/ui/inc/FUi_ResourceManager.h create mode 100644 src/ui/inc/FUi_ResourceSizeInfo.h create mode 100644 src/ui/inc/FUi_SharedPtr.h create mode 100644 src/ui/inc/FUi_TouchEventArg.h create mode 100644 src/ui/inc/FUi_TouchEventInfoImpl.h create mode 100644 src/ui/inc/FUi_TouchEventManagerImpl.h create mode 100644 src/ui/inc/FUi_TouchFlickGestureDetector.h create mode 100644 src/ui/inc/FUi_TouchFlickGestureDetectorImpl.h create mode 100644 src/ui/inc/FUi_TouchGestureDetector.h create mode 100644 src/ui/inc/FUi_TouchGestureDetectorImpl.h create mode 100644 src/ui/inc/FUi_TouchLongPressGestureDetector.h create mode 100644 src/ui/inc/FUi_TouchLongPressGestureDetectorImpl.h create mode 100644 src/ui/inc/FUi_TouchManager.h create mode 100644 src/ui/inc/FUi_TouchPanningGestureDetector.h create mode 100644 src/ui/inc/FUi_TouchPanningGestureDetectorImpl.h create mode 100644 src/ui/inc/FUi_TouchPinchGestureDetector.h create mode 100644 src/ui/inc/FUi_TouchPinchGestureDetectorImpl.h create mode 100644 src/ui/inc/FUi_TouchRotationGestureDetector.h create mode 100644 src/ui/inc/FUi_TouchRotationGestureDetectorImpl.h create mode 100644 src/ui/inc/FUi_TouchTapGestureDetector.h create mode 100644 src/ui/inc/FUi_TouchTapGestureDetectorImpl.h create mode 100644 src/ui/inc/FUi_Types.h create mode 100644 src/ui/inc/FUi_UiBuilder.h create mode 100644 src/ui/inc/FUi_UiBuilderConfig.h create mode 100644 src/ui/inc/FUi_UiBuilderControl.h create mode 100644 src/ui/inc/FUi_UiBuilderControlElement.h create mode 100644 src/ui/inc/FUi_UiBuilderControlItem.h create mode 100644 src/ui/inc/FUi_UiBuilderControlLayout.h create mode 100644 src/ui/inc/FUi_UiBuilderControlMaker.h create mode 100644 src/ui/inc/FUi_UiBuilderControlTable.h create mode 100644 src/ui/inc/FUi_UiBuilderRegister.h create mode 100644 src/ui/inc/FUi_UiBuilderXmlHandler.h create mode 100644 src/ui/inc/FUi_UiEvent.h create mode 100644 src/ui/inc/FUi_UiEventManager.h create mode 100644 src/ui/inc/FUi_UiEventTypes.h create mode 100644 src/ui/inc/FUi_UiFocusEvent.h create mode 100644 src/ui/inc/FUi_UiKeyEvent.h create mode 100644 src/ui/inc/FUi_UiNotificationEvent.h create mode 100644 src/ui/inc/FUi_UiTouchEvent.h create mode 100644 src/ui/inc/FUi_VariantImpl.h create mode 100644 src/ui/inc/FUi_Window.h create mode 100644 src/ui/inc/FUi_WindowImpl.h create mode 100644 src/ui/layout/FUi_LayoutAbsoluteLayout.cpp create mode 100644 src/ui/layout/FUi_LayoutLayout.cpp create mode 100755 src/ui/layout/FUi_LayoutLayoutContainer.cpp create mode 100644 src/ui/layout/FUi_LayoutLayoutItem.cpp create mode 100644 src/ui/layout/FUi_LayoutLayoutItemInfo.cpp create mode 100644 src/ui/layout/FUi_LayoutLayoutItemInfo.h create mode 100644 src/ui/layout/FUi_LayoutLayoutItemProxy.cpp create mode 100644 src/ui/layout/FUi_LayoutLayoutItemProxy.h create mode 100644 src/ui/layout/FUi_LayoutLayoutList.cpp create mode 100644 src/ui/layout/FUi_LayoutLayoutList.h create mode 100644 src/ui/layout/FUi_LayoutLayoutListNode.cpp create mode 100644 src/ui/layout/FUi_LayoutLayoutListNode.h create mode 100644 src/ui/layout/FUi_LayoutLinearLayout.cpp create mode 100644 src/ui/layout/FUi_LayoutLinkedList.cpp create mode 100644 src/ui/layout/FUi_LayoutLinkedList.h create mode 100644 src/ui/layout/FUi_LayoutLinkedListNode.cpp create mode 100644 src/ui/layout/FUi_LayoutLinkedListNode.h create mode 100644 src/ui/layout/FUi_LayoutProxyList.cpp create mode 100644 src/ui/layout/FUi_LayoutProxyList.h create mode 100644 src/ui/layout/FUi_LayoutProxyListNode.cpp create mode 100644 src/ui/layout/FUi_LayoutProxyListNode.h create mode 100644 src/ui/layout/FUi_LayoutRelativeLayout.cpp create mode 100755 src/ui/layout/FUi_LayoutTableLayout.cpp create mode 100644 src/ui/resource/FUi_ResourceAccessibilityConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceButtonConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceCheckButtonConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceColorPickerConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceConfigLoader.cpp create mode 100644 src/ui/resource/FUi_ResourceConfigLoader.h create mode 100644 src/ui/resource/FUi_ResourceConfigMacro.h create mode 100644 src/ui/resource/FUi_ResourceConfigParser.cpp create mode 100644 src/ui/resource/FUi_ResourceConfigParser.h create mode 100644 src/ui/resource/FUi_ResourceContextMenuConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceDateTimeBarConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceDateTimePickerConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceEditConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceEditDateConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceEditTimeConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceFastScrollConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceFooterConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceFormConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceGalleryConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceHeaderConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceIconListConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceInputPadConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceLabelConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceListConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceListViewConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceMap.h create mode 100644 src/ui/resource/FUi_ResourceMapContainer.cpp create mode 100644 src/ui/resource/FUi_ResourceMapContainer.h create mode 100644 src/ui/resource/FUi_ResourceMessageBoxConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceOptionMenuConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceOverlayPanelConfig.cpp create mode 100644 src/ui/resource/FUi_ResourcePanelConfig.cpp create mode 100644 src/ui/resource/FUi_ResourcePopupConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceRadioGroupConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceScrollConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceSearchBarConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceSizeInfo.cpp create mode 100644 src/ui/resource/FUi_ResourceSliderConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceSplitPanelConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceStringLoader.cpp create mode 100644 src/ui/resource/FUi_ResourceStringLoader.h create mode 100644 src/ui/resource/FUi_ResourceTabBarConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceTabConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceTableViewConfig.cpp create mode 100644 src/ui/resource/FUi_ResourceTokenEditConfig.cpp create mode 100644 src/ui/scenes/FUiScenesBackwardSceneTransition.cpp create mode 100644 src/ui/scenes/FUiScenesForwardSceneTransition.cpp create mode 100644 src/ui/scenes/FUiScenesScene.cpp create mode 100644 src/ui/scenes/FUiScenesSceneManager.cpp create mode 100644 src/ui/scenes/FUiScenesSceneTransition.cpp create mode 100644 src/ui/scenes/FUiScenes_ISceneControlEventListener.h create mode 100644 src/ui/scenes/FUiScenes_SceneControlEvent.cpp create mode 100644 src/ui/scenes/FUiScenes_SceneControlEvent.h create mode 100644 src/ui/scenes/FUiScenes_SceneControlEventArg.cpp create mode 100644 src/ui/scenes/FUiScenes_SceneControlEventArg.h create mode 100644 src/ui/scenes/FUiScenes_SceneImpl.cpp create mode 100644 src/ui/scenes/FUiScenes_SceneImpl.h create mode 100644 src/ui/scenes/FUiScenes_SceneManagerImpl.cpp create mode 100644 src/ui/scenes/FUiScenes_SceneManagerImpl.h create mode 100644 src/ui/scenes/FUiScenes_SceneTransitionImpl.cpp create mode 100644 src/ui/scenes/FUiScenes_SceneTransitionImpl.h create mode 100755 src/uifw/CMakeLists.txt diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..e50afff --- /dev/null +++ b/AUTHORS @@ -0,0 +1,8 @@ +Danny Whang +bermJin Cho +DongKyun Jeong +JongHyun Yoon +SangHee Kim +SungYul Choe +YoungKi Ahn + diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100755 index 0000000..b017671 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,52 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) + +SET(CMAKE_INSTALL_PREFIX /usr) +SET(PREFIX ${CMAKE_INSTALL_PREFIX}) + +## OUTPUT PATHS +SET(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/cmake_build_tmp/output/osp) + + +## Disable build rpath +SET(CMAKE_SKIP_BUILD_RPATH TRUE) + +IF(SBS OR OBS) +ADD_DEFINITIONS("-D_EXCEPT_DEPENDENCY_") +ENDIF(SBS OR OBS) + +IF(SBS) +ADD_DEFINITIONS("-D_SBS_") +ENDIF(SBS) + +## Set Assembly Compiler +#SET(CMAKE_ASM_COMPILER "${CMAKE_C_COMPILER}") + +SET(CMAKE_ASM_COMPILER_ARG1 "${CPPFLAGS} -c") +ENABLE_LANGUAGE(ASM) + +## LIBRARY PATH +LINK_DIRECTORIES (${LIBRARY_OUTPUT_PATH}) + +ADD_SUBDIRECTORY(src) + +INSTALL(FILES ${CMAKE_SOURCE_DIR}/osp-uifw.pc DESTINATION lib/pkgconfig) + +INSTALL(DIRECTORY ${LIBRARY_OUTPUT_PATH}/ DESTINATION lib/osp + FILES_MATCHING PATTERN "*.so*" + PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ + GROUP_EXECUTE GROUP_READ + WORLD_EXECUTE WORLD_READ) +INSTALL(DIRECTORY ${LIBRARY_OUTPUT_PATH}/debug/ DESTINATION lib/osp/debug + FILES_MATCHING PATTERN "*" + PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ + GROUP_EXECUTE GROUP_READ + WORLD_EXECUTE WORLD_READ) + +INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/res/common/usr/share/osp/themes DESTINATION ../usr/share/osp) +INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/res/common/usr/share/osp/bitmaps DESTINATION ../usr/share/osp) +INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/res/common/usr/share/osp/effects DESTINATION ../usr/share/osp) + +INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/inc/ DESTINATION include/osp FILES_MATCHING PATTERN "*.h") +INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/src/app/inc/ DESTINATION include/osp/app FILES_MATCHING PATTERN "*.h") +INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/src/graphics/inc/ DESTINATION include/osp/graphics FILES_MATCHING PATTERN "*.h") +INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/src/ui/inc/ DESTINATION include/osp/ui FILES_MATCHING PATTERN "*.h") diff --git a/LICENSE.APLv2 b/LICENSE.APLv2 new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/LICENSE.APLv2 @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/LICENSE.Flora b/LICENSE.Flora new file mode 100644 index 0000000..9c95663 --- /dev/null +++ b/LICENSE.Flora @@ -0,0 +1,206 @@ +Flora License + +Version 1.0, May, 2012 + +http://floralicense.org/license/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, +and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by +the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and +all other entities that control, are controlled by, or are +under common control with that entity. For the purposes of +this definition, "control" means (i) the power, direct or indirect, +to cause the direction or management of such entity, +whether by contract or otherwise, or (ii) ownership of fifty percent (50%) +or more of the outstanding shares, or (iii) beneficial ownership of +such entity. + +"You" (or "Your") shall mean an individual or Legal Entity +exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, +including but not limited to software source code, documentation source, +and configuration files. + +"Object" form shall mean any form resulting from mechanical +transformation or translation of a Source form, including but +not limited to compiled object code, generated documentation, +and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, +made available under the License, as indicated by a copyright notice +that is included in or attached to the work (an example is provided +in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, +that is based on (or derived from) the Work and for which the editorial +revisions, annotations, elaborations, or other modifications represent, +as a whole, an original work of authorship. For the purposes of this License, +Derivative Works shall not include works that remain separable from, +or merely link (or bind by name) to the interfaces of, the Work and +Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original +version of the Work and any modifications or additions to that Work or +Derivative Works thereof, that is intentionally submitted to Licensor +for inclusion in the Work by the copyright owner or by an individual or +Legal Entity authorized to submit on behalf of the copyright owner. +For the purposes of this definition, "submitted" means any form of +electronic, verbal, or written communication sent to the Licensor or +its representatives, including but not limited to communication on +electronic mailing lists, source code control systems, and issue +tracking systems that are managed by, or on behalf of, the Licensor +for the purpose of discussing and improving the Work, but excluding +communication that is conspicuously marked or otherwise designated +in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity +on behalf of whom a Contribution has been received by Licensor and +subsequently incorporated within the Work. + +"Tizen Certified Platform" shall mean a software platform that complies +with the standards set forth in the Compatibility Definition Document +and passes the Compatibility Test Suite as defined from time to time +by the Tizen Technical Steering Group and certified by the Tizen +Association or its designated agent. + +2. Grant of Copyright License. Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the +Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +(except as stated in this section) patent license to make, have made, +use, offer to sell, sell, import, and otherwise transfer the Work +solely as incorporated into a Tizen Certified Platform, where such +license applies only to those patent claims licensable by such +Contributor that are necessarily infringed by their Contribution(s) +alone or by combination of their Contribution(s) with the Work solely +as incorporated into a Tizen Certified Platform to which such +Contribution(s) was submitted. If You institute patent litigation +against any entity (including a cross-claim or counterclaim +in a lawsuit) alleging that the Work or a Contribution incorporated +within the Work constitutes direct or contributory patent infringement, +then any patent licenses granted to You under this License for that +Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the +Work or Derivative Works thereof pursuant to the copyright license +above, in any medium, with or without modifications, and in Source or +Object form, provided that You meet the following conditions: + + 1. You must give any other recipients of the Work or Derivative Works + a copy of this License; and + 2. You must cause any modified files to carry prominent notices stating + that You changed the files; and + 3. You must retain, in the Source form of any Derivative Works that + You distribute, all copyright, patent, trademark, and attribution + notices from the Source form of the Work, excluding those notices + that do not pertain to any part of the Derivative Works; and + 4. If the Work includes a "NOTICE" text file as part of its distribution, + then any Derivative Works that You distribute must include a readable + copy of the attribution notices contained within such NOTICE file, + excluding those notices that do not pertain to any part of + the Derivative Works, in at least one of the following places: + within a NOTICE text file distributed as part of the Derivative Works; + within the Source form or documentation, if provided along with the + Derivative Works; or, within a display generated by the Derivative Works, + if and wherever such third-party notices normally appear. + The contents of the NOTICE file are for informational purposes only + and do not modify the License. + +You may add Your own attribution notices within Derivative Works +that You distribute, alongside or as an addendum to the NOTICE text +from the Work, provided that such additional attribution notices +cannot be construed as modifying the License. You may add Your own +copyright statement to Your modifications and may provide additional or +different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works +as a whole, provided Your use, reproduction, and distribution of +the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, +any Contribution intentionally submitted for inclusion in the Work +by You to the Licensor shall be under the terms and conditions of +this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify +the terms of any separate license agreement you may have executed +with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade +names, trademarks, service marks, or product names of the Licensor, +except as required for reasonable and customary use in describing the +origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or +agreed to in writing, Licensor provides the Work (and each +Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +implied, including, without limitation, any warranties or conditions +of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A +PARTICULAR PURPOSE. You are solely responsible for determining the +appropriateness of using or redistributing the Work and assume any +risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, +whether in tort (including negligence), contract, or otherwise, +unless required by applicable law (such as deliberate and grossly +negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, +incidental, or consequential damages of any character arising as a +result of this License or out of the use or inability to use the +Work (including but not limited to damages for loss of goodwill, +work stoppage, computer failure or malfunction, or any and all +other commercial damages or losses), even if such Contributor +has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing +the Work or Derivative Works thereof, You may choose to offer, +and charge a fee for, acceptance of support, warranty, indemnity, +or other liability obligations and/or rights consistent with this +License. However, in accepting such obligations, You may act only +on Your own behalf and on Your sole responsibility, not on behalf +of any other Contributor, and only if You agree to indemnify, +defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason +of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Flora License to your work + +To apply the Flora License to your work, attach the following +boilerplate notice, with the fields enclosed by brackets "[]" +replaced with your own identifying information. (Don't include +the brackets!) The text should be enclosed in the appropriate +comment syntax for the file format. We also recommend that a +file or class name and description of purpose be included on the +same "printed page" as the copyright notice for easier +identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Flora License, Version 1.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://floralicense.org/license/ + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/NOTICE b/NOTICE new file mode 100644 index 0000000..13d0a7a --- /dev/null +++ b/NOTICE @@ -0,0 +1,9 @@ +Copyright (c) Samsung Electronics Co., Ltd. All rights reserved. +Except as noted, this software is licensed under Flora License, Version 1. +Please, see the LICENSE.Flora file for Flora License terms and conditions. + +Several source codes may have its original copyright owner and/or +be licensed under other than Flora License, Version 1, say, Apache License, Version 2. +Please, see copyright and license comments section in the header of each file, +and the LICENSE.APLv2 for Apache License terms and conditions. + diff --git a/inc/FGraphics.h b/inc/FGraphics.h new file mode 100644 index 0000000..e10e972 --- /dev/null +++ b/inc/FGraphics.h @@ -0,0 +1,190 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FGraphics.h + * @brief This is the header file for the %Graphics namespace. + * + * This header file contains the declarations of the %Graphics namespace. + * + */ + +#ifndef _FGRAPHICS_H_ +#define _FGRAPHICS_H_ + +#include "FGrpPoint.h" +#include "FGrpFloatPoint.h" + +#include "FGrpDimension.h" +#include "FGrpFloatDimension.h" + +#include "FGrpRectangle.h" +#include "FGrpFloatRectangle.h" + +#include "FGrpFloatMatrix4.h" +#include "FGrpFloatVector4.h" +#include "FGrpFloatPoint3.h" + +#include "FGrpColor.h" + +#include "FGrpPixelFormat.h" + +#include "FGrpBufferInfo.h" + +#include "FGrpBitmapCommon.h" +#include "FGrpBitmap.h" + +#include "FGrpCanvasCommon.h" +#include "FGrpCanvas.h" + +#include "FGrpFontCommon.h" +#include "FGrpFont.h" + +#include "FGrpTextElement.h" +#include "FGrpEnrichedText.h" + +#include "FGrpCoordinateSystem.h" + +/** + * @namespace Tizen::Graphics + * @brief This namespace contains classes for drawing-related functionalities. + * + * @since 2.0 + * + * @remarks @b Header @b %file: @b \#include @b @n + * @b Library : @b osp-uifw + * + * The %Graphics namespace provides enhanced two-dimensional graphics, + * text, and imaging capabilities. + * It supports comprehensive features for rendering geometric primitives, text, and images + * in a flexible framework for developing rich user + * interfaces, sophisticated drawing applications, and image editors. + * This namespace provides additional features such as Bitmap, Font, and Color to enhance the rendered graphics. + * The user can also use basic data types, Point, Rectangle, and Dimension to construct 2D graphic objects, such as + * polygons. + * @n + * For more information on the %Graphics namespace features, see Graphics Guide. + * + * The following diagram illustrates the relationships between the classes belonging to the %Graphics namespace. + * @image html graphics_namespace_class_relationship.png + * + * The following example demonstrates how to use the %Graphics namespace. + * + * @code +#include +#include + +using namespace Tizen::Base; +using namespace Tizen::Graphics; + +bool +MyClass::GraphicsSample(void) +{ + result r = E_SUCCESS; + + // Creates a canvas instance. + Canvas* pCanvas = new Canvas(); + r = pCanvas->Construct(); + if (IsFailed(r)) + { + goto CATCH; + } + + // Clears + pCanvas->SetBackgroundColor(Color(0xFF, 0xFF, 0xFF)); + r = pCanvas->Clear(); + if (IsFailed(r)) + { + goto CATCH; + } + + // Sets the foreground color of this canvas. + pCanvas->SetForegroundColor(Color::GetColor(COLOR_ID_GREEN)); + + // Draws an ellipse. + r = pCanvas->DrawEllipse(Rectangle(50, 50, 50, 80)); + if (IsFailed(r)) + { + goto CATCH; + } + + r = pCanvas->DrawLine(Point(100, 100), Point(150, 150)); + if (IsFailed(r)) + { + goto CATCH; + } + + // Draws a circular arc. + r = pCanvas->DrawArc(Rectangle(10, 200, 50, 50), 30, 60, ARC_STYLE_PIE); + if (IsFailed(r)) + { + goto CATCH; + } + + { + // Creates a font instance. + Font font; + r = font.Construct(FONT_STYLE_PLAIN, 32); + if (IsFailed(r)) + { + goto CATCH; + } + + // Sets the font to canvas. + r = pCanvas->SetFont(font); + if (IsFailed(r)) + { + goto CATCH; + } + } + + // Draws text at the specified location. + r = pCanvas->DrawText(Point(50, 50), String(L"Hello World")); + if (IsFailed(r)) + { + goto CATCH; + } + + // Shows the drawing result on the device screen. + r = pCanvas->Show(); + if (IsFailed(r)) + { + goto CATCH; + } + + // Cleans up. + delete pCanvas; + + return true; + +CATCH: + delete pCanvas; + + return false; +} + * @endcode + * + * + * + * + */ +namespace Tizen { namespace Graphics +{ + +} } // Tizen::Graphics + +#endif // _FGRAPHICS_H_ diff --git a/inc/FGraphicsOpengl.h b/inc/FGraphicsOpengl.h new file mode 100644 index 0000000..2d0a3b7 --- /dev/null +++ b/inc/FGraphicsOpengl.h @@ -0,0 +1,42 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FGraphicsOpengl.h + * @brief This is the header file for the %Opengl namespace. + * + * This header file contains the declarations of the %Opengl namespace. + * + */ + +#ifndef _FGRAPHICS_OPENGL_H_ +#define _FGRAPHICS_OPENGL_H_ + +namespace Tizen { namespace Graphics +{ + +namespace Opengl +{ +#include +#include +#include +#include + +} // Tizen::Graphics::Opengl + +} } // Tizen::Graphics +#endif // _FGRAPHICS_OPENGL_H_ diff --git a/inc/FGraphicsOpengl2.h b/inc/FGraphicsOpengl2.h new file mode 100644 index 0000000..42f6d68 --- /dev/null +++ b/inc/FGraphicsOpengl2.h @@ -0,0 +1,75 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FGraphicsOpengl2.h + * @brief This is the header file for the %Opengl namespace. + * + * This header file contains the declarations of the %Opengl namespace. + * + */ + +/** + * @defgroup opengles OpenGL(R) ES + * @brief The list of OpenGL(R)ES functions. + */ + +#ifndef _FGRAPHICS_OPENGL_H_ +#define _FGRAPHICS_OPENGL_H_ + +/** + * @namespace Tizen::Graphics::Opengl + * @brief This namespace contains interfaces for %OpenGL(R). + * + * - OpenGL(R) ES + * + * @since 2.0 + * @remarks + * For OpenGL(R) ES 1.1: @n + * @b Header @b %file: @b \#include @b @n + * @b Library: @b osp-uifw @n + * For OpenGL(R) ES 2.0: @n + * @b Header @b %file: @b \#include @b @n + * @b Library: @b osp-uifw @n + * + * + * + * + * + * + * The %Opengl namespace provides support for rendering high performance 2D and 3D graphic objects using the + * OpenGL(R)(Open %Graphics Library) specification. This namespace further supports the EGL, OpenGL(R) ES 1.1, and + * OpenGL(R) ES 2.0 features. + * + * For more information on the %Opengl namespace features, see OpenGL(R) Guide. + * + * + */ +namespace Tizen { namespace Graphics +{ + +namespace Opengl +{ +#include +#include +#include +#include + +} // Tizen::Graphics::Opengl + +} } // Tizen::Graphics +#endif // _FGRAPHICS_OPENGL_H_ diff --git a/inc/FGrpBitmap.h b/inc/FGrpBitmap.h new file mode 100644 index 0000000..69b71eb --- /dev/null +++ b/inc/FGrpBitmap.h @@ -0,0 +1,491 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FGrpBitmap.h + * @brief This is the header file for the %Bitmap class. + * + * This header file contains the declarations of the %Bitmap class. @n + * The class encapsulates a bitmap, which consists of the pixel data + * for a graphics image and its attributes. + * + */ + +#ifndef _FGRP_BITMAP_H_ +#define _FGRP_BITMAP_H_ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Media +{ +class Image; +} } + +namespace Tizen { namespace Graphics +{ +class Canvas; + +/** + * @class Bitmap + * @brief This class encapsulates a bitmap. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %Bitmap class encapsulates a bitmap, which consists of the pixel data + * for an image and its attributes. + * @n + * For more information on the class features, see Bitmaps. + * + * + */ +class _OSP_EXPORT_ Bitmap + : public Tizen::Base::Object +{ +public: + /** + * This is the default constructor for this class. + * + * @since 2.0 + * @remarks After creating an instance of this class, one of the + * Construct() methods must be called explicitly to initialize this instance. + * + */ + Bitmap(void); + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~Bitmap(void); + + /** + * Initializes this instance of %Bitmap by copying a rectangular area of the Frame. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect The rectangular area of the Frame to be copied into bitmap @n + * The width and height of the rectangle must be greater than @c 0. @n + * The area defined by @c rect is clipped to the edges of the Frame so that + * the rectangle does not fall outside the edges of the Frame. @n + * The rectangle must not fall outside the edges of the Frame entirely. @n + * If these conditions are not satisfied, an E_OUT_OF_RANGE exception is returned. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * + */ + result Construct(const Rectangle& rect); + + /** + * Initializes this instance of %Bitmap with the specified dimensions and pixel format. + * + * @since 2.0 + * + * @return An error code + * @param[in] dim The dimensions of the bitmap @n + * The width and height must be greater than @c 0. + * @param[in] format The pixel format + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * + */ + result Construct(const Dimension& dim, BitmapPixelFormat format); + + /** + * Initializes this instance of %Bitmap by copying the specified rectangular area of the specified canvas. + * + * @since 2.0 + * + * @return An error code + * @param[in] canvas The canvas to copy @n + * The canvas must be constructed successfully before it is passed into this method. @n + * If not, an E_INVALID_ARG exception is returned. + * @param[in] rect The rectangular area of the canvas to be copied into a bitmap @n + * The width and height of the rectangle must be greater than @c 0. @n + * The rectangle defined by @c rect is clipped to the edges of the canvas so that + * the rectangle does not fall outside the edges of the canvas. @n + * The rectangle must not fall outside the edges of the canvas entirely. @n + * If these conditions are not satisfied, an E_OUT_OF_RANGE exception is returned. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * + */ + result Construct(const Canvas& canvas, const Tizen::Graphics::Rectangle& rect); + + /** + * Initializes this instance of %Bitmap by copying a rectangular area of the specified bitmap. + * + * @since 2.0 + * + * @return An error code + * @param[in] bitmap The source bitmap @n + * The bitmap must be constructed successfully before it is passed into this method. @n + * If not, an E_INVALID_ARG exception is returned. + * @param[in] rect The rectangular area of the source bitmap to be copied into this bitmap @n + * The width and height of the rectangle must be greater than @c 0. @n + * The rectangle defined by @c rect is clipped to the edges of the source bitmap so that + * the rectangle does not fall outside the edges of the source bitmap. @n + * The rectangle must not fall outside the edges of the source bitmap entirely. @n + * If these conditions are not satisfied, an E_OUT_OF_RANGE exception is returned. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * + */ + result Construct(const Bitmap& bitmap, const Tizen::Graphics::Rectangle& rect); + + /** + * Initializes this instance of %Bitmap by using a buffer that contains raw data. + * + * @since 2.0 + * + * @return An error code + * @param[in] buffer The buffer containing raw data + * @param[in] dim The dimensions of the bitmap @n + * The width and height must be greater than @c 0. + * @param[in] pixelFormat The pixel format of raw data + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @remarks The position property of ByteBuffer can be changed. + * + */ + result Construct(const Tizen::Base::ByteBuffer& buffer, const Dimension& dim, BitmapPixelFormat pixelFormat); + + /** + * Initializes this instance of %Bitmap by using a buffer that contains raw data. + * + * @since 2.0 + * + * @return An error code + * @param[in] buffer The buffer containing raw data + * @param[in] dim The dimensions of the bitmap @n + * The width and height must be greater than @c 0. + * @param[in] pixelFormat The pixel format of raw data + * @param[in] bufferScaling The buffer scaling type + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_UNSUPPORTED_FORMAT The specified format is not supported. + * @remarks The position property of %ByteBuffer can be changed. + * + */ + result Construct(const Tizen::Base::ByteBuffer& buffer, const Dimension& dim, BitmapPixelFormat pixelFormat, BufferScaling bufferScaling); + +public: + /** + * Scales the bitmap to the specified width and height. + * + * @since 2.0 + * + * @return An error code + * @param[in] dim The dimensions of the specified rectangular area @n + * The width and height must be greater than @c 0. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + * + */ + result Scale(const Dimension& dim); + + /** + * Merges the specified area of the source bitmap into the calling bitmap at the given Point. + * + * @since 2.0 + * + * @return An error code + * @param[in] destPoint The X and Y coordinate of the top-left corner of the destination area in the calling bitmap instance + * @param[in] srcBitmap The source bitmap instance to copy from + * @param[in] srcRect The rectangular area to copy from the source bitmap @n + The width and height of the rectangle must be greater than or equal to @c 0. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE Either of the following conditions has occurred: @n + * - The value of the argument is outside the valid range defined by the method. @n + * - The destX, destY, srcX, or srcY has a negative value. @n + * - The specified @c srcWidth or @c srcHeight is less than @c 0. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * + */ + result Merge(const Point& destPoint, const Bitmap& srcBitmap, const Rectangle& srcRect); + + /** + * Gets the height of the bitmap. + * + * @since 2.0 + * + * @return The height of the bitmap, @n + * else @c -1 if the method fails + * + */ + int GetHeight(void) const; + + /** + * Gets the width of the bitmap. + * + * @since 2.0 + * + * @return The width of the bitmap, @n + * else @c -1 if the method fails + * + */ + int GetWidth(void) const; + + /** + * Gets the number of bits per pixel of the bitmap. + * + * @since 2.0 + * + * @return The bits per pixel, @n + * else @c -1 if the method fails + * + */ + int GetBitsPerPixel(void) const; + + /** + * Gets the pixel color format of the bitmap. + * + * @since 2.0 + * + * @return The pixel color format + * + */ + BitmapPixelFormat GetPixelColorFormat(void) const; + + /** + * Sets the scaling quality to be used for bitmap scaling. + * + * @since 2.0 + * + * @return An error code + * @param[in] quality The scaling quality to use for bitmap scaling. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * + */ + result SetScalingQuality(BitmapScalingQuality quality); + + /** + * Gets the current scaling quality. + * + * @since 2.0 + * + * @return The scaling quality + * @remarks The default value is BITMAP_SCALING_QUALITY_LOW. + * + */ + BitmapScalingQuality GetScalingQuality(void) const; + + /** + * Sets the specified color as masking color. @n + * All pixels with this color are treated as transparent. + * + * @since 2.0 + * + * @return An error code + * @param[in] pColor The color that is treated as transparent @n + * If the parameter is set to @c null, the masking color is removed from this bitmap. @n + * Only BitmapPixelFormat::BITMAP_PIXEL_FORMAT_RGB565 is supported. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * + */ + result SetMaskingColor(const Color* pColor); + + /** + * Gets a masking color. + * + * @since 2.0 + * + * @return An error code + * @param[out] color The color that is treated as transparent + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_DATA The masking color is not defined. + * + */ + result GetMaskingColor(Color& color) const; + + /** + * Sets the alpha constant. + * + * @since 2.0 + * @param[in] opacity The opacity of the bitmap @n + * This value ranges from @c 0 to @c 255. + * @remarks The alpha constant is used for the Canvas::DrawBitmap() method. + */ + void SetAlphaConstant(int opacity); + + /** + * Gets the alpha constant. + * + * @since 2.0 + * + * @return The alpha constant, @n + * else @c -1 if the method fails + */ + int GetAlphaConstant(void) const; + + /** + * Checks whether the instance is nine patched bitmap. + * + * @since 2.0 + * + * @return @c true if the instance is nine patched bitmap, @n + * else @c false + */ + bool IsNinePatchedBitmap(void) const; + + /** + * Locks a bitmap for direct pixel access. @n + * It sets up a bitmap for accessing the pixels directly. Between the calls to Bitmap::Lock and Bitmap::Unlock, + * you can write to and read from the bitmap's pixels. After you are done accessing the bitmap's pixels, + * you must call Bitmap::Unlock to release the lock. + * + * @since 2.0 + * + * @return An error code + * @param[out] info The extra information of the bitmap + * @param[in] timeout The time in milliseconds @n + * This value determines the time the caller waits for the lock to be obtained. @n + * If the lock attempt fails, E_TIMEOUT is returned. @n + * The default value is @c INFINITE, which means that the method does not return a value until the lock is acquired. + * @exception E_SUCCESS The method is successful. + * @exception E_TIMEOUT The operation is not completed within the specified time period. + * @exception E_SYSTEM An unknown operating system error has occurred. + * + */ + result Lock(BufferInfo& info, long timeout = INFINITE); + + /** + * Unlocks a bitmap. @n + * A bitmap that is locked using Bitmap::Lock() must be unlocked using Bitmap::Unlock(). + * The bitmap buffer can be modified when the bitmap is locked, but is applied only when the bitmap is unlocked. + * Therefore, all locked bitmap operations can only be used after the bitmap is unlocked using Bitmap::Unlock(). + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM An unknown operating system error has occurred. + * + */ + result Unlock(void); + + /** + * Gets a non scaled bitmap. + * + * @since 2.0 + * + * @return The non scaled bitmap, @n + * else @c null if an exception occurs + * @param[in] buffer The buffer containing raw data + * @param[in] dim The dimensions of the bitmap @n + * The width and height must be greater than @c 0. + * @param[in] pixelFormat The pixel format of raw data + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_UNSUPPORTED_FORMAT The specified format is not supported. + * + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + static Bitmap* GetNonScaledBitmapN(const Tizen::Base::ByteBuffer& buffer, const Dimension& dim, BitmapPixelFormat pixelFormat); + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + Bitmap(const Bitmap& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + Bitmap& operator =(const Bitmap& rhs); + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // Initializes this instance of %Bitmap by using a buffer that contains raw data. + // + // @since 2.0 + // + // @return An error code + // @param[in] buffer The buffer containing raw bitmap data + // @param[in] dim The dimensions of the bitmap @n + // The width and height must be greater than @c 0. + // @param[in] pixelFormat The pixel format of the raw bitmap buffer + // @param[in] autoScaling Set to @c true to automatically scale the bitmap, @n + // else @c false + // @exception E_SUCCESS The method is successful. + // @exception E_INVALID_ARG A specified input parameter is invalid. + // @exception E_UNSUPPORTED_FORMAT The specified format is not supported. + // + result Construct(const Tizen::Base::ByteBuffer& buffer, const Dimension& dim, BitmapPixelFormat pixelFormat, bool autoScaling); + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // Initializes this instance of %Bitmap by using a buffer that contains raw data. + // + // @since 2.0 + // + // @return An error code + // @param[in] pBuffer A pointer to the raw bitmap buffer + // @param[in] bufferSize The size of the raw bitmap buffer + // @param[in] dim The dimensions of the bitmap @n + // The width and height must be greater than @c 0. + // @param[in] pixelFormat The pixel format of the raw bitmap buffer + // @param[in] autoScaling Set to @c true to automatically scale the bitmap, @n + // else @c false + // @exception E_SUCCESS The method is successful. + // @exception E_INVALID_ARG A specified input parameter is invalid. + // @exception E_UNSUPPORTED_FORMAT The specified format is not supported + // + result Construct(const byte* pBuffer, int bufferSize, const Dimension& dim, BitmapPixelFormat pixelFormat, bool autoScaling); + + friend class Canvas; + friend class Tizen::Media::Image; + +private: + friend class _BitmapImpl; + + // + // This variable is for internal use only. + // Using this variable can cause behavioral, security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + class _BitmapImpl* __pImpl; + +}; // Bitmap + +}} // Tizen::Graphics + +#endif //_FGRP_BITMAP_H_ diff --git a/inc/FGrpBufferInfo.h b/inc/FGrpBufferInfo.h new file mode 100644 index 0000000..1e86ff1 --- /dev/null +++ b/inc/FGrpBufferInfo.h @@ -0,0 +1,166 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FGrpBufferInfo.h + * @brief This is the header file for the %BufferInfo class. + * + * This header file contains the declarations of the %BufferInfo class. + * + */ + +#ifndef _FGRP_BUFFER_INFO_H_ +#define _FGRP_BUFFER_INFO_H_ + +#include +#include + +#include +#include +#include + +namespace Tizen { namespace Graphics +{ +/** + * @class BufferInfo + * @brief This class encapsulates the extra information for canvases and bitmaps. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %BufferInfo class provides Canvas and Bitmap related information, such as the dimension and pixel information. + * @n + * For more information on the class features, see Buffer Information. + * + * + */ +class _OSP_EXPORT_ BufferInfo + : public Tizen::Base::Object +{ +public: + /** + * This is the default constructor for this class. + * + * @since 2.0 + */ + BufferInfo(void); + + /** + * This is the copy constructor for the %BufferInfo class. + * + * @since 2.0 + * + * @param[in] rhs An instance of %BufferInfo + */ + BufferInfo(const BufferInfo& rhs); + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~BufferInfo(void); + + /** + * This is the default assignment operator for this class. + * + * @since 2.0 + * + * @param[in] rhs An instance of %BufferInfo + */ + BufferInfo& operator =(const BufferInfo& rhs); + + /** + * Checks whether the value of the specified instance equals the value of the current instance. + * + * @since 2.0 + * + * @return @c true if the value of the current instance equals the value of the specified instance, @n + * else @c false + * @param[in] rhs The object to compare with the current instance + */ + virtual bool Equals(const Tizen::Base::Object& rhs) const; + + /** + * Gets the hash value of the current instance. + * + * @since 2.0 + * + * @return An integer value indicating the hash value of the current instance + */ + virtual int GetHashCode(void) const; + +public: + /** + * The width of the buffer's logical dimensions in pixels. + * + * @since 2.0 + */ + int width; + + /** + * The height of the buffer's logical dimensions in pixels. + * + * @since 2.0 + */ + int height; + + /** + * The length of the buffer scan-line in bytes. + * + * @since 2.0 + */ + int pitch; + + /** + * The bits per pixel of the buffer. + * + * @since 2.0 + */ + int bitsPerPixel; + + /** + * The color format of the buffer. + * + * @since 2.0 + */ + PixelFormat pixelFormat; + + /** + * A pointer to the actual locked pixel bits. + * + * @since 2.0 + */ + void* pPixels; + +private: + friend class _BufferInfoImpl; + + // + // This variable is for internal use only. + // Using this variable can cause behavioral, security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + class _BufferInfoImpl * __pImpl; + +}; // BufferInfo + +}} // Tizen::Graphics + +#endif //_FGRP_BUFFER_INFO_H_ diff --git a/inc/FGrpCanvas.h b/inc/FGrpCanvas.h new file mode 100644 index 0000000..1d60357 --- /dev/null +++ b/inc/FGrpCanvas.h @@ -0,0 +1,961 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FGrpCanvas.h + * @brief This is the header file for the %Canvas class. + * + * This header file contains the declarations of the %Canvas class. + * + */ + +#ifndef _FGRP_CANVAS_H_ +#define _FGRP_CANVAS_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Graphics +{ +class Font; +class EnrichedText; + +/** + * @class Canvas + * @brief This class provides methods for drawing objects. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %Canvas class provides a rectangular region to draw objects on the display device. The %Canvas instance is + * associated with a specific context. + * @n + * For more information on the class features, see Canvas. + * + */ +class _OSP_EXPORT_ Canvas + : public Tizen::Base::Object +{ +public: + /** + * This is the default constructor for this class. + * + * @since 2.0 + * @remarks After creating an instance of this class, one of the Construct() methods must be + * called explicitly to initialize this instance. + */ + Canvas(void); + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~Canvas(void); + + /** + * Initializes this instance of %Canvas to create a canvas control of the same size as that of the + * device screen. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + */ + result Construct(void); + + /** + * Initializes this instance of %Canvas with the specified parameter. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect The location and size of the canvas control on the device screen @n + * The width and height of the rectangle must be greater than @c 0. + * If this condition is not satisfied, the E_OUT_OF_RANGE exception is returned. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + */ + result Construct(const Rectangle& rect); + + /** + * Initializes this instance of %Canvas with the buffer information. + * + * @since 2.0 + * + * @return An error code + * @param[in] bufferInfo The information of the buffer to be used by the canvas. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The buffer information is invalid. + * @exception E_UNSUPPORTED_FORMAT The given buffer information is a format unsupported by the canvas. + * @exception E_SYSTEM An unknown operating system error has occurred + * @remarks Only PIXEL_FORMAT_ARGB8888 is supported. + */ + result Construct(const BufferInfo& bufferInfo); + +public: + /** + * Clears the current instance of %Canvas with the background color. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + */ + result Clear(void); + + /** + * Clears a rectangular region of the current instance of %Canvas with the background color. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect The location and size of the rectangular region @n + * The width and height of the rectangle must be greater than or equal to @c 0. + * The rectangular region must not fall outside the edges of the + * current instance of %Canvas entirely.If these conditions are not + * satisfied, the E_OUT_OF_RANGE exception is returned. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + */ + result Clear(const Rectangle& rect); + + /** + * Copies the specified rectangular region from the specified instance of %Canvas to the current instance of + * %Canvas at the specified location. + * + * @since 2.0 + * + * @return An error code + * @param[in] destPoint The location to copy the rectangular region + * @param[in] srcCanvas The source %Canvas + * @param[in] srcRect The location and size of the rectangular region on the source %Canvas @n + * The rectangular region must not fall outside the edges of + * the current instance of %Canvas entirely. If this condition is + * not satisfied, the E_OUT_OF_RANGE exception is returned. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + */ + result Copy(const Point& destPoint, const Canvas& srcCanvas, const Rectangle& srcRect); + + /** + * Copies the scaled image of the specified rectangular region from the specified instance of + * %Canvas to the current instance of %Canvas. + * + * @since 2.0 + * + * @return An error code + * @param[in] destRect The location and size of the destination image @n + * The value of @c destRect must not fall outside the edges of + * the current instance of %Canvas entirely. If this condition is + * not satisfied, the E_OUT_OF_RANGE exception is returned. + * @param[in] srcCanvas The source %Canvas + * @param[in] srcRect The location and size of the source image @n + * The value of @c srcRect must not fall outside the edges of + * the current instance of %Canvas entirely. If this condition is + * not satisfied, the E_OUT_OF_RANGE exception is returned. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of this operation. + */ + result Copy(const Rectangle& destRect, const Canvas& srcCanvas, const Rectangle& srcRect); + + /** + * Gets the line style set for the current instance of %Canvas. + * + * @since 2.0 + * + * @return An instance of %LineStyle + * @remarks The default value is LINE_STYLE_SOLID. + */ + LineStyle GetLineStyle(void) const; + + /** + * Gets the line width of the current instance of %Canvas. + * + * @since 2.0 + * + * @return The line width, @n + * else @c -1 if the method fails + * @remarks The default value is 1. + */ + int GetLineWidth(void) const; + + /** + * Sets the line style for the current instance of %Canvas. + * + * @since 2.0 + * + * @return An error code + * @param[in] style The new line style for the %Canvas control + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + */ + result SetLineStyle(LineStyle style); + + /** + * Sets the line width for the current instance of %Canvas. + * + * @since 2.0 + * + * @return An error code + * @param[in] width The new width for the %Canvas control @n + * The width for the %Canvas control must be greater than @c 0. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + */ + result SetLineWidth(int width); + + /** + * Gets the dash pattern of the current instance of %Canvas. + * + * @since 2.0 + * + * @return An error code + * @param[out] pattern The list containing the information of dash pattern. + * @param[out] offset The offset into the dash pattern at which the stroke must start + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specific input parameter is invalid. + */ + result GetDashPattern(Tizen::Base::Collection::IListT& pattern, int& offset) const; + + /** + * Sets the dash pattern for the current instance of %Canvas. + * + * @since 2.0 + * + * @return An error code + * @param[in] pattern The list containing the information of dash pattern. + * @param[in] offset The offset into the dash pattern at which the stroke must start + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specific input parameter is invalid. + */ + result SetDashPattern(const Tizen::Base::Collection::IListT& pattern, int offset); + + /** + * Gets the color information at the specified point. + * + * @since 2.0 + * + * @return An error code + * @param[in] point The location of the point relative to the upper-left corner of the current instance of %Canvas @n + * The point must not fall outside the edges of %Canvas. If this + * condition is not satisfied, the E_OUT_OF_RANGE exception is returned. + * @param[out] color An instance of Color + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + */ + result GetPixel(const Point& point, Color& color) const; + + /** + * Sets a point at the specified coordinate. + * + * @since 2.0 + * + * @return An error code + * @param[in] point The location of the point relative to the upper-left corner of the current instance of %Canvas @n + * The point must not entirely fall outside the edges of %Canvas. + * If this condition is not satisfied, the E_OUT_OF_RANGE exception + * is returned. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + */ + result SetPixel(const Point& point); + + /** + * Draws a line between the two specified points. + * + * @since 2.0 + * + * @return An error code + * @param[in] point1 The starting point + * @param[in] point2 The end point + * @exception E_SUCCESS The method is successful. + */ + result DrawLine(const Point& point1, const Point& point2); + + /** + * Draws a rectangle. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect The rectangle to be drawn on the %Canvas control @n + * The width and height of the rectangle must be greater than or equal to @c 0. + * The rectangle must not entirely fall outside the edges of + * the %Canvas control. If these conditions are not satisfied, + * the E_OUT_OF_RANGE exception is returned. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + */ + result DrawRectangle(const Rectangle& rect); + + /** + * Fills a rectangular region of the current instance of %Canvas with the specified color. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The fill color + * @param[in] rect The rectangular region on the %Canvas control @n + * The width and height of the rectangle must be greater than or equal to @c 0. + * The rectangle must not entirely fall outside the edges of the + * %Canvas control. If these conditions are not satisfied, the + * E_OUT_OF_RANGE exception is returned. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + */ + result FillRectangle(const Color& color, const Rectangle& rect); + + /** + * Draws a round-edged rectangle. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect The location and size of the rectangle @n + * The width and height of the rectangle must be greater than or equal to @c 0. + * The rectangle must not entirely fall outside the edges of the + * %Canvas control. If these conditions are not satisfied, the + * E_OUT_OF_RANGE exception is returned. + * @param[in] arcDim The width and height of the round edge @n + * The width and height in the @c arcDim parameter must be greater than or equal to @c 0. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + */ + result DrawRoundRectangle(const Rectangle& rect, const Dimension& arcDim); + + /** + * Draws a filled rectangle. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The fill color + * @param[in] rect The location and size of the rectangle @n + * The width and height of the rectangle must be greater than or equal to @c 0. + * The rectangle must not entirely fall outside the edges of the + * %Canvas control. If these conditions are not satisfied, the + * E_OUT_OF_RANGE exception is returned. + * @param[in] arcDim The width and height of the round edge @n + * The width and height mentioned in the @c arcDim parameter must be greater than or equal to @c 0. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + */ + result FillRoundRectangle(const Color& color, const Rectangle& rect, const Dimension& arcDim); + + /** + * Draws an ellipse. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect The location and size of the bounding rectangle @n + * The width and height of the rectangle must be greater than or equal to @c 0. + * The rectangle must not entirely fall outside the edges of the + * %Canvas control. If these conditions are not satisfied, the + * E_OUT_OF_RANGE exception is returned. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + */ + result DrawEllipse(const Rectangle& rect); + + /** + * Draws a filled ellipse with the specified color. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The fill color + * @param[in] rect The location and size of the bounding rectangle @n + * The width and height of the rectangle must be greater than or equal to @c 0. @n + * The rectangle must not entirely fall outside the edges of the + * %Canvas control. If these conditions are not satisfied, the + * E_OUT_OF_RANGE exception is returned. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + */ + result FillEllipse(const Color& color, const Rectangle& rect); + + /** + * Draws a circular arc. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect The location and size of the bounding rectangle @n + * The width and height of the rectangle must be greater than or equal to @c 0. + * The rectangle must not entirely fall outside the edges of the + * %Canvas control. If these conditions are not satisfied, the + * E_OUT_OF_RANGE exception is returned. + * @param[in] startAngle The starting angle + * @param[in] endAngle The ending angle + * @param[in] arcStyle The arc style + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + * @exception E_INVALID_ARG A specified input parameter is invalid. + */ + result DrawArc(const Rectangle& rect, int startAngle, int endAngle, ArcStyle arcStyle); + + /** + * Draws a triangle. + * + * @since 2.0 + * + * @return An error code + * @param[in] point1 The location of the first vertex + * @param[in] point2 The location of the second vertex + * @param[in] point3 The location of the third vertex + * @exception E_SUCCESS The method is successful. + */ + result DrawTriangle(const Point& point1, const Point& point2, const Point& point3); + + /** + * Draw a filled triangle with the specified color. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The fill color + * @param[in] point1 The location of the first vertex + * @param[in] point2 The location of the second vertex + * @param[in] point3 The location of the third vertex + * @exception E_SUCCESS The method is successful. + */ + result FillTriangle(const Color& color, const Point& point1, const Point& point2, const Point& point3); + + /** + * Draws a poly-line. + * + * @since 2.0 + * + * @return An error code + * @param[in] points A list containing the location of points @n + * The number of points must be greater than or equal to @c 0. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + */ + result DrawPolyline(const Tizen::Base::Collection::IList& points); + + /** + * Draws a polygon. + * + * @since 2.0 + * + * @return An error code + * @param[in] points A list containing the locations of the vertices of the polygon @n + * The number of points must be greater than or equal to @c 0. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + */ + result DrawPolygon(const Tizen::Base::Collection::IList& points); + + /** + * Draws a filled polygon with the specified color. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The fill color + * @param[in] points A list containing the locations of the vertices of the polygon @n + * The number of points must be greater than or equal to @c 0. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + */ + result FillPolygon(const Color& color, const Tizen::Base::Collection::IList& points); + + /** + * Sets a font to the %Canvas control. + * + * @since 2.0 + * + * @return An error code + * @param[in] font The font @n + * It must be constructed before being passed to this method. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + */ + result SetFont(const Font& font); + + /** + * Gets a font of the %Canvas control. + * + * @since 2.0 + * + * @return The font of the %Canvas control, @n + * else @c null if the method fails + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks If a font is not set with the SetFont() method, this method returns the system default font. + */ + Font* GetFontN(void) const; + + /** + * Draws a text at the specified location. + * + * @since 2.0 + * + * @return An error code + * @param[in] point The location to draw the text + * @param[in] text The text to draw + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_OPERATION_FAILED The operation has failed. + * @remarks The foreground color (RGB value only) of the %Canvas control is used as the text color. + * @remarks The em square has a defined font size. As a result, if the font's glyph exceeds its em square, it will be scaled down when it is drawn. + */ + result DrawText(const Point& point, const Tizen::Base::String& text); + + /** + * Draws a text at the specified location and length. + * + * @since 2.0 + * + * @return An error code + * @param[in] point The location to draw the text + * @param[in] text The text to draw + * @param[in] length The number of characters in the string @n + * It must be greater than or equal to @c 0. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + * @exception E_OPERATION_FAILED The operation has failed. + * @remarks The foreground color (RGB value only) of the %Canvas control is used as the text color. + * @remarks The em square has a defined font size. As a result, if the font's glyph exceeds its em square, it will be scaled down when it is drawn. + */ + result DrawText(const Point& point, const Tizen::Base::String& text, int length); + + /** + * Draws a text with an outline rendering at the specified location. + * + * @since 2.0 + * + * @return An error code + * @param[in] point The location to draw the text + * @param[in] text The text to draw @n + * @param[in] outlineColor The color that is set as outline color + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + * @exception E_OPERATION_FAILED The operation has failed. + * @remarks The foreground color (RGB value only) of the %Canvas control is used as the text color. + * @remarks The em square has a defined font size. As a result, if the font's glyph exceeds its em square, it will be scaled down when it is drawn. + */ + result DrawText(const Point& point, const Tizen::Base::String& text, const Color& outlineColor); + + /** + * Draws a text with an outline rendering at the specified location and length. + * + * @since 2.0 + * + * @return An error code + * @param[in] point The location to draw the text + * @param[in] text The text to draw + * @param[in] length The number of characters in the string @n + * It must be greater than or equal to @c 0. + * @param[in] outlineColor The color that is set as outline color + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + * @exception E_OPERATION_FAILED The operation has failed. + * + * @remarks The foreground color (RGB value only) of the %Canvas control is used as the text color. + * @remarks The em square has a defined font size. As a result, if the font's glyph exceeds its em square, it will be scaled down when it is drawn. + */ + result DrawText(const Point& point, const Tizen::Base::String& text, int length, const Color& outlineColor); + + /** + * Draws an enriched text at the specified area. + * + * @since 2.0 + * + * @return An error code + * @param[in] point The location to draw the text + * @param[in] enrichedText The TextElement to draw + * @exception E_SUCCESS The method is successful. + * @exception E_DEVICE_UNAVAILABLE A specified device is invalid. + * + * @remarks The foreground color (RGB value only) of the %Canvas control is used as the text color. + * @remarks The em square has a defined font size. As a result, if the font's glyph exceeds its em square, it will be scaled down when it is drawn. + */ + result DrawText(const Point& point, const EnrichedText& enrichedText); + + /** + * Draws a bitmap image at the specified location. + * + * @since 2.0 + * + * @return An error code + * @param[in] point The location of the upper-left corner of the bitmap + * @param[in] bitmap The bitmap to draw @n + * It must be constructed before being passed into this + * method. BitmapPixelFormat::BITMAP_PIXEL_FORMAT_R8G8B8A8 is + * not applicable for this method. The bitmap must not + * entirely fall outside the edges of the %Canvas control. If + * this condition is not satisfied, the E_OUT_OF_RANGE exception + * is returned. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + */ + result DrawBitmap(const Point& point, const Bitmap& bitmap); + + /** + * Draws a bitmap image at the specified location. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect The location and size of the scaled bitmap @n + * The rectangle must not entirely fall outside the edges of the + * %Canvas control. If this condition is not satisfied, the + * E_OUT_OF_RANGE exception is returned. + * @param[in] bitmap The bitmap to draw @n + * It must be constructed well before being passed into this + * method. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + * @remarks BitmapPixelFormat::BITMAP_PIXEL_FORMAT_R8G8B8A8 is not applicable for this method. + */ + result DrawBitmap(const Rectangle& rect, const Bitmap& bitmap); + + /** + * Draws a color data corresponding to a rectangle of pixels from the specified bitmap onto %Canvas. + * + * @since 2.0 + * + * @return An error code + * @param[in] destRect The destination rectangle of %Canvas @n + * The width and height of the rectangle must be greater than or equal to @c 0. + * The rectangle defined by @c destRect will be clipped at the edges + * of the %Canvas control to prevent the rectangle from falling + * outside the edges of the %Canvas control. The destination + * rectangle of a %Canvas control must not fall outside the edges + * of the %Canvas control entirely. If these conditions are not + * satisfied, the E_OUT_OF_RANGE exception is returned. + * @param[in] srcBitmap The bitmap to draw + * @param[in] srcRect The source rectangle of a bitmap @n + * The width and height of the rectangle must be greater than or equal to @c 0. + * The rectangle defined by @c srcRect will be clipped at the edges + * of the bitmap to prevent the rectangle from falling outside the + * edges of the bitmap. The source rectangle of a bitmap must not + * fall outside the edges of the bitmap entirely. If these + * conditions are not satisfied, the E_OUT_OF_RANGE exception is + * thrown. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + * @remarks If the source and destination rectangles are not of the same size, + * the source bitmap is stretched to match the destination rectangle. @n + * BitmapPixelFormat::BITMAP_PIXEL_FORMAT_R8G8B8A8 is not applicable for this method. + */ + result DrawBitmap(const Rectangle& destRect, const Bitmap& srcBitmap, const Rectangle& srcRect); + + /** + * Draws a flipped bitmap image at the specified location. + * + * @since 2.0 + * + * @return An error code + * @param[in] point The location to draw the bitmap + * @param[in] bitmap The bitmap to draw @n + * It must be constructed before being passed to this method. + * @param[in] dir The flip direction + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @remarks BitmapPixelFormat::BITMAP_PIXEL_FORMAT_R8G8B8A8 is not applicable for this method. + */ + result DrawBitmap(const Point& point, const Bitmap& bitmap, FlipDirection dir); + + /** + * Draws a rotated bitmap image at the specified location. + * + * @since 2.0 + * + * @return An error code + * @param[in] point A location to draw a bitmap image @n + * This location is relatively defined from the origin (upper-left + * corner) of the %Canvas control. + * @param[in] bitmap The bitmap to draw @n + * It must be constructed before being passed to this method. + * @param[in] pivot The center of rotation of a bitmap image @n + * This center is relatively defined from the origin (upper-left + * corner) of the bitmap. + * @param[in] degree The amount of rotation in degrees + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @remarks BitmapPixelFormat::BITMAP_PIXEL_FORMAT_R8G8B8A8 is not applicable for this method. + * @image html graphics_rotatebitmap.PNG + */ + result DrawBitmap(const Point& point, const Bitmap& bitmap, const Point& pivot, int degree); + + /** + * Draws a nine-patched bitmap at the specified location. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect The location and size of the nine-patched bitmap @n + * The rectangle must not entirely fall outside the edges of the + * %Canvas control. If this condition is not satisfied, the + * E_OUT_OF_RANGE exception is returned. + * @param[in] bitmap The bitmap to draw @n + * It must be constructed before being passed to this method. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + * + * @remarks BitmapPixelFormat::BITMAP_PIXEL_FORMAT_R8G8B8A8 is not applicable for this method. @n + * The nine-patched bitmap must have a stretchable section by drawing one (or more) 1-pixel-wide black line(s) in the + * left and top part of the border. + * @image html graphics_ninepatchedbitmap.PNG + * + */ + result DrawNinePatchedBitmap(const Rectangle& rect, const Bitmap& bitmap); + + /** + * Shows the current instance of %Canvas on the device screen. + * + * @if OSPCOMPAT + * @brief [Compatibility] + * @endif + * @since 2.0 + * @if OSPCOMPAT + * @compatibility This method has compatibility issues with OSP compatible applications @n + * For more information, see the issue description for @ref CompCanvasShowPage "here". + * @endif + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. + * + */ + result Show(void); + + /** + * @if OSPCOMPAT + * @page CompCanvasShowPage Compatibility for Show(). + * @section CompCanvasShowPageIssueSection Issues + * In Tizen, memory canvas is not fully supported, and we cannot guarantee that Show() for memory canvas of Tizen does the same operation with that of OSP. + * + * -# In OSP, when Show() is called for a Memory Canvas, the canvas was copied to the screen and E_SUCCESS was returned, but the canvas is not guaranteed to be displayed properly. + * -# In Tizen, Show() does not function for a Memory Canvas, so E_UNSUPPORTED_OPERATION is returned. Memory Canvases cannot be used to directly show its content on screen. + * + * @endif + */ + + + /** + * @if OSPDEPREC + * Shows the specified rectangle of the current instance of %Canvas on the device screen. + * + * @brief [Deprecated] + * @deprecated This method is deprecated. Instead of this method, use the Show(). + * @since 2.0 + * + * @return An error code + * @param[in] rect The bounds of the %Canvas control to display @n + * The width and height of the rectangle must be greater than or equal to @c 0. + * The rectangle must not entirely fall outside the edges of the + * %Canvas control. If these conditions are not satisfied, the + * E_OUT_OF_RANGE exception is returned. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + * + * @remark If you use Show(Rectangle&) in Tizen, this method works differently. @n + * This method shows the screen entirely not partially in Tizen. + * @endif + */ + result Show(const Rectangle& rect); + + /** + * Gets the location and size of the current %Canvas instance on the device screen. + * + * @since 2.0 + * + * @return The Rectangle instance containing the location and size of the current %Canvas instance + * @remarks If this %Canvas instance is a Window %Canvas, it returns Rectangle(0, 0, w, h). + */ + Rectangle GetBounds(void) const; + + /** + * Sets the clip rectangle for a %Canvas control. @n + * When a clip rectangle is set, any drawing is restricted within the specified rectangular area. The + * rectangular area defined is clipped at the edges of the %Canvas control so as to prevent the clipped rectangle + * from falling outside the %Canvas control. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect The bounds of the clip rectangle @n + * The width and height of the rectangle must be greater than or equal to @c 0. + * The clip rectangle for a %Canvas control must not entirely fall + * outside the edges of the %Canvas control. If these conditions are + * not satisfied, the E_OUT_OF_RANGE exception is returned. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + */ + result SetClipBounds(const Rectangle& rect); + + /** + * Gets the bounds of the clip rectangle of a %Canvas control. + * + * @since 2.0 + * + * @return An instance of Rectangle indicating the bounds of the clip rectangle + */ + Rectangle GetClipBounds(void) const; + + /** + * Locks the %Canvas control for direct pixel access. @n + * This sets up a %Canvas control for accessing the pixels directly. Between the calls to the + * Canvas::Lock() and Canvas::UnLock() methods, the data can be written to and read from the + * Canvas control's pixels. Once the operations on the %Canvas control's pixels are finished, the + * Canvas::Unlock() method must be called to release the lock. + * + * @since 2.0 + * + * @return An error code + * @param[out] info The information of the %Canvas control + * @param[in] timeout The time, in milliseconds, that the caller waits for the lock to be obtained @n + * If the lock attempt fails, E_TIMEOUT is returned. The default value + * is INFINITE, which means that the method does not return until the lock + * is acquired. + * @exception E_SUCCESS The method is successful. + * @exception E_TIMEOUT The operation cannot be completed within the specified time period. + * @exception E_SYSTEM An unknown operating system error has occurred. + * + * @remarks BufferInfo contains a valid physical memory information, regardless of the + * logical position and size of the %Canvas control. + */ + result Lock(BufferInfo& info, long timeout = INFINITE); + + /** + * Unlocks the %Canvas control. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM An unknown operating system error has occurred. + * @remarks The %Canvas control must be unlocked as soon as possible. + */ + result Unlock(void); + + /** + * Sets the foreground color. + * + * @since 2.0 + * + * @param[in] color The color that is set as foreground color + */ + void SetForegroundColor(const Color& color); + + /** + * Gets the foreground color. + * + * @since 2.0 + * + * @return The foreground color + */ + Color GetForegroundColor(void) const; + + /** + * Sets the background color. + * + * @since 2.0 + * + * @param[in] color The color that is set as background color + */ + void SetBackgroundColor(const Color& color); + + /** + * Gets the background color. + * + * @since 2.0 + * + * @return The background color + */ + Color GetBackgroundColor(void) const; + + /** + * Sets the current instance of %Canvas to the specified point. + * + * @since 2.0 + * + * @return An error code + * @param[in] point The new position + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION Window %Canvas does not support moving the position. + */ + result SetPosition(const Point& point); + + /** + * Sets the current instance of %Canvas to the specified point. + * + * @since 2.0 + * + * @return An error code + * @param[in] x The new x-coordinate + * @param[in] y The new y-coordinate + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION Window %Canvas does not support moving the position. + */ + result SetPosition(int x, int y); + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + Canvas(const Canvas& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + Canvas& operator =(const Canvas& rhs); + + friend class Bitmap; + friend class TextElement; + +private: + friend class _CanvasImpl; + + // + // This variable is for internal use only. + // Using this variable can cause behavioral, security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + class _CanvasImpl* __pImpl; + +}; // Canvas + +}} // Tizen::Graphics + +#endif //_FGRP_CANVAS_H_ diff --git a/inc/FGrpCanvasCommon.h b/inc/FGrpCanvasCommon.h new file mode 100644 index 0000000..9b1746a --- /dev/null +++ b/inc/FGrpCanvasCommon.h @@ -0,0 +1,79 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FGrpCanvasCommon.h + * @brief This is the header file for the enumerations of the Canvas class. + * + * This header file contains the definitions of the enumerations of the Canvas class. + */ + +#ifndef _FGRP_CANVAS_COMMON_H_ +#define _FGRP_CANVAS_COMMON_H_ + +namespace Tizen { namespace Graphics +{ +/** + * @enum LineStyle + * + * Defines the line style. + * + * @since 2.0 + */ +enum LineStyle +{ + LINE_STYLE_SOLID = 1, /**< The solid line style */ + LINE_STYLE_MAX, // This enum value is for internal use only. Using this enum value can cause behavioral, security-related, and consistency-related issues in the application. + LINE_STYLE_MIN = 0 // This enum value is for internal use only. Using this enum value can cause behavioral, security-related, and consistency-related issues in the application. +}; + +/** + * @enum ArcStyle + * + * Defines the arc style. + * + * @since 2.0 + */ +enum ArcStyle +{ + ARC_STYLE_ONLY = 1, /**< An arc line is drawn */ + ARC_STYLE_PIE, /**< A pie (arc and chords) is drawn */ + ARC_STYLE_CHORD, /**< A chord is drawn */ + ARC_STYLE_FILLED_PIE, /**< A filled pie is drawn */ + ARC_STYLE_FILLED_CHORD, /**< A filled chord is drawn */ + ARC_STYLE_MAX, // This enum value is for internal use only. Using this enum value can cause behavioral, security-related, and consistency-related issues in the application. + ARC_STYLE_MIN = 0 // This enum value is for internal use only. Using this enum value can cause behavioral, security-related, and consistency-related issues in the application. +}; + +/** + * @enum FlipDirection + * + * Defines the flip direction. + * + * @since 2.0 + */ +enum FlipDirection +{ + FLIP_DIRECTION_HORIZONTAL = 1, /**< The horizontal type */ + FLIP_DIRECTION_VERTICAL, /**< The vertical type */ + FLIP_DIRECTION_MAX, // This enum value is for internal use only. Using this enum value can cause behavioral, security-related, and consistency-related issues in the application. + FLIP_DIRECTION_MIN = 0 // This enum value is for internal use only. Using this enum value can cause behavioral, security-related, and consistency-related issues in the application. +}; + +} } // Tizen::Graphics + +#endif // _FGRP_CANVAS_COMMON_H_ diff --git a/inc/FGrpCanvasTexture.h b/inc/FGrpCanvasTexture.h new file mode 100644 index 0000000..af87599 --- /dev/null +++ b/inc/FGrpCanvasTexture.h @@ -0,0 +1,121 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FGrpCanvasTexture.h + * @brief This is the header file for the %CanvasTexture class. + * + * This header file contains the declarations of the %CanvasTexture class. + * + */ + +#ifndef _FGRP_CANVAS_TEXTURE_H_ +#define _FGRP_CANVAS_TEXTURE_H_ + +#include + +namespace Tizen { namespace Graphics { +class Canvas; +}} + +namespace Tizen { namespace Graphics { namespace Opengl +{ + +/** + * @class CanvasTexture + * @brief This class provides a method to bind 2D Canvas and OpenGL-ES Texture. + * With this feature, you can easily draw 2D primitives on OpenGL-ES Textures with consistency. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %CanvasTexture class provides a canvas by which you can draw 2D primitives on OpenGL-ES texture. + * + */ +class _OSP_EXPORT_ CanvasTexture + : public Tizen::Base::Object +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method be called right after calling this constructor. + * + * @since 2.0 + * + */ + CanvasTexture(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~CanvasTexture(void); + + /** + * Initializes this instance of %CanvasTexture with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] textureId Texture ID which points to the texture associated with the 2D canvas. The testure ID must be generated from glGenTextures(). + * @param[in] width The width of the input texture. The width must be greater than @c 0, and smaller or equal than GL_MAX_TEXTURE_SIZE. + * @param[in] height The height of the input texture. The height must be greater than @c 0, and smaller or equal than GL_MAX_TEXTURE_SIZE + * @exception E_SUCCESS Construction is successfully done. + * @exception E_INVALID_ARG Input parameter is invalid. + * @exception E_UNSUPPORTED_OPERATION The target device does not support full features for %CanvasTexture. + * @exception E_INVALID_STATE Getting egl information failed. It is necessary to bind egl context by using eglMakeCurrent funtion. + * @remarks There is a high probability for an occurrence of an out-of-memory exception. If possible, check whether the exception is E_OUT_OF_MEMORY or not. For more information on how to handle the out-of-memory exception, refer here. + */ + result Construct(int textureId, int width, int height); + + /** + * Returns a 2D Canvas which is associated with the Texture of %CanvasTexture. + * + * @since 2.0 + * + * @return The 2D canvas of the %CanvasTexture, @n + * else @c null if an exception occurs. + * @exception E_SUCCESS The method is successful. + * @exception E_OPERATION_FAILED Fail to construct the canvas properly, due to some reason of system. + */ + Tizen::Graphics::Canvas* GetCanvasN(void) const; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + // @param[in] rhs The source from which this instance is copied + // + CanvasTexture(const CanvasTexture& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + // @param[in] rhs An instance of %CanvasTexture + // + CanvasTexture& operator =(const CanvasTexture& rhs); + +private: + friend class _CanvasTextureImpl; + + class _CanvasTextureImpl* __pImpl; +}; // CanvasTexture + +}}} // Tizen::Graphics::Opengl + +#endif //_FGRP_CANVAS_TEXTURE_H_ diff --git a/inc/FGrpColor.h b/inc/FGrpColor.h new file mode 100644 index 0000000..f17a118 --- /dev/null +++ b/inc/FGrpColor.h @@ -0,0 +1,490 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FGrpColor.h + * @brief This is the header file for the %Color class. + * + * This header file contains the declarations of the %Color class. + * + */ + +#ifndef _FGRP_COLOR_H_ +#define _FGRP_COLOR_H_ + +#include +#include + +namespace Tizen { namespace Graphics +{ + +/** + * @class Color32 + * @brief This template code makes a 32-bit combination from each color component + * @since 2.0 + * + * The following example demonstrates how to use this template code + * + * @code + * + * #include + * + * using namespace Tizen::Graphics; + * + * // 0xFFFF00FF: Opaque magenta + * const unsigned int MY_COLOR1 = Color32<255, 0, 255>::Value; + * + * // 0x80FF0000: Red with 50% opacity + * const unsigned int MY_COLOR2 = Color32<255, 0, 0, 128>::Value; + * + * @endcode + */ +template +struct Color32 +{ + enum + { + Value = static_cast(alpha) << 24 | + static_cast(red) << 16 | + static_cast(green) << 8 | + static_cast(blue) + }; +}; + +/** + * @enum ColorId + * + * Defines the color ID. + * + * @since 2.0 + */ +enum ColorId +{ + COLOR_ID_BLACK, /**< This attribute is pre-defined. Its value is black. */ + COLOR_ID_BLUE, /**< This attribute is pre-defined. Its value is blue. */ + COLOR_ID_CYAN, /**< This attribute is pre-defined. Its value is cyan. */ + COLOR_ID_GREEN, /**< This attribute is pre-defined. Its value is green. */ + COLOR_ID_GREY, /**< This attribute is pre-defined. Its value is grey. */ + COLOR_ID_MAGENTA, /**< This attribute is pre-defined. Its value is magenta. */ + COLOR_ID_RED, /**< This attribute is pre-defined. Its value is red. */ + COLOR_ID_VIOLET, /**< This attribute is pre-defined. Its value is violet. */ + COLOR_ID_YELLOW, /**< This attribute is pre-defined. Its value is yellow. */ + COLOR_ID_WHITE /**< This attribute is pre-defined. Its value is white. */ +}; + +/** + * @class Color + * @brief This class encapsulates a color. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %Color class provides an ARGB (Alpha, Red, Green, Blue) color model. + * + * For more information on the class features, see Color. + */ +class _OSP_EXPORT_ Color + : public Tizen::Base::Object +{ + +public: + /** + * This is the default constructor for this class. + * + * @since 2.0 + */ + Color(void); + + /** + * This is the copy constructor for the %Color class. @n + * This constructor initializes the instance of %Color with the attributes of the specified instance of %Color. + * + * @since 2.0 + * + * @param[in] rhs An instance of %Color + */ + Color(const Color& rhs); + + /** + * Initializes the instance of %Color with the specified ARGB values. + * + * @since 2.0 + * + * @param[in] r The red component + * @param[in] g The green component + * @param[in] b The blue component + * @param[in] a The alpha component + */ + Color(byte r, byte g, byte b, byte a = 0xFF); + + /** + * Initializes the instance of %Color with the specified RGB value. + * + * @since 2.0 + * + * @param[in] rgb The RGB color value + * @param[in] hasAlpha Set to @c true if @c rgb contains an alpha value, @n + * else @c false + */ + Color(unsigned int rgb, bool hasAlpha = true); + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~Color(void); + + +public: + /** + * Checks whether the two instances of %Color are equal. + * + * @since 2.0 + * + * @return @c true if the values of the two instances of %Color are equal, @n + * else @c false + * @param[in] rhs An instance of %Color + */ + bool operator ==(const Color& rhs) const; + + /** + * Checks whether the two instances of %Color are not equal. + * + * @since 2.0 + * + * @return @c true if the values of the two instances of %Color are not equal, @n + * else @c false + * @param[in] rhs An instance of %Color + * + */ + bool operator !=(const Color& rhs) const; + + /** + * Assigns the values of the RGB components of the specified instance to the current instance of %Color. + * + * @since 2.0 + * + * @return The reference to the instance of %Color + * @param[in] rhs An instance of %Color + */ + Color& operator =(const Color& rhs); + + +public: + /** + * Checks whether the current instance of %Color equals the specified instance of %Color. + * + * @since 2.0 + * + * @return @c true if the values of the current instance is equal to the value of the specified instance, @n + * else @c false + * @param[in] rhs An instance of %Color + * @remarks This method overrides Tizen::Base::Object::Equals(). This method uses the values of the RGB components to compare the two instances. + */ + virtual bool Equals(const Tizen::Base::Object& rhs) const; + + /** + * Gets the hash value of the current instance of %Color. + * + * @since 2.0 + * + * @return The hash value of the current instance + * @remarks Two equal instances must return the same hash value. For better performance, + * the used hash function must generate a random distribution for all inputs. + */ + virtual int GetHashCode(void) const; + + +public: + /** + * Gets the value of the alpha component of the current instance of %Color. + * + * @since 2.0 + * + * @return A @c byte representation of the alpha component of the current instance of %Color + */ + byte GetAlpha(void) const; + + /** + * Gets the value of the red component of the current instance of %Color. + * + * @since 2.0 + * + * @return A @c byte representation of the red component of the current instance of %Color + */ + byte GetRed(void) const; + + /** + * Gets the value of the blue component of the current instance of %Color. + * + * @since 2.0 + * + * @return A @c byte representation of the blue component of the current instance of %Color + */ + byte GetBlue(void) const; + + /** + * Gets the value of the green component of the current instance of %Color. + * + * @since 2.0 + * + * @return A @c byte representation of the green component of the current instance of %Color + */ + byte GetGreen(void) const; + + /** + * Gets the ARGB components of the current instance of %Color. + * + * @since 2.0 + * + * @param[out] r The red component + * @param[out] g The green component + * @param[out] b The blue component + * @param[out] a The alpha component + */ + void GetColorComponents(byte& r, byte& g, byte& b, byte& a) const; + + /** + * Gets the 32-bit integer value of the current instance of %Color. + * + * @since 2.0 + * + * @return An unsigned integer value representing the current instance of %Color + */ + unsigned int GetRGB32(void) const; + + /** + * Sets the value of the alpha component of the current instance of %Color. + * + * @since 2.0 + * + * @param[in] a The new value of the alpha component + */ + void SetAlpha(byte a); + + /** + * Sets the value of the red component of the current instance of %Color. + * + * @since 2.0 + * + * @param[in] r The new value of the red component + */ + void SetRed(byte r); + + /** + * Sets the value of the green component of the current instance of %Color. + * + * @since 2.0 + * + * @param[in] g The new value of the green component + */ + void SetGreen(byte g); + + /** + * Sets the value of the blue component of the current instance of %Color. + * + * @since 2.0 + * + * @param[in] b The new value of the blue component + */ + void SetBlue(byte b); + + /** + * Sets the values of the ARGB components of the current instance of %Color. + * + * @since 2.0 + * + * @param[in] r The red component + * @param[in] g The green component + * @param[in] b The blue component + * @param[in] a The alpha component + */ + void SetColorComponents(byte r, byte g, byte b, byte a = 0xFF); + + /** + * Sets the current instance of %Color to the specified 32-bit integer value. + * + * @since 2.0 + * + * @param[in] rgb The new RGB color value + * @param[in] hasAlpha @c true if @c rgb contains alpha value, @n + else @c false + */ + void SetRGB32(unsigned int rgb, bool hasAlpha = true); + + /** + * Return the Color object for the specified color + * + * @since 2.0 + * @return Color The Color object + * @param[in] colorId The enum value for the specified color + */ + static Color GetColor(ColorId colorId); + + +public: + /** + * @if OSPDEPREC + * This attribute is pre-defined. Its value is black. + * + * @brief [Deprecated] + * @since 2.0 + * + * @deprecated This object is provided only for backward compatibility and will be deleted in a future release + * Instead of using this static constant, it is recommended to use GetColor(COLOR_ID_BLACK) + * @endif + */ + const static Color COLOR_BLACK; + + /** + * @if OSPDEPREC + * This attribute is pre-defined. Its value is blue. + * + * @brief [Deprecated] + * @since 2.0 + * + * @deprecated This object is provided only for backward compatibility and will be deleted in a future release + * Instead of using this static constant, it is recommended to use GetColor(COLOR_ID_BLUE) + * @endif + */ + const static Color COLOR_BLUE; + + /** + * @if OSPDEPREC + * This attribute is pre-defined. Its value is cyan. + * + * @brief [Deprecated] + * @since 2.0 + * + * @deprecated This object is provided only for backward compatibility and will be deleted in a future release + * Instead of using this static constant, it is recommended to use GetColor(COLOR_ID_CYAN) + * @endif + */ + const static Color COLOR_CYAN; + + /** + * @if OSPDEPREC + * This attribute is pre-defined. Its value is green. + * + * @brief [Deprecated] + * @since 2.0 + * + * @deprecated This object is provided only for backward compatibility and will be deleted in a future release + * Instead of using this static constant, it is recommended to use GetColor(COLOR_ID_GREEN) + * @endif + */ + const static Color COLOR_GREEN; + + /** + * @if OSPDEPREC + * This attribute is pre-defined. Its value is grey. + * + * @brief [Deprecated] + * @since 2.0 + * + * @deprecated This object is provided only for backward compatibility and will be deleted in a future release + * Instead of using this static constant, it is recommended to use GetColor(COLOR_ID_GREY) + * @endif + */ + const static Color COLOR_GREY; + + /** + * @if OSPDEPREC + * This attribute is pre-defined. Its value is magenta. + * + * @brief [Deprecated] + * @since 2.0 + * + * @deprecated This object is provided only for backward compatibility and will be deleted in a future release + * Instead of using this static constant, it is recommended to use GetColor(COLOR_ID_MAGENTA) + * @endif + */ + const static Color COLOR_MAGENTA; + + /** + * @if OSPDEPREC + * This attribute is pre-defined. Its value is red. + * + * @brief [Deprecated] + * @since 2.0 + * + * @deprecated This object is provided only for backward compatibility and will be deleted in a future release + * Instead of us ing this static constant, it is recommended to use GetColor(COLOR_ID_RED) + * @endif + */ + const static Color COLOR_RED; + + /** + * @if OSPDEPREC + * This attribute is pre-defined. Its value is violet. + * + * @brief [Deprecated] + * @since 2.0 + * + * @deprecated This object is provided only for backward compatibility and will be deleted in a future release + * Instead of using this static constant, it is recommended to use GetColor(COLOR_ID_VIOLET) + * @endif + */ + const static Color COLOR_VIOLET; + + /** + * @if OSPDEPREC + * This attribute is pre-defined. Its value is yellow. + * + * @brief [Deprecated] + * @since 2.0 + * + * @deprecated This object is provided only for backward compatibility and will be deleted in a future release + * Instead of using this static constant, it is recommended to use GetColor(COLOR_ID_YELLOW) + * @endif + */ + const static Color COLOR_YELLOW; + + /** + * @if OSPDEPREC + * This attribute is pre-defined. Its value is cwhite. + * + * @brief [Deprecated] + * @since 2.0 + * + * @deprecated This object is provided only for backward compatibility and will be deleted in a future release + * Instead of using this static constant, it is recommended to use GetColor(COLOR_ID_WHITE) + * @endif + */ + const static Color COLOR_WHITE; + + +private: + unsigned int __color; + + friend class _ColorImpl; + + // + // This variable is for internal use only. + // Using this variable can cause behavioral, security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + class _ColorImpl * __pImpl; + +}; // Color + +}} // Tizen::Graphics + +#endif //_FGRP_COLOR_H_ diff --git a/inc/FGrpCoordinateSystem.h b/inc/FGrpCoordinateSystem.h new file mode 100644 index 0000000..1fdc0d6 --- /dev/null +++ b/inc/FGrpCoordinateSystem.h @@ -0,0 +1,120 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FGrpCoordinateSystem.h + * @brief This is the header file for the %CoordinateSystem class. + * + * This header file contains the declarations of the %CoordinateSystem class. + */ + +#ifndef _FGRP_COORDINATE_SYSTEM_H_ +#define _FGRP_COORDINATE_SYSTEM_H_ + + +#include + + +namespace Tizen { namespace Graphics +{ + +/** + * @class CoordinateSystem + * @brief This class provides various utility methods for coordinate handling. + * + * @since 2.0 + * + * The %CoordinateSystem class provides various utility methods for coordinate handling. + * + */ +class _OSP_EXPORT_ CoordinateSystem +{ +public: + /** + * Returns the screen resolution in logical coordinates. + * + * @since 2.0 + * + * @return The screen resolution in logical coordinates + */ + static Dimension GetLogicalResolution(void); + + /** + * Returns the screen resolution in physical coordinates. + * + * @since 2.0 + * + * @return The screen resolution in physical coordinates + */ + static Dimension GetPhysicalResolution(void); + + /** + * Converts the physical value along x-axis to the logical one. + * + * @since 2.0 + * + * @return The converted logical value for the physical one + * @param[in] physicalX An input physical value to be converted + */ + static int ConvertToLogicalX(int physicalX); + + /** + * Converts the physical value along y-axis to the logical one. + * + * @since 2.0 + * + * @return The converted logical value for the physical one + * @param[in] physicalY An input physical value to be converted + */ + static int ConvertToLogicalY(int physicalY); + + /** + * Converts the logical value along x-axis to the physical one. + * + * @since 2.0 + * + * @return The converted physical X value + * @param[in] logicalX An input logical value to be converted + */ + static int ConvertToPhysicalX(int logicalX); + + /** + * Converts the logical value along y-axis to the physical one. + * + * @since 2.0 + * + * @return The converted physical Y value + * @param[in] logicalY An input logical value to be converted + */ + static int ConvertToPhysicalY(int logicalY); + +private: + // + // This default constructor is intentionally declared as private because this class cannot be constructed. + // + CoordinateSystem(void); + + // + // This destructor is intentionally declared as private because this class cannot be constructed. + // + ~CoordinateSystem(void); + +}; // CoordinateSystem + +}} // Tizen::Graphics + +#endif // _FGRP_COORDINATE_SYSTEM_H_ diff --git a/inc/FGrpDimension.h b/inc/FGrpDimension.h new file mode 100644 index 0000000..da6a6b1 --- /dev/null +++ b/inc/FGrpDimension.h @@ -0,0 +1,178 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FGrpDimension.h + * @brief This is the header file for the %Dimension class. + * + * This header file contains the declarations of the %Dimension class. + */ + +#ifndef _FGRP_DIMENSION_H_ +#define _FGRP_DIMENSION_H_ + +#include + +namespace Tizen { namespace Graphics +{ +/** + * @class Dimension + * @brief This class represents the width and height of a two-dimensional region. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %Dimension class provides methods to abstract and set the width and height of a two-dimensional region. + * + * For more information on the class features, see Shapes. + * + */ +class _OSP_EXPORT_ Dimension + : public Tizen::Base::Object +{ +public: + /** + * This is the default constructor for this class. @n + * This constructor initializes an instance of %Dimension with the width and the height set as @c 0. + * + * @since 2.0 + */ + Dimension(void); + + /** + * This is the copy constructor for the %Dimension class. + * + * @since 2.0 + * + * @param[in] rhs An instance of %Dimension + */ + Dimension(const Dimension& rhs); + + /** + * Initializes an instance of %Dimension with the specified values of width and height. + * + * @since 2.0 + * + * @param[in] width The width to set + * @param[in] height The height to set + */ + Dimension(int width, int height); + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~Dimension(void); + + /** + * Assigns the value of the specified instance to the current instance of %Dimension. + * + * @since 2.0 + * + * @param[in] rhs An instance of %Dimension + */ + Dimension& operator =(const Dimension& rhs); + + /** + * Checks whether the two instances of %Dimension have equal width and height values. + * + * @since 2.0 + * + * @return @c true if the values of the width and height of the two instances of %Dimension are equal, @n + * else @c false + * @param[in] rhs An instance of %Dimension + */ + bool operator ==(const Dimension& rhs) const; + + /** + * Checks whether the two instances of %Dimension have different width and height values. + * + * @since 2.0 + * + * @return @c true if the values of the width and the height of the two instances of %Dimension are not equal, @n + * else @c false + * @param[in] rhs An instance of %Dimension + */ + bool operator !=(const Dimension& rhs) const; + + /** + * Checks whether the value of the current instance of %Dimension equals the value of the specified instance. + * + * @since 2.0 + * + * @return @c true if the value of the current instance equals the value of the specified instance, @n + * else @c false + * @param[in] rhs An instance of %Dimension + * @remarks The %Dimension class has a semantic value, which means that the + * Equals() method checks whether the two instances have the same width and height. + */ + virtual bool Equals(const Tizen::Base::Object& rhs) const; + + /** + * Gets the hash value of the current instance. + * + * @since 2.0 + * + * @return The hash value of the current instance + * @remarks Two equal instances must return the same hash value. For better performance, + * the used hash function must generate a random distribution for all inputs. + */ + virtual int GetHashCode(void) const; + + /** + * Sets the size of the current instance of %Dimension. + * + * @since 2.0 + * + * @param[in] width The new width + * @param[in] height The new height + */ + void SetSize(int width, int height); + +public: + /** + * The width of the current instance of %Dimension. + * + * @since 2.0 + */ + int width; + + /** + * The height of the current instance of %Dimension. + * + * @since 2.0 + */ + int height; + +private: + friend class _DimensionImpl; + + // + // This variable is for internal use only. + // Using this variable can cause behavioral, security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + class _DimensionImpl * __pImpl; + +}; // Dimension + +}} // Tizen::Graphics + +#endif // _FGRP_DIMENSION_H_ diff --git a/inc/FGrpEnrichedText.h b/inc/FGrpEnrichedText.h new file mode 100644 index 0000000..cf9f8dd --- /dev/null +++ b/inc/FGrpEnrichedText.h @@ -0,0 +1,782 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FGrpEnrichedText.h + * @brief This is the header file for the %EnrichedText class. + * + * This header file contains the definitions of the %EnrichedText class. + * + */ + +#ifndef _FGRP_ENRICHED_TEXT_H_ +#define _FGRP_ENRICHED_TEXT_H_ + +#include +#include +#include + +namespace Tizen { namespace Graphics +{ +/** + * @enum TextHorizontalAlignment + * + * Defines the horizontal alignment of the text. + * + * @since 2.0 + */ +enum TextHorizontalAlignment +{ + TEXT_ALIGNMENT_LEFT = 1, /**< The position of the text is towards the left of the object */ + TEXT_ALIGNMENT_CENTER, /**< The position of the text is towards the center of the object */ + TEXT_ALIGNMENT_RIGHT, /**< The position of the text is towards the right of the object */ + TEXT_ALIGNMENT_HORIZONTAL_MAX, // This enum value is for internal use only. Using this enum value can cause behavioral, security-related, and consistency-related issues in the application. + TEXT_ALIGNMENT_HORIZONTAL_MIN = 0 // This enum value is for internal use only. Using this enum value can cause behavioral, security-related, and consistency-related issues in the application. +}; + +/** + * @enum TextVerticalAlignment + * + * Defines the vertical alignment of the text. + * + * @since 2.0 + */ +enum TextVerticalAlignment +{ + TEXT_ALIGNMENT_TOP = 1, /**< The position of the text is towards the top of the object */ + TEXT_ALIGNMENT_MIDDLE, /**< The position of the text is towards the middle of the object */ + TEXT_ALIGNMENT_BOTTOM, /**< The position of the text is towards the bottom of the object */ + TEXT_ALIGNMENT_BASELINE, /**< The position of the text is aligned along the baseline of the object */ + TEXT_ALIGNMENT_VERTICAL_MAX, // This enum value is for internal use only. Using this enum value can cause behavioral, security-related, and consistency-related issues in the application. + TEXT_ALIGNMENT_VERTICAL_MIN = 0 // This enum value is for internal use only. Using this enum value can cause behavioral, security-related, and consistency-related issues in the application. +}; + +/** + * @enum TextWrap + * + * Defines the style of wrapping of the text in %EnrichedText. + * + * @since 2.0 + */ +enum TextWrap +{ + TEXT_WRAP_NONE = 1, /**< The wrapping of text is not applied */ + TEXT_WRAP_CHARACTER_WRAP, /**< The wrapping of text is applied at the character unit */ + TEXT_WRAP_WORD_WRAP, /**< The wrapping of text is applied at the word unit */ + TEXT_WRAP_MAX, // This enum value is for internal use only. Using this enum value can cause behavioral, security-related, and consistency-related issues in the application. + TEXT_WRAP_MIN = 0 // This enum value is for internal use only. Using this enum value can cause behavioral, security-related, and consistency-related issues in the application. +}; + +/** + * @class EnrichedText + * @brief This class provides enriched text content. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %EnrichedText class provides methods that enable your application to support texts with various styles, such + * as font, color, and layout. An %EnrichedText instance can be drawn to a Canvas. + * + * For more information on the class features, see EnrichedText. + * + * The following example demonstrates how to use the %EnrichedText class. + * + * @code +#include +#include +#include + +using namespace Tizen::App; +using namespace Tizen::Graphics; + +bool +MyClass::EnrichedTextSample(void) +{ + result r = E_SUCCESS; + EnrichedText* pEnrichedText = null; + TextElement* pTextElement1 = null; + TextElement* pTextElement2 = null; + Bitmap* pBitmap = null; + + // Creates an EnrichedText instance and sets the attributes + pEnrichedText = new EnrichedText(); + r = pEnrichedText->Construct(Dimension(200, 200)); + if (IsFailed(r)) + { + goto CATCH; + } + pEnrichedText->SetHorizontalAlignment(TEXT_ALIGNMENT_RIGHT); + pEnrichedText->SetVerticalAlignment(TEXT_ALIGNMENT_BOTTOM); + pEnrichedText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP); + pEnrichedText->SetTextAbbreviationEnabled(true); + + // Creates a TextElement and sets attributes + pTextElement1 = new TextElement(); + r = pTextElement1->Construct(L"0123456789"); + if (IsFailed(r)) + { + goto CATCH; + } + pTextElement1->SetTextColor(Color::GetColor(COLOR_ID_BLUE)); + { + Font font; + font.Construct(FONT_STYLE_BOLD, 40); + pTextElement1->SetFont(font); + } + + // Creates another TextElement and sets the attributes + pTextElement2 = new TextElement(); + r = pTextElement2->Construct(L"abcdefghijklmn\nABCDEFGHIJKLMN"); + if (IsFailed(r)) + { + goto CATCH; + } + pTextElement2->SetTextColor(Color::GetColor(COLOR_ID_VIOLET)); + + // Creates a bitmap and scales the size + pBitmap = App::GetInstance()->GetAppResource()->GetBitmapN(L"example.bmp"); + pBitmap->Scale(Dimension(40, 40)); + + // Adds the TextElement and the bitmap to the EnrichedText + pEnrichedText->Add(*pTextElement1); + pEnrichedText->Add(*pTextElement2); + pEnrichedText->Add(*pBitmap); + + // Draws + { + Canvas canvas; + r = canvas.Construct(); + if (IsFailed(r)) + { + goto CATCH; + } + canvas.SetBackgroundColor(Color::GetColor(COLOR_ID_BLACK)); + canvas.Clear(); + canvas.FillRectangle(Color::GetColor(COLOR_ID_WHITE), Rectangle(50, 50, 380, 380)); + + // Draws the covered area of the EnrichedText in the Canvas coordinate + int width, height; + pEnrichedText->GetSize(width, height); + canvas.FillRectangle(Color::GetColor(COLOR_ID_GREY), Rectangle(60, 60, width, height)); + + // Draws the EnrichedText at the specified Point + canvas.DrawText(Point(60, 60), *pEnrichedText); + canvas.Show(); + } + + // Cleans up + pEnrichedText->RemoveAll(true); + delete pEnrichedText; + + return true; + +CATCH: + if (pEnrichedText) + { + pEnrichedText->RemoveAll(true); + delete pEnrichedText; + } + + return false; +} + * @endcode + * + * + * + * + */ + +class _OSP_EXPORT_ EnrichedText + : public Tizen::Base::Object +{ +public: + /** + * This is the default constructor for this class. + * + * @since 2.0 + * + * @remarks After creating an instance of this class, one of the Construct() methods must be called explicitly + * to initialize this instance. + */ + EnrichedText(void); + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~EnrichedText(void); + + /** + * Initializes this instance of %EnrichedText with the specified parameter. + * + * @since 2.0 + * + * @return An error code + * @param[in] dim The dimension to set for %EnrichedText @n + * The width and height must be greater than @c 0. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @exception E_INVALID_ARG The specified input parameter is invalid. + */ + result Construct(const Tizen::Graphics::Dimension& dim); + + /** + * Inserts the TextElement instance in the %EnrichedText instance at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] elementIndex The index at which the text element is to add + * @param[in] element The TextElement to add + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + */ + result InsertAt(int elementIndex, TextElement& element); + + /** + * Removes the TextElement instance at the specified index of the %EnrichedText instance. + * + * @since 2.0 + * + * @return An error code + * @param[in] elementIndex The index of TextElement + * @param[in] deallocate Set to @c true to deallocate the TextElement instance, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * + */ + result RemoveAt(int elementIndex, bool deallocate); + + /** + * Removes the TextElement instance from the %EnrichedText instance. + * + * @since 2.0 + * + * @return An error code + * @param[in] element The TextElement to remove + * @param[in] deallocate Set to @c true to deallocate the TextElement instance, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * + */ + result Remove(TextElement& element, bool deallocate); + + /** + * Adds the specified TextElement instance to the %EnrichedText instance. + * + * @since 2.0 + * + * @return An error code + * @param[in] element The TextElement to append + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * + */ + result Add(TextElement& element); + + /** + * @if OSPDEPREC + * Removes all the %TextElement instances from the %EnrichedText instance. + * + * @brief [Deprecated] + * @deprecated This method is deprecated. Instead of this method, use the RemoveAll(). + * @since 2.0 + * @endif + * + * @return An error code + * @param[in] deallocate Set to @c true to deallocate the %TextElement instance, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @see RemoveAll() + * + */ + result RemoveAllTextElements(bool deallocate); + + /** + * Removes all the text and image elements from the %EnrichedText instance. + * + * @since 2.0 + * + * @return An error code + * @param[in] deallocate Set to @c true to deallocate the elements to be removed, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM An unknown operating system error has occurred. + * + */ + result RemoveAll(bool deallocate); + + /** + * Gets the %TextElement instance at the specified index from the %EnrichedText instance. + * + * @since 2.0 + * + * @return The %TextElement instance at the specified index, @n + * else @c null if the method fails + * @param[in] elementIndex The index of the %TextElement + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + TextElement* GetTextElementAt(int elementIndex) const; + + /** + * Gets the count of the %TextElement instances. + * + * @since 2.0 + * + * @return The count of the %TextElement instances + */ + int GetTextElementCount(void) const; + + /** + * Sets the text size. + * + * @since 2.0 + * + * @return An error code + * @param[in] size The new size of the %EnrichedText @n + * The width and height must be greater than @c 0. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The value of the parameter is outside the valid range defined by the method. + */ + result SetSize(const Tizen::Graphics::Dimension& size); + + /** + * Sets the text size. + * + * @since 2.0 + * + * @return An error code + * @param[in] width The new width of %EnrichedText @n + * It must be greater than @c 0. + * @param[in] height The new height of %EnrichedText @n + * It must be greater than @c 0. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + */ + result SetSize(int width, int height); + + /** + * Gets the size. + * + * @since 2.0 + * + * @return An instance of %Dimension containing the width and the height of the %EnrichedText instance + * + */ + Tizen::Graphics::Dimension GetSize(void) const; + + /** + * Gets the size of the %EnrichedText instance. + * + * @since 2.0 + * + * @param[out] width The width of the control + * @param[out] height The height of the control + */ + void GetSize(int& width, int& height) const; + + /** + * Gets the width of the %EnrichedText instance. + * + * @since 2.0 + * + * @return The width + */ + int GetWidth(void) const; + + /** + * Gets the height of the %EnrichedText instance. + * + * @since 2.0 + * + * @return The height + */ + int GetHeight(void) const; + + + /** + * Sets the vertical alignment. + * + * @since 2.0 + * + * @return An error code + * @param[in] alignment The vertical alignment of the text + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + */ + result SetVerticalAlignment(TextVerticalAlignment alignment); + + /** + * Sets the horizontal alignment. + * + * @since 2.0 + * + * @return An error code + * @param[in] alignment The horizontal alignment of the text + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + */ + result SetHorizontalAlignment(TextHorizontalAlignment alignment); + + /** + * Gets the vertical alignment. + * + * @since 2.0 + * + * @return alignment The vertical alignment of the text + */ + TextVerticalAlignment GetVerticalAlignment(void) const; + + /** + * Gets the horizontal alignment. + * + * @since 2.0 + * + * @return alignment The horizontal alignment of the text + */ + TextHorizontalAlignment GetHorizontalAlignment(void) const; + + /** + * Sets the text wrap style. + * + * @since 2.0 + * + * @return An error code + * @param[in] wrap The text wrapping style + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + */ + result SetTextWrapStyle(TextWrap wrap); + + /** + * Gets the text wrap style. + * + * @since 2.0 + * + * @return wrap The text wrapping style in the %EnrichedText bounds + */ + TextWrap GetTextWrapStyle(void) const; + + /** + * Sets the text abbreviation status. + * + * @since 2.0 + * + * @return An error code + * @param[in] enable Set to @c true to enable text abbreviation, @n + * else @c false + * @exception E_SUCCESS The method is successful. + */ + result SetTextAbbreviationEnabled(bool enable); + + /** + * Checks whether the text abbreviation is enabled. + * + * @since 2.0 + * + * @return @c true if the text abbreviation is enabled, @n + * else @c false + */ + bool IsTextAbbreviationEnabled(void) const; + + /** + * Sets the line spacing. + * + * @since 2.0 + * + * @return An error code + * @param[in] lineSpace The space between lines + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * + */ + result SetLineSpace(int lineSpace); + + /** + * Gets the line spacing. + * + * @since 2.0 + * + * @return space The space between lines + */ + int GetLineSpace(void) const; + + /** + * Refreshes the texts and bitmap according to the %EnrichedText instance's attributes. @n + * If some attributes are changed (such as changes using @ref SetSize), you can get the exact + * information of the text position or the number of lines after this method is called. + * + * @since 2.0 + */ + void Refresh(void); + + /** + * Gets the total line count of the text in the %EnrichedText instance. + * + * @since 2.0 + * + * @return The total line count + */ + int GetTotalLineCount(void) const; + + /** + * Gets the height of the text in the %EnrichedText instance. + * + * @since 2.0 + * + * @return The line height + */ + int GetTotalLineHeight(void) const; + + /** + * Gets the displayed line count of the text in the %EnrichedText instance. @n + * + * @since 2.0 + * + * @return The displayed line count + */ + int GetDisplayLineCount(void) const; + + /** + * Gets the length of the specified line. + * + * @since 2.0 + * + * @return The line length, @n + * else @c -1 if the method fails + * @param[in] lineIndex The index of the specified line + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + int GetLineLength(int lineIndex) const; + + /** + * Gets the first character index of the specified line. + * + * @since 2.0 + * + * @return The first text offset, @n + * else @c -1 if the method fails + * @param[in] lineIndex The line index of the %EnrichedText object + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + int GetFirstTextIndex(int lineIndex) const; + + /** + * Gets the line index of the specified character. + * + * @since 2.0 + * + * @return The line index, @n + * else @c -1 if the method fails + * @param[in] textIndex The text index + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + int GetLineIndex(int textIndex) const; + + /** + * Gets the line height of the specified line. + * + * @since 2.0 + * + * @return The line height, @n + * else @c -1 if the method fails + * @param[in] lineIndex The line index + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + int GetLineHeight(int lineIndex) const; + + /** + * Gets the text length of the %EnrichedText object. + * + * @since 2.0 + * + * @return The text length + */ + int GetTextLength(void) const; + + /** + * Gets the extent of the %EnrichedText instance on the assumption that all TextElements are + * expanded to one line. + * + * @since 2.0 + * + * @return An error code + * @param[in] startTextIndex The starting text index of the %EnrichedText + * @param[in] textLength The length of the specified text @n + * It must be greater than or equal to @c 0. + * @param[out] width The width of the specified text + * @param[out] height The height of the specified text + * @param[out] actualLength The actual text length measured + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + * @exception E_INVALID_ARG A specified input parameter is invalid. + */ + result GetTextExtent(int startTextIndex, int textLength, int& width, int& height, int& actualLength) const; + + /** + * Gets the extent of the %EnrichedText instance on the assumption that all %TextElements are + * expanded to one line. + * + * @since 2.0 + * @return An error code + * @param[in] startTextIndex The starting text index of the EnrichedText + * @param[in] textLength The length of the specified text @n + * It must be greater than or equal to @c 0. + * @param[out] size The extent of the specified text + * @param[out] actualLength The actual text length measured + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + * @exception E_INVALID_ARG A specified input parameter is invalid. + */ + result GetTextExtent(int startTextIndex, int textLength, Tizen::Graphics::Dimension& size, int& actualLength) const; + + /** + * Gets the extent of the %EnrichedText instance on the assumption that all %TextElements are + * not expanded to one line. This function is useful for finding the extent of EnrichedText spanning multiple lines. + * + * @since 2.0 + * @return An instance of %Dimension containing the extent of the %EnrichedText instance, @n + * else (-1, -1) if the method fails + */ + Tizen::Graphics::Dimension GetTextExtent(void) const; + + /** + * Adds the specified bitmap image to the %EnrichedText instance. + * + * @since 2.0 + * + * @return An error code + * @param[in] bitmap The bitmap to draw @n + * The bitmap must be constructed before being passed to this method. + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM An unknown operating system error has occurred. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @exception E_INVALID_ARG The specified input parameter is invalid. + */ + result Add(const Tizen::Graphics::Bitmap& bitmap); + + /** + * Inserts the specified bitmap image to the %EnrichedText instance at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] bitmap The @c bitmap to draw @n + * The bitmap must be constructed before being passed to this method. + * @param[in] elementIndex The index at which the @c bitmap image is to add + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM An unknown operating system error has occurred. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @exception E_INVALID_ARG A specified input parameter is invalid. + */ + result InsertAt(int elementIndex, const Tizen::Graphics::Bitmap& bitmap); + + /** + * Gets the information about the link at the specified position. + * + * @since 2.0 + * + * @return An error code + * @param[in] point A point that is within the %EnrichedText object + * @param[out] linkInfo The LinkInfo object that represents the link at the specified position + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_OBJ_NOT_FOUND The required instance is not found. + * @remarks The method throws @c E_OBJ_NOT_FOUND if there is no linked text at the specified position. + * @see Tizen::Base::Utility::LinkInfo + */ + result GetLinkInfoFromPosition(const Point& point, Tizen::Base::Utility::LinkInfo& linkInfo) const; + + + /** + * Gets the information about the link at the specified position. + * + * @since 2.0 + * + * @return An error code + * @param[in] x The x-coordinate of a point that is within the %EnrichedText object + * @param[in] y The y-coordinate of a point that is within the %EnrichedText object + * @param[out] linkInfo The LinkInfo object that represents the link at the specified position + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_OBJ_NOT_FOUND The required instance is not found. + * @remarks The method throws @c E_OBJ_NOT_FOUND if there is no linked text at the specified position. + * @see Tizen::Base::Utility::LinkInfo + */ + result GetLinkInfoFromPosition(int x, int y, Tizen::Base::Utility::LinkInfo& linkInfo) const; + + /** + * Gets the vertical alignment among text and bitmap element. + * + * @since 2.0 + * + * @return The vertical alignment among the text and the bitmap element + */ + TextVerticalAlignment GetElementVerticalAlignment(void) const; + + /** + * Sets the vertical alignment among text and bitmap element. + * + * @since 2.0 + * + * @return An error code + * @param[in] alignment The vertical alignment among the text and the bitmap element + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @remarks This method sets how one element is positioned relative to the other elements. @n + * The vertical alignment of text and bitmap elements are decided based on the maximum height among elements. + * @remarks The default alignment TEXT_ALIGNMENT_BOTTOM. + */ + result SetElementVerticalAlignment(TextVerticalAlignment alignment); + +private: + friend class _EnrichedTextImpl; + + // + // This value is for internal use only. Using this value can cause behavioral, security-related, + // and consistency-related issues in the application. + // + class _EnrichedTextImpl * __pImpl; + + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + EnrichedText(const EnrichedText& font); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + EnrichedText& operator =(const EnrichedText& rhs); +}; // EnrichedText + +}} // Tizen::Graphics + +#endif // _FGRP_ENRICHED_TEXT_H_ diff --git a/inc/FGrpFloatDimension.h b/inc/FGrpFloatDimension.h new file mode 100644 index 0000000..4d5b46a --- /dev/null +++ b/inc/FGrpFloatDimension.h @@ -0,0 +1,175 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FGrpFloatDimension.h + * @brief This is the header file for the %FloatDimension class. + * + * This header file contains the declarations of the %FloatDimension class. + */ + +#ifndef _FGRP_FLOAT_DIMENSION_H_ +#define _FGRP_FLOAT_DIMENSION_H_ + +#include + +namespace Tizen { namespace Graphics { +/** + * @class FloatDimension + * @brief This class represents the width and height of a two-dimensional region. + * + * @since 2.0 + * + * The %FloatDimension class provides methods to abstract and set the width and height of a two-dimensional region. @n + * + * For more information on the class features, see Shapes. + * + */ +class _OSP_EXPORT_ FloatDimension : + public Tizen::Base::Object +{ +public: + /** + * This is the default constructor for this class. @n + * This constructor initializes an instance of %FloatDimension with the width and the height set as @c 0.f. + * + * @since 2.0 + */ + FloatDimension(void); + + /** + * This is the copy constructor for the %FloatDimension class. + * + * @since 2.0 + * + * @param[in] rhs An instance of %FloatDimension + */ + FloatDimension(const FloatDimension& rhs); + + /** + * Initializes an instance of %FloatDimension with the specified values of width and height. + * + * @since 2.0 + * + * @param[in] width The width to set + * @param[in] height The height to set + */ + FloatDimension(float width, float height); + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~FloatDimension(void); + + /** + * This is the default assignment operator for this class. + * + * @since 2.0 + * + * @param[in] rhs An instance of %FloatDimension + */ + FloatDimension& operator=(const FloatDimension& rhs); + + /** + * Checks whether the two instances of %FloatDimension have equal width and height values. + * + * @since 2.0 + * + * @return @c true if the values of the width and height of the two instances of %FloatDimension are equal, @n + * else @c false + * @param[in] rhs An instance of %FloatDimension + */ + bool operator==(const FloatDimension& rhs) const; + + /** + * Checks whether the two instances of %FloatDimension have different width and height values. + * + * @since 2.0 + * + * @return @c true if the values of the width and height of the two instances of %FloatDimension are not equal, @n + * else @c false + * @param[in] rhs An instance of %FloatDimension + */ + bool operator!=(const FloatDimension& rhs) const; + + /** + * Checks whether the value of the current instance of %FloatDimension equals the value of the specified instance. + * + * @since 2.0 + * + * @return @c true if the value of the current instance equals the value of the specified instance, @n + * else @c false + * @param[in] rhs An instance of %FloatDimension + * @remarks The %FloatDimension class has a semantic value, which means that the + * Equals() method checks whether the two instances have the same width and height. + */ + virtual bool Equals(const Tizen::Base::Object& rhs) const; + + /** + * Gets the hash value of the current instance. + * + * @since 2.0 + * + * @return The hash value of the current instance + * @remarks Two equal instances must return the same hash value. For better performance, + * the used hash function must generate a random distribution for all inputs. + */ + virtual int GetHashCode(void) const; + + /** + * Sets the size of the current instance of %FloatDimension. + * + * @since 2.0 + * + * @param[in] width The new width + * @param[in] height The new height + */ + void SetSize(float width, float height); + +public: + /** + * The width of the current instance of %FloatDimension. + * + * @since 2.0 + */ + float width; + + /** + * The height of the current instance of %FloatDimension. + * + * @since 2.0 + */ + float height; + +private: + friend class _FloatDimensionImpl; + + // + // This variable is for internal use only. + // Using this variable can cause behavioral, security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + class _FloatDimensionImpl* __pImpl; + +}; // FloatDimension + +}} // Tizen::Graphics + +#endif // _FGRP_FLOAT_DIMENSION_H_ diff --git a/inc/FGrpFloatMatrix4.h b/inc/FGrpFloatMatrix4.h new file mode 100644 index 0000000..ceaec8c --- /dev/null +++ b/inc/FGrpFloatMatrix4.h @@ -0,0 +1,426 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FGrpFloatMatrix4.h + * @brief This is the header file for the %FloatMatrix4 class. + * + * This header file contains the declarations of the %FloatMatrix4 class. + * + */ + +#ifndef _FGRP_FLOAT_MATRIX4_H_ +#define _FGRP_FLOAT_MATRIX4_H_ + +#include + +namespace Tizen { namespace Graphics +{ +class FloatVector4; +}} + +namespace Tizen { namespace Graphics +{ +/** + * @class FloatMatrix4 + * @brief This class encapsulates a 4 X 4 matrix. + * + * @since 2.0 + * + * The %FloatMatrix4 class provides a float precision, two-dimensional matrix class. + * + */ +class _OSP_EXPORT_ FloatMatrix4 + : public Tizen::Base::Object +{ +public: + /** + * This is the default constructor for this class. @n + * This constructor initializes a 4 X 4 identity matrix. + * + * @since 2.0 + */ + FloatMatrix4(void); + + /** + * This is the copy constructor for the %FloatMatrix4 class. @n + * This constructor initializes the instance of %FloatMatrix4 with the attributes of the specified instance of %FloatMatrix4. + * + * @since 2.0 + * + * @param[in] rhs An instance of %FloatMatrix4 + */ + FloatMatrix4(const FloatMatrix4& rhs); + + /** + * This constructor initializes the instance of %FloatMatrix4 with the attributes of the specified instance of the array. + * + * @since 2.0 + * + * @param[in] matrix The matrix with 16 float values + */ + FloatMatrix4(const float matrix[4][4]); + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~FloatMatrix4(void); + + /** + * Checks whether the current instance and the specified instance of %FloatMatrix4 are equal. + * + * @since 2.0 + * + * @return @c true if all matrix members of the current instance are equal to the corresponding matrix members in the specified instance, @n + * else @c false + * @param[in] rhs An instance of %FloatMatrix4 + */ + bool operator ==(const FloatMatrix4& rhs) const; + + /** + * Checks whether the current instance and the specified instance of %FloatMatrix4 are not equal. + * + * @since 2.0 + * + * @return @c true if all matrix members of the current instance are not equal to the corresponding matrix members in the specified instance, @n + * else @c false + * @param[in] rhs An instance of %FloatMatrix4 + */ + bool operator !=(const FloatMatrix4& rhs) const; + + /** + * Assigns the values of the specified instance to the current instance of %FloatMatrix4. + * + * @since 2.0 + * + * @return The reference to this instance + * @param[in] rhs An instance of %FloatMatrix4 + */ + FloatMatrix4& operator =(const FloatMatrix4& rhs); + + /** + * Assigns the value to each matrix members of current instance of %FloatMatrix4. + * + * @since 2.0 + * + * @return The reference to this instance + * @param[in] value A @c float value to assign + */ + FloatMatrix4& operator =(float value); + + /** + * Multiplies the value of the specified instance with the current instance of %FloatMatrix4. + * + * @since 2.0 + * + * @return A new instance of %FloatMatrix4 containing the resulting value of the operation + * @param[in] rhs An instance of %FloatMatrix4 + */ + FloatMatrix4 operator *(const FloatMatrix4& rhs) const; + + /** + * Multiplies the current instance of %FloatMatrix4 with %FloatVector4. + * + * @since 2.0 + * + * @return A new instance of %FloatVector4 containing the resulting value of the operation + * @param[in] vector An instance of %FloatVector4 + */ + FloatVector4 operator *(const FloatVector4& vector) const; + + /** + * Multiplies the value to each matrix members of current instance of %FloatMatrix4. + * + * @since 2.0 + * + * @return A new instance of %FloatMatrix4 containing the resulting value of the operation + * @param[in] value A @c float value to multiply + */ + FloatMatrix4 operator *(float value) const; + + /** + * Adds the value of the specified instance and the current instance of %FloatMatrix4. + * + * @since 2.0 + * + * @return A new instance of %FloatMatrix4 containing the resulting value of the operation + * @param[in] rhs An instance of %FloatMatrix4 + */ + FloatMatrix4 operator +(const FloatMatrix4& rhs) const; + + /** + * Adds the value to each matrix members of current instance of %FloatMatrix4. + * + * @since 2.0 + * + * @return A new instance of %FloatMatrix4 containing the resulting value of the operation + * @param[in] value A @c float value to add + */ + FloatMatrix4 operator +(float value) const; + + /** + * Subtracts the value of the specified instance and the current instance of %FloatMatrix4. + * + * @since 2.0 + * + * @return A new instance of %FloatMatrix4 containing the resulting value of the operation + * @param[in] rhs An instance of %FloatMatrix4 + */ + FloatMatrix4 operator -(const FloatMatrix4& rhs) const; + + /** + * Subtracts the value from each matrix members of current instance of %FloatMatrix4. + * + * @since 2.0 + * + * @return A new instance of %FloatMatrix4 containing the resulting value of the operation + * @param[in] value A @c float value to subtract + */ + FloatMatrix4 operator -(float value) const; + + /** + * Multiplies the value of the specified instance and the current instance of %FloatMatrix4. + * + * @since 2.0 + * + * @return The reference to %FloatMatrix4 containing the resulting value of the operation + * @param[in] rhs An instance of %FloatMatrix4 + */ + FloatMatrix4& operator *=(const FloatMatrix4& rhs); + + /** + * Multiplies the value to each matrix members of current instance of %FloatMatrix4. + * + * @since 2.0 + * + * @return The reference to %FloatMatrix4 containing the resulting value of the operation + * @param[in] value A @c float value to multiply + */ + FloatMatrix4& operator *=(float value); + + /** + * Adds the value of the specified instance to the current instance of %FloatMatrix4. + * + * @since 2.0 + * + * @return The reference to %FloatMatrix4 containing the resulting value of the operation + * @param[in] rhs An instance of %FloatMatrix4 + */ + FloatMatrix4& operator +=(const FloatMatrix4& rhs); + + /** + * Adds the value to each matrix members of current instance of %FloatMatrix4. + * + * @since 2.0 + * + * @return The reference to %FloatMatrix4 containing the resulting value of the operation + * @param[in] value A @c float value to add + */ + FloatMatrix4& operator +=(float value); + + /** + * Subtracts the value of the specified instance from the current instance of %FloatMatrix4. + * + * @since 2.0 + * + * @return The reference to %FloatMatrix4 containing the resulting value of the operation + * @param[in] rhs An instance of %FloatMatrix4 + */ + FloatMatrix4& operator -=(const FloatMatrix4& rhs); + + /** + * Subtracts the value from each matrix members of current instance of %FloatMatrix4. + * + * @since 2.0 + * + * @return The reference to %FloatMatrix4 containing the resulting value of the operation + * @param[in] value A @c float value to subtract + */ + FloatMatrix4& operator -=(float value); + + /** + * Gets the instance of %FloatMatrix4 resulting from the sum of the value and the specified instance of %FloatMatrix4. + * + * @since 2.0 + * + * @return A new instance of %FloatMatrix4 containing the resulting value of the operation + * @param[in] value A @c float value to add + * @param[in] rhs An instance of %FloatMatrix4 + */ + _OSP_EXPORT_ friend FloatMatrix4 operator +(const float& value, const FloatMatrix4& rhs); + + /** + * Gets the instance of %FloatMatrix4 resulting from the product of the value and the specified instance of %FloatMatrix4. + * + * @since 2.0 + * + * @return A new instance of %FloatMatrix4 containing the resulting value of the operation + * @param[in] value A @c float value to multiply + * @param[in] rhs An instance of %FloatMatrix4 + */ + _OSP_EXPORT_ friend FloatMatrix4 operator *(const float& value, const FloatMatrix4& rhs); + + /** + * Gets the instance of %FloatMatrix4 resulting from the difference between the value and the specified instance of %FloatMatrix4. + * + * @since 2.0 + * + * @return A new instance of %FloatMatrix4 containing the resulting value of the operation + * @param[in] value A @c float value to subtract + * @param[in] rhs An instance of %FloatMatrix4 + */ + _OSP_EXPORT_ friend FloatMatrix4 operator -(const float& value, const FloatMatrix4& rhs); + + /** + * Checks whether the current instance of %FloatMatrix4 equals the specified instance of %FloatMatrix4. + * + * @since 2.0 + * + * @return @c true if the values of the current instance is equal to the value of the specified instance, @n + * else @c false + * @param[in] obj An instance of %FloatMatrix4 + * @remarks This method overrides Tizen::Base::Object::Equals(). This method uses the values of the Matrix components to compare the two instances. + */ + virtual bool Equals(const Tizen::Base::Object& obj) const; + + /** + * Gets the hash value of the current instance of %FloatMatrix4. + * + * @since 2.0 + * + * @return The hash value of the current instance + * @remarks Two equal instances must return the same hash value. For better performance, + * the used hash function must generate a random distribution for all inputs. + */ + virtual int GetHashCode(void) const; + + /** + * Gets the determinant of the current instance of %FloatMatrix4. + * + * @since 2.0 + * + * @return The determinant value of the current instance + */ + float GetDeterminant(void) const; + + /** + * Gets the inverse matrix of the current instance of %FloatMatrix4. + * + * @since 2.0 + * + * @return A new instance of %FloatMatrix4 containing the resulting value of the operation + * @remarks This function must be called after checking whether the matrix is invertible or not. + */ + FloatMatrix4 GetInverse(void) const; + + /** + * Gets the trace of the current instance of %FloatMatrix4. + * + * @since 2.0 + * + * @return The trace of the current instance + */ + float GetTrace(void) const; + + /** + * Gets the transpose matrix of the current instance of %FloatMatrix4. + * + * @since 2.0 + * + * @return A new instance of %FloatMatrix4 containing the resulting value of the operation + */ + FloatMatrix4 GetTranspose(void) const; + + /** + * Checks whether the current instance is an identity matrix. + * + * @since 2.0 + * + * @return @c true if the matrix is an identity matrix, @n + * else @c false + */ + bool IsIdentity(void) const; + + /** + * Checks whether the current matrix is invertible. + * + * @since 2.0 + * + * @return @c true if the matrix is invertible, @n + * else @c false + */ + bool IsInvertible(void) const; + + /** + * Negates the matrix members of current instance of %FloatMatrix4. + * + * @since 2.0 + */ + void Negate(void); + + /** + * Sets the identity matrix to the current instance of %FloatMatrix4. + * + * @since 2.0 + */ + void SetAsIdentity(void); + + /** + * Sets the inverse matrix to the current instance of %FloatMatrix4. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current instance is not invertible. + */ + result Invert(void); + + /** + * Sets the transposed matrix to the current instance of %FloatMatrix4. + * + * @since 2.0 + */ + void Transpose(void); + + /** + * Sets the matrix members of current instance of %FloatMatrix4 to zero. + * + * @since 2.0 + */ + void SetAsNull(void); + + /** + * The matrix of the current instance of %FloatMatrix4. + * + * @since 2.0 + * + * @remarks The column-major order matrix. + */ + float matrix[4][4]; + +private: + friend class _FloatMatrix4Impl; + class _FloatMatrix4Impl* __pImpl; + +}; // FloatMatrix4 + +}} // Tizen::Graphics + +#endif //_FGRP_FLOAT_MATRIX4_H_ diff --git a/inc/FGrpFloatPoint.h b/inc/FGrpFloatPoint.h new file mode 100644 index 0000000..d7de906 --- /dev/null +++ b/inc/FGrpFloatPoint.h @@ -0,0 +1,232 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FGrpFloatPoint.h + * @brief This is the header file for the %FloatPoint class. + * + * This header file contains the declarations of the %FloatPoint class. + */ + +#ifndef _FGRP_FLOAT_POINT_H_ +#define _FGRP_FLOAT_POINT_H_ + +#include + +namespace Tizen { namespace Graphics { +/** + * @class FloatPoint + * @brief This class encapsulates a point in a two-dimensional coordinate system. + * + * @since 2.0 + * + * The %FloatPoint class represents a location in a two-dimensional coordinate space specified with an single precision floating point. + * + * For more information on the class features, see Shapes. + */ +class _OSP_EXPORT_ FloatPoint : + public Tizen::Base::Object +{ +public: + /** + * This is the default constructor for this class. @n + * This constructor initializes an instance of %FloatPoint with the values (0.f, 0.f). + * + * @since 2.0 + */ + FloatPoint(void); + + /** + * This is the copy constructor for the %FloatPoint class. + * + * @since 2.0 + * + * @param[in] rhs An instance of %FloatPoint + */ + FloatPoint(const FloatPoint& rhs); + + /** + * Initializes an instance of %FloatPoint with the specified location. + * + * @since 2.0 + * + * @param[in] x The x-coordinate + * @param[in] y The y-coordinate + */ + FloatPoint(float x, float y); + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~FloatPoint(void); + + /** + * This is the default assignment operator for this class. + * + * @since 2.0 + * + * @param[in] rhs An instance of %FloatPoint + */ + FloatPoint& operator=(const FloatPoint& rhs); + + /** + * Checks whether the current instance and the specified instance of %FloatPoint are equal. + * + * @since 2.0 + * + * @return @c true if the two instances of %FloatPoint are at the same location, @n + * else @c false + * @param[in] rhs An instance of %FloatPoint + */ + bool operator==(const FloatPoint& rhs) const; + + /** + * Checks whether the current instance and the specified instance of %FloatPoint are not equal. + * + * @since 2.0 + * + * @return @c true if the two instances of %FloatPoint are at different locations, @n + * else @c false + * @param[in] rhs An instance of %FloatPoint + */ + bool operator!=(const FloatPoint& rhs) const; + + /** + * Adds the value of the specified instance of %FloatPoint and the current instance. + * + * @since 2.0 + * + * @return A new instance of %FloatPoint containing the resulting value of the operation + * @param[in] rhs An instance of %FloatPoint + */ + FloatPoint operator+(const FloatPoint& rhs) const; + + /** + * Subtracts the value of the specified instance of %FloatPoint and the current instance. + * + * @since 2.0 + * + * @return A new instance of %FloatPoint containing the resulting value of the operation + * @param[in] rhs An instance of %FloatPoint + */ + FloatPoint operator-(const FloatPoint& rhs) const; + + /** + * Adds the value of the specified instance of %FloatPoint to the current instance. + * + * @since 2.0 + * + * @param[in] point An instance of %FloatPoint + */ + FloatPoint& operator+=(const FloatPoint& point); + + /** + * Subtracts the value of the specified instance of %FloatPoint from the current instance. + * + * @since 2.0 + * + * @param[in] point An instance of %FloatPoint + */ + FloatPoint& operator-=(const FloatPoint& point); + + /** + * Checks whether the value of the specified instance of %FloatPoint equals the value of the current instance. + * + * @since 2.0 + * + * @return @c true if the value of the specified instance equals the value of the current instance, @n + * else @c false + * @param[in] rhs An instance of %FloatPoint + * @remarks The %FloatPoint class has a semantic value, which means that the + * Equals() method checks whether the two instances have the same + * location. + */ + virtual bool Equals(const Tizen::Base::Object& rhs) const; + + /** + * Gets the hash value of the current instance. + * + * @since 2.0 + * + * @return The hash value of the current instance + * @remarks Two equal instances must return the same hash value. For better performance, + * the used hash function must generate a random distribution for all inputs. + */ + virtual int GetHashCode(void) const; + + /** + * Sets the x and y coordinates for the current instance of %FloatPoint. + * + * @since 2.0 + * + * @param[in] x The new x-coordinate + * @param[in] y The new y-coordinate + */ + void SetPosition(float x, float y); + + /** + * Sets the current instance of %FloatPoint. + * + * @since 2.0 + * + * @param[in] point An instance of %FloatPoint + */ + void SetPosition(const FloatPoint& point); + + /** + * Translates this %FloatPoint to the indicated distance. + * + * @since 2.0 + * + * @param[in] deltaX The distance to move this point along the x-axis + * @param[in] deltaY The distance to move this point along the y-axis + */ + void Translate(float deltaX, float deltaY); + +public: + /** + * The x-coordinate of the point. + * + * @since 2.0 + */ + float x; + + /** + * The y-coordinate of the point. + * + * @since 2.0 + */ + float y; + +private: + friend class _FloatPointImpl; + + // + // This variable is for internal use only. + // Using this variable can cause behavioral, security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + class _FloatPointImpl* __pImpl; + +}; // FloatPoint + +}} // Tizen::Graphics + +#endif // _FGRP_FLOAT_POINT_H_ diff --git a/inc/FGrpFloatPoint3.h b/inc/FGrpFloatPoint3.h new file mode 100644 index 0000000..fe91906 --- /dev/null +++ b/inc/FGrpFloatPoint3.h @@ -0,0 +1,275 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FGrpFloatPoint3.h + * @brief This is the header file for the %FloatPoint3 class. + * + * This header file contains the declarations of the %FloatPoint3 class. + * + */ + +#ifndef _FGRP_FLOAT_POINT3_H_ +#define _FGRP_FLOAT_POINT3_H_ + +#include + +namespace Tizen { namespace Graphics +{ +class FloatVector4; +}} + +namespace Tizen { namespace Graphics +{ +/** + * @class FloatPoint3 + * @brief This class encapsulates a 3-dimensional point. + * + * @since 2.0 + * + * The %FloatPoint3 class provides a float precision, three-dimensional point class. + * + */ +class _OSP_EXPORT_ FloatPoint3 + : public Tizen::Base::Object +{ +public: + /** + * This is the default constructor for this class. @n + * This constructor initializes the instance to a 3-dimensional zero point. + * + * @since 2.0 + */ + FloatPoint3(void); + + /** + * This is the copy constructor for the %FloatPoint3 class. @n + * This constructor initializes the instance of %FloatPoint3 with the attributes of the specified instance of %FloatPoint3. + * + * @since 2.0 + * + * @param[in] rhs An instance of %FloatPoint3 + */ + FloatPoint3(const FloatPoint3& rhs); + + /** + * This constructor initializes the instance of %FloatPoint3 with the attributes of the specified instance of %FloatVector4. + * + * @since 2.0 + * + * @param[in] vector An instance of %FloatVector4 + * @remarks The normalized vector can only be converted to point. Therefore, when the input vector is not normalized then the point is converted from the normal vector of the input instance. + */ + explicit FloatPoint3(const FloatVector4& vector); + + /** + * This constructor initializes the instance of %FloatPoint3 with the attributes of the specified instance of the array. + * + * @since 2.0 + * + * @param[in] point The point with 3 float values + */ + explicit FloatPoint3(const float point[3]); + + /** + * This constructor initializes the instance of %FloatPoint3 with floating point numbers for each coordinate. + * + * @since 2.0 + * + * @param[in] x x component of point instance + * @param[in] y y component of point instance + * @param[in] z z component of point instance + */ + FloatPoint3(float x, float y, float z); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~FloatPoint3(void); + + /** + * Checks whether the current instance and the specified instance of %FloatPoint3 are equal. + * + * @since 2.0 + * + * @return @c true if all members of the current point instance are equal to the corresponding point members in the specified instance, @n + * else @c false + * @param[in] rhs An instance of %FloatPoint3 + */ + bool operator ==(const FloatPoint3& rhs) const; + + /** + * Checks whether the current instance and the specified instance of %FloatPoint3 are not equal. + * + * @since 2.0 + * + * @return @c true if all point members of the current instance are not equal to the corresponding point members in the specified instance, @n + * else @c false + * @param[in] rhs An instance of %FloatPoint3 + */ + inline bool operator !=(const FloatPoint3& rhs) const + { + return !(*this == rhs); + } + + /** + * Assigns the values of the specified instance to the current instance of %FloatPoint3. + * + * @since 2.0 + * + * @return The reference to this instance + * @param[in] rhs An instance of %FloatPoint3 + */ + FloatPoint3& operator =(const FloatPoint3& rhs); + + /** + * Multiplies the value to each point members of current instance of %FloatPoint3. + * + * @since 2.0 + * + * @return A new instance of %FloatPoint3 containing the resulting value of the operation + * @param[in] value A @c float value to multiply + */ + FloatPoint3 operator *(float value) const; + + /** + * Divides each point members of current instance of %FloatPoint3 with the specified value. + * + * @since 2.0 + * + * @return A new instance of %FloatPoint3 containing the resulting value of the operation + * @param[in] value A @c float value to divide + */ + FloatPoint3 operator /(float value) const; + + /** + * Adds the value of the specified instance and the current instance of %FloatPoint3. + * + * @since 2.0 + * + * @return A new instance of %FloatPoint3 containing the resulting value of the operation + * @param[in] rhs An instance of %FloatPoint3 + */ + FloatPoint3 operator +(const FloatPoint3& rhs) const; + + /** + * Subtracts the value of the specified instance from the current instance of %FloatPoint3. + * + * @since 2.0 + * + * @return A new instance of %FloatPoint3 containing the resulting value of the operation + * @param[in] rhs An instance of %FloatPoint3 + */ + FloatPoint3 operator -(const FloatPoint3& rhs) const; + + /** + * Adds the value of the specified instance to the current instance of %FloatPoint3. + * + * @since 2.0 + * + * @return The reference to %FloatPoint3 containing the resulting value of the operation + * @param[in] rhs An instance of %FloatPoint3 + */ + FloatPoint3& operator +=(const FloatPoint3& rhs); + + /** + * Subtracts the value of the specified instance from the current instance of %FloatPoint3. + * + * @since 2.0 + * + * @return The reference to %FloatPoint3 containing the resulting value of the operation + * @param[in] rhs An instance of %FloatPoint3 + */ + FloatPoint3& operator -=(const FloatPoint3& rhs); + + /** + * Checks whether the current instance of %FloatPoint3 equals the specified instance of %FloatPoint3. + * + * @since 2.0 + * + * @return @c true if the values of the current instance is equal to the value of the specified instance, @n + * else @c false + * @param[in] obj An instance of %FloatPoint3 + * @remarks This method overrides Tizen::Base::Object::Equals(). This method uses the values of the Point components to compare the two instances. + */ + virtual bool Equals(const Tizen::Base::Object& obj) const; + + /** + * Gets the hash value of the current instance of %FloatPoint3. + * + * @since 2.0 + * + * @return The hash value of the current instance + * @remarks Two equal instances must return the same hash value. For better performance, + * the used hash function must generate a random distribution for all inputs. + */ + virtual int GetHashCode(void) const; + + /** + * x component of the current instance of %FloatPoint3. + * + * @since 2.0 + */ + float x; + + /** + * y component of the current instance of %FloatPoint3. + * + * @since 2.0 + */ + float y; + + /** + * z component of the current instance of %FloatPoint3. + * + * @since 2.0 + */ + float z; + +private: + friend class _FloatPoint3Impl; + class _FloatPoint3Impl* __pImpl; + +}; // FloatPoint3 + +/** + * Gets the instance of %FloatPoint3 resulting from the product of the value and the specified instance of %FloatPoint3. + * + * @since 2.0 + * + * @return A new instance of %FloatPoint3 containing the resulting value of the operation + * @param[in] value A @c float value to multiply + * @param[in] rhs An instance of %FloatPoint3 + */ +_OSP_EXPORT_ FloatPoint3 operator *(const float& value, const FloatPoint3& rhs); + +/** + * Gets the instance of %FloatPoint3 resulting from the divide of the value and the specified instance of %FloatPoint3. + * + * @since 2.0 + * + * @return A new instance of %FloatPoint3 containing the resulting value of the operation + * @param[in] value A @c float value to divide + * @param[in] rhs An instance of %FloatPoint3 + */ +_OSP_EXPORT_ FloatPoint3 operator /(const float& value, const FloatPoint3& rhs); + +}} // Tizen::Graphics + +#endif //_FGRP_FLOAT_POINT3_H_ diff --git a/inc/FGrpFloatRectangle.h b/inc/FGrpFloatRectangle.h new file mode 100644 index 0000000..63b6cfb --- /dev/null +++ b/inc/FGrpFloatRectangle.h @@ -0,0 +1,347 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FGrpFloatRectangle.h + * @brief This is the header file for the %FloatRectangle class. + * + * This header file contains the declarations of the %FloatRectangle class. + */ + +#ifndef _FGRP_FLOAT_RECTANGLE_H_ +#define _FGRP_FLOAT_RECTANGLE_H_ + +#include + +namespace Tizen { namespace Graphics +{ +class FloatPoint; +class FloatDimension; + +/** + * @class FloatRectangle + * @brief This class abstracts a rectangular region. + * + * @since 2.0 + * + * The %FloatRectangle class represents a rectangular region in a coordinate space, which is specified by the rectangle + * object's top-left point (x, y) in the coordinate space, along with its width and height. + * + * For more information on the class features, see Shapes. + */ +class _OSP_EXPORT_ FloatRectangle + : public Tizen::Base::Object +{ +public: + /** + * This is the default constructor for this class. @n + * It initializes an instance of %FloatRectangle with all its attributes set to @c 0.f. + * + * @since 2.0 + * + * @remarks The attribute value is @c 0 when initialized. + */ + FloatRectangle(void); + + /** + * This is the copy constructor for the %FloatRectangle class. + * + * @since 2.0 + * + * @param[in] rhs An instance of %FloatRectangle + */ + FloatRectangle(const FloatRectangle& rhs); + + /** + * Initializes an instance of %FloatRectangle with the specified location and dimension. + * + * @since 2.0 + * + * @param[in] x The x-coordinate of the top-left corner of the rectangle + * @param[in] y The y-coordinate of the top-left corner of the rectangle + * @param[in] width The width of the rectangle + * @param[in] height The height of the rectangle + * + */ + FloatRectangle(float x, float y, float width, float height); + + /** + * Initializes an instance of %FloatRectangle at the location specified by @c point and + * with dimension specified by @c dim. + * + * @since 2.0 + * + * @param[in] point The location of the top-left corner of the rectangle + * @param[in] dim The width and height of the rectangle + */ + FloatRectangle(const FloatPoint& point, const FloatDimension& dim); + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~FloatRectangle(void); + + /** + * This is the default assignment operator for this class. + * + * @since 2.0 + * + * @param[in] rhs An instance of %FloatRectangle + */ + FloatRectangle& operator=(const FloatRectangle& rhs); + + /** + * Checks whether the location and dimension of the current instance of %FloatRectangle match those of the + * specified instance of %FloatRectangle. + * + * @since 2.0 + * + * @return @c true if the location and dimension of the current instance match those of the specified instance, @n + * else @c false + * @param[in] rhs An instance of %FloatRectangle + */ + bool operator==(const FloatRectangle& rhs) const; + + /** + * Checks whether the location and dimension of the current instance of %FloatRectangle do not match those of the + * specified instance of %FloatRectangle. + * + * @since 2.0 + * + * @return @c true if the location and dimension of the current instance do not match those of the specified instance, @n + * else @c false + * @param[in] rhs An instance of %FloatRectangle + */ + bool operator!=(const FloatRectangle& rhs) const; + + /** + * Checks whether the specified point lies inside the current instance of %FloatRectangle. + * + * @since 2.0 + * + * @return @c true if the location represented by @c point lies inside the current instance of %FloatRectangle, @n + * else @c false + * @param[in] point An instance of FloatPoint + */ + bool Contains(const FloatPoint& point) const; + + /** + * Checks whether the value of the current instance of %FloatRectangle equals the value of the specified instance of + * %FloatRectangle. + * + * @since 2.0 + * + * @return @c true if the value of the current instance of %FloatRectangle equals the value of the specified instance of %FloatRectangle, @n + * else @c false + * @param[in] rhs An instance of %FloatRectangle + * @remarks The %FloatRectangle class has a semantic value, which means that the Equals() method checks whether the + * two instances have the same location and size. + */ + virtual bool Equals(const Tizen::Base::Object& rhs) const; + + /** + * Gets the hash value of the current instance. + * + * @since 2.0 + * + * @return The hash value of the current instance + * @remarks Two equal instances must return the same hash value. For better performance, + * the used hash function must generate a random distribution for all inputs. + */ + virtual int GetHashCode(void) const; + + /** + * Gets the intersection of the current instance and the specified instance of %FloatRectangle. @n + * If the two instances of %FloatRectangle do not intersect, empty instance is returned. + * + * @since 2.0 + * + * @param[in] rect An instance of %FloatRectangle + */ + FloatRectangle GetIntersection(const FloatRectangle& rect) const; + + /** + * Checks whether the current instance of %FloatRectangle intersects with the specified instance of %FloatRectangle. + * + * @since 2.0 + * + * @return @c true if the current instance of %FloatRectangle intersects with the specified instance of %FloatRectangle, @n + * else @c false + * @param[in] rect An instance of %FloatRectangle + * + */ + bool IsIntersected(const FloatRectangle& rect) const; + + /** + * Gets the union of the current instance and the specified instance of %FloatRectangle. + * + * @since 2.0 + * + * @return An instance of %FloatRectangle containing the union of the two rectangles + * @param[in] rect An instance of %FloatRectangle + */ + FloatRectangle GetUnion(const FloatRectangle& rect) const; + + /** + * Gets the coordinates of the point at the bottom-right corner of the rectangle. + * + * @since 2.0 + * + * @return The coordinates of the point at the bottom-right corner of the rectangle + */ + FloatPoint GetBottomRight(void) const; + + /** + * Gets the coordinates of the point at the top-left corner of the rectangle. + * + * @since 2.0 + * + * @return The coordinates of the point at the top-left corner of the rectangle + */ + FloatPoint GetTopLeft(void) const; + + /** + * Checks whether this %FloatRectangle is empty. @n + * A %FloatRectangle is empty if its width or its height is less than or equal to @c 0. + * + * @since 2.0 + * + * @return @c true if this rectangle is empty, @n + * else @c false + */ + bool IsEmpty(void) const; + + /** + * Sets the size of this %FloatRectangle to match the specified FloatDimension. + * + * @since 2.0 + * + * @param[in] dim The new size for FloatDimension + */ + void SetSize(const FloatDimension& dim); + + /** + * Sets the size of this %FloatRectangle to match the specified dimension. + * + * @since 2.0 + * + * @param[in] width The new width + * @param[in] height The new height + */ + void SetSize(float width, float height); + + /** + * Sets the position of this %FloatRectangle to the specified point. + * + * @since 2.0 + * + * @param[in] point The new position + */ + void SetPosition(const FloatPoint& point); + + /** + * Sets the location of the current instance of %FloatRectangle with the specified values of the + * x and y coordinates of the top-left corner point. + * + * @since 2.0 + * + * @param[in] x The new x-coordinate + * @param[in] y The new y-coordinate + */ + void SetPosition(float x, float y); + + /** + * Sets the location and the dimensions of the current instance of %FloatRectangle with the specified x and y + * coordinates of the top-left corner point and the specified dimensions. + * + * @since 2.0 + * + * @param[in] x The new x-coordinate + * @param[in] y The new y-coordinate + * @param[in] width The new width + * @param[in] height The new height + */ + void SetBounds(float x, float y, float width, float height); + + /** + * Sets the location and the dimensions of the current instance of %FloatRectangle with the specified location and + * dimension. + * + * @since 2.0 + * + * @param[in] point An instance of FloatPoint + * @param[in] dim An instance of FloatDimension + */ + void SetBounds(const FloatPoint& point, const FloatDimension& dim); + + /** + * Translates this %FloatRectangle to the new point by the specified distance along the x-axis and y-axis. + * + * @since 2.0 + * + * @param[in] deltaX The distance to move this %FloatRectangle along the x-axis + * @param[in] deltaY The distance to move this %FloatRectangle along the y-axis + */ + void Translate(float deltaX, float deltaY); + +public: + /** + * The x-coordinate of the top-left corner of the rectangle. + * + * @since 2.0 + */ + float x; + + /** + * The y-coordinate of the top-left corner of the rectangle. + * + * @since 2.0 + */ + float y; + + /** + * The width of this rectangle. + * + * @since 2.0 + */ + float width; + + /** + * The height of this rectangle. + * + * @since 2.0 + */ + float height; + +private: + friend class _FloatRectangleImpl; + + // + // This variable is for internal use only. + // Using this variable can cause behavioral, security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + class _FloatRectangleImpl* __pImpl; + +}; // FloatRectangle + +}} // Tizen::Graphics + +#endif // _FGRP_FLOAT_RECTANGLE_H_ diff --git a/inc/FGrpFloatVector4.h b/inc/FGrpFloatVector4.h new file mode 100644 index 0000000..d9633bc --- /dev/null +++ b/inc/FGrpFloatVector4.h @@ -0,0 +1,329 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FGrpFloatVector4.h + * @brief This is the header file for the %FloatVector4 class. + * + * This header file contains the declarations of the %FloatVector4 class. + * + */ + +#ifndef _FGRP_FLOAT_VECTOR4_H_ +#define _FGRP_FLOAT_VECTOR4_H_ + +#include + +namespace Tizen { namespace Graphics +{ +class FloatPoint3; +class FloatMatrix4; +}} + +namespace Tizen { namespace Graphics +{ +/** + * @class FloatVector4 + * @brief This class encapsulates a 4-dimensional vector. + * + * @since 2.0 + * + * The %FloatVector4 class provides a float precision, four-dimensional vector class. + * + */ +class _OSP_EXPORT_ FloatVector4 + : public Tizen::Base::Object +{ +public: + /** + * This is the default constructor for this class. @n + * This constructor initializes the instance to a 4-dimensional zero vector. + * + * @since 2.0 + */ + FloatVector4(void); + + /** + * This is the copy constructor for the %FloatVector4 class. @n + * This constructor initializes the instance of %FloatVector4 with the attributes of the specified instance of %FloatVector4. + * + * @since 2.0 + * + * @param[in] rhs An instance of %FloatVector4 + */ + FloatVector4(const FloatVector4& rhs); + + /** + * This constructor initializes the instance of %FloatVector4 with the attributes of the specified instance of %FloatPoint3. + * + * @since 2.0 + * + * @param[in] point An instance of %FloatPoint3 + * @remarks The point is converted to normal vector. + */ + explicit FloatVector4(const FloatPoint3& point); + + /** + * This constructor initializes the instance of %FloatVector4 with the attributes of the specified instance of the array. + * + * @since 2.0 + * + * @param[in] vector The vector with 4 float values + */ + explicit FloatVector4(const float vector[4]); + + /** + * This constructor initializes the instance of %FloatVector4 with floating point numbers for for each coordinate. + * + * @since 2.0 + * + * @param[in] x x component of vector instance + * @param[in] y y component of vector instance + * @param[in] z z component of vector instance + * @param[in] w w component of vector instance + */ + FloatVector4(float x, float y, float z, float w); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~FloatVector4(void); + + /** + * Checks whether the current instance and the specified instance of %FloatVector4 are equal. + * + * @since 2.0 + * + * @return @c true if all members of the current vector instance are equal to the corresponding vector members in the specified instance, @n + * else @c false + * @param[in] rhs An instance of %FloatVector4 + */ + bool operator ==(const FloatVector4& rhs) const; + + /** + * Checks whether the current instance and the specified instance of %FloatVector4 are not equal. + * + * @since 2.0 + * + * @return @c true if all vector members of the current instance are not equal to the corresponding vector members in the specified instance, @n + * else @c false + * @param[in] rhs An instance of %FloatVector4 + */ + inline bool operator !=(const FloatVector4& rhs) const + { + return !(*this == rhs); + } + + /** + * Assigns the values of the specified instance to the current instance of %FloatVector4. + * + * @since 2.0 + * + * @return The reference to this instance + * @param[in] rhs An instance of %FloatVector4 + */ + FloatVector4& operator =(const FloatVector4& rhs); + + /** + * Multiplies the value to each vector members of current instance of %FloatVector4. + * + * @since 2.0 + * + * @return A new instance of %FloatVector4 containing the resulting value of the operation + * @param[in] value A @c float value to multiply + */ + FloatVector4 operator *(float value) const; + + /** + * Divides each vector members of current instance of %FloatVector4 with the specified value. + * + * @since 2.0 + * + * @return A new instance of %FloatVector4 containing the resulting value of the operation + * @param[in] value A @c float value to divide + */ + FloatVector4 operator /(float value) const; + + /** + * Adds the value of the specified instance and the current instance of %FloatVector4. + * + * @since 2.0 + * + * @return A new instance of %FloatVector4 containing the resulting value of the operation + * @param[in] rhs An instance of %FloatVector4 + */ + FloatVector4 operator +(const FloatVector4& rhs) const; + + /** + * Subtracts the value of the specified instance from the current instance of %FloatVector4. + * + * @since 2.0 + * + * @return A new instance of %FloatVector4 containing the resulting value of the operation + * @param[in] rhs An instance of %FloatVector4 + */ + FloatVector4 operator -(const FloatVector4& rhs) const; + + /** + * Adds the value of the specified instance to the current instance of %FloatVector4. + * + * @since 2.0 + * + * @return The reference to %FloatVector4 containing the resulting value of the operation + * @param[in] rhs An instance of %FloatVector4 + */ + FloatVector4& operator +=(const FloatVector4& rhs); + + /** + * Subtracts the value of the specified instance from the current instance of %FloatVector4. + * + * @since 2.0 + * + * @return The reference to %FloatVector4 containing the resulting value of the operation + * @param[in] rhs An instance of %FloatVector4 + */ + FloatVector4& operator -=(const FloatVector4& rhs); + + /** + * Calculates the dot product with the specified instance and the current instance of %FloatVector4. + * + * @since 2.0 + * + * @return The value of the operation. + * @param[in] rhs An instance of %FloatVector4 + */ + float DotProduct(const FloatVector4& rhs) const; + + /** + * Calculates the dot product with the specified instance and the current instance of %FloatVector4. + * + * @since 2.0 + * + * @return The value of the operation. + * @param[in] rhs An instance of %FloatVector4 + */ + float operator *(const FloatVector4& rhs) const; + + /** + * Checks whether the current instance of %FloatVector4 equals the specified instance of %FloatVector4. + * + * @since 2.0 + * + * @return @c true if the values of the current instance is equal to the value of the specified instance, @n + * else @c false + * @param[in] obj An instance of %FloatVector4 + * @remarks This method overrides Tizen::Base::Object::Equals(). This method uses the values of the Vector components to compare the two instances. + */ + virtual bool Equals(const Tizen::Base::Object& obj) const; + + /** + * Gets the hash value of the current instance of %FloatVector4. + * + * @since 2.0 + * + * @return The hash value of the current instance + * @remarks Two equal instances must return the same hash value. For better performance, + * the used hash function must generate a random distribution for all inputs. + */ + virtual int GetHashCode(void) const; + + /** + * Gets the length of the current instance of %FloatVector4. + * + * @since 2.0 + * + * @return The length of the current instance + */ + float GetLength(void) const; + + /** + * Gets the normal vector of the current instance of %FloatVector4. + * + * @since 2.0 + * + * @return A new instance of %FloatVector4 containing the resulting value of the operation + */ + FloatVector4 GetNormal(void) const; + + /** + * Normalize the current instance of %FloatVector4. + * + * @since 2.0 + */ + void Normalize(void); + + /** + * x component of the current instance of %FloatVector4. + * + * @since 2.0 + */ + float x; + + /** + * y component of the current instance of %FloatVector4. + * + * @since 2.0 + */ + float y; + + /** + * z component of the current instance of %FloatVector4. + * + * @since 2.0 + */ + float z; + + /** + * w component of the current instance of %FloatVector4. + * + * @since 2.0 + */ + float w; + +private: + friend class _FloatVector4Impl; + class _FloatVector4Impl* __pImpl; + +}; // FloatVector4 + +/** + * Gets the instance of %FloatVector4 resulting from the product of the value and the specified instance of %FloatVector4. + * + * @since 2.0 + * + * @return A new instance of %FloatVector4 containing the resulting value of the operation + * @param[in] value A @c float value to multiply + * @param[in] rhs An instance of %FloatVector4 + */ +_OSP_EXPORT_ FloatVector4 operator *(const float& value, const FloatVector4& rhs); + +/** + * Gets the instance of %FloatVector4 resulting from the divide of the value and the specified instance of %FloatVector4. + * + * @since 2.0 + * + * @return A new instance of %FloatVector4 containing the resulting value of the operation + * @param[in] value A @c float value to divide + * @param[in] rhs An instance of %FloatVector4 + */ +_OSP_EXPORT_ FloatVector4 operator /(const float& value, const FloatVector4& rhs); + +}} // Tizen::Graphics + +#endif //_FGRP_FLOAT_VECTOR4_H_ diff --git a/inc/FGrpFont.h b/inc/FGrpFont.h new file mode 100644 index 0000000..1320d26 --- /dev/null +++ b/inc/FGrpFont.h @@ -0,0 +1,401 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FGrpFont.h + * @brief This is the header file for the %Font class. + * + * This header file contains the declarations of the %Font class. + */ + +#ifndef _FGRP_FONT_H_ +#define _FGRP_FONT_H_ + +#include +#include +#include +#include + +namespace Tizen { namespace Graphics +{ +/** + * @class Font + * @brief This class provides methods to retrieve the font information. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %Font class encapsulates the characteristics, such as the size and style of a specific vector font. + * Fonts are used to draw text on a Canvas. + * + * For more information on the class features, see Fonts. + * + * + */ +class _OSP_EXPORT_ Font + : public Tizen::Base::Object +{ +public: + /** + * This is the default constructor for this class. + * + * @since 2.0 + * + * @remarks After creating an instance of this class, one of the + * Construct() methods must be called explicitly to initialize this instance. + */ + Font(void); + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~Font(void); + + /** + * Initializes this instance of %Font with the specified size and style. @n + * If the size and style are not specified, the default system font is set. + * + * @since 2.0 + * + * @return An error code + * @param[in] style The font style @n + * For more information, see Tizen::Graphics::FontStyle. + * @param[in] size The font size in pixels @n + * The size must be greater than @c 0. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + */ + result Construct(int style, int size); + + /** + * Initializes this instance of %Font with the specified parameters. + * + * @if OSPCOMPAT + * @brief [Compatibility] + * @endif + * @since 2.0 + * @if OSPCOMPAT + * @compatibility This method has compatibility issues with OSP compatible applications. @n + * For more information, see @ref CompIoPathPage "IoPath" and @ref CompFontConstructPage "FontConstructor" issues. + * @endif + * @return An error code + * @param[in] fontNameOrPath The local file path of a font-resource file or app font name or system font name @n + * The app font name is retrieved using GetFaceName(Osp::Base::String& filepath). + * The system font name is retrieved using GetSystemFontListN(). + * @param[in] style The font style @n + * Multiple styles can be combined using the bitwise OR operator. + * @param[in] size The font size in pixels @n + * The size must be greater than @c 0. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_FILE_NOT_FOUND The specified font cannot be found or accessed. + * @exception E_UNSUPPORTED_FORMAT The specified font format is not supported. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @remarks Only TrueType font is supported. + * The value of fontNameOrPath is considered system font name if it matches one of the retrieved values using GetSystemFontListN(). + * If not, it is considered local file path of a font-resource file. + */ + result Construct(const Tizen::Base::String& fontNameOrPath, int style, int size); + + /** + * @if OSPCOMPAT + * @page CompFontConstructPage Compatibility for Construct(). + * @section CompFontConstructPageIssueSection Issues + * Implementing this method in OSP compatible applications has the following issues: @n + * -# In OSP, the value of 1 st parameter(fontNameOrPath) can be system font name or local font path. At first, it is compared to the retrieved values using GetSystemFontListN(). If the matched value is exist, it is considered system font name. Or, it is considered local file path of a font-resource file. + * -# In Tizen, the value of 1 st parameter(fontNameOrPath) can be app font name or system font name or local font path. At first, it is compared to the font face names in app font resource folder. If the matched value is exist, it is considered app font name. Or, it is considered system font name if it matches one of the retrieved values using GetSystemFontListN(). + * @endif + */ + + /** + * Initializes this instance of %Font with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] fontData The font data + * @param[in] style The font style @n + * Multiple styles can be combined using the bitwise OR operator. + * @param[in] size The font size in pixels @n + * The size must be greater than @c 0. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_UNSUPPORTED_FORMAT The specified font format is not supported. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + */ + result Construct(const Tizen::Base::ByteBuffer& fontData, int style, int size); + + /** + * Gets the maximum height of the current instance of %Font. + * + * @since 2.0 + * + * @return The maximum height of the current instance of %Font, @n + * else @c -1 if the method fails + */ + int GetMaxHeight(void) const; + + /** + * Gets the maximum width of the current instance of %Font. + * + * @since 2.0 + * + * @return The maximum width of the current instance of %Font, @n + * else @c -1 if the method fails + */ + int GetMaxWidth(void) const; + + /** + * Gets the ascender of the current instance of %Font. + * + * @since 2.0 + * + * @return The ascender of the current instance of %Font, @n + * else @c -1 if the method fails + */ + int GetAscender(void) const; + + /** + * Gets the descender of the current instance of %Font. + * + * @since 2.0 + * + * @return The descender of the current instance of %Font, @n + * else @c -1 if the method fails + */ + int GetDescender(void) const; + + /** + * Gets the left bear of a character. + * + * @since 2.0 + * + * @return An error code + * @param[in] character A character for getting left bear + * @param[out] leftBear The left bear of the specified @c character + * @exception E_SUCCESS The method is successful. + * @exception E_DATA_NOT_FOUND The requested data does not exist. + */ + result GetLeftBear(wchar_t character, int& leftBear) const; + + /** + * Gets the right bear of a character. + * + * @since 2.0 + * + * @return An error code + * @param[in] character A character for getting the right bear + * @param[out] rightBear The right bear of the specified @c character + * @exception E_SUCCESS The method is successful. + * @exception E_DATA_NOT_FOUND The requested data does not exist. + */ + result GetRightBear(wchar_t character, int& rightBear) const; + + /** + * Gets the width and height of the font used in the specified text. @n + * This method retrieves the font dimension of the text. + * + * @if OSPCOMPAT + * @brief [Compatibility] + * @endif + * @since 2.0 + * @if OSPCOMPAT + * @compatibility This method has compatibility issues with OSP compatible applications. @n + * For more information, see the issue description for @ref CompFontGetTextExtentPage "here". + * @endif + * + * @return An error code + * @param[in] text The string + * @param[in] length The length of @c text @n + * The length must be greater than or equal to @c 0. + * @param[out] dim The width and height of the font of the @c text + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The value of @c length is greater than the actual length of @c text. + */ + result GetTextExtent(const Tizen::Base::String& text, int length, Dimension& dim) const; + + /** + * @if OSPCOMPAT + * @page CompFontGetTextExtentPage Compatibility for the file path. + * @section CompFontGetTextExtentPageIssueSection Issues + * Implementing this method in OSP compatible applications has the following issues: @n + * -# The method returns exact height only if the font resource is designed to fit inside the emBox. @n + * + * @section CompFontGetTextExtentPageSolutionSection Resolutions + * This issue has been resolved in Tizen. @n + * -# The method returns exact height regardless of font design. @n + * + * @endif + */ + + /** + * Checks whether the font style of the current instance is bold. + * + * @since 2.0 + * + * @return @c true if the font style of the current instance is bold, @n + * else @c false + */ + bool IsBold(void) const; + + /** + * Checks whether the font style for the current instance is italics. + * + * @since 2.0 + * + * @return @c true if the font style for the current instance is italics, @n + * else @c false + */ + bool IsItalic(void) const; + + /** + * Checks whether the current instance has any style defined. + * + * @since 2.0 + * + * @return @c true if an extra style is not defined for the current instance, @n + * else @c false + */ + bool IsPlain(void) const; + + /** + * Checks whether the current instance has the strikeout style set. + * + * @since 2.0 + * + * @return @c true if the current instance has the strikeout style set, @n + * else @c false + */ + bool IsStrikeOut(void) const; + + /** + * Checks whether the current instance has the underline style set. + * + * @since 2.0 + * + * @return @c true if the current instance has the underline style set, @n + * else @c false + */ + bool IsUnderlined(void) const; + + /** + * Gets the font size of the current instance of %Font. + * + * @since 2.0 + * + * @return The font size, @n + * else @c -1 if the method fails + */ + int GetSize(void) const; + + /** + * Sets the strikeout style for the current instance of %Font. + * + * @since 2.0 + * + * @param[in] strikeOut Set to @c true to use the strikeout style for the current instance of %Font, @n + * else @c false + */ + void SetStrikeOut(bool strikeOut); + + /** + * Sets the underline style for the current instance of %Font. + * + * @since 2.0 + * + * @param[in] underline Set to @c true to use the underline style for the current instance of %Font, @n + * else @c false + */ + void SetUnderline(bool underline); + + /** + * Gets the system font list. + * + * @since 2.0 + * + * @return The list of system fonts @n + * The font list consists of Tizen::Base::String items. + * @remarks After using the system font list, you can call IList::RemoveAll(true) to clean up string items in the list. + */ + static Tizen::Base::Collection::IList* GetSystemFontListN(void); + + /** + * Gets the face name of the font file of the specific path. + * + * @since 2.0 + * + * @return The face name of the font file of the specific path + * @param[in] filePath The path of the font file + */ + static Tizen::Base::String GetFaceName(const Tizen::Base::String& filePath); + + /** + * Sets the character space. + * + * @since 2.0 + * + * @param[in] space A character space + */ + void SetCharSpace(int space); + + /** + * Gets the character space. + * + * @since 2.0 + * + * @return The character space of this font instance, @n + * else @c -1 if the method fails + */ + int GetCharSpace(void) const; + + /** + * Gets the face name. + * + * @since 2.0 + * + * @return The face name of this font instance + */ + Tizen::Base::String GetFaceName(void) const; + +private: + friend class _FontImpl; + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + /** + * @since 2.0 + */ + class _FontImpl* __pImpl; + + /* + * This is the copy constructor for the Font class. + * + * @remarks Do not use this constructor. + */ + Font(const Font& rhs); + Font& operator =(const Font& rhs); + +}; // Font + +}} // Tizen::Graphics + +#endif //_FGRP_FONT_H_ diff --git a/inc/FGrpFontCommon.h b/inc/FGrpFontCommon.h new file mode 100644 index 0000000..946d7dc --- /dev/null +++ b/inc/FGrpFontCommon.h @@ -0,0 +1,51 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FGrpFontCommon.h + * @brief This is the header file for the enumerations of the %Font class. + * + * This header file contains the definitions of the enumerations of the Font class. + */ + +#ifndef _FGRP_FONT_COMMON_H_ +#define _FGRP_FONT_COMMON_H_ + +namespace Tizen { namespace Graphics +{ +/** +* @enum FontStyle +* +* Defines the style of the Font class instance. +* +* @since 2.0 +* +* @remarks Several different font styles can be combined using the "OR" operator. @n +* (For example, int style = FONT_STYLE_BOLD | FONT_STYLE_ITALIC). +*/ +enum FontStyle +{ + FONT_STYLE_PLAIN = 0x0001, /**< The plain font style */ + FONT_STYLE_BOLD = 0x0002, /**< The bold font style */ + FONT_STYLE_ITALIC = 0x0004, /** + +#include + +namespace Tizen { namespace Ui +{ +class Control; +} } + +namespace Tizen { namespace Graphics { namespace Opengl +{ + +class IGlRenderer; + +/** + * @enum EglContextClientVersion + * + * Defines the Egl Context Client version of the player. + * + * @since 2.0 + * + */ +enum EglContextClientVersion +{ + EGL_CONTEXT_CLIENT_VERSION_1_X, /**< The version is 1.x */ + EGL_CONTEXT_CLIENT_VERSION_2_X /**< The version is 2.x */ +}; + +/** + * @enum EglAttributesPreset + * + * Defines the preset of EGL attributes and configurations. + * + * @since 2.0 + * + */ +enum EglAttributesPreset +{ + EGL_ATTRIBUTES_PRESET_DONT_CARE, /**< Preset Don't care */ + EGL_ATTRIBUTES_PRESET_RGB565, /**< Preset RGB565 */ + EGL_ATTRIBUTES_PRESET_ARGB8888 /**< Preset ARGB8888 */ +}; + +/** + * @class GlPlayer + * @brief This class provides a simple template for rendering 3D objects with OpenGL-ES APIs + * @since 2.0 + * @final This class is not intended for extension. + * + */ +class _OSP_EXPORT_ GlPlayer + : public Tizen::Base::Object +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + * + */ + GlPlayer(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(void). + * + * @since 2.0 + * + */ + virtual ~GlPlayer(void); + + /** + * Initializes this instance of %GlPlayer. + * + * @since 2.0 + * @return An error code + * @param[in] version EGL Context Client Version. + * @param[in] control Target control + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_INVALID_OPERATION The operation has failed, because of the duplicate call of Construct(). + * + * @remarks Currently, version must be 1(OpenGL-ES 1.x) or 2(OpenGL-ES 2.x) + * @remarks Currently, only Tizen::Ui::Controls::Frame and Tizen::Ui::Controls::Form are allowed as the target control, therefore, when the input Target control is not Form or Frame then E_INVALID_ARG exception is occurred. + * + */ + result Construct(EglContextClientVersion version, Tizen::Ui::Control* pControl); + + /** + * Start the %GlPlayer, and initialzie EGL status. + * + * @since 2.0 + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM Player cannot be started properly due to a severe system error. + * @exception E_INVALID_STATE The state of player is not suitable for start. For example, it is not allowable to start player when its state is pause. + * @exception E_OPENGL_ERROR There occurs an EGL error during performing EGL function. + * + * @remarks In the case that this returns E_OPENGL_ERROR exception, developers can use eglGetError() to query which EGL error is raised. + * + */ + result Start(void); + + /** + * Pause the %GlPlayer. + * + * @since 2.0 + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM Player cannot be paused properly due to a severe system error. + * @exception E_INVALID_OPERATION Fail to perform IGlRenderer::Pause function which is implemented by developers. + * @exception E_INVALID_STATE The state of player is not suitable for pause. For example, it is not allowable to pause player when it does not start after the initialization yet. + * + */ + result Pause(void); + + /** + * Resume the %GlPlayer. + * + * @since 2.0 + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM Player cannot be resumed properly due to a severe system error. + * @exception E_INVALID_OPERATION Fail to perform IGlRenderer::Resume function which is implemented by developers. + * @exception E_INVALID_STATE The state of player is not suitable for resume. For example, it is not allowable to resume player when its state is stop. + * + */ + result Resume(void); + + /** + * Stop the %GlPlayer, and reset the EGL status. + * + * @since 2.0 + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM Player cannot be stopped properly due to a severe system error. + * @exception E_INVALID_OPERATION Fail to perform IGlRenderer::Pause function which is implemented by developers. + * + * @remarks Before starting to reset the EGL status, this function calls IGlRenderer::Pause() to prevent unexpected behavior. + * + */ + result Stop(void); + + /** + * Redraw the scene. + * + * @since 2.0 + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_OPENGL_ERROR There occurs an EGL error during performing EGL function. + * @exception E_INVALID_STATE The state of player is invalid and fails to pause properly. + * + * @remarks In the case that this returns E_OPENGL_ERROR exception, developers can use eglGetError() to query which EGL error is raised. + * + */ + result Redraw(void); + + /** + * Set the FPS(frames per second) of the player. + * + * @since 2.0 + * @param[in] fps frames per second + * + * @remarks When you give negative integer for fps, then the %GlPlayer try to draw frames as fast as possible. + * + */ + void SetFps(int fps); + + /** + * Set the configuration list of EGL Attributes to initialize the EGL system. + * + * @since 2.0 + * @return An error code + * @param[in] eglConfigList a list of EGL attributes and their values. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * + * @remarks %GlPlayer initializes the EGL status with the given EGL attributes, which means that system does not guarantees to set EGL configurations with the given attributes but prefers them. + * @remarks The format of eglConfigList is the same with the attribute list as the second input parameter of eglChooseConfig function. To know about the detailed description, refer the reference page of eglChooseConfig: http://www.khronos.org/opengles/documentation/opengles1_0/html/eglChooseConfig.html + * + */ + result SetEglAttributeList(const EGLint* pEglConfigList); + + /** + * Set EGL configuration with the given preset. + * + * @since 2.0 + * @return An error code + * @param[in] preset Preset for attributes. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * + * @remarks %GlPlayer initializes the EGL status with the given EGL attributes, which means that system does not guarantees to set EGL configurations with the given attributes but prefers them. + * + */ + result SetEglAttributePreset(EglAttributesPreset preset); + + /** + * Set EGL configuration for the given Attribute with the given value. + * + * @since 2.0 + * @return An error code + * @param[in] key EGL attribute + * @param[in] value Value for the attribute + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * + * @remarks %GlPlayer initializes the EGL status with the given EGL attributes, which means that system does not guarantees to set EGL configurations with the given attributes but prefers them. + * + */ + result SetEglAttribute(EGLint key, EGLint value); + + /** + * Set the Renderer which implements %IGlRenderer interface. + * + * @since 2.0 + * @return An error code + * @param[in] renderer %IGlRenderer defines how to render the scene. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION Fail to perform IGlRenderer::InitializeGl function which is implemented by developers. + * @see %IGlRenderer + * + * @remarks If %GlPlayer already has a renderer, then the previous renderer is replaced by the new one. + * @remarks If input parameter is null, then the current renderer of %GlPlayer is detached and %GlPlayer does nothing. + * @remarks When the %IGlRenderer is replaced with the input, the GL status have to be initialized for the input %IGlRenderer. For such purpose, when the input %IGlRenderer is attached, the overrided IGlRenderer::InitializedGl() function is called. On the other hands, the previous %IGlRenderer of %GlPlayer is detached after calling the overrided %IGlRenderer::TerminateGL() function. + * + */ + result SetIGlRenderer(IGlRenderer* pRenderer); + +private: + /* + * The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + * + * @since 2.0 + */ + GlPlayer(const GlPlayer& rhs); + + /* + * The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + * + * @since 2.0 + */ + GlPlayer& operator =(const GlPlayer& rhs); + + friend class _GlPlayerImpl; + class _GlPlayerImpl* __pImpl; + +}; // GlPlayer + +}}} // Tizen::Graphics::Opengl + +#endif //_FGRP_GL_PLAYER_H_ diff --git a/inc/FGrpIGlRenderer.h b/inc/FGrpIGlRenderer.h new file mode 100644 index 0000000..8748f7e --- /dev/null +++ b/inc/FGrpIGlRenderer.h @@ -0,0 +1,158 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FGrpIGlRenderer.h + * @brief This is the header file for the %IGlRenderer class. + * + * This header file contains the declarations of the %IGlRenderer class. + * + */ + +#ifndef _FGRP_GL_RENDERER_H_ +#define _FGRP_GL_RENDERER_H_ + +#include + +namespace Tizen { namespace Graphics { namespace Opengl +{ + +/** + * @class IGlRenderer + * @brief This virtual class defines the interface for GlPlayer to draw 3D scene. + * @since 2.0 + * + */ +class _OSP_EXPORT_ IGlRenderer +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this. + * + * @since 2.0 + * + */ + virtual ~IGlRenderer(void) {} + + /** + * Initializes GL status and allocates necessary resources for the current Renderer such as shader, texture and so on. + * + * @since 2.0 + * @return Return true when this function successfully initialize the GL status and allocate resources, such as shader and textures. Otherwise, when this function meets some errors or exceptions, then return false. + * + */ + virtual bool InitializeGl(void) = 0; + + /** + * Terminate the Renderer to unload shader and release allocated resources. + * + * @since 2.0 + * @return Return true when this function successfully terminate the GL status and release all the resources, such as shader and textures. Otherwise, when this function meets some errors or exceptions, then return false. + * + */ + virtual bool TerminateGl(void) = 0; + + /** + * This function is called when GlPlayer draws a scene. + * Users overload this function and calls necessary operations for drawing a scene in this system. + * + * @since 2.0 + * @return Return true when this function successfully draws a scene with gl functions. Otherwise, when this function meets some errors or exceptions, then return false. + * + */ + virtual bool Draw(void) = 0; + + /** + * This function is called when GlPlayer is paused. + * Users overload this function and calls necessary operations for the pause of the system, including release resources. + * + * @since 2.0 + * @return Return true when this function successfully does intended operations for Pause state. Otherwise, when this function meets some errors or exceptions, then return false. + * + */ + virtual bool Pause(void) = 0; + + /** + * This function is called when GlPlayer is resumed. + * Users overload this function and calls necessary operations for the resume of the system, including allocation resources. + * + * @since 2.0 + * @return Return true when this function successfully does intended operations for Resume state. Otherwise, when this function meets some errors or exceptions, then return false. + * + */ + virtual bool Resume(void) = 0; + + /** + * Get the target control width. + * + * @since 2.0 + * + * @return Return the width of Target control. + * @remarks The control width is determined when you register %IGlRenderer to %GlPlayer with GlPlayer::SetIGlRenderer() function. Therefore, developers have to declare a integer variable for control width to implement this function. + * + */ + virtual int GetTargetControlWidth(void) = 0; + + /** + * Get the target control height. + * + * @since 2.0 + * + * @return Return the height of Target control. + * @remarks The control height is determined when you register %IGlRenderer to %GlPlayer with GlPlayer::SetIGlRenderer() function. Therefore, developers have to declare a integer variable for control height to implement this function. + * + */ + virtual int GetTargetControlHeight(void) = 0; + + /** + * Set the target control width. + * + * @since 2.0 + * + * @param[in] width Width of Target control. + * @remarks The control width is determined when you register %IGlRenderer to %GlPlayer with GlPlayer::SetIGlRenderer() function. Therefore, this function is used in GlPlayer::SetIGlRenderer function, and developers have to declare a integer variable for control width to implement this function. + * + */ + virtual void SetTargetControlWidth(int width) = 0; + + /** + * Get the target control height. + * + * @since 2.0 + * + * @param[in] height Height of Target control. + * @remarks The control height is determined when you register %IGlRenderer to %GlPlayer with GlPlayer::SetIGlRenderer() function. Therefore, this function is used in GlPlayer::SetIGlRenderer function, and developers have to declare a integer variable for control height to implement this function. + * + */ + virtual void SetTargetControlHeight(int height) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void IGlRenderer_Reserved1(void) {} + virtual void IGlRenderer_Reserved2(void) {} + virtual void IGlRenderer_Reserved3(void) {} + +}; // IGlRenderer + +}}} // Tizen::Graphics::Opengl + +#endif //_FGRP_GL_RENDERER_H_ diff --git a/inc/FGrpIVideoTextureUpdateListener.h b/inc/FGrpIVideoTextureUpdateListener.h new file mode 100644 index 0000000..fe55f0c --- /dev/null +++ b/inc/FGrpIVideoTextureUpdateListener.h @@ -0,0 +1,95 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FGrpIVideoTextureUpdateListener.h + * @brief This is the header file for the %IVideoTextureUpdateListener class. + * + * This header file contains the declarations of the %IVideoTextureUpdateListener class. + * + */ + +#ifndef _FGRP_IVIDEO_TEXTURE_UPDATE_LISTENER_H_ +#define _FGRP_IVIDEO_TEXTURE_UPDATE_LISTENER_H_ + +namespace Tizen { namespace Graphics { namespace Opengl +{ + +class VideoTexture; + +/** + * @class IVideoTextureUpdateListener + * @brief This virtual class defines the interface for VideoTexture to register a listener. + * @since 2.0 + * + */ +class _OSP_EXPORT_ IVideoTextureUpdateListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. + * This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~IVideoTextureUpdateListener(void) {} + + /** + * Called when a video frame on the texture is ready. + * + * @since 2.0 + * + * @param[in] pVideoTexture The VideoTexture class. + */ + virtual void OnTextureUpdated(VideoTexture* pVideoTexture) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IVideoTextureUpdateListener_Reserved1(void) {} + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IVideoTextureUpdateListener_Reserved2(void) {} + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IVideoTextureUpdateListener_Reserved3(void) {} +}; // IVideoTextureUpdateListener + +}}} // Tizen::Graphics + +#endif //_FGRP_IVIDEO_TEXTURE_UPDATE_LISTENER_H_ \ No newline at end of file diff --git a/inc/FGrpPixelFormat.h b/inc/FGrpPixelFormat.h new file mode 100644 index 0000000..a6db766 --- /dev/null +++ b/inc/FGrpPixelFormat.h @@ -0,0 +1,53 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FGrpPixelFormat.h + * @brief This is the header file for the PixelFormat enumeration that defines the pixel information. + * + * This header file contains the definitions of the PixelFormat enumeration that defines the pixel information. + */ + +#ifndef _FGRP_PIXEL_FORMAT_H_ +#define _FGRP_PIXEL_FORMAT_H_ + +namespace Tizen { namespace Graphics +{ +/** + * @enum PixelFormat + * + * Defines the bits per pixel and the bits per component. + * + * @since 2.0 + */ +enum PixelFormat +{ + PIXEL_FORMAT_RGB565 = 1, /**< The RGB565 pixel format */ + PIXEL_FORMAT_ARGB8888, /** + +namespace Tizen { namespace Graphics +{ +/** + * @class Point + * @brief This class encapsulates a point in a two-dimensional coordinate system. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %Point class represents a location in a two-dimensional coordinate space specified with an integer precision. + * + * For more information on the class features, see Shapes. + */ +class _OSP_EXPORT_ Point + : public Tizen::Base::Object +{ +public: + /** + * This is the default constructor for this class. @n + * This initializes an instance of %Point with the values (0, 0). + * + * @since 2.0 + */ + Point(void); + + /** + * This is the copy constructor for the %Point class. + * + * @since 2.0 + * + * @param[in] rhs An instance of %Point + */ + Point(const Point& rhs); + + /** + * Initializes an instance of %Point with the specified location. + * + * @since 2.0 + * + * @param[in] x The x-coordinate + * @param[in] y The y-coordinate + */ + Point(int x, int y); + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~Point(void); + + /** + * Assigns the value of the specified instance to the current instance of %Point. + * + * @since 2.0 + * + * @param[in] rhs An instance of %Point + */ + Point& operator =(const Point& rhs); + + /** + * Checks whether the current instance and the specified instance of %Point are equal. + * + * @since 2.0 + * + * @return @c true if the two instances of %Point are at the same location, @n + * else @c false + * @param[in] rhs An instance of %Point + */ + bool operator ==(const Point& rhs) const; + + /** + * Checks whether the current instance and the specified instance of %Point are not equal. + * + * @since 2.0 + * + * @return @c true if the two instances of %Point are at different locations, @n + * else @c false + * @param[in] rhs An instance of %Point + */ + bool operator !=(const Point& rhs) const; + + /** + * Adds the value of the specified instance of %Point and the current instance. + * + * @since 2.0 + * + * @return A new instance of %Point containing the resulting value of the operation + * @param[in] rhs An instance of %Point + */ + Point operator +(const Point& rhs) const; + + /** + * Subtracts the value of the specified instance of %Point and the current instance. + * + * @since 2.0 + * + * @return A new instance of %Point containing the resulting value of the operation + * @param[in] rhs An instance of %Point + */ + Point operator -(const Point& rhs) const; + + /** + * Adds the value of the specified instance of %Point to the current instance. + * + * @since 2.0 + * + * @param[in] point An instance of %Point + */ + Point& operator +=(const Point& point); + + /** + * Subtracts the value of the specified instance of %Point from the current instance. + * + * @since 2.0 + * + * @param[in] point An instance of %Point + */ + Point& operator -=(const Point& point); + + /** + * Checks whether the value of the specified instance of %Point equals the value of the current instance. + * + * @since 2.0 + * + * @return @c true if the value of the specified instance equals the value of the current instance, @n + * else @c false + * @param[in] rhs An instance of %Point + * @remarks The %Point class has a semantic value, which means that the + * Equals() method checks whether the two instances have the same + * location. + */ + virtual bool Equals(const Tizen::Base::Object& rhs) const; + + /** + * Gets the hash value of the current instance. + * + * @since 2.0 + * + * @return The hash value of the current instance + * @remarks Two equal instances must return the same hash value. For better performance, + * the used hash function must generate a random distribution for all inputs. + */ + virtual int GetHashCode(void) const; + + /** + * Sets the x and y coordinates for the current instance of %Point. + * + * @since 2.0 + * + * @param[in] x The new x-coordinate + * @param[in] y The new y-coordinate + */ + void SetPosition(int x, int y); + + /** + * Sets the current instance of %Point. + * + * @since 2.0 + * + * @param[in] point An instance of %Point + */ + void SetPosition(const Point& point); + + /** + * Translates this %Point to the indicated distance. + * + * @since 2.0 + * + * @param[in] deltaX The distance to move this point along the x-axis + * @param[in] deltaY The distance to move this point along the y-axis + */ + void Translate(int deltaX, int deltaY); + +public: + /** + * The x-coordinate of the point. + * + * @since 2.0 + */ + int x; + + /** + * The y-coordinate of the point. + * + * @since 2.0 + */ + int y; + +private: + friend class _PointImpl; + + // + // This variable is for internal use only. + // Using this variable can cause behavioral, security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + class _PointImpl * __pImpl; + +}; // Point + +}} // Tizen::Graphics + +#endif // _FGRP_POINT_H_ diff --git a/inc/FGrpRectangle.h b/inc/FGrpRectangle.h new file mode 100644 index 0000000..c166650 --- /dev/null +++ b/inc/FGrpRectangle.h @@ -0,0 +1,347 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FGrpRectangle.h + * @brief This is the header file for the %Rectangle class. + * + * This header file contains the declarations of the %Rectangle class. + */ + +#ifndef _FGRP_RECTANGLE_H_ +#define _FGRP_RECTANGLE_H_ + +#include + +namespace Tizen { namespace Graphics +{ +class Point; +class Dimension; + +/** + * @class Rectangle + * @brief This class abstracts a rectangular region. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %Rectangle class represents a rectangular region in a coordinate space, which is specified by the rectangle + * object's top-left point (x, y) in the coordinate space, along with its width and height. + * + * For more information on the class features, see Shapes. + */ +class _OSP_EXPORT_ Rectangle + : public Tizen::Base::Object +{ +public: + /** + * This is the default constructor for this class. @n + * It initializes an instance of %Rectangle with all its attributes set to @c 0. + * + * @since 2.0 + * + * @remarks The attribute value is @c 0 when initialized. + */ + Rectangle(void); + + /** + * This is the copy constructor for the %Rectangle class. + * + * @since 2.0 + * + * @param[in] rhs An instance of %Rectangle + */ + Rectangle(const Rectangle& rhs); + + /** + * Initializes an instance of %Rectangle with the specified location and dimension. + * + * @since 2.0 + * + * @param[in] x The x-coordinate of the top-left corner of the rectangle + * @param[in] y The y-coordinate of the top-left corner of the rectangle + * @param[in] width The width of the rectangle + * @param[in] height The height of the rectangle + * + */ + Rectangle(int x, int y, int width, int height); + + /** + * Initializes an instance of %Rectangle at the location specified by @c point and + * with dimension specified by @c dim. + * + * @since 2.0 + * + * @param[in] point The location of the top-left corner of the rectangle + * @param[in] dim The width and height of the rectangle + */ + Rectangle(const Point& point, const Dimension& dim); + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~Rectangle(void); + + /** + * Assigns the value of the specified instance to the current instance of %Rectangle. + * + * @since 2.0 + * + * @param[in] rhs An instance of %Rectangle + */ + Rectangle& operator =(const Rectangle& rhs); + + /** + * Checks whether the location and dimension of the current instance of %Rectangle match those of the + * specified instance of %Rectangle. + * + * @since 2.0 + * + * @return @c true if the location and dimension of the current instance match those of the specified instance, @n + * else @c false + * @param[in] rhs An instance of %Rectangle + */ + bool operator ==(const Rectangle& rhs) const; + + /** + * Checks whether the location and dimension of the current instance of %Rectangle do not match those of the + * specified instance of %Rectangle. + * + * @since 2.0 + * + * @return @c true if the location and dimension of the current instance do not match those of the specified instance, @n + * else @c false + * @param[in] rhs An instance of %Rectangle + */ + bool operator !=(const Rectangle& rhs) const; + + /** + * Checks whether the specified point lies inside the current instance of %Rectangle. + * + * @since 2.0 + * + * @return @c true if the location represented by @c point lies inside the current instance of %Rectangle, @n + * else @c false + * @param[in] point An instance of %Point + */ + bool Contains(const Point& point) const; + + /** + * Checks whether the value of the current instance of %Rectangle equals the value of the specified instance of + * %Rectangle. + * + * @since 2.0 + * + * @return @c true if the value of the current instance of %Rectangle equals the value of the specified instance of %Rectangle, @n + * else @c false + * @param[in] rhs An instance of %Rectangle + * @remarks The %Rectangle class has a semantic value, which means that the Equals() method checks whether the + * two instances have the same location and size. + */ + virtual bool Equals(const Tizen::Base::Object& rhs) const; + + /** + * Gets the hash value of the current instance. + * + * @since 2.0 + * + * @return The hash value of the current instance + */ + virtual int GetHashCode(void) const; + + /** + * Gets the intersection of the current instance and the specified instance of %Rectangle. @n + * If the two instances of %Rectangle do not intersect, empty instance is returned. + * + * @since 2.0 + * + * @param[in] rect An instance of %Rectangle + */ + Rectangle GetIntersection(const Rectangle& rect) const; + + /** + * Checks whether the current instance of %Rectangle intersects with the specified instance of %Rectangle. + * + * @since 2.0 + * + * @return @c true if the current instance of %Rectangle intersects with the specified instance of %Rectangle, @n + * else @c false + * @param[in] rect An instance of %Rectangle + * + */ + bool IsIntersected(const Rectangle& rect) const; + + /** + * Gets the union of the current instance and the specified instance of %Rectangle. + * + * @since 2.0 + * + * @return An instance of %Rectangle containing the union of the two rectangles + * @param[in] rect An instance of %Rectangle + */ + Rectangle GetUnion(const Rectangle& rect) const; + + /** + * Gets the coordinates of the point at the bottom-right corner of the rectangle. + * + * @since 2.0 + * + * @return The coordinates of the point at the bottom-right corner of the rectangle + */ + Point GetBottomRight(void) const; + + /** + * Gets the coordinates of the point at the top-left corner of the rectangle. + * + * @since 2.0 + * + * @return The coordinates of the point at the top-left corner of the rectangle + */ + Point GetTopLeft(void) const; + + /** + * Checks whether this %Rectangle is empty. @n + * A %Rectangle is empty if its width or its height is less than or equal to @c 0. + * + * @since 2.0 + * + * @return @c true if this rectangle is empty, @n + * else @c false + */ + bool IsEmpty(void) const; + + /** + * Sets the size of this %Rectangle to match the specified Dimension. + * + * @since 2.0 + * + * @param[in] dim The new size for the Dimension + */ + void SetSize(const Dimension& dim); + + /** + * Sets the size of this %Rectangle to match the specified dimension. + * + * @since 2.0 + * + * @param[in] width The new width + * @param[in] height The new height + */ + void SetSize(int width, int height); + + /** + * Sets the position of this %Rectangle to the specified point. + * + * @since 2.0 + * + * @param[in] point The new position + */ + void SetPosition(const Point& point); + + /** + * Sets the location of the current instance of %Rectangle with the specified values of the + * x and y coordinates of the top-left corner point. + * + * @since 2.0 + * + * @param[in] x The new x-coordinate + * @param[in] y The new y-coordinate + */ + void SetPosition(int x, int y); + + /** + * Sets the location and the dimensions of the current instance of %Rectangle with the specified x and y + * coordinates of the top-left corner point and the specified dimensions. + * + * @since 2.0 + * + * @param[in] x The new x coordinate + * @param[in] y The new y coordinate + * @param[in] width The new width + * @param[in] height The new height + */ + void SetBounds(int x, int y, int width, int height); + + /** + * Sets the location and the dimensions of the current instance of %Rectangle with the specified location and + * dimension. + * + * @since 2.0 + * + * @param[in] point An instance of Point + * @param[in] dim An instance of Dimension + */ + void SetBounds(const Point& point, const Dimension& dim); + + /** + * Translates this %Rectangle to the new point by the specified distance along the x-axis and y-axis. + * + * @since 2.0 + * + * @param[in] deltaX The distance to move this %Rectangle along the x-axis + * @param[in] deltaY The distance to move this %Rectangle along the y-axis + */ + void Translate(int deltaX, int deltaY); + +public: + /** + * The x-coordinate of the top-left corner of the rectangle. + * + * @since 2.0 + */ + int x; + + /** + * The y-coordinate of the top-left corner of the rectangle. + * + * @since 2.0 + */ + int y; + + /** + * The width of this rectangle. + * + * @since 2.0 + */ + int width; + + /** + * The height of this rectangle. + * + * @since 2.0 + */ + int height; + +private: + friend class _RectangleImpl; + + // + // This variable is for internal use only. + // Using this variable can cause behavioral, security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + class _RectangleImpl * __pImpl; + +}; // Rectangle + +}} // Tizen::Graphics + +#endif // _FGRP_RECTANGLE_H_ diff --git a/inc/FGrpTextElement.h b/inc/FGrpTextElement.h new file mode 100644 index 0000000..f2dfa28 --- /dev/null +++ b/inc/FGrpTextElement.h @@ -0,0 +1,337 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FGrpTextElement.h + * @brief This is the header file for the %TextElement class. + * + * This header file contains the declarations of the %TextElement class. + */ + +#ifndef _FGRP_TEXT_ELEMENT_H_ +#define _FGRP_TEXT_ELEMENT_H_ + +#include +#include +#include +#include +#include + +namespace Tizen { namespace Graphics +{ +/** + * @class TextElement + * @brief This class provides methods for the text elements. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %TextElement class encapsulates the characteristics of a text, such as the constant string and font style. + * A text element draws the text on to a canvas. + * + * For more information on the attributes of %TextElement, see EnrichedText. + * + */ +class _OSP_EXPORT_ TextElement + : public Tizen::Base::Object +{ +public: + /** + * This is the default constructor for this class. + * + * @since 2.0 + * + * @remarks After creating an instance of this class, one of the + * Construct() methods must be called explicitly to initialize this instance. + */ + TextElement(void); + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~TextElement(void); + + /** + * Initializes the current instance of %TextElement with the specified text. @n + * If the text is not specified, the default system font is set. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text string + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @exception E_INVALID_ARG The specified input parameter is invalid. + */ + result Construct(const Tizen::Base::String& text); + + /** + * Initializes the current instance of %TextElement with the specified text. @n + * The canvas is used for initializing the font's color attributes, such as the foreground color and the background color. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text string + * @param[in] canvas The canvas to initialize the text element @n + * It sets the foreground and background colors of the text element. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @exception E_INVALID_ARG A specified input parameter is invalid. + */ + result Construct(const Tizen::Base::String& text, const Tizen::Graphics::Canvas& canvas); + + /** + * Initializes the current instance of %TextElement. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @exception E_SYSTEM An unknown operating system error has occurred. + * @remarks To set the text, use the SetText() method. + * @see SetText() + */ + result Construct(void); + + /** + * Initializes the current instance of %TextElement to represent a linked text with the specified link information. @n + * If the link information is not specified, the default system font is set. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The linked text string + * @param[in] linkType The link type + * @param[in] link The string that contains the actual link + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM An unknown operating system error has occurred. + * @remarks If the specified @c text is an empty string or + * @c linkType is LINK_TYPE_NONE, the method returns E_INVALID_ARG. + * @see Tizen::Base::Utility::LinkInfo + */ + result Construct(const Tizen::Base::String& text, Tizen::Base::Utility::LinkType linkType, const Tizen::Base::String& link); + + /** + * Initializes the current instance of %TextElement with the specified text and autolink mask. @n + * If the text and autolink mask are not specified, the default system font is set. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text string + * @param[in] autoLink The autolink mask @n + * Multiple link types can be combined using the bitwise OR operator (Tizen::Base::Utility::LinkType). @n + * For more information, see AutoLink Detection. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @exception E_SYSTEM An unknown operating system error has occurred. + * @remarks If @c text contains more than one detectable link, the first link is converted + * to a linked text and the rest of the links are ignored. + * @see Tizen::Base::Utility::LinkType + */ + result Construct(const Tizen::Base::String& text, unsigned long autoLink); + + /** + * Initializes the current instance of %TextElement to represent a linked text with the specified link information. @n + * If the link information is not specified, the default system font is set. + * + * @since 2.0. + * + * @return An error code + * @param[in] text The linked text string + * @param[in] linkType The link type + * @param[in] link The string that contains the actual link + * @param[in] canvas The canvas to initialize the text element @n + * It sets the foreground and background colors of the text element. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM An unknown operating system error has occurred. + * @remarks If the specified @c text is an empty string or + * @c linkType is LINK_TYPE_NONE, the method returns E_INVALID_ARG. + * @see Tizen::Base::Utility::LinkType + */ + result Construct(const Tizen::Base::String& text, Tizen::Base::Utility::LinkType linkType, const Tizen::Base::String& link, const Tizen::Graphics::Canvas& canvas); + + /** + * Initializes the current instance of %TextElement with the specified text, autolink mask, and graphics canvas. @n + * If the parameters are not specified, the default system font is set. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text string + * @param[in] autoLink The autolink mask @n + * Multiple link types can be combined using the bitwise OR operator (Tizen::Base::Utility::LinkType). @n + * For more information, see AutoLink Detection. + * @param[in] canvas The canvas to initialize the text element @n + * It sets the foreground and background colors of the text element. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @exception E_SYSTEM An unknown operating system error has occurred. + * @remarks If @c text contains more than one detectable link, the first link is converted + * to a linked text and rest of the links are ignored. + * @see Tizen::Base::Utility::LinkType + */ + result Construct(const Tizen::Base::String& text, unsigned long autoLink, const Tizen::Graphics::Canvas& canvas); + + /** + * Gets the string that contains the actual link. + * + * @since 2.0 + * + * @return The string that contains the actual link + * @remarks If the text element contains no linked text, the method returns an empty string. + */ + Tizen::Base::String GetLink(void) const; + + /** + * Gets the type of the link of the text element. + * + * @since 2.0 + * + * @return The string that contains the actual link + * @remarks If the text element contains no linked text, the method returns LINK_TYPE_NONE. @n + * The link type of the first auto-detected link is returned. + */ + Tizen::Base::Utility::LinkType GetLinkType(void) const; + + /** + * Sets the text of %TextElement with the specified string. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The string to set + * @exception E_SUCCESS The method is successful. + */ + result SetText(const Tizen::Base::String& text); + + /** + * Sets the font of %TextElement. + * + * @since 2.0 + * + * @return An error code + * @param[in] font The font to set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + */ + result SetFont(const Tizen::Graphics::Font& font); + + /** + * Sets the text color of %TextElement. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The color to set + * @exception E_SUCCESS The method is successful. + */ + result SetTextColor(const Tizen::Graphics::Color& color); + + /** + * Sets the background color of %TextElement. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The color to set + * @exception E_SUCCESS The method is successful. + */ + result SetBackgroundColor(const Tizen::Graphics::Color& color); + + /** + * Sets the outline color of %TextElement. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The color to set + * @exception E_SUCCESS The method is successful. + */ + result SetOutlineColor(const Tizen::Graphics::Color& color); + + /** + * Gets the text of %TextElement. + * + * @since 2.0 + * + * @return A string containing the text + */ + Tizen::Base::String GetText(void) const; + + /** + * Gets the text color of %TextElement. + * + * @since 2.0 + * + * @return The foreground color + */ + Tizen::Graphics::Color GetTextColor(void) const; + + /** + * Gets the background color of %TextElement. + * + * @since 2.0 + * + * @return The background color + */ + Tizen::Graphics::Color GetBackgroundColor(void) const; + + /** + * Gets the outline color of %TextElement. + * + * @since 2.0 + * + * @return The outline color + */ + Tizen::Graphics::Color GetOutlineColor(void) const; + +private: + friend class _TextElementImpl; + + // + // This value is for internal use only. Using this value can cause behavioral, security-related, + // and consistency-related issues in the application. + // + class _TextElementImpl * __pImpl; + + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + TextElement(const TextElement& font); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + TextElement& operator =(const TextElement& rhs); + +}; // TextElement + +}} // Tizen::Graphics + +#endif // _FGRP_TEXT_ELEMENT_H_ diff --git a/inc/FGrpVideoTexture.h b/inc/FGrpVideoTexture.h new file mode 100644 index 0000000..5d7f867 --- /dev/null +++ b/inc/FGrpVideoTexture.h @@ -0,0 +1,139 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FGrpVideoTexture.h + * @brief This is the header file for the %VideoTexture class. + * + * This header file contains the declarations of the %VideoTexture class. + * + */ + +#ifndef _FGRP_VIDEO_TEXTURE_H_ +#define _FGRP_VIDEO_TEXTURE_H_ + +#include + +namespace Tizen { namespace Graphics { namespace Opengl +{ + +class IVideoTextureUpdateListener; + +/** + * @class VideoTexture + * @brief This class provides a method to bind a video frame to OpenGL-ES Texture. + * With this feature, you can easily draw a video frame on OpenGL-ES Textures with consistency. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %VideoTexture class provides a texture by which you can draw a video frame on OpenGL-ES texture. + * + */ +class _OSP_EXPORT_ VideoTexture + : public Tizen::Base::Object +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method be called right after calling this constructor. + * + * @since 2.0 + * + */ + VideoTexture(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~VideoTexture(void); + + /** + * Initializes this instance of %VideoTexture with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] textureId Texture ID which points to the texture associated with the video frame. The testure ID must be generated from glGenTextures(). + * @param[in] width The width of the input texture. The width must be greater than @c 32, and smaller or equal than GL_MAX_TEXTURE_SIZE. + * @param[in] height The height of the input texture. The height must be greater than @c 32, and smaller or equal than GL_MAX_TEXTURE_SIZE + * @exception E_SUCCESS Construction is successfully done. + * @exception E_OUT_OF_RANGE The width or height is bigger than GL_MAX_TEXTURE_SIZE You can get max size of current device to call glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxSize). + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_UNSUPPORTED_OPERATION The target device does not support full features for %VideoTexture. + * @exception E_INVALID_STATE Getting egl information failed. It is necessary to bind egl context by using eglMakeCurrent funtion. + * @remarks There is a high probability for an occurrence of an out-of-memory exception. If possible, check whether the exception is E_OUT_OF_MEMORY or not. For more information on how to handle the out-of-memory exception, refer here. + */ + result Construct(int textureId, int width, int height); + + /** + * Binds the most recent frame to the texture. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS Binding is successfully done. + * @exception E_INVALID_STATE Any video frames are not ready in the texture. If IVideoTextureUpdateListener is already registered, please check whether the functions have been called. + */ + result BindTexture(void); + + /** + * Adds a listener invoked when a video frame is ready. + * + * @since 2.0 + * + * @param[in] listener The listener invoked. + * @see RemoveVideoTextureUpdateListener() + */ + void AddVideoTextureUpdateListener(IVideoTextureUpdateListener& listener); + + /** + * Removes the specified listener. + * + * @since 2.0 + * + * @param[in] listener The listener to be removed. + @see AddVideoTextureUpdateListener() + */ + void RemoveVideoTextureUpdateListener(IVideoTextureUpdateListener& listener); + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + // @param[in] rhs The source from which this instance is copied + // + VideoTexture(const VideoTexture& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + // @param[in] rhs An instance of %VideoTexture + // + VideoTexture& operator =(const VideoTexture& rhs); + +private: + friend class _VideoTextureImpl; + + class _VideoTextureImpl* __pImpl; +}; // VideoTexture + +}}} // Tizen::Graphics + +#endif //_FGRP_VIDEO_TEXTURE_H_ diff --git a/inc/FUi.h b/inc/FUi.h new file mode 100644 index 0000000..5667f90 --- /dev/null +++ b/inc/FUi.h @@ -0,0 +1,143 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUi.h + * @brief This is the header file for the %Ui namespace. + * + * This header file contains the declarations and descriptions of the %Ui namespace. + */ + +#ifndef _FUI_H_ +#define _FUI_H_ + +// Includes +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen +{ +/** + * @namespace Tizen::Ui + * @brief This namespace contains the classes and interfaces that act as the %UI foundation for the applications. + * @since 2.0 + * + * @remarks @b Header @b %file: @b \#include @b @n + * @b Library : @b osp-uifw + * + * The %Ui namespace is used to construct graphical user interfaces (UI). It contains classes and interfaces for handling + * UI-related events. In addition, it has 4 sub-namespaces: Tizen::Ui::Controls, whose classes handle the display and interaction with UI elements, Tizen::Ui::Scenes, whose classes handle scene transition using the scene management functionalities, + * Tizen::Ui::Animations, whose classes handle animation-related functionalities, and Tizen::Ui::Effects, whose classes + * handle the effect-related functionalities. + * + * For more information on the %Ui namespace features, see UI Guide. + * + * The following diagram illustrates the relationships between the classes belonging to the %Ui namespace. + * + * @image html ui_namespace_classdiagram.png + * + */ +namespace Ui +{ + +}; // Tizen::Ui +}; // Tizen +#endif // _FUI_H_ diff --git a/inc/FUiAccessibilityContainer.h b/inc/FUiAccessibilityContainer.h new file mode 100644 index 0000000..6c013af --- /dev/null +++ b/inc/FUiAccessibilityContainer.h @@ -0,0 +1,229 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAccessibilityContainer.h + * @brief This is the header file for the AccessibilityContainer class. + * + * This header file contains the declarations of the AccessibilityContainer class. + */ + +#ifndef _FUI_ACCESSIBILITY_CONTAINER_H_ +#define _FUI_ACCESSIBILITY_CONTAINER_H_ + +#include +#include +#include + +namespace Tizen { namespace Base +{ +class String; +}} // Tizen::Base + +namespace Tizen { namespace Base { namespace Collection +{ +class IList; +}}} //Tizen::Base::Collection + + +namespace Tizen { namespace Ui +{ + +class Control; +class AccessibilityElement; +class IAccessibilityListener; +class _AccessibilityContainerImpl; + +/** +* @class AccessibilityContainer +* @brief This class represents a container for accessibility element. +* @since 2.0 +* +* +* @final This class is not intended for extension. +* This class represents a container for accessibility element. + * The following example demonstrates how to use the %AccessibilityContainer class. +.* + * @code +// Sample code for AccessibilitySample.h +#include +#include + +class AccessibilitySample + : public Tizen::Ui::Controls::Form +{ +public: + AccessibilitySample(void); + virtual ~AccessibilitySample(void); + + result Initialize(void); + + virtual result OnInitializing(void); + + +private: + static const int ID_FOOTER_ITEM1 = 101; + static const int ID_FOOTER_ITEM2 = 102; + + Tizen::Graphics::Bitmap *__pTizenBitmap; +}; + + * @endcode + * + * @final This class is not intended for extension. + * This class represents a container for accessibility element. + */ +class _OSP_EXPORT_ AccessibilityContainer + : public Tizen::Base::Object +{ +public: + /** + * Gets the owner of the accessibility container + * + * @since 2.0 + * @return The control which owns this %AccessibilityContainer + * @see Control::GetAccessibilityContainer() + */ + const Control* GetOwner(void) const; + + /** + * Gets the owner of the accessibility container + * + * @since 2.0 + * @return The control which owns this %AccessibilityContainer + * @see Control::GetAccessibilityContainer() + */ + Control* GetOwner(void); + + /** + * Adds the IAccessibilityListener instance to the %AccessibilityContainer. @n + * The added listener gets notified when the accessibility status is changed. + * + * @since 2.0 + * @return An error code + * @param[in] listener The event listener to add + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_ALREADY_EXIST The instance of IAccessibilityListener is already registered. + * @see RemoveAccessibilityListener() + */ + result AddAccessibilityListener(IAccessibilityListener& listener); + + /** + * Removes the IAccessibilityListener listener instance. @n + * The removed listener is not notified even when the accessibility status is changed. + * + * + * @since 2.0 + * @return An error code + * @param[in] listener The listener to remove + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND The instance of listener is not found. + * @see AddAccessibilityListener() + */ + result RemoveAccessibilityListener(IAccessibilityListener& listener); + + /** + * Adds the accessibility element to the %AccessibilityContainer. + * + * @since 2.0 + * @return An error code + * @param[in] element The instance of AccessibilityElement + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_ALREADY_EXIST The instance of AccessibilityElement is already registered. + * @see RemoveElement(), RemoveAllElements() + * + */ + result AddElement(AccessibilityElement& element); + + /** + * Removes the accessibility element in the %AccessibilityContainer. + * + * @since 2.0 + * + * @return An error code + * + * @param[in] element The instance of AccessibilityElement + * + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND The instance of AccessibilityElement is already registered. + * @see AddElement(), InsertElement() + * + */ + result RemoveElement(AccessibilityElement& element); + + /** + * Removes all of the accessibility elements in the %AccessibilityContainer. + * + * @since 2.0 + * + * @see AddElement, InsertElement + * + */ + void RemoveAllElements(void); + + /** + * Gets the instance of accessibility element which is the child of the %AccessibilityContainer by the name. + * + * @since 2.0 + * + * @return The instance of child element, if there exists an element which has the given name @n + * else @c null + * + * @param[in] name The name of AccessibilityElement + * + */ + AccessibilityElement* GetElement(const Tizen::Base::String& name) const; + + /** + * Gets the list of accessibility elements that are the child of the %AccessibilityContainer. + * + * @since 2.0 + * + * @return The list of child element, if there exists some elements in the container. @n + * else @c null. + * + */ + Tizen::Base::Collection::IList* GetElementsN(void) const; + +private: + // + // This default constructor is intentionally declared as private so that only the platform can create an instance + // + AccessibilityContainer(void); + + // + // This destructor is intentionally declared as private so that only the platform can delete an instance. + // + virtual ~AccessibilityContainer(void); + + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + AccessibilityContainer(const AccessibilityContainer& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + AccessibilityContainer& operator =(const AccessibilityContainer& rhs); + +private: + _AccessibilityContainerImpl* __pAccessibilityContainerImpl; + friend class _AccessibilityContainerImpl; +}; // AccessibilityContainer + +}} // Tizen::Ui +#endif //_FUI_ACCESSIBILITY_CONTAINER_H_ diff --git a/inc/FUiAccessibilityElement.h b/inc/FUiAccessibilityElement.h new file mode 100644 index 0000000..824b66a --- /dev/null +++ b/inc/FUiAccessibilityElement.h @@ -0,0 +1,192 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAccessibilityElement.h + * @brief This is the header file for the AccessibilityElement class. + * + * This header file contains the declarations of the AccessibilityElement class. + * + */ + +#ifndef _FUI_ACCESSIBILITY_ELEMENT_H_ +#define _FUI_ACCESSIBILITY_ELEMENT_H_ + +#include +#include +#include + +namespace Tizen { namespace Base +{ + class String; +}} //Tizen::Base + +namespace Tizen { namespace Graphics +{ + class Rectangle; +}} //Tizen::Graphics + +namespace Tizen { namespace Ui +{ +class _AccessibilityElementImpl; + +/** + * @class AccessibilityElement + * @brief This class represents an accessibility element. + * @since 2.0 + * + * @final This class is not intended for extension. + * This class represents an accessibility element. + */ +class _OSP_EXPORT_ AccessibilityElement + : public Tizen::Base::Object +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + AccessibilityElement(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~AccessibilityElement(void); + + /** + * Initializes the instance of %AccessibilityElement with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] bounds The bounds of the accessibility element + * @param[in] name The name of the accessibility element + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG Either the length of name parameter is @c 0, or the bounds are smaller than @c 0. + */ + result Construct(const Tizen::Graphics::Rectangle& bounds, const Tizen::Base::String& name); + + /** + * Gets the name of the element. + * + * @since 2.0 + * @return The name of the element + */ + Tizen::Base::String GetName(void) const; + + /** + * Sets the bounds to the element. + * + * @since 2.0 + * @param[in] bounds The bounds of the accessibility element. + */ + void SetBounds(const Tizen::Graphics::Rectangle& bounds); + + /** + * Gets the bounds of the element. + * + * @since 2.0 + * @return The bounds of the element + */ + Tizen::Graphics::Rectangle GetBounds(void) const; + + /** + * Sets the label to the element. + * + * @since 2.0 + * @param[in] label The label of the accessibility element. + */ + void SetLabel(const Tizen::Base::String& label); + + /** + * Gets the label of the element. + * + * @since 2.0 + * @return The label of the element + */ + Tizen::Base::String GetLabel(void) const; + + /** + * Sets the hint to the element. + * + * @since 2.0 + * @param[in] hint The hint of the accessibility element. + */ + void SetHint(const Tizen::Base::String& hint); + + /** + * Gets the hint of the element. + * + * @since 2.0 + * @return The hint of the element + */ + Tizen::Base::String GetHint(void) const; + + /** + * Sets the trait to the element. + * + * @since 2.0 + * @param[in] trait The trait of the accessibility element. + */ + void SetTrait(const Tizen::Base::String& trait); + + + /** + * Gets the trait of the element. + * + * @since 2.0 + * @return The trait of the element + */ + Tizen::Base::String GetTrait(void) const; + + /** + * Sets the value to the element. + * + * @since 2.0 + * @param[in] value The value of the accessibility element. + */ + void SetValue(const Tizen::Base::String& value); + + /** + * Gets the value of the element. + * + * @since 2.0 + * @return The value of the element + */ + Tizen::Base::String GetValue(void) const; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + AccessibilityElement(const AccessibilityElement& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + AccessibilityElement& operator =(const AccessibilityElement& rhs); + +private: + friend class _AccessibilityElementImpl; + _AccessibilityElementImpl* __pAccessibilityElementImpl; +}; // AccessibilityElement + +}} // Tizen::Ui +#endif //_FUI_ACCESSIBILITY_ELEMENT_H_ diff --git a/inc/FUiAccessibilityTypes.h b/inc/FUiAccessibilityTypes.h new file mode 100644 index 0000000..5972e35 --- /dev/null +++ b/inc/FUiAccessibilityTypes.h @@ -0,0 +1,48 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAccessibilityTypes.h + * @brief This is the header file for declarations of the accessibility enumeration . + * + * This header file contains the declarations of the accessibility enumeration . + * + */ + +#ifndef _FUI_ACCESSIBILITY_TYPES_H_ +#define _FUI_ACCESSIBILITY_TYPES_H_ + +namespace Tizen { namespace Ui +{ +/** + * @enum AccessibilityScreenReaderStatus + * + * Defines the status of the accessibility screen reader. + * + * @since 2.0 + */ +enum AccessibilityScreenReaderStatus +{ + ACCESSIBILITY_SCREEN_READER_STATUS__NONE, /**< initial value.*/ + ACCESSIBILITY_SCREEN_READER_STATUS_ERROR, /** +#include +#include + +namespace Tizen { namespace Ui { namespace Animations +{ + +/** + * @class AnimationBase + * @brief This class is the base class for all the Animation classes. @n + * It is an abstract base class. + * + * @since 2.0 + * + * The %AnimationBase class defines the basic animation properties, such as the interpolator to be used, the duration of the animation in milliseconds, the delay before the animation is started in milliseconds, and the repeat count. + * + */ +class _OSP_EXPORT_ AnimationBase + : public Tizen::Base::Object +{ +public: + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~AnimationBase(void); + + + /** + * Sets the duration of the animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] milliseconds The duration of the animation in milliseconds + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The value of the specified parameter is negative. + */ + result SetDuration(long milliseconds); + + + /** + * Sets the offset value of the animation. @n + * Additionally, the %SetOffset() method alters the start value and duration for which an animation is played. + * + * @since 2.0 + * + * @return An error code + * @param[in] milliseconds The offset of the animation in milliseconds + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The value of the specified parameter is negative or greater than the duration of the animation. + * @remarks If the start value of the animation is @c 0.0, the end value is @c 1.0, the duration is @c 100 ms and the offset value is @c 20 ms, + * the actual animation starts at @c 0th ms and plays for @c 80 ms with a start value of @c 0.2. @n + * If @c autoReverseset is set to @c true, the Backward animation plays for 100ms, from @c 1.0 to @c 0.0. + */ + result SetOffset(long milliseconds); + + + /** + * Sets the delay for the animation. @n + * The animation starts after the duration of delay has passed. + * + * @since 2.0 + * + * @return An error code + * @param[in] milliseconds The delay for the animation to start in milliseconds + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The value of the specified parameter is negative. + * @remarks This method does not alter the start, end, and duration values of the animation. + */ + result SetDelay(long milliseconds); + + + /** + * Sets the repeat count for the animation. @n + * Repeats an animation for the specified number of times. + * + * @since 2.0 + * + * @return An error code + * @param[in] count The number of times the animation has to repeat + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The value of the specified parameter is negative. + * @remarks A delay and offset is applied to an animation only when the animation is played for the first time. + */ + result SetRepeatCount(long count); + + + /** + * Sets the AutoReverse property of the animation. @n + * If enabled, the forward and backward animation can also be played. + * + * @since 2.0 + * + * @param[in] autoReverse Set to @c true to enable the AutoReverse property of the animation, @n + * else @c false + * @remarks If @c autoReverseset is set to @c true, the duration of the animation is doubled. + * If the repeat count is more than 1, @n + * @c autoReverse is applied to each iteration. + * Note that if @c autoReverse is set to @c true, one forward animation play and one backward animation play is one + * iteration. + */ + void SetAutoReverseEnabled(bool autoReverse); + + + /** + * Sets the scale ratio of the animation. @n + * The %SetScaleRatio() method multiplies the duration, offset, and delay using the scale ratio. + * + * @since 2.0 + * + * @return An error code + * @param[in] scaleRatio The scale ratio property of the animation + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The value of the specified parameter is negative. + */ + result SetScaleRatio(float scaleRatio); + + + /** + * Sets the hold end value of the animation. @n + * The %SetHoldEndEnabled() method retains the end values of an animation or goes to the start value of an animation. + * + * @since 2.0 + * + * @param[in] holdEnd Set to @c true to hold the end values of the animation, @n + * else @c false + */ + void SetHoldEndEnabled(bool holdEnd); + + + /** + * Gets the duration of the animation in milliseconds. + * + * @since 2.0 + * + * @return The duration value of the animation + */ + long GetDuration(void) const; + + + /** + * Gets the offset value in milliseconds after the animation starts. + * + * @since 2.0 + * + * @return The offset value of the animation in milliseconds @n + * The default value of the offset is @c 0. + */ + long GetOffset(void) const; + + + /** + * Gets the delay value in milliseconds before the animation starts. + * + * @since 2.0 + * + * @return The delay value in milliseconds @n + * The default value of the delay is @c 0. + */ + long GetDelay(void) const; + + + /** + * Gets the repeat count value of the animation. + * + * @since 2.0 + * + * @return The repeat count value of the animation @n + * The default value of the repeat count is @c 1. + */ + long GetRepeatCount(void) const; + + + /** + * Checks whether the auto reverse is enabled. + * + * @since 2.0 + * + * @return @c true if the auto reverse is enabled, @n + * else @c false @n + * The default auto reverse value is @c false. + */ + bool IsAutoReverseEnabled(void) const; + + + /** + * Gets the scale ratio value of the animation. + * + * @since 2.0 + * + * @return The scale ratio value of the animation @n + * The default value of scale ratio is @c 1.0f. + */ + float GetScaleRatio(void) const; + + + /** + * Checks whether the hold end value of the animation is enabled. + * + * @since 2.0 + * + * @return @c true if the hold end value is enabled, @n + * else @c false @n + * The default hold end value is @c true. + */ + bool IsHoldEndEnabled(void) const; + + + /** + * Sets the interpolator type. + * + * @since 2.0 + * + * @param[in] interpolatorType The interpolator type used for the animation + */ + void SetInterpolatorType(AnimationInterpolatorType interpolatorType); + + + /** + * Gets the interpolator type. + * + * @since 2.0 + * + * @return The interpolator type of an animation @n + * The default interpolator type is @c ANIMATION_INTERPOLATOR_LINEAR. + */ + AnimationInterpolatorType GetInterpolatorType(void) const; + + + /** + * Sets the control points for Bezier interpolator. @n + * The %SetBezierControlPoints() method is supported only if the interpolator is ANIMATION_INTERPOLATOR_BEZIER. + * + * @since 2.0 + * + * @return An error code + * @param[in] time1 The control point 1 - Time @n + * The time must be in the range @c 0.0 to @c 1.0. The time value is scaled relative to the duration of the animation. + * @param[in] value1 The control point 1 - Value @n + * The value must be in the range @c 0.0 to @c 1.0. The value is scaled relative to the start and end value of the animation. + * @param[in] time2 The control point 2 - Time @n + * The time must be in the range @c 0.0 to @c 1.0. The time value is scaled relative to the duration of the animation. + * @param[in] value2 The control point 2 - Value @n + * The value must be in the range @c 0.0 to @c 1.0. The value is scaled relative to the start and end value of the animation. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION This method is not supported for the interpolator set of this instance. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @remarks @c time1 can be greater than @c time2 and vice versa. + */ + result SetBezierControlPoints(float time1, float value1, float time2, float value2); + + + /** + * Gets the control points of the Bezier interpolator. @n + * The %GetBezierControlPoints() method is supported only if the interpolator is @c ANIMATION_INTERPOLATOR_BEZIER. @c 0 is returned for the other interpolators. + * + * @since 2.0 + * + * @return An error code + * @param[out] time1 The control point 1 - Time @n + * The default value of control point 1 is @c 0.0. + * @param[out] value1 The control point 1 - Value @n + * The default value of control point 1 is @c 0.0. + * @param[out] time2 The control point 2 - Time @n + * The default value of control point 2 is @c 0.0. + * @param[out] value2 The control point 2 - Value @n + * The default value of control point 2 is @c 0.0. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION This method is not supported for the interpolator set of this instance. + * + */ + result GetBezierControlPoints(float& time1, float& value1, float& time2, float& value2) const; + + + /** + * Gets the count of key frames added to this animation. + * + * @since 2.0 + * + * @return The key frame count + */ + int GetKeyFrameCount(void) const; + + + /** + * Sets the name of the animation. + * + * @since 2.0 + * + * @param[in] name The name of the animation + */ + void SetName(const Tizen::Base::String& name); + + + /** + * Gets the name of the animation. + * + * @since 2.0 + * + * @return The name of the animation @n + * The default value of the name is an empty string. + */ + Tizen::Base::String GetName(void) const; + + + /** + * Gets the type information of this instance. + * + * @since 2.0 + * + * @return The type information of this instance + */ + virtual AnimationType GetType(void) const = 0; + + +protected: + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the default constructor for this class. + // + // @since 2.0 + // + AnimationBase(void); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the copy constructor for the %AnimationBase class. + // + // @since 2.0 + // + // @param[in] animationBase An instance of AnimationBase + // @remarks The animation name of the copied %AnimationBase object will be same as the %AnimationBase object passed. + // User must change the name using the SetName() method of this class in order to make animation name unique. + // + AnimationBase(const AnimationBase& animationBase); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the constructor for this class. + // + // @since 2.0 + // + // @param[in] duration The duration of animation in milliseconds + // @param[in] interpolator The type of Interpolation used for animation's intermediate value calculation + // + AnimationBase(long duration, AnimationInterpolatorType interpolator); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Assigns the value of the specified instance to the current instance of %AnimationBase. + // + // @since 2.0 + // + // @param[in] value An instance of %AnimationBase + // @remarks The animation name of the returned %AnimationBase object will be same as the %AnimationBase object passed. + // User must change the name using SetName() method of this class in order to make animation name unique. + // + AnimationBase& operator =(const AnimationBase& value); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void AnimationBase_Reserved1(void); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void AnimationBase_Reserved2(void); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void AnimationBase_Reserved3(void); + + + friend class _AnimationBaseImpl; + + + // + // This variable is for internal use only. Using this variable can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This variable is for internal usage. + // + // @since 2.0 + // + class _AnimationBaseImpl* _pAnimationBaseImpl; +}; // AnimationBase + + +}}} // Tizen::Ui::Animations + +#endif // _FUI_ANIM_ANIMATION_BASE_H_ diff --git a/inc/FUiAnimAnimationGroup.h b/inc/FUiAnimAnimationGroup.h new file mode 100644 index 0000000..2989e5f --- /dev/null +++ b/inc/FUiAnimAnimationGroup.h @@ -0,0 +1,143 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimAnimationGroup.h + * @brief This is the header file for the %AnimationGroup class. + * + * This header file contains the declarations of the %AnimationGroup class and its helper classes. + */ + +#ifndef _FUI_ANIM_ANIMATION_GROUP_H_ +#define _FUI_ANIM_ANIMATION_GROUP_H_ + +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Animations +{ + +/** + * @class AnimationGroup + * @brief This class is used to group a set of animations together. + * + * @since 2.0 + * + * The %AnimationGroup class is used to group a set of animations together. + * + * For more information on the class features, see Animating UI Controls. + */ +class _OSP_EXPORT_ AnimationGroup + : public Tizen::Base::Object +{ +public: + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~AnimationGroup(void); + + + /** + * Removes all the animations from the animation group. + * + * @since 2.0 + */ + virtual void RemoveAllAnimations(void) = 0; + + + /** + * Gets the animation count value. + * + * @since 2.0 + * + * @return The total number of animations added to the group + */ + virtual int GetAnimationCount(void) const = 0; + + + /** + * Gets the type information of this instance. + * + * @since 2.0 + * + * @return The type information of this instance + */ + virtual AnimationGroupType GetType(void) const = 0; + + +protected: + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the default constructor for this class. + // + // @since 2.0 + // + AnimationGroup(void); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Assigns the value of the specified instance to the current instance of %AnimationGroup. + // + // @since 2.0 + // + // @param[in] rhs An instance of %AnimationGroup + // + AnimationGroup& operator =(const AnimationGroup& rhs); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the copy constructor for the %AnimationGroup class. + // + // @since 2.0 + // + // @param[in] animationGroup An instance of %AnimationGroup + // + AnimationGroup(const AnimationGroup& animationGroup); + + + friend class _AnimationGroupImpl; + + + // + // This variable is for internal use only. Using this variable can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // The variable for internal usage. + // + // @since 2.0 + // + class _AnimationGroupImpl* _pAnimationGroupImpl; +}; // AnimationGroup + + +}}} // Tizen::Ui::Animations + +#endif // _FUI_ANIM_ANIMATION_GROUP_H_ diff --git a/inc/FUiAnimAnimationTransaction.h b/inc/FUiAnimAnimationTransaction.h new file mode 100644 index 0000000..7321ffd --- /dev/null +++ b/inc/FUiAnimAnimationTransaction.h @@ -0,0 +1,495 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimAnimationTransaction.h + * @brief This is the header file for the %AnimationTransaction class. + * + * This header file contains the declarations of the %AnimationTransaction class. + */ + +#ifndef _FUI_ANIM_ANIMATION_TRANSACTION_H_ +#define _FUI_ANIM_ANIMATION_TRANSACTION_H_ + +#include +#include + +#include +#include +#include + + +namespace Tizen { namespace Ui { namespace Animations +{ + +class IVisualElementAnimationTimingFunction; +class IVisualElementAnimationValueInterpolator; + +/** + * @class AnimationTransaction + * @brief This class defines the transaction operations of the animation. + * + * @since 2.0 + * + * The %AnimationTransaction class enables the applications to define animation transactions that make a set of animations on one or more animators to start or stop at the same time. + * + * For more information on the class features, see Transactions. + * + */ +class _OSP_EXPORT_ AnimationTransaction +{ +public: + + /** + * Initializes a transaction set. @n + * Calls ControlAnimator::StartUserAnimation() or calls VisualElement::AddAnimation() + * after calling the %Begin() method and before calling the CommitTransaction() method. + * Nesting of the transaction set is allowed. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + */ + static result Begin(void); + + + /** + * Initializes a transaction set. @n + * Calls ControlAnimator::StartUserAnimation() or calls VisualElement::AddAnimation() + * after calling the %Begin() method and before calling the CommitTransaction() method. + * Nesting of the transaction set is allowed. + * + * @since 2.0 + * + * @return An error code + * @param[out] transactionId The transaction ID @n + * Use this transaction ID for further operations related to this transaction. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + */ + static result Begin(int& transactionId); + + + /** + * Commits a set of animation start commands that are added during the current transaction. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + */ + static result Commit(void); + + + /** + * Stops the transaction. @n + * All the nested transactions also will be stopped. + * + * @since 2.0 + * + * @return An error code + * @param[in] transactionId The transaction ID + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + */ + static result Stop(int transactionId); + + + /** + * Discards all inactive transactions. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION An uncommitted transaction does not exist. + * @see Begin() + */ + static result Discard(void); + + + /** + * Gets the status of the specified transaction. + * + * @since 2.0 + * + * @return The state of the transaction + * @param[in] transactionId The transaction ID + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + static AnimationTransactionStatus GetStatus(int transactionId); + + + /** + * Sets a default event listener to listen to the events of transactions. @n + * The set listener can listen to the events on the specified event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @return An error code + * @param[in] pListener The listener to add + * @exception E_SUCCESS The method is successful. + * @remarks Only one event listener can be set. @n + * If @c pListener is @c null, the listener already set is unregistered. @n + * An application must deregister the registered listener if the listener object needs to be deleted. + * @see SetCurrentTransactionEventListener() + */ + static result SetTransactionEventListener(IAnimationTransactionEventListener* pListener); + + + /** + * Sets a listener instance to listen to the events of a current transaction. @n + * The set listener can listen to the events on the specified event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @return An error code + * @param[in] pListener The listener to set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION An uncommitted transaction does not exist. + * @remarks If the listener is set using this method, the set default listener is not called. + * @see SetTransactionEventListener() + */ + static result SetCurrentTransactionEventListener(IAnimationTransactionEventListener* pListener); + + + /** + * Enables or disables the implicit animation on the current transaction. @n + * If enabled, implicit animations may be created whenever animatable properties of this instance change. + * + * @since 2.0 + * + * @return An error code + * @param[in] enable Set to @c true to enable the implicit animation, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION An uncommitted transaction does not exist. + * @remarks The nested transaction created after invoking this method will inherit @c enable as the default value. + * @remarks Deciding whether to enable implicit animation depends on both the flag of transaction and the flag of VisualElement. + * If both SetVisualElementImplicitAnimationEnabled() and VisualElement::SetImplicitAnimationEnabled() are set to @c true, @n + * implicit animation is enabled. + */ + static result SetVisualElementImplicitAnimationEnabled(bool enable); + + + /** + * Sets a default event listener to get the status of an animation. @n + * The IVisualElementAnimationStatusEventListener listener is called for status changes of animation. + * The added listener listens to events on the specified event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @return An error code + * @param[in] pListener The pointer of listener instance to set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION An uncommitted transaction does not exist. + * @remarks This is used as the default value for the newly created VisualElementAnimation class or its descendant classes in the current transaction. + */ + static result SetVisualElementAnimationStatusEventListener(IVisualElementAnimationStatusEventListener* pListener); + + + /** + * Sets the default timing function of an animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] pTimingFunction The reference of interpolator instance to set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION An uncommitted transaction does not exist. + * @remarks This is used as the default value for the newly created VisualElementAnimation class or its descendant classes in the current transaction. + */ + static result SetVisualElementAnimationTimingFunction(const IVisualElementAnimationTimingFunction* pTimingFunction); + + + /** + * Sets the default value interpolator of an animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] pValueInterpolator The reference of InterpolatorFunction instance to set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION An uncommitted transaction does not exist. + * @remarks This is used as the default value for the newly created VisualElementAnimation class or its descendant classes in the current transaction. + */ + static result SetVisualElementAnimationValueInterpolator(const IVisualElementAnimationValueInterpolator* pValueInterpolator); + + + /** + * Sets the default duration of an animation in the current transaction. + * + * @since 2.0 + * + * @return An error code + * @param[in] milliseconds The duration of the animation in milliseconds + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION An uncommitted transaction does not exist. + * @exception E_INVALID_ARG The value of the specified parameter is negative or lesser than the offset of the animation. + * @remarks This is used as the default value for the newly created VisualElementAnimation class or its descendant classes in the current transaction. + * @see GetVisualElementAnimationDuration() + */ + static result SetVisualElementAnimationDuration(long milliseconds); + + + /** + * Gets the default duration of an animation in milliseconds in the current transaction. + * + * @since 2.0 + * + * @return The duration value of the animation + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION An uncommitted transaction does not exist. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks This is used as the default value for the newly created VisualElementAnimation class or its descendant classes in the current transaction. + * @see SetVisualElementAnimationDuration() + */ + static long GetVisualElementAnimationDuration(void); + + + /** + * Sets the default offset value of an animation. @n + * Additionally, the %SetVisualElementAnimationOffset() method alters the start value and duration for which an animation is played. + * + * @since 2.0 + * + * @return An error code + * @param[in] milliseconds The offset value of the animation in milliseconds + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION An uncommitted transaction does not exist. + * @exception E_INVALID_ARG The value of the specified parameter is negative or greater than the duration of the animation. + * @remarks If the start value of the animation is @c 0.0, the end value is @c 1.0, the duration is @c 100 ms and the offset value is @c 20 ms, + * the actual animation starts at @c 0th ms and plays for @c 80 ms with a start value of @c 0.2. @n + * If @c autoReverse is set to @c true, the Backward animation plays for @c 100ms, from @c 1.0 to @c 0.0. + * @remarks This is used as the default value for the newly created VisualElementAnimation class or its descendant classes in the current transaction. + * @see GetVisualElementAnimationOffset() + */ + static result SetVisualElementAnimationOffset(long milliseconds); + + + /** + * Gets the default offset value in milliseconds after an animation starts. + * + * @since 2.0 + * + * @return The offset value of the animation in milliseconds @n + * The default value of the offset is @c 0. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION An uncommitted transaction does not exist. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks This is used as the default value for newly created VisualElementAnimation class or its descendant classes in the current transaction. + * @see SetVisualElementAnimationOffset() + */ + static long GetVisualElementAnimationOffset(void); + + + /** + * Sets the default delay for an animation. @n + * The animation starts after the duration of delay has passed. + * + * @since 2.0 + * + * @return An error code + * @param[in] milliseconds The delay for the animation to start in milliseconds + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION An uncommitted transaction does not exist. + * @exception E_INVALID_ARG The value of the specified parameter is negative. + * @remarks This method does not alter the start, end, and duration values of the animation. + * @remarks This is used as the default value for the newly created VisualElementAnimation class or its descendant classes in the current transaction. + * @see GetVisualElementAnimationDelay() + */ + static result SetVisualElementAnimationDelay(long milliseconds); + + + /** + * Gets the default delay value in milliseconds before an animation starts. + * + * @since 2.0 + * + * @return The delay value in milliseconds @n + * The default value of the delay is @c 0. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION An uncommitted transaction does not exist. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks This is used as the default value for the newly created VisualElementAnimation class or its descendant classes in the current transaction. + * @see SetVisualElementAnimationDelay() + */ + static long GetVisualElementAnimationDelay(void); + + + /** + * Sets the default repeat count for an animation. @n + * Repeats an animation for the specified number of times. + * + * @since 2.0 + * + * @return An error code + * @param[in] count The number of times the animation has to repeat + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION An uncommitted transaction does not exist. + * @exception E_INVALID_ARG The value of the specified parameter is negative. + * @remarks A delay and offset is applied to an animation only when the animation is played for the first time. + * @remarks This is used as the default value for the newly created VisualElementAnimation class or its descendant classes in the current transaction. + * @see GetVisualElementAnimationRepeatCount() + */ + static result SetVisualElementAnimationRepeatCount(long count); + + + /** + * Gets the default repeat count value of an animation. + * + * @since 2.0 + * + * @return The repeat count value of the animation @n + * The default value of the repeat count is @c 1. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION An uncommitted transaction does not exist. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks This is used as the default value for the newly created VisualElementAnimation class or its descendant classes in the current transaction. + * @see SetVisualElementAnimationRepeatCount() + */ + static long GetVisualElementAnimationRepeatCount(void); + + + /** + * Sets the default AutoReverse property of an animation. @n + * If enabled, the forward and backward animation can also be played. + * + * @since 2.0 + * + * @param[in] autoReverse Set to @c true to enable the AutoReverse property of the animation, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION An uncommitted transaction does not exist. + * @remarks If @c autoReverse is set to @c true, the duration of the animation is doubled. + * If the repeat count is more than @c 1, @c autoReverse is applied to each iteration. + * Note that if @c autoReverse is set to @c true, one forward animation play + * and one backward animation play is one iteration. + * @remarks This is used as the default value for the newly created VisualElementAnimation class or its descendant classes in the current transaction. + * @see IsVisualElementAnimationAutoReverseEnabled() + */ + static result SetVisualElementAnimationAutoReverseEnabled(bool autoReverse); + + + /** + * Checks whether the auto reverse is enabled. + * + * @since 2.0 + * + * @return @c true if the auto reverse is enabled, @n + * else @c false @n + * The default auto reverse value is @c false. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION An uncommitted transaction does not exist. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks This is used as the default value for the newly created VisualElementAnimation class or its descendant classes in the current transaction. + * @see SetVisualElementAnimationAutoReverseEnabled() + */ + static bool IsVisualElementAnimationAutoReverseEnabled(void); + + + /** + * Sets the default scale ratio of an animation. @n + * The %SetVisualElementAnimationScaleRatio() method multiplies the duration, offset and delay using the scale ratio. + * + * @since 2.0 + * + * @return An error code + * @param[in] scaleRatio The scale ratio property of the animation + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION An uncommitted transaction does not exist. + * @exception E_INVALID_ARG The value of the specified parameter is negative. + * @remarks This is used as the default value for the newly created VisualElementAnimation or its descendant classes in the current transaction. + * @see GetVisualElementAnimationScaleRatio() + */ + static result SetVisualElementAnimationScaleRatio(float scaleRatio); + + + /** + * Gets the default scale ratio value of an animation. + * + * @since 2.0 + * + * @return The scale ratio value of the animation @n + * The default value of scale ratio is @c 1.0f. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION An uncommitted transaction does not exist. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks This is used as the default value for the newly created VisualElementAnimation class or its descendant classes in the current transaction. + * @see SetVisualElementAnimationScaleRatio() + */ + static float GetVisualElementAnimationScaleRatio(void); + + +private: + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the default constructor for this class. + // + // @since 2.0 + // + AnimationTransaction(void); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the destructor for this class. + // + // @since 2.0 + // + ~AnimationTransaction(void); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the copy constructor for the %AnimationTransaction class. + // + // @since 2.0 + // @param[in] transaction An instance of %AnimationTransaction + // + AnimationTransaction(const AnimationTransaction& transaction); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Assigns the value of the specified instance to the current instance of %AnimationTransaction. + // + // @since 2.0 + // + // @param[in] rhs An instance of %AnimationTransaction + // + AnimationTransaction& operator =(const AnimationTransaction& rhs); +}; // AnimationTransaction + + +}}} // Tizen::Ui::Animations + +#endif // _FUI_ANIM_ANIMATION_TRANSACTION_H_ diff --git a/inc/FUiAnimBezierTimingFunction.h b/inc/FUiAnimBezierTimingFunction.h new file mode 100644 index 0000000..de4f79f --- /dev/null +++ b/inc/FUiAnimBezierTimingFunction.h @@ -0,0 +1,207 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimBezierTimingFunction.h + * @brief This is the header file for the %BezierTimingFunction class. + * + * This header file contains the declarations of the %BezierTimingFunction class. + */ + +#ifndef _FUI_ANIM_BEZIER_TIMING_FUNCTION_H_ +#define _FUI_ANIM_BEZIER_TIMING_FUNCTION_H_ + +#include + +namespace Tizen { namespace Ui { namespace Animations +{ + +/** + * @class BezierTimingFunction + * @brief This class stores the information of a bezier curve timing function. + * + * @since 2.0 + * + * @remarks This class needs 2 control points of cubic bezier curve. + * + * The %BezierTimingFunction class provides bezier curve timing function related information. + * + * For more information on the class features, see Timing Function. + * + */ +class _OSP_EXPORT_ BezierTimingFunction + : public Tizen::Base::Object + , public IVisualElementAnimationTimingFunction +{ +public: + + /** + * This is the constructor for this class. + * + * @since 2.0 + */ + BezierTimingFunction(void); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~BezierTimingFunction(void); + + + /** + * Calculates the progress(pace) of an animation regarding the time elapsed. + * + * @since 2.0 + * + * @return The progress(pace) value calculated by bezier equation with control points @n + * @c 0 and @c 1 are the start and end values of an animation, respectively. + * @param[in] timeProgress The time progress value @n + * This must be in the range @c 0.0 to @c 1.0. + */ + virtual float CalculateProgress(float timeProgress) const; + + + /** + * Sets the control points. + * + * @since 2.0 + * + * @return An error code + * @param[in] timeProgress1 The time progress of control point 1 @n + * This must be in the range @c 0.0 to @c 1.0. + * @param[in] progress1 The progress of control point 1 @n + * This must be in the range @c 0.0 to @c 1.0. + * @param[in] timeProgress2 The time progress of control point 2 @n + * This must be in the range @c 0.0 to @c 1.0. + * @param[in] progress2 The progress of control point 2 @n + * This must be in the range @c 0.0 to @c 1.0. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The value of the specified parameter is less than @c 0 or greater than @c 1. + * @see GetControlPoints() + */ + result SetControlPoints(float timeProgress1, float progress1, float timeProgress2, float progress2); + + + /** + * Gets the control points. + * + * @since 2.0 + * + * @return An error code + * @param[out] timeProgress1 The time progress of control point 1 @n + * The default value is @c 0.33f. + * @param[out] progress1 The progress of control point 1 @n + * The default value is @c 0.8f. + * @param[out] timeProgress2 The time progress of control point 2 @n + * The default value is @c 0.66f. + * @param[out] progress2 The progress of control point 2 @n + * The default value is @c 0.2f. + * @exception E_SUCCESS The method is successful. + * @see SetControlPoints() + */ + result GetControlPoints(float& timeProgress1, float& progress1, float& timeProgress2, float& progress2) const; + + +private: + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the assignment operator for this class. + // + // @since 2.0 + // + BezierTimingFunction(const BezierTimingFunction& rhs); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Assigns the value of the specified instance to the current instance of %BezierTimingFunction. + // + // @since 2.0 + // + BezierTimingFunction& operator =(const BezierTimingFunction& rhs); + + +private: + + /** + * The time progress of control point 1. + * + * @since 2.0 + */ + float __timeProgress1; + + + /** + * The progress of control point 1. + * + * @since 2.0 + */ + float __progress1; + + + /** + * The time progress of control point 2. + * + * @since 2.0 + */ + float __timeProgress2; + + + /** + * The progress of control point 2. + * + * @since 2.0 + */ + float __progress2; + + + /** + * The coefficient A for calculating bezier curve. + * + * @since 2.0 + */ + float __coefficientA; + + + /** + * The coefficient B for calculating bezier curve. + * + * @since 2.0 + */ + float __coefficientB; + + + /** + * The coefficient C for calculating bezier curve. + * + * @since 2.0 + */ + float __coefficientC; +}; // BezierTimingFunction + + +}}} // Tizen::Ui::Animations + +#endif //_FUI_ANIM_BEZIER_TIMING_FUNCTION_H_ diff --git a/inc/FUiAnimControlAnimator.h b/inc/FUiAnimControlAnimator.h new file mode 100644 index 0000000..68e130a --- /dev/null +++ b/inc/FUiAnimControlAnimator.h @@ -0,0 +1,520 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimControlAnimator.h + * @brief This is the header file for the %ControlAnimator class. + * + * This header file contains the declarations of the %ControlAnimator class. + */ + +#ifndef _FUI_ANIM_CONTROL_ANIMATOR_H_ +#define _FUI_ANIM_CONTROL_ANIMATOR_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Animations +{ + +/** + * @class ControlAnimator + * @brief This class defines the animation methods for Tizen::Ui::Control. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %ControlAnimator class is used to control the animations operated in Tizen::Ui::Controls. + * + * For more information on the class features, see Animating UI Controls. + * + */ +class _OSP_EXPORT_ ControlAnimator + : public Tizen::Base::Object +{ +public: + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~ControlAnimator(void); + + + /** + * Starts an animation explicitly. @n + * If multiple controls need to be animated simultaneously, the controls must be part of the AnimationTransaction class. @n + * The %StartUserAnimation() method must be called after AnimationTransaction::Begin() and before AnimationTransaction::Commit(). + * + * @since 2.0 + * + * @return An error code + * @param[in] animTarget The property to animate + * @param[in] animation An object of type AnimationBase + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_SYSTEM A system error has occurred. + * @remarks An animation is deleted at the end of the animation playback. @n + * RectangleAnimation is used to animate only one animation target at a time. + * For example, if AnimationTarget is @c ANIMATION_TARGET_SIZE, RectangleAnimation performs only the dimension animation. @n + * To perform animation using the @c ANIMATION_TARGET_POSITION and @c ANIMATION_TARGET_SIZE properties, AnimationTransaction must be used with + * a separate call for each animation target. + */ + result StartUserAnimation(AnimationTargetType animTarget, const AnimationBase& animation); + + + /** + * Starts a group of animations explicitly. @n + * If multiple controls need to be animated simultaneously, the control must be part of the AnimationTransaction class. + * The %StartUserAnimation() method must be called after AnimationTransaction::Begin() and before AnimationTransaction::Commit(). + * + * @since 2.0 + * + * @return An error code + * @param[in] animGroup An animation group having a list of animations + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_SYSTEM A system error has occurred. + * @remarks The animations are deleted at the end of the animation playback. @n + * RectangleAnimation is used to animate only one animation target at a time. + */ + result StartUserAnimation(const AnimationGroup& animGroup); + + + /** + * Stops all the animations that are currently playing and jumps to the final frame of the animation. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result StopAllAnimations(void); + + + /** + * Stops the animation with the specified trigger type. + * + * @since 2.0 + * + * @return An error code + * @param[in] animTrigger The animator trigger type + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result StopAnimation(ControlAnimatorTriggerType animTrigger); + + + /** + * Gets the status of an animation with respect to a control. + * + * @since 2.0 + * + * @return The animation state + */ + AnimatorStatus GetStatus(void) const; + + + /** + * Gets the status of an animation for the specified animation target type. + * + * @since 2.0 + * + * @return The state of an animation with type @c animTarget + * @param[in] animTarget The animation target type + */ + AnimatorStatus GetStatus(AnimationTargetType animTarget) const; + + + /** + * Adds the IControlAnimatorEventListener listener instance to the current instance of the control. @n + * The %IControlAnimatorEventListener listener is called for status changes of animations associated with a control. + * The added listener listens to events on the specified event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The listener to add + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_UNSUPPORTED_OPERATION The animation support is unavailable. + * @exception E_OBJ_ALREADY_EXIST The specified @c listener is already added. + * @exception E_SYSTEM A system error has occurred. + * @remarks For animations that are part of AnimationTransaction, the applications need to listen to IAnimationTransactionEventListener events. @n + * The IControlAnimatorEventListener events are not fired if the animation is part of a transaction. + */ + result AddControlAnimatorEventListener(IControlAnimatorEventListener& listener); + + + /** + * Removes the IControlAnimatorEventListener listener instance from the current instance of the control. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The listener to remove + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_UNSUPPORTED_OPERATION The animation support is unavailable. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveControlAnimatorEventListener(IControlAnimatorEventListener& listener); + + + /** + * Adds a IControlAnimatorDetailedEventListener listener instance to the current instance of the control. @n + * The %IControlAnimatorDetailedEventListener listener is called for status changes of each animation associated with the control. @n + * The added listener listens to events on the specified event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The listener to add + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_UNSUPPORTED_OPERATION The animation support is unavailable. + * @exception E_OBJ_ALREADY_EXIST The specified @c listener is already added. + * @exception E_SYSTEM A system error has occurred. + * @remarks For animations that are part of AnimationTransaction, the applications need to listen to the IAnimationTransactionEventListener events. @n + * The IControlAnimatorDetailedEventListener events are not fired if the animation is part of a transaction. + */ + result AddControlAnimatorDetailedEventListener(IControlAnimatorDetailedEventListener& listener); + + + /** + * Removes an IControlAnimatorDetailedEventListener instance from the current instance of the control. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The listener to remove + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_UNSUPPORTED_OPERATION The animation support is unavailable. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveControlAnimatorDetailedEventListener(IControlAnimatorDetailedEventListener& listener); + + + /** + * Sets an animation group for the specified trigger type. + * + * @since 2.0 + * + * @return An error code + * @param[in] animTrigger The animator trigger type to which the animation is applied + * @param[in] pAnimation An object of type AnimationBase @n + * If @c null is passed, the default animation values are used for animation with the specified trigger type. + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPTION The specified option is not supported. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks @c ANIMATION_TRIGGER_USER is not supported. @n + * The @c holdEnd value and @c AutoReverse value are set to @c true and @c false respectively. @n + * An exception is returned if the animation group does not contain an animation with the target type that is being animated for the specified + * trigger type. The start value of an animation object of the associated target type for the specified trigger type is overwritten by the + * current property value of the Tizen::Ui::Control instance and the end value is overwritten by the value that is being set by the user. @n + * The associated target types for each trigger are as below: @n + * \verbatim + * Animation Trigger - Target Type + * ANIMATION_TRIGGER_POSITION_CHANGE - ANIMATION_TARGET_POSITION + * ANIMATION_TRIGGER_SIZE_CHANGE - ANIMATION_TARGET_SIZE + * ANIMATION_TRIGGER_SHOW_STATE_CHANGE - ANIMATION_TARGET_ALPHA + * \endverbatim + */ + result SetAnimation(ControlAnimatorTriggerType animTrigger, const AnimationGroup* pAnimation); + + + /** + * Gets a group of animations. + * + * @since 2.0 + * + * @return An animation group object at the specified animation trigger type, @n + * else @c null if the animation is empty or AnimationTriggerType is @c ANIMATION_TRIGGER_USER + * @param[in] animTrigger The animator trigger type to get an animation group object + */ + AnimationGroup* GetAnimationN(ControlAnimatorTriggerType animTrigger) const; + + + /** + * Sets the position of the control. @n + * An animation is played while changing the position of the control. + * + * @since 2.0 + * + * @return An error code + * @param[in] x The new X position of the object + * @param[in] y The new Y position of the object + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. + * @exception E_SYSTEM A system error has occurred. + * @remarks The X and Y position of the object are relative to the top-left corner of its parent. @n + * Control::Invalidate() need not be called to display the control. The animation uses linear interpolator and is played for a default duration if + * the user does not overwrite the values using SetAnimation(). + * @see SetBounds() + * @see SetSize() + */ + result SetPosition(int x, int y); + + + /** + * Sets the position of the control. @n + * An animation is played while changing the position of the control. + * + * @since 2.0 + * + * @return An error code + * @param[in] Position The new position + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. + * @exception E_SYSTEM A system error has occurred. + * @remarks The position of the object is relative to the top-left corner of its parent. @n + * Control::Invalidate() need not be called to display the control. @n + * The animation uses linear interpolator and is played for a default duration if the user does not overwrite the values using SetAnimation(). + * @see SetPosition() + * @see SetBounds() + * @see SetSize() + */ + result SetPosition(const Tizen::Graphics::Point& Position); + + + /** + * Sets the size of the control. @n + * An animation is played while changing the size of the control. @n + * The @c width and @c height parameters contain the width and height values of the object, respectively. + * + * @since 2.0 + * + * @return An error code + * @param[in] width The new width of the object + * @param[in] height The new height of the object + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The value of @c width or @c height is @c 0 or a negative value. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. + * @exception E_SYSTEM A system error has occurred. + * @remarks Control::Invalidate() need not be called to display the control. @n + * The animation uses linear interpolator and is played for a duration of @c 250 ms if the user does not overwrite the values using SetAnimation(). + * @see SetBounds() + * @see SetPosition() + */ + result SetSize(int width, int height); + + + /** + * Sets the size of the control. @n + * An animation is played while changing the size of the control. @n + * The @c width becomes @c size.width, and the @c height becomes @c size.height. + * + * @since 2.0 + * + * @return An error code + * @param[in] size The new width and height + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The value @c size.width or @c size.height is @c 0 or a negative value. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. + * @exception E_SYSTEM A system error has occurred. + * @remarks Control::Invalidate() need not be called to display the control. @n + * The animation uses linear interpolator and is played for a duration of @c 250 ms if the user does not overwrite the values using SetAnimation(). + * @see SetSize() + * @see SetBounds() + * @see SetPosition() + */ + result SetSize(const Tizen::Graphics::Dimension& size); + + + /** + * Sets the position and size of the control. @n + * An animation is played while changing the position and size of the control. @n + * The position is set to (x, y), and the @c width and @c height parameters contain the width and height values of the object, respectively. + * + * @since 2.0 + * + * @return An error code + * @param[in] x The new X position of the object + * @param[in] y The new Y position of the object + * @param[in] width The new width of the object + * @param[in] height The new height of the object + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The value of @c width or @c height is @c 0 or a negative value. + * @exception E_SYSTEM A system error has occurred. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. + * @remarks Changing the position of a parent object does not change the position of its children, the top-left position that is relative to the + * top-left corner of the parent container. If calling this method causes re-positioning of an object or changes the size of the object, the + * system redraws the object and all its children. @n + * Control::Invalidate() need not be called to display the control. @n + * The animation uses linear interpolator and is played for a duration of @c 250 ms if the user does not overwrite the values using SetAnimation(). + * @see SetPosition() + * @see SetSize() + */ + result SetBounds(int x, int y, int width, int height); + + + /** + * Sets the position and size of the control. @n + * An animation is played while changing the position and size of the control. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect The new bounds of the object + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The value of @c rect.width or @c rect.height is @c 0 or a negative value. + * @exception E_SYSTEM A system error has occurred. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. + * @remarks Control::Invalidate() need not be called to display the control. @n + * The animation uses linear interpolator and is played for a duration of @c 250 ms if the user does not overwrite the values using SetAnimation(). + * @see SetBounds() + * @see SetPosition() + * @see SetSize() + */ + result SetBounds(const Tizen::Graphics::Rectangle& rect); + + + /** + * Sets the show state of the control with animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] show The show state of the object + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. + * @exception E_SYSTEM A system error has occurred. + * @remarks Control::Invalidate() need not be called to display the control. @n + * The animation uses linear interpolator and is played for a duration of @c 250 ms if the user does not overwrite the values using SetAnimation(). + */ + result SetShowState(bool show); + + + /** + * Checks whether animation is supported for the control with the specified target type. + * + * @since 2.0 + * + * @return @c true if animation is supported, @n + * else @c false + * @param[in] animTarget The animation target + */ + bool IsAnimationSupported(AnimationTargetType animTarget) const; + +protected: + + friend class _ControlAnimatorImpl; + + + // + // This variable is for internal use only. Using this variable can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // The variable for internal usage. + // + // @since 2.0 + // + class _ControlAnimatorImpl* _pControlAnimatorImpl; + + +private: + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the constructor for this class. + // + // @since 2.0 + // + ControlAnimator(void); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Initializes this class. + // + // @since 2.0 + // @return An error code + // @param[in] source An instance of control class + // @exception E_SUCCESS The method is successful. + // @exception E_SYSTEM A system error has occurred. + // + result Construct(const Tizen::Ui::Control& source); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the copy constructor for this class. + // + // @since 2.0 + // + ControlAnimator(const ControlAnimator& animator); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Assigns the value of the specified instance to the current instance of %ControlAnimator. + + // + // @since 2.0 + // + ControlAnimator& operator =(const ControlAnimator& rhs); + + + friend class Tizen::Ui::_ControlImpl; + friend class FrameAnimator; +}; // ControlAnimator + + +}}} // Tizen::Ui::Animations + +#endif //_FUI_ANIM_CONTROL_ANIMATOR_H_ diff --git a/inc/FUiAnimDimensionAnimation.h b/inc/FUiAnimDimensionAnimation.h new file mode 100644 index 0000000..981a253 --- /dev/null +++ b/inc/FUiAnimDimensionAnimation.h @@ -0,0 +1,367 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimDimensionAnimation.h + * @brief This is the header file for the %DimensionAnimation class. + * + * This header file contains the declarations of the %DimensionAnimation class. + */ + +#ifndef _FUI_ANIM_DIMENSION_ANIMATION_H_ +#define _FUI_ANIM_DIMENSION_ANIMATION_H_ + +#include +#include + +#include + +namespace Tizen { namespace Ui { namespace Animations +{ + +/** + * @class DimensionAnimation + * @brief This class animates the Tizen::Graphics::Dimension object. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %DimensionAnimation class animates an object from a Tizen::Graphics::Dimension value to another %Tizen::Graphics::Dimension value + * based on the specified interpolator type. + * + * For more information on the class features, see Animating UI Controls. + */ +class _OSP_EXPORT_ DimensionAnimation + : public AnimationBase +{ +public: + /** + * Initializes this instance of %DimensionAnimation with the specified parameters. + * + * @since 2.0 + * + * @param[in] startValue The start value for the dimension animation + * @param[in] endValue The end value for the dimension animation + * @param[in] duration The duration of animation in milliseconds + * @param[in] interpolator The type of interpolator used for the animation's intermediate value calculation + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The value of the specified parameter is negative or the interpolator is of an invalid type. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + DimensionAnimation(const Tizen::Graphics::Dimension& startValue, const Tizen::Graphics::Dimension& endValue, long duration, AnimationInterpolatorType interpolator); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~DimensionAnimation(void); + + /** + * This is the copy constructor for the %DimensionAnimation class. + * + * @since 2.0 + * + * @param[in] dimensionAnimation An instance of %DimensionAnimation + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + DimensionAnimation(const DimensionAnimation& dimensionAnimation); + + + /** + * Assigns the value of the specified instance to the current instance of %DimensionAnimation. + * + * @since 2.0 + * + * @param[in] rhs An instance of %DimensionAnimation + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + DimensionAnimation& operator =(const DimensionAnimation& rhs); + + + /** + * Checks whether the specified instance and current instance of %DimensionAnimation have equal animation values. + * + * @since 2.0 + * + * @return @c true if the animation of the two instances of %DimensionAnimation are equal, @n + * else @c false + * @param[in] rhs An instance of %DimensionAnimation + */ + bool operator ==(const DimensionAnimation& rhs) const; + + + /** + * Checks whether the specified instance and current instance of %DimensionAnimation have different animation values. + * + * @since 2.0 + * + * @return @c true if the values of the animations of the two instances of %DimensionAnimation are not equal, @n + * else @c false + * @param[in] rhs An instance of %DimensionAnimation + */ + bool operator !=(const DimensionAnimation& rhs) const; + + + /** + * Checks whether the value of the current instance of %DimensionAnimation equals the value of the specified instance. + * + * @since 2.0 + * + * @return @c true if the value of the current instance equals the value of the specified instance, @n + * else @c false + * @param[in] obj An instance of %DimensionAnimation + * @remarks The %DimensionAnimation class has a semantic value that means this method checks whether the two instances have the same animation. + */ + virtual bool Equals(const Tizen::Base::Object& obj) const; + + + /** + * Gets the hash value of the current instance. + * + * @since 2.0 + * + * @return The hash value of the current instance + * @remarks The two equal instances must return the same hash value. For better performance, the used hash function must generate a random + * distribution for all inputs. + */ + virtual int GetHashCode(void) const; + + + /** + * Sets the anchor points for the animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] anchorX The X value of the anchor at which the control's animation is performed + * @param[in] anchorY The Y value of the anchor at which the control's animation is performed + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @remarks A default anchor point value is (0.0, 0.0). The range of an anchor point is @c 0.0 to @c 1.0. @n + * When the anchor point value is (0.0, 0.0), the object is scaled and the top-left corner of the object remains fixed. @n + * For all the other anchor point values, the position property is changed. + * If the anchor point value is (0.5, 0.5), the object is scaled with respect to the center. + * If the anchor point value is (1.0, 1.0), the object is scaled and the bottom-right corner of the object remains fixed. + */ + result SetAnchor(float anchorX, float anchorY); + + + /** + * Gets the anchor point associated with the animation. @n + * The default anchor point is (0.0, 0.0). + * + * @since 2.0 + * + * @param[out] anchorX The X value of the anchor at which the control's animation is performed + * @param[out] anchorY The Y value of the anchor at which the control's animation is performed + */ + void GetAnchor(float& anchorX, float& anchorY) const; + + + /** + * Gets the animated value for the current time. + * + * @since 2.0 + * + * @return An error code + * @param[in] currentTime The current time value of the animation play @n + * The value must be between @c 0 and the duration of the animation. + * @param[out] animatedValue The animated value for the current time passed as the input parameter + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * + */ + result GetAnimatedValue(long currentTime, Tizen::Graphics::Dimension& animatedValue) const; + + + /** + * Adds a keyframe to the animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] time The time stamp + * @param[in] value The value at the specified @c time + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks If @c time is greater than the duration, it will become the new duration and @c value becomes the new @c endValue. @n + * Also, the old duration and @c endValue will be added as a new key frame entry in the list. @n + * If a key-value pair with the current key already exists, the old value will be overwritten with the new one. @n + * An exception will be returned if @c time is equal to @c 0 or the duration of the animation. + */ + result AddKeyFrame(long time, const Tizen::Graphics::Dimension& value); + + + /** + * Gets the keyframe at a particular index in this animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index value in the keyframe list that is sorted in an increasing order of time + * @param[out] time The time stamp at the specified @c index + * @param[out] value The value at the specified @c index + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is out of range. + * @exception E_SYSTEM A system error has occurred. + * @remarks The @c time and @c value returned is the one present at the index of the sorted map list(sorted with respect to key). @n + * For example, if the user adds key-frame in the order (10,value1), (20,value2), (5,value3) and then GetKeyFrameAt(0,time,value) is called, the + * pair returned is (5,value3). + */ + result GetKeyFrameAt(int index, long& time, Tizen::Graphics::Dimension& value) const; + + + /** + * Removes the passed keyframe object from the keyframe list. + * + * @since 2.0 + * + * @return An error code + * @param[in] time The key frame time + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The keyframe @c time value is invalid. + * @exception E_OBJ_NOT_FOUND The keyframe @c time value is not found in the keyframe List. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveKeyFrame(long time); + + + /** + * Removes the keyframe present at the specified @c index from the keyframe list. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index value in the Keyframe list @n + * The value is sorted in an increasing order of time. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index parameter is out of range. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveKeyFrameAt(int index); + + + /** + * Removes all the keyframes from the animation. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveAllKeyFrames(void); + + + /** + * Sets the start value of the animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] startValue The start value of the animation to set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result SetStartValue(const Tizen::Graphics::Dimension& startValue); + + + /** + * Sets the end value of the animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] endValue The end value of the animation to set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result SetEndValue(const Tizen::Graphics::Dimension& endValue); + + + /** + * Gets the start value of the animation. + * + * @since 2.0 + * + * @return The start value + */ + Tizen::Graphics::Dimension GetStartValue(void) const; + + + /** + * Gets the end value of the animation. + * + * @since 2.0 + * + * @return The end value + */ + Tizen::Graphics::Dimension GetEndValue(void) const; + + + /** + * Gets the animation type information of this instance. + * + * @since 2.0 + * + * @return The animation type information of this instance + */ + virtual AnimationType GetType(void) const; + + +protected: + friend class _DimensionAnimationImpl; + + + // + // This variable is for internal use only. Using this variable can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // The variable for internal usage. + // + // @since 2.0 + // + class _DimensionAnimationImpl* _pDimensionAnimationImpl; + + +private: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the default constructor for this class. + // + // @since 2.0 + // + DimensionAnimation(void); +}; // DimensionAnimation + + +}}} // Tizen::Ui::Animations + +#endif // _FUI_ANIM_DIMENSION_ANIMATION_H_ diff --git a/inc/FUiAnimDiscreteTimingFunction.h b/inc/FUiAnimDiscreteTimingFunction.h new file mode 100644 index 0000000..c55c61b --- /dev/null +++ b/inc/FUiAnimDiscreteTimingFunction.h @@ -0,0 +1,142 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimDiscreteTimingFunction.h + * @brief This is the header file for the %DiscreteTimingFunction class. + * + * This header file contains the declarations of the %DiscreteTimingFunction class. + */ + +#ifndef _FUI_ANIM_DISCRETE_TIMING_FUNCTION_H_ +#define _FUI_ANIM_DISCRETE_TIMING_FUNCTION_H_ + +#include + +namespace Tizen { namespace Ui { namespace Animations +{ + +/** + * @class DiscreteTimingFunction + * @brief This class stores the information of a discrete timing function. + * + * @since 2.0 + * + * The %DiscreteTimingFunction class provides discrete timing function related information. + * + * For more information on the class features, see Timing Function. + * + */ +class _OSP_EXPORT_ DiscreteTimingFunction + : public Tizen::Base::Object + , public IVisualElementAnimationTimingFunction +{ +public: + + /** + * This is the constructor for this class. + * + * @since 2.0 + */ + DiscreteTimingFunction(void); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~DiscreteTimingFunction(void); + + + /** + * Calculates the progress(pace) of an animation regarding the time elapsed. + * + * @since 2.0 + * + * @return The progress(pace) value calculated with trigger time progress value @n + * @c 0 and @c 1 are the start and end values of an animation, respectively. + * @param[in] timeProgress The time progress value @n + * This must be in the range @c 0.0 to @c 1.0. + */ + virtual float CalculateProgress(float timeProgress) const; + + + /** + * Sets the time progress value of trigger point. + * + * @since 2.0 + * + * @return An error code + * @param[in] timeProgress The time progress value of trigger point @n + * This must be in the range @c 0.0 to @c 1.0 and cannot be @c 0.0 and @c 1.0. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The value of the specified parameter is less than @c 0 or greater than @c 1. + * @see GetTriggerTimeProgress() + */ + result SetTriggerTimeProgress(float timeProgress); + + + /** + * Gets the time progress value of trigger point. + * + * @since 2.0 + * + * @return The time progress value of trigger point + * @see SetTriggerTimeProgress() + */ + float GetTriggerTimeProgress(void) const; + + +private: + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the assignment operator for this class. + // + // @since 2.0 + // + DiscreteTimingFunction(const DiscreteTimingFunction& rhs); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Assigns the value of the specified instance to the current instance of %DiscreteTimingFunction. + // + // @since 2.0 + // + DiscreteTimingFunction& operator =(const DiscreteTimingFunction& rhs); + + +private: + + /** + * The time progress value of trigger point. + * + * @since 2.0 + */ + float __triggerTimeProgress; +}; // DiscreteTimingFunction + + +}}} // Tizen::Ui::Animations + +#endif //_FUI_ANIM_DISCRETE_TIMING_FUNCTION_H_ diff --git a/inc/FUiAnimDisplayContext.h b/inc/FUiAnimDisplayContext.h new file mode 100644 index 0000000..58e69c1 --- /dev/null +++ b/inc/FUiAnimDisplayContext.h @@ -0,0 +1,141 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimDisplayContext.h + * @brief This is the header file for the %DisplayContext class. + * + * This header file contains the declarations of the %DisplayContext class. + */ + +#ifndef _FUI_ANIM_DISPLAY_CONTEXT_H_ +#define _FUI_ANIM_DISPLAY_CONTEXT_H_ + +#include + +namespace Tizen { namespace Ui { namespace Animations +{ +class _DisplayContextImpl; + +/** + * @class DisplayContext + * @brief This class represents the display resources for the displayable objects. + * + * @since 2.0 + * + * The %DisplayContext class represents the display context of the window. + * The display context is a set of display resources that includes VisualElements, VisualElementSurfaces, and frame buffer, + * and it is managed by Tizen::Ui::Controls::Window. + */ +class _OSP_EXPORT_ DisplayContext + : public Tizen::Base::Object +{ +protected: + /** + * This default constructor is intentionally declared as private to prohibit creation of an instance by a user. + * + * @since 2.0 + * + * @remarks The %DisplayContext instance cannot be created, + * it is offered by the Tizen::Ui::Controls::Window::GetDisplayContext() method. + * @see Window::GetDisplayContext() + */ + DisplayContext(void); + + + /** + * This destructor is intentionally declared as private to implement the Singleton semantic. + * + * @since 2.0 + * + * @remarks The display context is released when the Tizen::Ui::Controls::Window instance is destroyed. + * + */ + virtual ~DisplayContext(void); + + +private: + + /** + * The implementation of this copy constructor is intentionally blank to prohibit copying of objects. + * + * @since 2.0 + */ + DisplayContext(const DisplayContext& rhs); + + + /** + * The implementation of this assignment constructor is intentionally blank to prohibit assignment of objects. + * + * @since 2.0 + */ + DisplayContext& operator =(const DisplayContext& rhs); + + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void DisplayContext_Reserved1(void) {} + + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void DisplayContext_Reserved2(void) {} + + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void DisplayContext_Reserved3(void) {} + + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void DisplayContext_Reserved4(void) {} + + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void DisplayContext_Reserved5(void) {} + +protected: + friend class _DisplayContextImpl; + _DisplayContextImpl* _pDisplayContextImpl; +}; // class DisplayContext + +}}} //namespace Tizen { namespace Ui { namespace Animations + +#endif //_FUI_ANIM_DISPLAY_CONTEXT_H_ diff --git a/inc/FUiAnimEaseElasticInTimingFunction.h b/inc/FUiAnimEaseElasticInTimingFunction.h new file mode 100644 index 0000000..fcbbf52 --- /dev/null +++ b/inc/FUiAnimEaseElasticInTimingFunction.h @@ -0,0 +1,142 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimEaseElasticInTimingFunction.h + * @brief This is the header file for the %EaseElasticInTimingFunction class. + * + * This header file contains the declarations of the %EaseElasticInTimingFunction class. + */ + +#ifndef _FUI_ANIM_EASE_ELASTIC_IN_TIMING_FUNCTION_H_ +#define _FUI_ANIM_EASE_ELASTIC_IN_TIMING_FUNCTION_H_ + +#include + +namespace Tizen { namespace Ui { namespace Animations +{ + +/** + * @class EaseElasticInTimingFunction + * @brief This class stores the information of an ease-elastic-in timing function. + * + * @since 2.0 + * + * The %EaseElasticInTimingFunction class provides ease-elastic-in timing function related information. + * + * For more information on the class features, see Timing Function. + * + */ +class _OSP_EXPORT_ EaseElasticInTimingFunction + : public Tizen::Base::Object + , public IVisualElementAnimationTimingFunction +{ +public: + + /** + * This is the constructor for this class. + * + * @since 2.0 + */ + EaseElasticInTimingFunction(void); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~EaseElasticInTimingFunction(void); + + + /** + * Calculates the progress(pace) of an animation regarding the time elapsed. + * + * @since 2.0 + * + * @return The progress(pace) value calculated by ease-elastic-in equation with period @n + * @c 0 and @c 1 are the start and end values of an animation, respectively. + * @param[in] timeProgress The time progress value @n + * This must be in the range @c 0.0 to @c 1.0. + */ + virtual float CalculateProgress(float timeProgress) const; + + + /** + * Sets the period value as period of sine curve. + * + * @since 2.0 + * + * @return An error code + * @param[in] period The period value @n + * This must be in the range @c 0.0 to @c 1.0 and cannot be @c 0.0 and @c 1.0. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The value of the specified parameter is @c 0.0 or negative. + * @see GetPeriod() + */ + result SetPeriod(float period); + + + /** + * Gets the period value. + * + * @since 2.0 + * + * @return The period value + * @see SetPeriod() + */ + float GetPeriod(void) const; + + +private: + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the assignment operator for this class. + // + // @since 2.0 + // + EaseElasticInTimingFunction(const EaseElasticInTimingFunction& rhs); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the copy constructor for the EaseElasticInTimingFunction class. + // + // @since 2.0 + // + EaseElasticInTimingFunction& operator= (const EaseElasticInTimingFunction& rhs); + + +private: + + /** + * The period value. + * + * @since 2.0 + */ + float __period; +}; // EaseElasticInTimingFunction + + +}}} // Tizen::Ui::Animations + +#endif //_FUI_ANIM_EASE_ELASTIC_IN_TIMING_FUNCTION_H_ diff --git a/inc/FUiAnimEaseElasticOutTimingFunction.h b/inc/FUiAnimEaseElasticOutTimingFunction.h new file mode 100644 index 0000000..d2b3bc3 --- /dev/null +++ b/inc/FUiAnimEaseElasticOutTimingFunction.h @@ -0,0 +1,142 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimEaseElasticOutTimingFunction.h + * @brief This is the header file for the %EaseElasticOutTimingFunction class. + * + * This header file contains the declarations of the %EaseElasticOutTimingFunction class. + */ + +#ifndef _FUI_ANIM_EASE_ELASTIC_OUT_TIMING_FUNCTION_H_ +#define _FUI_ANIM_EASE_ELASTIC_OUT_TIMING_FUNCTION_H_ + +#include + +namespace Tizen { namespace Ui { namespace Animations +{ + +/** + * @class EaseElasticOutTimingFunction + * @brief This class stores the information of an ease-elastic-out timing function. + * + * @since 2.0 + * + * The %EaseElasticOutTimingFunction class provides ease-elastic-out timing function related information. + * + * For more information on the class features, see Timing Function. + * + */ +class _OSP_EXPORT_ EaseElasticOutTimingFunction + : public Tizen::Base::Object + , public IVisualElementAnimationTimingFunction +{ +public: + + /** + * This is the constructor for this class. + * + * @since 2.0 + */ + EaseElasticOutTimingFunction(void); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~EaseElasticOutTimingFunction(void); + + + /** + * Calculates the progress(pace) of an animation regarding the time elapsed. + * + * @since 2.0 + * + * @return The progress(pace) value calculated by ease-elastic-out equation with period @n + * @c 0 and @c 1 are the start and end values of an animation, respectively. + * @param[in] timeProgress The time progress value @n + * This must be in the range @c 0.0 to @c 1.0. + */ + virtual float CalculateProgress(float timeProgress) const; + + + /** + * Sets the period value as period of sine curve. + * + * @since 2.0 + * + * @return An error code + * @param[in] period The period value @n + * This must be in the range @c 0.0 to @c 1.0 and cannot be @c 0.0 and @c 1.0. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The value of the specified parameter is @c 0.0 or negative. + * @see GetPeriod() + */ + result SetPeriod(float period); + + + /** + * Gets the period value. + * + * @since 2.0 + * + * @return The period value + * @see SetPeriod() + */ + float GetPeriod(void) const; + + +private: + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the assignment operator for this class. + // + // @since 2.0 + // + EaseElasticOutTimingFunction(const EaseElasticOutTimingFunction& rhs); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the copy constructor for the %EaseElasticOutTimingFunction class. + // + // @since 2.0 + // + EaseElasticOutTimingFunction& operator= (const EaseElasticOutTimingFunction& rhs); + + +private: + + /** + * The period value + * + * @since 2.0 + */ + float __period; +}; // EaseElasticOutTimingFunction + + +}}} // Tizen::Ui::Animations + +#endif //_FUI_ANIM_EASE_ELASTIC_OUT_TIMING_FUNCTION_H_ diff --git a/inc/FUiAnimEaseInOutTimingFunction.h b/inc/FUiAnimEaseInOutTimingFunction.h new file mode 100644 index 0000000..464b614 --- /dev/null +++ b/inc/FUiAnimEaseInOutTimingFunction.h @@ -0,0 +1,106 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimEaseInOutTimingFunction.h + * @brief This is the header file for the %EaseInOutTimingFunction class. + * + * This header file contains the declarations of the %EaseInOutTimingFunction class. + */ + +#ifndef _FUI_ANIM_EASE_IN_OUT_TIMING_FUNCTION_H_ +#define _FUI_ANIM_EASE_IN_OUT_TIMING_FUNCTION_H_ + +#include + +namespace Tizen { namespace Ui { namespace Animations +{ + +/** + * @class EaseInOutTimingFunction + * @brief This class stores the information of a ease-inout timing function. + * + * @since 2.0 + * + * The %EaseInOutTimingFunction class provides ease-inout timing function related information. + * + * For more information on the class features, see Timing Function. + * + */ +class _OSP_EXPORT_ EaseInOutTimingFunction + : public Tizen::Base::Object + , public IVisualElementAnimationTimingFunction +{ +public: + + /** + * This is the constructor for this class. + * + * @since 2.0 + */ + EaseInOutTimingFunction(void); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~EaseInOutTimingFunction(void); + + + /** + * Calculates the progress(pace) of an animation regarding the time elapsed. + * + * @since 2.0 + * + * @return The progress(pace) value calculated by ease-inout equation @n + * @c 0 and @c 1 are the start and end values of an animation, respectively. + * @param[in] timeProgress The time progress value @n + * This must be in the range @c 0.0 to @c 1.0. + */ + virtual float CalculateProgress(float timeProgress) const; + + +private: + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the assignment operator for this class. + // + // @since 2.0 + // + EaseInOutTimingFunction(const EaseInOutTimingFunction& rhs); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Assigns the value of the specified instance to the current instance of %EaseInOutTimingFunction. + // + // @since 2.0 + // + EaseInOutTimingFunction& operator =(const EaseInOutTimingFunction& rhs); +}; // EaseInOutTimingFunction + + +}}} // Tizen::Ui::Animations + +#endif //_FUI_ANIM_EASE_IN_OUT_TIMING_FUNCTION_H_ diff --git a/inc/FUiAnimEaseInTimingFunction.h b/inc/FUiAnimEaseInTimingFunction.h new file mode 100644 index 0000000..b057a6f --- /dev/null +++ b/inc/FUiAnimEaseInTimingFunction.h @@ -0,0 +1,104 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimEaseInTimingFunction.h + * @brief This is the header file for the %EaseInTimingFunction class. + * + * This header file contains the declarations of the %EaseInTimingFunction class. + */ + +#ifndef _FUI_ANIM_EASE_IN_TIMING_FUNCTION_H_ +#define _FUI_ANIM_EASE_IN_TIMING_FUNCTION_H_ + +#include + +namespace Tizen { namespace Ui { namespace Animations +{ + + +/** + * @class EaseInTimingFunction + * @brief This class stores the information of a ease-in timing function. + * + * @since 2.0 + * + * The %EaseInTimingFunction class provides ease-in timing function related information. + */ +class _OSP_EXPORT_ EaseInTimingFunction + : public Tizen::Base::Object + , public IVisualElementAnimationTimingFunction +{ +public: + + /** + * This is the constructor for this class. + * + * @since 2.0 + */ + EaseInTimingFunction(void); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~EaseInTimingFunction(void); + + + /** + * Calculates the progress(pace) of an animation regarding the time elapsed. + * + * @since 2.0 + * + * @return The progress(pace) value calculated by ease-in equation @n + * @c 0 and @c 1 are the start and end values of an animation, respectively. + * @param[in] timeProgress The time progress value @n + * This must be in the range @c 0.0 to @c 1.0. + */ + virtual float CalculateProgress(float timeProgress) const; + + +private: + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the assignment operator for this class. + // + // @since 2.0 + // + EaseInTimingFunction(const EaseInTimingFunction& rhs); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Assigns the value of the specified instance to the current instance of %EaseInTimingFunction. + // + // @since 2.0 + // + EaseInTimingFunction& operator =(const EaseInTimingFunction& rhs); +}; // EaseInTimingFunction + + +}}} // Tizen::Ui::Animations + +#endif //_FUI_ANIM_EASE_IN_TIMING_FUNCTION_H_ diff --git a/inc/FUiAnimEaseOutInTimingFunction.h b/inc/FUiAnimEaseOutInTimingFunction.h new file mode 100644 index 0000000..a622fbc --- /dev/null +++ b/inc/FUiAnimEaseOutInTimingFunction.h @@ -0,0 +1,107 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimEaseOutInTimingFunction.h + * @brief This is the header file for the %EaseOutInTimingFunction class. + * + * This header file contains the declarations of the %EaseOutInTimingFunction class. + */ + +#ifndef _FUI_ANIM_EASE_OUT_IN_TIMING_FUNCTION_H_ +#define _FUI_ANIM_EASE_OUT_IN_TIMING_FUNCTION_H_ + +#include + +namespace Tizen { namespace Ui { namespace Animations +{ + + +/** + * @class EaseOutInTimingFunction + * @brief This class stores the information of a ease-outin timing function. + * + * @since 2.0 + * + * The %EaseOutInTimingFunction class provides ease-outin timing function related information. + * + * For more information on the class features, see Timing Function. + * + */ +class _OSP_EXPORT_ EaseOutInTimingFunction + : public Tizen::Base::Object + , public IVisualElementAnimationTimingFunction +{ +public: + + /** + * This is the constructor for this class. + * + * @since 2.0 + */ + EaseOutInTimingFunction(void); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~EaseOutInTimingFunction(void); + + + /** + * Calculates the progress(pace) of an animation regarding the time elapsed. + * + * @since 2.0 + * + * @return The progress(pace) value calculated by ease-outin equation @n + * @c 0 and @c 1 are the start and end values of an animation, respectively. + * @param[in] timeProgress The time progress value @n + * This must be in the range @c 0.0 to @c 1.0. + */ + virtual float CalculateProgress(float timeProgress) const; + + +private: + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the assignment operator for this class. + // + // @since 2.0 + // + EaseOutInTimingFunction(const EaseOutInTimingFunction& rhs); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Assigns the value of the specified instance to the current instance of %EaseOutInTimingFunction. + // + // @since 2.0 + // + EaseOutInTimingFunction& operator =(const EaseOutInTimingFunction& rhs); +}; // EaseOutInTimingFunction + + +}}} // Tizen::Ui::Animations + +#endif //_FUI_ANIM_EASE_OUT_IN_TIMING_FUNCTION_H_ diff --git a/inc/FUiAnimEaseOutTimingFunction.h b/inc/FUiAnimEaseOutTimingFunction.h new file mode 100644 index 0000000..d69baa7 --- /dev/null +++ b/inc/FUiAnimEaseOutTimingFunction.h @@ -0,0 +1,104 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimEaseOutTimingFunction.h + * @brief This is the header file for the %EaseOutTimingFunction class. + * + * This header file contains the declarations of the %EaseOutTimingFunction class. + */ + +#ifndef _FUI_ANIM_EASE_OUT_TIMING_FUNCTION_H_ +#define _FUI_ANIM_EASE_OUT_TIMING_FUNCTION_H_ + +#include + +namespace Tizen { namespace Ui { namespace Animations +{ + + +/** + * @class EaseOutTimingFunction + * @brief This class stores the information of an ease-out timing function. + * + * @since 2.0 + * + * The %EaseOutTimingFunction class provides ease-out timing function related information. + */ +class _OSP_EXPORT_ EaseOutTimingFunction + : public Tizen::Base::Object + , public IVisualElementAnimationTimingFunction +{ +public: + + /** + * This is the constructor for this class. + * + * @since 2.0 + */ + EaseOutTimingFunction(void); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~EaseOutTimingFunction(void); + + + /** + * Calculates the progress(pace) of an animation regarding the time elapsed. + * + * @since 2.0 + * + * @return The progress(pace) value calculated by ease-out equation @n + * @c 0 and @c 1 are the start and end values of an animation, respectively. + * @param[in] timeProgress The time progress value @n + * This must be in the range @c 0.0 to @c 1.0. + */ + virtual float CalculateProgress(float timeProgress) const; + + +private: + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the assignment operator for this class. + // + // @since 2.0 + // + EaseOutTimingFunction(const EaseOutTimingFunction& rhs); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Assigns the value of the specified instance to the current instance of %EaseOutTimingFunction. + // + // @since 2.0 + // + EaseOutTimingFunction& operator =(const EaseOutTimingFunction& rhs); +}; // EaseOutTimingFunction + + +}}} // Tizen::Ui::Animations + +#endif //_FUI_ANIM_EASE_OUT_TIMING_FUNCTION_H_ diff --git a/inc/FUiAnimExpInTimingFunction.h b/inc/FUiAnimExpInTimingFunction.h new file mode 100644 index 0000000..75c80ba --- /dev/null +++ b/inc/FUiAnimExpInTimingFunction.h @@ -0,0 +1,150 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimExpInTimingFunction.h + * @brief This is the header file for the %ExpInTimingFunction class. + * + * This header file contains the declarations of the %ExpInTimingFunction class. + */ + +#ifndef _FUI_ANIM_EXP_IN_TIMING_FUNCTION_H_ +#define _FUI_ANIM_EXP_IN_TIMING_FUNCTION_H_ + +#include + +namespace Tizen { namespace Ui { namespace Animations +{ + + +/** + * @class ExpInTimingFunction + * @brief This class stores the information of an exp-in timing function. + * + * @since 2.0 + * + * The %ExpInTimingFunction class provides exp-in timing function related information. + * + * For more information on the class features, see Timing Function. + * + */ +class _OSP_EXPORT_ ExpInTimingFunction + : public Tizen::Base::Object + , public IVisualElementAnimationTimingFunction +{ +public: + + /** + * This is the constructor for this class. + * + * @since 2.0 + */ + ExpInTimingFunction(void); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~ExpInTimingFunction(void); + + + /** + * Calculates the progress(pace) of an animation regarding the time elapsed. + * + * @since 2.0 + * + * @return The progress(pace) value calculated by exp-in equation with scale value @n + * @c 0 and @c 1 are the start and end values of an animation, respectively. + * @param[in] timeProgress The time progress value @n + * This must be in the range @c 0.0 to @c 1.0. + */ + virtual float CalculateProgress(float timeProgress) const; + + + /** + * Sets the scale value. + * + * @since 2.0 + * + * @return An error code + * @param[in] scale The scale value + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The value of the specified parameter is @c 0.0 or negative. + * @see GetScaleValue() + */ + result SetScaleValue(float scale); + + + /** + * Gets the scale value. + * + * @since 2.0 + * + * @return The scale value + * @see SetScaleValue() + */ + float GetScaleValue(void) const; + + +private: + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the assignment operator for this class. + // + // @since 2.0 + // + ExpInTimingFunction(const ExpInTimingFunction& rhs); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Assigns the value of the specified instance to the current instance of %ExpInTimingFunction. + // + // @since 2.0 + // + ExpInTimingFunction& operator =(const ExpInTimingFunction& rhs); + + +private: + + /** + * The scale value. + * + * @since 2.0 + */ + float __scale; + + + /** + * The divisor for exponential timing function. + * + * @since 2.0 + */ + float __divisor; +}; // ExpInTimingFunction + + +}}} // Tizen::Ui::Animations + +#endif //_FUI_ANIM_EXP_IN_TIMING_FUNCTION_H_ diff --git a/inc/FUiAnimExpOutTimingFunction.h b/inc/FUiAnimExpOutTimingFunction.h new file mode 100644 index 0000000..d08cd1d --- /dev/null +++ b/inc/FUiAnimExpOutTimingFunction.h @@ -0,0 +1,148 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimExpOutTimingFunction.h + * @brief This is the header file for the %ExpOutTimingFunction class. + * + * This header file contains the declarations of the %ExpOutTimingFunction class. + */ + +#ifndef _FUI_ANIM_EXP_OUT_TIMING_FUNCTION_H_ +#define _FUI_ANIM_EXP_OUT_TIMING_FUNCTION_H_ + +#include + +namespace Tizen { namespace Ui { namespace Animations +{ + + +/** + * @class ExpOutTimingFunction + * @brief This class stores the information of an exp-out timing function. + * + * @since 2.0 + * + * The %ExpOutTimingFunction class provides exp-out timing function related information. + * + * For more information on the class features, see Timing Function. + * + */ +class _OSP_EXPORT_ ExpOutTimingFunction + : public Tizen::Base::Object + , public IVisualElementAnimationTimingFunction +{ +public: + + /** + * This is the constructor for this class. + * + * @since 2.0 + */ + ExpOutTimingFunction(void); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~ExpOutTimingFunction(void); + + + /** + * Calculates the progress(pace) of an animation regarding the time elapsed. + * + * @since 2.0 + * + * @return The progress(pace) value calculated by exp-in equation with scale value @n + * @c 0 and @c 1 are the start and end values of an animation, respectively. + * @param[in] timeProgress The time progress value @n + * This must be in the range @c 0.0 to @c 1.0. + */ + virtual float CalculateProgress(float timeProgress) const; + + + /** + * Sets the scale value. + * + * @since 2.0 + * + * @return An error code + * @param[in] scale The scale value + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The value of the specified parameter is @c 0.0 or negative. + * @see GetScaleValue() + */ + result SetScaleValue(float scale); + + + /** + * Gets the scale value. + * + * @since 2.0 + * + * @return The scale value + * @see SetScaleValue() + */ + float GetScaleValue(void) const; + +private: + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the assignment operator for this class. + // + // @since 2.0 + // + ExpOutTimingFunction(const ExpOutTimingFunction& rhs); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Assigns the value of the specified instance to the current instance of %ExpOutTimingFunction. + // + // @since 2.0 + // + ExpOutTimingFunction& operator =(const ExpOutTimingFunction& rhs); + + +private: + + /** + * The scale value. + * + * @since 2.0 + */ + float __scale; + + /** + * The divisor for exponential timing function. + * + * @since 2.0 + */ + float __divisor; +}; // ExpOutTimingFunction + + +}}} // Tizen::Ui::Animations + +#endif //_FUI_ANIM_EXP_OUT_TIMING_FUNCTION_H_ diff --git a/inc/FUiAnimFloatAnimation.h b/inc/FUiAnimFloatAnimation.h new file mode 100644 index 0000000..360c417 --- /dev/null +++ b/inc/FUiAnimFloatAnimation.h @@ -0,0 +1,333 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimFloatAnimation.h + * @brief This is the header file for the %FloatAnimation class. + * + * This header file contains the declaration of the %FloatAnimation class. + */ + +#ifndef _FUI_ANIM_FLOAT_ANIMATION_H_ +#define _FUI_ANIM_FLOAT_ANIMATION_H_ + +#include +#include + +namespace Tizen { namespace Ui { namespace Animations +{ + +/** + * @class FloatAnimation + * @brief This class animates an object from a float value to another float value. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %FloatAnimation class animates an object from a float value to another float value based on the specified interpolator type. + * + * For more information on the class features, see Animating UI Controls. + * + */ +class _OSP_EXPORT_ FloatAnimation + : public AnimationBase +{ +public: + /** + * Initializes this instance of %FloatAnimation with the specified parameters. + * + * @since 2.0 + * + * @param[in] startValue The start value for float animation + * @param[in] endValue The end value for float animation + * @param[in] duration The duration of animation in milliseconds + * @param[in] interpolator The type of interpolation used for the intermediate value calculation of the animation + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The value of the specified parameter is negative or the interpolator is of an invalid type. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + FloatAnimation(float startValue, float endValue, long duration, AnimationInterpolatorType interpolator); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~FloatAnimation(void); + + + /** + * Assigns the value of the specified instance to the current instance of %FloatAnimation. + * + * @since 2.0 + * + * @param[in] floatAnimation An instance of %FloatAnimation + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + FloatAnimation(const FloatAnimation& floatAnimation); + + + /** + * Assigns the value of the specified instance to the current instance of %FloatAnimation. + * + * @since 2.0 + * + * @param[in] rhs An instance of %FloatAnimation + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + FloatAnimation& operator =(const FloatAnimation& rhs); + + + /** + * Checks whether the specified instance and current instance of %FloatAnimation have equal animation values. + * + * @since 2.0 + * + * @return @c true if the animation of the two instances of %FloatAnimation are equal, @n + * else @c false + * @param[in] rhs An instance of %FloatAnimation + */ + bool operator ==(const FloatAnimation& rhs) const; + + + /** + * Checks whether the specified instance and current instance of %FloatAnimation have different animation values. + * + * @since 2.0 + * + * @return @c true if the values of the animations of the two instances of %FloatAnimation are not equal, @n + * else @c false + * @param[in] rhs An instance of %FloatAnimation + */ + bool operator !=(const FloatAnimation& rhs) const; + + + /** + * Checks whether the value of the current instance of %FloatAnimation equals the value of the specified instance. + * + * @since 2.0 + * + * @return @c true if the value of the current instance equals the value of the specified instance, @n + * else @c false + * @param[in] obj An instance of %FloatAnimation + * @remarks The %FloatAnimation class has a semantic value. @n + * This means that this method checks whether the two instances have the same animation. + */ + virtual bool Equals(const Tizen::Base::Object& obj) const; + + + /** + * Gets the hash value of the current instance. + * + * @since 2.0 + * + * @return The hash value of the current instance + * @remarks The two equal instances must return the same hash value. For better performance, the used hash function must generate a random distribution + * for all inputs. + */ + virtual int GetHashCode(void) const; + + + /** + * Gets the animated value for the current time. + * + * @since 2.0 + * + * @return An error code + * @param[in] currentTime The current time value of the animation play @n + * The value must be between @c 0 and the duration of the animation. + * @param[out] animatedValue The animated value for the @c currentTime passed as input + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result GetAnimatedValue(long currentTime, float& animatedValue) const; + + + /** + * Adds a key frame to the animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] time The time stamp + * @param[in] value The value at the specified @c time + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks If @c time is greater than the duration, it becomes the new @c duration and value becomes the new @c endValue. + * Also the old @c duration and @c endValue are added as a new key frame entry in the list. + * @remarks If a key-value pair with the current key already exists, the old value is overwritten with the new value. + * @remarks An exception is returned if the @c time is equal to @c 0 or the duration of the animation. + */ + result AddKeyFrame(long time, float value); + + + /** + * Gets the keyframe at a particular index in this animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index value in the Keyframe list @n + * This value is sorted in an increasing order of time. + * @param[out] time The time stamp at the specified @c index + * @param[out] value The value at the specified @c index + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified index is out of range. + * @exception E_SYSTEM A system error has occurred. + * @remarks The @c time and @c value returned, are the one present at the index of the sorted map list (sorted with respect to key). + * For example, if the user adds keyframe in the order (10,value1), (20,value2), (5,value3), and + * the GetKeyFrameAt (0,time,value) is called, the pair returned is (5,value3). + */ + result GetKeyFrameAt(int index, long& time, float& value) const; + + + /** + * Removes the passed keyframe object from the keyframe list. + * + * @since 2.0 + * + * @return An error code + * @param[in] time The key frame time + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c time is invalid. + * @exception E_OBJ_NOT_FOUND The specified @c time is not found in the KeyFrame List. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveKeyFrame(long time); + + + /** + * Removes the keyframe present at the specified @c index from the keyframe list. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index value in the Keyframe list @n + * This value is sorted in an increasing order of time. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is out of range. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveKeyFrameAt(int index); + + + /** + * Removes all the keyframes from the animation. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveAllKeyFrames(void); + + + /** + * Sets the start value of the animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] startValue The start value of the animation to set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetStartValue(float startValue); + + + /** + * Sets the end value of the animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] endValue The end value of the animation to set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetEndValue(float endValue); + + + /** + * Gets the start value of the animation. + * + * @since 2.0 + * + * @return The start value + */ + float GetStartValue(void) const; + + + /** + * Gets the end value of the animation. + * + * @since 2.0 + * + * @return The end value + */ + float GetEndValue(void) const; + + + /** + * Gets the type information of this instance. + * + * @since 2.0 + * + * @return The type information of this instance + */ + virtual AnimationType GetType(void) const; + + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the default constructor for this class. + // + // @since 2.0 + // + FloatAnimation(void); + + + friend class _FloatAnimationImpl; + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // The variable for internal usage. + // + // @since 2.0 + // + class _FloatAnimationImpl* _pFloatAnimationImpl; +}; // FloatAnimation + + +}}} // Tizen::Ui::Animations + +#endif // _FUI_ANIM_FLOAT_ANIMATION_H_ diff --git a/inc/FUiAnimFrameAnimator.h b/inc/FUiAnimFrameAnimator.h new file mode 100644 index 0000000..683632d --- /dev/null +++ b/inc/FUiAnimFrameAnimator.h @@ -0,0 +1,274 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimFrameAnimator.h + * @brief This is the header file for the %FrameAnimator class. + * + * This header file contains the declarations of the %FrameAnimator class. + */ + +#ifndef _FUI_ANIM_FRAME_ANIMATOR_H_ +#define _FUI_ANIM_FRAME_ANIMATOR_H_ + +#include + + +namespace Tizen { namespace Ui { namespace Controls +{ +class Form; +class _FrameImpl; +} } } + +namespace Tizen { namespace Ui { namespace Animations +{ + + +/** + * @class FrameAnimator + * @brief This class defines the animation methods for Frame. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %FrameAnimator class is used to control the animations operated on a Frame. + * + * For more information on the class features, see Animating a Form Transition. + * + */ +class _OSP_EXPORT_ FrameAnimator + : public Tizen::Base::Object +{ +public: + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~FrameAnimator(void); + + + /** + * Adds an IFrameAnimatorEventListener instance to the current instance of the frame. @n + * The added listener can listen to events on the given event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The listener to add + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The animation support is unavailable. + * @exception E_OBJ_ALREADY_EXIST The specified @c listener is already added. + * @exception E_SYSTEM A system error has occurred. + */ + result AddFrameAnimatorEventListener(IFrameAnimatorEventListener& listener); + + + /** + * Removes an IFrameAnimatorEventListener instance from the current instance of the frame. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The listener to remove + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The animation support is unavailable. + * @exception E_OBJ_NOT_FOUND The specified @c listener is not found. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveFrameAnimatorEventListener(IFrameAnimatorEventListener& listener); + + + /** + * Gets the animation status of the frame animator. + * + * @since 2.0 + * + * @return The animation state of the frame animator + */ + AnimatorStatus GetStatus(void) const; + + + /** + * Sets the specified form as the current form of the frame with an animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] form The form object to set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_SYSTEM A system error has occurred. + * @remarks Control::Invalidate() need not be called to display the form. @n + * To select the animation to be used during this method, use SetFormTransitionAnimation() before calling this method. + */ + result SetCurrentForm(const Tizen::Ui::Controls::Form& form); + + + /** + * Sets the type of the form transition animation. + * + * @since 2.0 + * + * @param[in] animation The type of form transition animation to set + * @param[in] duration The duration of animation in milliseconds @n + * The maximum duration is one second. + * @param[in] interpolator The type of interpolator used for the intermediate value calculation of the animation + */ + void SetFormTransitionAnimation(FrameAnimatorFormTransitionAnimation animation, long duration, AnimationInterpolatorType interpolator); + + + /** + * Gets the type of the form transition animation. + * + * @since 2.0 + * + * @param[out] animation The type of form transition animation used + * @param[out] duration The duration of animation in milliseconds + * @param[out] interpolator The type of interpolator used for the intermediate value calculation of the animation + */ + void GetFormTransitionAnimation(FrameAnimatorFormTransitionAnimation& animation, long& duration, AnimationInterpolatorType& interpolator) const; + + + /** + * Sets the control points for the Bezier interpolator. @n + * The %SetFormTransitionBezierControlPoints() method is supported only if the interpolator is @c ANIMATION_INTERPOLATOR_BEZIER. + * + * @since 2.0 + * + * @return An error code + * @param[in] time1 The control point 1 - Time @n + * The time must be within the range @c 0.0 to @c 1.0. + * @param[in] value1 The control point 1 - Value @n + * The value must be within the range @c 0.0 to @c 1.0. + * @param[in] time2 The control point 2 - Time @n + * The time must be within the range @c 0.0 to @c 1.0. + * @param[in] value2 The control point 2 - Value @n + * The value must be within the range @c 0.0 to @c 1.0. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The interpolator of this instance is not ANIMATION_INTERPOLATOR_BEZIER. + * @exception E_INVALID_ARG A specified input parameter is invalid. + */ + result SetFormTransitionBezierControlPoints(float time1, float value1, float time2, float value2); + + + /** + * Gets the control points of the Bezier interpolator. @n + * The %GetFormTransitionBezierControlPoints() method is supported only if the interpolator is @c ANIMATION_INTERPOLATOR_BEZIER. @n + * Therefore, @c 0 will be returned for other interpolators. + * + * @since 2.0 + * + * @return An error code + * @param[out] time1 The control point 1 - Time + * @param[out] value1 The control point 1 - Value + * @param[out] time2 The control point 2 - Time + * @param[out] value2 The control point 2 - Value + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The interpolator of this instance is not ANIMATION_INTERPOLATOR_BEZIER. + */ + result GetFormTransitionBezierControlPoints(float& time1, float& value1, float& time2, float& value2) const; + + + /** + * Stops all the animations that are being played and jumps to the final frame of the animation. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result StopAllAnimations(void); + + +protected: + + friend class _FrameAnimatorImpl; + + + // + // This variable is for internal use only. Using this variable can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // The variable for internal usage. + // + // @since 2.0 + // + class _FrameAnimatorImpl* _pFrameAnimatorImpl; + + +private: + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the constructor for this class. + // + // @since 2.0 + // + FrameAnimator(void); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Initializes this class. + // + // @since 2.0 + // @return An error code + // @param[in] source An instance of the Frame class + // @exception E_SUCCESS The method is successful. + // @exception E_SYSTEM A system error has occurred. + // + result Construct(const Tizen::Ui::Controls::Frame& source); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the copy constructor for the %FrameAnimator class. + // + // @since 2.0 + // + FrameAnimator(const FrameAnimator& rhs); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Assigns the value of the specified instance to the current instance of %FrameAnimator. + // + // @since 2.0 + // + FrameAnimator& operator =(const FrameAnimator& rhs); + + + friend class Tizen::Ui::Controls::_FrameImpl; +}; // FrameAnimator + + +}}} // Tizen::Ui::Animations + +#endif //_FUI_ANIM_FRAME_ANIMATOR_H_ diff --git a/inc/FUiAnimIAnimationTransactionEventListener.h b/inc/FUiAnimIAnimationTransactionEventListener.h new file mode 100644 index 0000000..c7b11c0 --- /dev/null +++ b/inc/FUiAnimIAnimationTransactionEventListener.h @@ -0,0 +1,134 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimIAnimationTransactionEventListener.h + * @brief This is the header file for the %IAnimationTransactionEventListener interface. + * + * This header file contains the declarations of the %IAnimationTransactionEventListener interface. + */ + +#ifndef _FUI_ANIM_IANIMATION_TRANSACTION_EVENT_LISTENER_H_ +#define _FUI_ANIM_IANIMATION_TRANSACTION_EVENT_LISTENER_H_ + +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Animations +{ + + +/** + * @interface IAnimationTransactionEventListener + * @brief This interface implements the listener for the animation transaction events defined in the Tizen::Ui::Animations namespace. + * + * @since 2.0 + * + * The %IAnimationTransactionEventListener interface is the listener interface for receiving animation transaction events. + * The class that processes an animation transaction event implements this interface, and the instance created with that class is + * registered with AnimationTransaction, using the AnimationTransaction::SetTransactionEventListener() method. When the animation + * transaction event occurs, a method of that instance is invoked. + * + */ +class _OSP_EXPORT_ IAnimationTransactionEventListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +public: + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~IAnimationTransactionEventListener(void) {} + + + /** + * Called when the transaction starts. + * + * @since 2.0 + * + * @param[in] transactionId The transaction ID of the transaction for which the event has occurred + */ + virtual void OnAnimationTransactionStarted(int transactionId) = 0; + + + /** + * Called when the transaction stops. + * + * @since 2.0 + * + * @param[in] transactionId The transaction ID of the transaction for which the event has occurred + * @remarks This callback is called when user calls AnimationTransaction::Stop(). + */ + virtual void OnAnimationTransactionStopped(int transactionId) = 0; + + + /** + * Called when the transaction is finished. + * + * @since 2.0 + * + * @param[in] transactionId The ID of the transaction for which the event has occurred + * @remarks This callback is called when all the animations in a transaction are finished. + */ + virtual void OnAnimationTransactionFinished(int transactionId) = 0; + + +protected: + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IAnimationTransactionEventListener_Reserved1(void) { } + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IAnimationTransactionEventListener_Reserved2(void) { } + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IAnimationTransactionEventListener_Reserved3(void) { } +}; // IAnimationTransactionEventListener + + +}}} // Tizen::Ui::Animations + +#endif // _FUI_ANIM_IANIMATION_TRANSACTION_EVENT_LISTENER_H_ diff --git a/inc/FUiAnimIControlAnimatorDetailedEventListener.h b/inc/FUiAnimIControlAnimatorDetailedEventListener.h new file mode 100644 index 0000000..42c4d4f --- /dev/null +++ b/inc/FUiAnimIControlAnimatorDetailedEventListener.h @@ -0,0 +1,195 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimIControlAnimatorDetailedEventListener.h + * @brief This is the header file for the %IControlAnimatorDetailedEventListener interface. + * + * This header file contains the declarations of the %IControlAnimatorDetailedEventListener interface. + */ + +#ifndef _FUI_ANIM_ICONTROL_ANIMATOR_DETAILED_EVENT_LISTENER_H_ +#define _FUI_ANIM_ICONTROL_ANIMATOR_DETAILED_EVENT_LISTENER_H_ + +#include +#include +#include + +#include +#include + +namespace Tizen { namespace Ui +{ +class Control; +} } +namespace Tizen { namespace Ui { namespace Animations +{ +class ControlAnimator; +} } } +namespace Tizen { namespace Ui { namespace Animations +{ + + + +/** + * @interface IControlAnimatorDetailedEventListener + * @brief This interface implements a detailed listener for animation events. + * + * @since 2.0 + * + * The %IControlAnimatorDetailedEventListener interface is the listener interface for receiving detailed control animator events. + * The class that processes a detailed control animator event implements this interface, and the instance created with that class + * is registered with a UI control, using the ControlAnimator::AddControlAnimatorDetailedEventListener() method. When the detailed + * control animator event occurs, a method of that instance is invoked. + */ +class _OSP_EXPORT_ IControlAnimatorDetailedEventListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +public: + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~IControlAnimatorDetailedEventListener(void) {} + + + /** + * Called when an animation starts. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] control The control @n + * The animation starts on this control. + * @param[in] animTrigger The animator trigger type of the control @n + * The animation event has occurred for the specified trigger type. + * @param[in] animTarget The animation target type @n + * The animation event has occurred for the specified animation target type. In the case of implicit animations, + * @c animTarget is @c ANIMATION_TARGET_NONE. + * @param[in] pAnimation The animation object @n + * The event occurs for this animation object. In the case of implicit animations (animations not defined by the + * application), @c pAnimation is @c null. + */ + virtual void OnControlAnimationStarted(Tizen::Ui::Animations::ControlAnimator& source, Tizen::Ui::Control& control, Tizen::Ui::Animations::ControlAnimatorTriggerType animTrigger, Tizen::Ui::Animations::AnimationTargetType animTarget, Tizen::Ui::Animations::AnimationBase* pAnimation) = 0; + + + /** + * Called when an animation is repeated. @n + * This event occurs only when a user calls StartUserAnimation(). + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] control The control @n + * The animation is repeated on this control. + * @param[in] animTrigger The animator trigger type of the control @n + * The animation event has occurred for the specified trigger type. + * @param[in] animTarget The animation target type @n + * The animation event has occurred for the specified animation target type. In the case of implicit animations, + * @c animTarget is @c ANIMATION_TARGET_NONE. + * @param[in] pAnimation The animation object @n + * The event occurs for this animation object. In the case of implicit animations (animations not defined by the + * application), @c pAnimation is @c null. + * @param[in] repeatCount The current repeat count of the animation + */ + virtual void OnControlAnimationRepeated(Tizen::Ui::Animations::ControlAnimator& source, Tizen::Ui::Control& control, Tizen::Ui::Animations::ControlAnimatorTriggerType animTrigger, Tizen::Ui::Animations::AnimationTargetType animTarget, Tizen::Ui::Animations::AnimationBase* pAnimation, int repeatCount) = 0; + + + /** + * Called when an animation finishes. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] control The control @n + * The animation with the specified trigger type has finished for this control. + * @param[in] animTrigger The animator trigger type of the control @n + * The animation event has occurred for the specified trigger type. + * @param[in] animTarget The animation target type @n + * The animation event has occurred for the specified animation target type. In the case of implicit animations, + * @c animTarget is @c ANIMATION_TARGET_NONE. + * @param[in] pAnimation The animation object @n + * The event occurs for this animation object. In the case of implicit animations (animations not defined by the + * application), @c pAnimation is @c null. + */ + virtual void OnControlAnimationFinished(Tizen::Ui::Animations::ControlAnimator& source, Tizen::Ui::Control& control, Tizen::Ui::Animations::ControlAnimatorTriggerType animTrigger, Tizen::Ui::Animations::AnimationTargetType animTarget, Tizen::Ui::Animations::AnimationBase* pAnimation) = 0; + + + /** + * Called when an animation stops. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] control The control @n + * The animation with the specified trigger type has stopped for this control. + * @param[in] animTrigger The animator trigger type of the control @n + * The animation event has occurred for the specified trigger type. + * @param[in] animTarget The animation target type @n + * The animation event has occurred for the specified animation target type. In the case of implicit animations, + * @c animTarget is @c ANIMATION_TARGET_NONE. + * @param[in] pAnimation The animation object @n + * The event occurs for this animation object. In the case of implicit animations (animations not defined by the + * application), @c pAnimation is @c null. + */ + virtual void OnControlAnimationStopped(Tizen::Ui::Animations::ControlAnimator& source, Tizen::Ui::Control& control, Tizen::Ui::Animations::ControlAnimatorTriggerType animTrigger, Tizen::Ui::Animations::AnimationTargetType animTarget, Tizen::Ui::Animations::AnimationBase* pAnimation) = 0; + + +protected: + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IControlAnimatorDetailedEventListener_Reserved1(void) { } + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IControlAnimatorDetailedEventListener_Reserved2(void) { } + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IControlAnimatorDetailedEventListener_Reserved3(void) { } +}; // IControlAnimatorDetailedEventListener + + +}}} // Tizen::Ui::Animations + +#endif // _FUI_ANIM_ICONTROL_ANIMATOR_DETAILED_EVENT_LISTENER_H_ diff --git a/inc/FUiAnimIControlAnimatorEventListener.h b/inc/FUiAnimIControlAnimatorEventListener.h new file mode 100644 index 0000000..57e91f8 --- /dev/null +++ b/inc/FUiAnimIControlAnimatorEventListener.h @@ -0,0 +1,146 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimIControlAnimatorEventListener.h + * @brief This is the header file for the %IControlAnimatorEventListener interface. + * + * This header file contains the declarations of the %IControlAnimatorEventListener interface. + */ + +#ifndef _FUI_ANIM_ICONTROL_ANIMATOR_EVENT_LISTENER_H_ +#define _FUI_ANIM_ICONTROL_ANIMATOR_EVENT_LISTENER_H_ + +#include +#include +#include + +#include + + +namespace Tizen { namespace Ui +{ +class Control; +} } +namespace Tizen { namespace Ui { namespace Animations +{ +class ControlAnimator; +} } } + +namespace Tizen { namespace Ui { namespace Animations +{ + + +/** + * @interface IControlAnimatorEventListener + * @brief This interface implements the listener for animation events. + * + * @since 2.0 + * + * The %IControlAnimatorEventListener interface is the listener interface for receiving control animator events. + * The class that processes a control animator event implements this interface, and the instance created with that class is + * registered with a UI control, using the ControlAnimator::AddControlAnimatorEventListener() method. When the control animator event + * occurs, a method of that instance is invoked. + */ +class _OSP_EXPORT_ IControlAnimatorEventListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +public: + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~IControlAnimatorEventListener(void) {} + + + /** + * Called when an animation starts on the specified control. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] control The control on which an animation starts + */ + virtual void OnControlAnimationStarted(Tizen::Ui::Animations::ControlAnimator& source, Tizen::Ui::Control& control) = 0; + + + /** + * Called when all the animations currently associated with a control have finished. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] control The control on which all the animations have finished + */ + virtual void OnControlAnimationFinished(Tizen::Ui::Animations::ControlAnimator& source, Tizen::Ui::Control& control) = 0; + + + /** + * Called when all the animations currently associated with a control have stopped. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] control The control on which all the animations have stopped + */ + virtual void OnControlAnimationStopped(Tizen::Ui::Animations::ControlAnimator& source, Tizen::Ui::Control& control) = 0; + + +protected: + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IControlAnimatorEventListener_Reserved1(void) { } + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IControlAnimatorEventListener_Reserved2(void) { } + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IControlAnimatorEventListener_Reserved3(void) { } +}; // IControlAnimatorEventListener + + +}}} // Tizen::Ui::Animations + +#endif // _FUI_ANIM_ICONTROL_ANIMATOR_EVENT_LISTENER_H_ diff --git a/inc/FUiAnimIFrameAnimatorEventListener.h b/inc/FUiAnimIFrameAnimatorEventListener.h new file mode 100644 index 0000000..619ba36 --- /dev/null +++ b/inc/FUiAnimIFrameAnimatorEventListener.h @@ -0,0 +1,166 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimIFrameAnimatorEventListener.h + * @brief This is the header file for the %IFrameAnimatorEventListener interface. + * + * This header file contains the declarations of the %IFrameAnimatorEventListener interface. + */ + +#ifndef _FUI_CTRL_IFRAME_ANIMATOR_EVENT_LISTENER_H_ +#define _FUI_CTRL_IFRAME_ANIMATOR_EVENT_LISTENER_H_ + +#include +#include +#include +#include +#include + + +namespace Tizen { namespace Ui { namespace Controls +{ +class Form; +} } } +namespace Tizen { namespace Ui { namespace Controls +{ +class Frame; +} } } +namespace Tizen { namespace Ui { namespace Animations +{ +class FrameAnimator; +} } } + +namespace Tizen { namespace Ui { namespace Animations +{ + + + +/** + * @interface IFrameAnimatorEventListener + * @brief This interface implements the listener for animation events. + * + * @since 2.0 + * + * The %IFrameAnimatorEventListener interface is the listener interface for receiving frame animator events. + * The class that processes a frame animator event implements this interface, and the instance created with that class is + * registered with a Frame, using the FrameAnimator::AddFrameAnimatorEventListener() method. When the frame animator event occurs, a + * method of that instance is invoked. + */ +class _OSP_EXPORT_ IFrameAnimatorEventListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +public: + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~IFrameAnimatorEventListener(void) {} + + + /** + * Called when the animation of a form transition starts. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] frame The frame @n + * The frame that starts the animation of a form transition. + * @param[in] form1 The form @n + * The animation starts on this form. + * @param[in] form2 The form @n + * The animation starts on this form. + */ + virtual void OnFormTransitionAnimationStarted(Tizen::Ui::Animations::FrameAnimator& source, Tizen::Ui::Controls::Frame& frame, Tizen::Ui::Controls::Form& form1, Tizen::Ui::Controls::Form& form2) = 0; + + + /** + * Called when the animation of a form transition stops. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] frame The frame @n + * The frame that stops the animation of a form transition. + * @param[in] form1 The form @n + * The animation stops on this form. + * @param[in] form2 The form @n + * The animation stops on this form. + */ + virtual void OnFormTransitionAnimationStopped(Tizen::Ui::Animations::FrameAnimator& source, Tizen::Ui::Controls::Frame& frame, Tizen::Ui::Controls::Form& form1, Tizen::Ui::Controls::Form& form2) = 0; + + + /** + * Called when the animation of a form transition finishes. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] frame The frame @n + * The frame that finishes the animation of a form transition. + * @param[in] form1 The form @n + * The animation finishes on this form. + * @param[in] form2 The form @n + * The animation finishes on this form. + */ + virtual void OnFormTransitionAnimationFinished(Tizen::Ui::Animations::FrameAnimator& source, Tizen::Ui::Controls::Frame& frame, Tizen::Ui::Controls::Form& form1, Tizen::Ui::Controls::Form& form2) = 0; + + +protected: + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IFrameAnimatorEventListener_Reserved1(void) { } + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IFrameAnimatorEventListener_Reserved2(void) { } + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IFrameAnimatorEventListener_Reserved3(void) { } +}; // IFrameAnimatorEventListener + + +}}} // Tizen::Ui::Animations + +#endif // _FUI_ANIM_IFRAME_ANIMATOR_EVENT_LISTENER_H_ diff --git a/inc/FUiAnimIVisualElementAnimationProvider.h b/inc/FUiAnimIVisualElementAnimationProvider.h new file mode 100644 index 0000000..e896c22 --- /dev/null +++ b/inc/FUiAnimIVisualElementAnimationProvider.h @@ -0,0 +1,147 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimIVisualElementAnimationProvider.h + * @brief This is the header file for the %IVisualElementAnimationProvider interface. + * + * This header file contains the declarations of the %IVisualElementAnimationProvider interface. + */ + +#ifndef _FUI_ANIM_IVISUAL_ELEMENT_ANIMATION_PROVIDER_H_ +#define _FUI_ANIM_IVISUAL_ELEMENT_ANIMATION_PROVIDER_H_ + +#include + +namespace Tizen { namespace Base { +class String; +}} // Tizen::Base + +namespace Tizen { namespace Ui { namespace Animations +{ + +class VisualElement; +class VisualElementAnimation; + +/** +* @interface IVisualElementAnimationProvider +* @brief This interface implements the provider for the events generated by the VisualElement. +* +* @since 2.0 +* +* The %IVisualElementAnimationProvider interface customizes implicit animations. The class that needs to override default implicit animations must implement this interface, and +* the instance created with that class is registered with VisualElement, using the VisualElement::SetAnimationProvider() method. +* When the properties defined in %VisualElement and its descendants are changed, the CreateAnimationForProperty() method of this interface is invoked. +* +* For more information on the class features, see Implicit and Explicit Animations. +* +*/ +class _OSP_EXPORT_ IVisualElementAnimationProvider +{ +public: + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~IVisualElementAnimationProvider(void) {} + +public: + /** + * Invoked for creating an animation when the property is changed. + * + * @since 2.0 + * + * @return A VisualElementAnimation instance for @c property + * @param[in] target The VisualElement instance that needs implicit animation + * @param[in] property The property of this instance for which animation is required + * @remarks If implicit animation for @c property is not required, return @c null. + */ + virtual Tizen::Ui::Animations::VisualElementAnimation* CreateAnimationForProperty(Tizen::Ui::Animations::VisualElement& target, const Tizen::Base::String& property) = 0; + + +protected: + // Reserved virtual methods for later extension. + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IVisualElementAnimationProvider_Reserved1(void) {} + + + // Reserved virtual methods for later extension. + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IVisualElementAnimationProvider_Reserved2(void) {} + + + // Reserved virtual methods for later extension. + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IVisualElementAnimationProvider_Reserved3(void) {} + + + // Reserved virtual methods for later extension. + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IVisualElementAnimationProvider_Reserved4(void) {} + + + // Reserved virtual methods for later extension. + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IVisualElementAnimationProvider_Reserved5(void) {} +}; // IVisualElementAnimationProvider + + +}}} // Tizen::Ui::Animations + +#endif //_FUI_ANIM_IVISUAL_ELEMENT_ANIMATION_PROVIDER_H_ diff --git a/inc/FUiAnimIVisualElementAnimationStatusEventListener.h b/inc/FUiAnimIVisualElementAnimationStatusEventListener.h new file mode 100644 index 0000000..4263ec0 --- /dev/null +++ b/inc/FUiAnimIVisualElementAnimationStatusEventListener.h @@ -0,0 +1,151 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimIVisualElementAnimationStatusEventListener.h + * @brief This is the header file for the %IVisualElementAnimationStatusEventListener interface. + * + * This header file contains the declarations of the %IVisualElementAnimationStatusEventListener interface. + */ + +#ifndef _FUI_ANIM_IVISUAL_ELEMENT_ANIMATION_STATUS_EVENT_LISTENER_H_ +#define _FUI_ANIM_IVISUAL_ELEMENT_ANIMATION_STATUS_EVENT_LISTENER_H_ + +#include + +namespace Tizen { namespace Base { +class String; +}} // Tizen::Base + +namespace Tizen { namespace Ui { namespace Animations +{ + +class VisualElement; +class VisualElementAnimation; + +/** + * @interface IVisualElementAnimationStatusEventListener + * @brief This interface implements the listener for the VisualElementAnimation status events defined in the Tizen::Ui::Animations namespace. + * + * @since 2.0 + * + * The %IVisualElementAnimationStatusEventListener interface is the listener interface for receiving animation status events. + * The class that processes an animation status event implements this interface, and the instance created with that class is + * registered with an animation, using the VisualElementAnimation::SetVisualElementAnimationStatusEventListener() method or + * the AnimationTransaction::SetVisualElementAnimationStatusEventListener() method. + * When the animation status is changing, a method of that instance is invoked. + * + * For more information on the class features, see Event Handling. + * + */ +class _OSP_EXPORT_ IVisualElementAnimationStatusEventListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +public: + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~IVisualElementAnimationStatusEventListener(void); + + + /** + * Called when the animation is started. + * + * @since 2.0 + * + * @param[in] animation The animation that is started + * @param[in] keyName The key name of the animation + * @param[in] target An instance of VisualElement to which the animation is applied + * @remarks If the key name of the animation is not set, @c keyName is empty string. + */ + virtual void OnVisualElementAnimationStarted(const Tizen::Ui::Animations::VisualElementAnimation& animation, const Tizen::Base::String& keyName, Tizen::Ui::Animations::VisualElement& target) = 0; + + + /** + * Called when the animation is repeated. + * + * @since 2.0 + * + * @param[in] animation The animation that is repeated + * @param[in] keyName The key name of the animation + * @param[in] target An instance of VisualElement to which the animation is applied + * @param[in] currentRepeatCount The current repeat count + * @remarks If the key name of the animation is not set, @c keyName is empty string. + */ + virtual void OnVisualElementAnimationRepeated(const Tizen::Ui::Animations::VisualElementAnimation& animation, const Tizen::Base::String& keyName, Tizen::Ui::Animations::VisualElement& target, long currentRepeatCount) = 0; + + + /** + * Called when the animation is finished. + * + * @since 2.0 + * + * @param[in] animation The animation that is finished + * @param[in] keyName The key name of the animation + * @param[in] target An instance of VisualElement to which the animation is applied + * @param[in] completedNormally @c true if the animation is completed normally, @n + * else @c false + * @remarks If the key name of the animation is not set, @c keyName is empty string. + */ + virtual void OnVisualElementAnimationFinished(const Tizen::Ui::Animations::VisualElementAnimation& animation, const Tizen::Base::String& keyName, Tizen::Ui::Animations::VisualElement& target, bool completedNormally) = 0; + + +protected: + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IVisualElementAnimationStatusEventListener_Reserved1(void) {} + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IVisualElementAnimationStatusEventListener_Reserved2(void) {} + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IVisualElementAnimationStatusEventListener_Reserved3(void) {} +}; // IVisualElementAnimationStatusEventListener + + +}}} // Tizen::Ui::Animations + +#endif //_FUI_ANIM_IVISUAL_ELEMENT_ANIMATION_STATUS_EVENT_LISTENER_H_ diff --git a/inc/FUiAnimIVisualElementAnimationTickEventListener.h b/inc/FUiAnimIVisualElementAnimationTickEventListener.h new file mode 100644 index 0000000..6fda443 --- /dev/null +++ b/inc/FUiAnimIVisualElementAnimationTickEventListener.h @@ -0,0 +1,120 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimIVisualElementAnimationTickEventListener.h + * @brief This is the header file for the %IVisualElementAnimationTickEventListener interface. + * + * This header file contains the declarations of the %IVisualElementAnimationTickEventListener interface. + */ + +#ifndef _FUI_ANIM_IVISUAL_ELEMENT_ANIMATION_TICK_EVENT_LISTENER_H_ +#define _FUI_ANIM_IVISUAL_ELEMENT_ANIMATION_TICK_EVENT_LISTENER_H_ + +#include + +#include +#include + + +namespace Tizen { namespace Ui { namespace Animations +{ + + +/** + * @interface IVisualElementAnimationTickEventListener + * @brief This interface implements the listener for the VisualElementAnimation tick events defined in the Tizen::Ui::Animations namespace. + * + * @since 2.0 + * + * The %IVisualElementAnimationTickEventListener interface is the listener interface for receiving animation tick events. + * The class that processes an animation tick event implements this interface, and the instance created with that class is registered with an animation, + * using the VisualElementValueAnimation::SetVisualElementAnimationTickEventListener() method. + * When the animation tick event occurs, a method of that instance is invoked. + * + * For more information on the class features, see Event Handling. + * + */ +class _OSP_EXPORT_ IVisualElementAnimationTickEventListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +public: + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~IVisualElementAnimationTickEventListener(void); + + + /** + * Called when a tick event has occurred. @n + * The %OnTickOccurred() callback method will be called with every tick of the animation, using the current value by the UI framework. + * + * @since 2.0 + * + * @param[in] animation The animation that is running + * @param[in] keyName The key name of the animation + * @param[in] target The VisualElement object to which the animation is applied + * @param[in] currentValue The current value + */ + virtual void OnTickOccurred(const Tizen::Ui::Animations::VisualElementAnimation& animation, const Tizen::Base::String& keyName, Tizen::Ui::Animations::VisualElement& target, const Tizen::Ui::Variant& currentValue) = 0; + + +protected: + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IVisualElementAnimationTickEventListener_Reserved1(void) {} + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IVisualElementAnimationTickEventListener_Reserved2(void) {} + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IVisualElementAnimationTickEventListener_Reserved3(void) {} +}; // IVisualElementAnimationTickEventListener + + +}}} // Tizen::Ui::Animations + +#endif //_FUI_ANIM_IVISUAL_ELEMENT_ANIMATION_TICK_EVENT_LISTENER_H_ diff --git a/inc/FUiAnimIVisualElementAnimationTimingFunction.h b/inc/FUiAnimIVisualElementAnimationTimingFunction.h new file mode 100644 index 0000000..440bcf2 --- /dev/null +++ b/inc/FUiAnimIVisualElementAnimationTimingFunction.h @@ -0,0 +1,109 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimIVisualElementAnimationTimingFunction.h + * @brief This is the header file for the %IVisualElementAnimationTimingFunction interface. + * + * This header file contains the declarations of the %IVisualElementAnimationTimingFunction interface. + */ + +#ifndef _FUI_ANIM_IVISUAL_ELEMENT_ANIMATION_TIMING_FUNCTION_H_ +#define _FUI_ANIM_IVISUAL_ELEMENT_ANIMATION_TIMING_FUNCTION_H_ + +#include + +namespace Tizen { namespace Ui { namespace Animations +{ + + +/** + * @interface IVisualElementAnimationTimingFunction + * @brief This interface implements the timing function for the VisualElementAnimation defined in the Tizen::Ui::Animations namespace. + * + * @since 2.0 + * + * The %IVisualElementAnimationTimingFunction interface is the timing function interface for the pacing of an animation. + * The class that defines the pacing of an animation as a timing curve implements this interface, + * and the instance created with that class is registered with an animation, + * using the VisualElementAnimation::SetTimingFunction() method or the AnimationTransaction::SetVisualElementAnimationTimingFunction() method. + * When tick of the animation occurs, a method of that instance is invoked. + * + * For more information on the class features, see Timing Function. + * + */ +class _OSP_EXPORT_ IVisualElementAnimationTimingFunction +{ +public: + + /** + * This is the default constructor for this class. + * + * @since 2.0 + */ + IVisualElementAnimationTimingFunction(void); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~IVisualElementAnimationTimingFunction(void); + + + /** + * Calculates the progress(pace) of an animation regarding the time elapsed. + * + * @since 2.0 + * + * @return The progress(pace) value calculated by the time progress value and the timing function type @n + * @c 0 and @c 1 are the start and end values of an animation, respectively. + * @param[in] timeProgress The time progress value @n + * This must be in the range @c 0.0 to @c 1.0. + */ + virtual float CalculateProgress(float timeProgress) const = 0; + + +private: + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the assignment operator for this class. + // + // @since 2.0 + // + IVisualElementAnimationTimingFunction(const IVisualElementAnimationTimingFunction& rhs); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Assigns the value of the specified instance to the current instance of %IVisualElementAnimationTimingFunction. + // + // @since 2.0 + // + IVisualElementAnimationTimingFunction& operator =(const IVisualElementAnimationTimingFunction& rhs); +}; // IVisualElementAnimationTimingFunction + + +}}} // Tizen::Ui::Animations + +#endif //_FUI_ANIM_IVISUAL_ELEMENT_ANIMATION_TIMING_FUNCTION_H_ diff --git a/inc/FUiAnimIVisualElementAnimationValueInterpolator.h b/inc/FUiAnimIVisualElementAnimationValueInterpolator.h new file mode 100644 index 0000000..e1f9657 --- /dev/null +++ b/inc/FUiAnimIVisualElementAnimationValueInterpolator.h @@ -0,0 +1,115 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimIVisualElementAnimationValueInterpolator.h + * @brief This is the header file for the %IVisualElementAnimationValueInterpolator interface. + * + * This header file contains the declarations of the %IVisualElementAnimationValueInterpolator interface. + */ + +#ifndef _FUI_ANIM_IVISUAL_ELEMENT_ANIMATION_VALUE_INTERPOLATOR_H_ +#define _FUI_ANIM_IVISUAL_ELEMENT_ANIMATION_VALUE_INTERPOLATOR_H_ + +#include +#include + +namespace Tizen { namespace Ui { namespace Animations +{ + + +/** + * @interface IVisualElementAnimationValueInterpolator + * @brief This interface implements the interpolator for the VisualElementAnimation defined in the Tizen::Ui::Animations namespace. + * + * @since 2.0 + * + * The %IVisualElementAnimationValueInterpolator interface is the interpolator interface for interpolating on animation progress. + * The class that interpolates start value and end value implements this interface, + * and the instance created with that class is registered with an animation, + * using the VisualElementAnimation::SetValueInterpolator() method or the AnimationTransaction::SetVisualElementAnimationValueInterpolator() method. + * When tick of the animation occurs, a method of that instance is invoked. + * + * For more information on the class features, see Interpolation. + * + */ +class _OSP_EXPORT_ IVisualElementAnimationValueInterpolator +{ +public: + + /** + * This is the default constructor for this class. + * + * @since 2.0 + */ + IVisualElementAnimationValueInterpolator(void); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~IVisualElementAnimationValueInterpolator(void); + + + /** + * Calculates the interpolated value based on the time. @n + * The %Interpolate() method will be called on every frame of an animation to calculate the current value of the specified @c progress. + * + * @since 2.0 + * + * @return An error code + * @param[in] progress The progress value from @c startValue to @c endValue @n + * The range of @c progress is decided by the IVisualElementAnimationTimingFunction interface. + * @param[in] startValue The start value + * @param[in] endValue The end value + * @param[out] value The interpolated value based on the time + * @exception E_SUCCESS The method is successful. + * @remarks If result is not E_SUCCESS, use @c startValue for the animation. + */ + virtual result Interpolate(float progress, const Tizen::Ui::Variant& startValue, const Tizen::Ui::Variant& endValue, Tizen::Ui::Variant& value) const = 0; + + +private: + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the assignment operator for this class. + // + // @since 2.0 + // + IVisualElementAnimationValueInterpolator(const IVisualElementAnimationValueInterpolator& rhs); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Assigns the value of the specified instance to the current instance of %IVisualElementAnimationValueInterpolator. + // + // @since 2.0 + // + IVisualElementAnimationValueInterpolator& operator =(const IVisualElementAnimationValueInterpolator& rhs); +}; // IVisualElementAnimationValueInterpolator + + +}}} // Tizen::Ui::Animations + +#endif //_FUI_ANIM_IVISUAL_ELEMENT_ANIMATION_VALUE_INTERPOLATOR_H_ diff --git a/inc/FUiAnimIVisualElementContentProvider.h b/inc/FUiAnimIVisualElementContentProvider.h new file mode 100644 index 0000000..9186b55 --- /dev/null +++ b/inc/FUiAnimIVisualElementContentProvider.h @@ -0,0 +1,178 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimIVisualElementContentProvider.h + * @brief This is the header file for the %IVisualElementContentProvider interface. + * + * This header file contains the declarations of the %IVisualElementContentProvider interface. + */ + +#ifndef _FUI_ANIM_IVISUAL_ELEMENT_CONTENT_PROVIDER_H_ +#define _FUI_ANIM_IVISUAL_ELEMENT_CONTENT_PROVIDER_H_ + +#include +#include + +namespace Tizen { namespace Graphics { +class Canvas; +class FloatPoint; +}} // Tizen::Graphics + +namespace Tizen { namespace Ui { namespace Animations +{ +class VisualElement; + + +/** + * @interface IVisualElementContentProvider + * @brief This interface customizes content of VisualElement. + * + * @since 2.0 + * + * The %IVisualElementContentProvider interface is the listener interface for providing content and information on it. The class that needs to customize content must implement this interface, and + * use the VisualElement::SetContentProvider() method to register to the VisualElement. + * + * For more information on the class features, see Content Provider. + * + */ +class _OSP_EXPORT_ IVisualElementContentProvider +{ +public: + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~IVisualElementContentProvider(void) {} + +public: + /** + * %PrepareDraw() is invoked by UI framework before DrawContent() is called. + * If this method returns @c true, VisualElement can call the %DrawContent() method. + * + * @since 2.0 + * + * @return @c true if DrawContent() can be called, @n + * else @c false + * @param[in] target An instance of VisualElement to check + */ + virtual bool PrepareDraw(Tizen::Ui::Animations::VisualElement& target) = 0; + + + /** + * Fills content in the given canvas. + * + * @since 2.0 + * + * @param[in] target An instance of VisualElement to draw + * @param[in] canvas A graphic canvas for drawing + * @see VisualElement::OnDraw() + * @see VisualElement::InvalidateRectangle() + */ + virtual void DrawContent(Tizen::Ui::Animations::VisualElement& target, Tizen::Graphics::Canvas& canvas) = 0; + + + /** + * The %HitTest() method is called by VisualElement::GetChildAt(). @n + * The %GetChildAt() method traverses through a list of all children, and performs a hit test search at the @c point using this method. + * You can modify hit test search result by overriding this method. + * + * @since 2.0 + * + * @return The hit test result + * @param[in] target An instance of VisualElement to test + * @param[in] point The position of the source to check + * @remarks Hit test results must be one of the following: @n + * - Tizen::Ui::Animations::HitTestResult::HIT_TEST_NOWHERE + * - Tizen::Ui::Animations::HitTestResult::HIT_TEST_MATCH + * @see VisualElement::GetChildAt() + */ + virtual HitTestResult HitTest(Tizen::Ui::Animations::VisualElement& target, const Tizen::Graphics::FloatPoint& point) = 0; + + +protected: + // Reserved virtual methods for later extension. + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IVisualElementContentProvider_Reserved1(void) {} + + + // Reserved virtual methods for later extension. + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IVisualElementContentProvider_Reserved2(void) {} + + + // Reserved virtual methods for later extension. + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IVisualElementContentProvider_Reserved3(void) {} + + + // Reserved virtual methods for later extension. + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IVisualElementContentProvider_Reserved4(void) {} + + + // Reserved virtual methods for later extension. + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IVisualElementContentProvider_Reserved5(void) {} +}; // IVisualElementContentProvider + + +}}} // Tizen::Ui::Animations + +#endif //_FUI_ANIM_IVISUAL_ELEMENT_CONTENT_PROVIDER_H_ diff --git a/inc/FUiAnimIVisualElementEventListener.h b/inc/FUiAnimIVisualElementEventListener.h new file mode 100644 index 0000000..a70d77c --- /dev/null +++ b/inc/FUiAnimIVisualElementEventListener.h @@ -0,0 +1,283 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimIVisualElementEventListener.h + * @brief This is the header file for the %IVisualElementEventListener interface. + * + * This header file contains the declarations of the %IVisualElementEventListener interface. + */ + +#ifndef _FUIANIM_IVISUAL_ELEMENT_EVENT_LISTENER_H_ +#define _FUIANIM_IVISUAL_ELEMENT_EVENT_LISTENER_H_ + +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Animations +{ + +class VisualElement; + +/** +* @interface IVisualElementEventListener +* @brief This interface implements the event listener for the events generated by VisualElement. +* +* @since 2.0 +* +* The %IVisualElementEventListener interface is for receiving events on status change of VisualElement. The class that processes a status change event of %VisualElement +* implements this interface, and the instance created with that class is registered with %VisualElement, using the VisualElement::SetVisualElementEventListener() method. +* +* For more information on the class features, see Event Handling. +* +*/ +class _OSP_EXPORT_ IVisualElementEventListener + : public Tizen::Base::Runtime::IEventListener +{ +public: + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~IVisualElementEventListener(void) {} + +public: + + /** + * Called when the child is attached to VisualElement. @n + * Overrides the %OnChildAttached() method to provide user-specific code just after the child is attached to the %VisualElement. + * This method is invoked when @c child is attached to @c source by @c AttachChild, @c InsertChild, @c ChangeZOder, or @c SetZOrderGroup. + * + * @since 2.0 + * + * @param[in] parent The parent instance + * @param[in] child The child instance + * @see VisualElement::AttachChild() + * @see VisualElement::InsertChild() + */ + virtual void OnChildAttached(Tizen::Ui::Animations::VisualElement& parent, Tizen::Ui::Animations::VisualElement& child) = 0; + + + /** + * Called when the child is detached to VisualElement. @n + * Overrides the %OnChildDetached() method to provide user-specific code just after the child is detached from the %VisualElement. + * This method is invoked when @c child is detached from @c source by @c AttachChild, @c InsertChild, @c ChangeZOder, or @c SetZOrderGroup. + * + * @since 2.0 + * + * @param[in] parent The parent instance + * @param[in] child The child instance + * @see VisualElement::DetachChild() + */ + virtual void OnChildDetached(Tizen::Ui::Animations::VisualElement& parent, Tizen::Ui::Animations::VisualElement& child) = 0; + + + /** + * Called when VisualElement is attached to the parent. @n + * Overrides the %OnAttached() method to provide user-specific code just after the %VisualElement is attached to the parent. + * This method is invoked when @c source is attached to @c parent by @c AttachChild, @c InsertChild, @c ChangeZOder, or @c SetZOrderGroup. + * + * @since 2.0 + * + * @param[in] child The child instance + * @param[in] parent The parent instance + * @see VisualElement::AttachChild() + * @see VisualElement::InsertChild() + */ + virtual void OnAttached(Tizen::Ui::Animations::VisualElement& child, Tizen::Ui::Animations::VisualElement& parent) = 0; + + + /** + * Called when VisualElement is detached to the parent. @n + * Overrides the %OnDetached() method to provide user-specific code just after the %VisualElement is detached from the parent. + * This method is invoked when @c source is detached from @c parent by @c AttachChild, @c InsertChild, @c ChangeZOder, @c SetZOrderGroup, or @c DetachChild. + * + * @since 2.0 + * + * @param[in] child The child instance + * @param[in] parent The parent instance + * @see VisualElement::DetachChild() + */ + virtual void OnDetached(Tizen::Ui::Animations::VisualElement& child, Tizen::Ui::Animations::VisualElement& parent) = 0; + + + /** + * Called when the transform matrix is about to be changed. @n + * Overrides the %OnTransformChanging() method to provide the user-specific code before the transform matrix is changed. + * This method is invoked when the transform matrix of @c source is about to be changed by invoking @c SetTransformMatrix. + * + * @since 2.0 + * + * @return An error code + * @param[in] source The VisualElement to change + * @param[in,out] newTransform The new transform matrix + * @remarks If this method returns @c E_SUCCESS, @c source will be applied with @c newTransform matrix, else will be cancelled. + */ + virtual result OnTransformChanging(Tizen::Ui::Animations::VisualElement& source, Tizen::Graphics::FloatMatrix4& newTransform) = 0; + + + /** + * Called when the transform matrix is changed. @n + * Overrides the %OnTransformChanged() method to provide the user-specific code just after the transform matrix is changed. + * This method is invoked when the transform matrix of @c source is changed by invoking @c SetTransformMatrix. + * + * @since 2.0 + * + * @param[in] source The VisualElement change applied + * @param[in] previousTransform The previous transform matrix + */ + virtual void OnTransformChanged(Tizen::Ui::Animations::VisualElement& source, const Tizen::Graphics::FloatMatrix4& previousTransform) = 0; + + + /** + * Called when the children transform matrix is about to be changed. @n + * Overrides the %OnChildrenTransformChanging() method to provide user-specific code before the children transform matrix is changed. + * This method is invoked when the children transform matrix of @c source is about to be changed by invoking @c SetChildrenTransformMatrix. + * + * @since 2.0 + * + * @return An error code + * @param[in] source The VisualElement to change + * @param[in,out] newTransform The new transform matrix + * @remarks If this method returns @c E_SUCCESS, @c source will be applied with @c newTransform matrix, else will be cancelled. + */ + virtual result OnChildrenTransformChanging(Tizen::Ui::Animations::VisualElement& source, Tizen::Graphics::FloatMatrix4& newTransform) = 0; + + + /** + * Called when the children transform matrix is changed. @n + * Overrides the %OnChildrenTransformChanged() method to provide user-specific code just after the children transform matrix is changed. + * This method is invoked when the children transform matrix of @c source is changed by invoking @c SetChildrenTransformMatrix. + * + * @since 2.0 + * + * @param[in] source The VisualElement change applied + * @param[in] previousTransform The previous transform matrix + */ + virtual void OnChildrenTransformChanged(Tizen::Ui::Animations::VisualElement& source, const Tizen::Graphics::FloatMatrix4& previousTransform) = 0; + + + /** + * Called when the bounds are about to be changed. @n + * Overrides the %OnBoundsChanging() method to provide user-specific code before the bounds are changed. + * This method is invoked when the bounds @c source is about to be changed by invoking @c SetBounds. + * + * @since 2.0 + * + * @return An error code + * @param[in] source The VisualElement to change + * @param[in,out] newBounds The new bounds + * @remarks If this method does not return @c E_SUCCESS, @c source is not applied with @c newBounds rectangle. + */ + virtual result OnBoundsChanging(Tizen::Ui::Animations::VisualElement& source, Tizen::Graphics::FloatRectangle& newBounds) = 0; + + + /** + * Called when the bounds are changed. @n + * Overrides the %OnBoundsChanged() method to provide user-specific code just after the bounds are changed. + * This method is invoked when the bounds of @c source is changed by invoking @c SetBounds. + * + * @since 2.0 + * + * @param[in] source The VisualElement change applied + * @param[in] previousBounds The previous bounds + */ + virtual void OnBoundsChanged(Tizen::Ui::Animations::VisualElement& source, const Tizen::Graphics::FloatRectangle& previousBounds) = 0; + + + /** + * Called when the show state is changed. @n + * Overrides the %OnShowStateChanged() method to provide user-specific code when the show state is changed. + * This method is invoked when the show state of @c source is changed by invoking @c SetShowState. + * + * @since 2.0 + * + * @param[in] source An instance whose show state is changed + * @param[in] previousShowState The previous show state + */ + virtual void OnShowStateChanged(Tizen::Ui::Animations::VisualElement& source, bool previousShowState) = 0; + + +protected: + // Reserved virtual methods for later extension. + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IVisualElementEventListener_Reserved1(void) {} + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IVisualElementEventListener_Reserved2(void) {} + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IVisualElementEventListener_Reserved3(void) {} + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IVisualElementEventListener_Reserved4(void) {} + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IVisualElementEventListener_Reserved5(void) {} +}; // IVisualElementEventListener + + +}}} // Tizen::Ui::Animations + +#endif //_FUI_ANIM_IVISUAL_ELEMENT_EVENT_LISTENER_H_ diff --git a/inc/FUiAnimIntegerAnimation.h b/inc/FUiAnimIntegerAnimation.h new file mode 100644 index 0000000..3fdc239 --- /dev/null +++ b/inc/FUiAnimIntegerAnimation.h @@ -0,0 +1,334 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimIntegerAnimation.h + * @brief This is the header file for the %IntegerAnimation class. + * + * This header file contains the declarations of the %IntegerAnimation class. + */ + +#ifndef _FUI_ANIM_INTEGER_ANIMATION_H_ +#define _FUI_ANIM_INTEGER_ANIMATION_H_ + +#include +#include + +namespace Tizen { namespace Ui { namespace Animations +{ + +/** + * @class IntegerAnimation + * @brief This class animates an object from an integer value to another integer value. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %IntegerAnimation class animates an object from an integer value to another integer value based on the specified interpolator type. + * + * For more information on the class features, see Animating UI Controls. + */ +class _OSP_EXPORT_ IntegerAnimation + : public AnimationBase +{ +public: + /** + * Initializes this instance of %IntegerAnimation with the specified parameters. + * + * @since 2.0 + * + * @param[in] startValue The start value for Integer animation + * @param[in] endValue The end value for Integer animation + * @param[in] duration The duration of animation in milliseconds + * @param[in] interpolator The type of Interpolation @n + * This is used for the intermediate value calculation of the animation. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The value of the specified parameter is negative or the interpolator is of an invalid type. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + IntegerAnimation(int startValue, int endValue, long duration, AnimationInterpolatorType interpolator); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~IntegerAnimation(void); + + + /** + * This is the copy constructor for the %IntegerAnimation class. + * + * @since 2.0 + * + * @param[in] integerAnimation An instance of %IntegerAnimation + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + IntegerAnimation(const IntegerAnimation& integerAnimation); + + + /** + * Assigns the value of the specified instance to the current instance of %IntegerAnimation. + * + * @since 2.0 + * + * @param[in] rhs An instance of %IntegerAnimation + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + IntegerAnimation& operator =(const IntegerAnimation& rhs); + + + /** + * Checks whether the specified and current instance of %IntegerAnimation have equal animation values. + * + * @since 2.0 + * + * @return @c true if the animation of the two instances of %IntegerAnimation are equal, @n + * else @c false + * @param[in] rhs An instance of %IntegerAnimation + */ + bool operator ==(const IntegerAnimation& rhs) const; + + + /** + * Checks whether the specified instance and the current instance of %IntegerAnimation have different animation values. + * + * @since 2.0 + * + * @return @c true if the values of the animations of the two instances of %IntegerAnimation are not equal, @n + * else @c false + * @param[in] rhs An instance of %IntegerAnimation + */ + bool operator !=(const IntegerAnimation& rhs) const; + + + /** + * Checks whether the value of the current instance of %IntegerAnimation equals the value of the specified instance. + * + * @since 2.0 + * + * @return @c true if the value of the current instance equals the value of the specified instance, @n + * else @c false + * @param[in] obj An instance of %IntegerAnimation + * @remarks The %IntegerAnimation class has a semantic value. @n + * This means that this method checks whether the two instances have the same animation. + */ + virtual bool Equals(const Tizen::Base::Object& obj) const; + + + /** + * Gets the hash value of the current instance. + * + * @since 2.0 + * + * @return The hash value of the current instance + * @remarks The two equal instances must return the same hash value. For better performance, the used hash function must generate a random distribution for all inputs. + */ + virtual int GetHashCode(void) const; + + + /** + * Gets the animated value for the current time. + * + * @since 2.0 + * + * @return An error code + * @param[in] currentTime The current time value of the animation play @n + * The value must be between @c 0 and the duration of the animation. + * @param[out] animatedValue The animated value for the current time @n + * The value is passed as the input parameter. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * + */ + result GetAnimatedValue(long currentTime, int& animatedValue) const; + + + /** + * Adds a key frame to the animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] time The time stamp + * @param[in] value The value at the specified @c time + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks If @c time is greater than the duration, it becomes the new duration and @c value becomes the new @c endValue. + * Also the old duration and @c endValue are added as a new keyframe entry in the list. + * @remarks If a key-value pair with the current key already exists, the old value is overwritten with the new one. + * @remarks An exception is returned if @c time is equal to @c 0 or the duration of the animation. + */ + result AddKeyFrame(long time, int value); + + + /** + * Gets the keyframe at a particular index in this animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index value in the Keyframe list @n + * The value is sorted in an increasing order of time. + * @param[out] time The time stamp at the specified @c index + * @param[out] value The value at the specified @c index + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is out of range. + * @exception E_SYSTEM A system error has occurred. + * @remarks The @c time and @c value returned are present at the index of the sorted map list (sorted with respect to key). + * For example, if the user adds keyframe in the order (10,value1), (20,value2), (5,value3), and then + * GetKeyFrameAt(0,time,value) is called, the pair returned is (5,value3). + */ + result GetKeyFrameAt(int index, long& time, int& value) const; + + + /** + * Removes the specified keyframe object from the keyframe list. + * + * @since 2.0 + * + * @return An error code + * @param[in] time The key frame time + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c time value is invalid. + * @exception E_OBJ_NOT_FOUND The specified @c time is not found in the KeyFrame List. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveKeyFrame(long time); + + + /** + * Removes the keyframe present at the specified @c index from the keyframe list. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index value in the Keyframe list @n + * The value is sorted in an increasing order of time. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is out of range. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveKeyFrameAt(int index); + + + /** + * Removes all the keyframes from an animation. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveAllKeyFrames(void); + + + /** + * Sets the start value of the animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] startValue The start value of the animation to set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetStartValue(int startValue); + + + /** + * Sets the end value of the animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] endValue The end value of the animation to set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetEndValue(int endValue); + + + /** + * Gets the start value of the animation. + * + * @since 2.0 + * + * @return The start value + */ + int GetStartValue(void) const; + + + /** + * Gets the end value of the animation. + * + * @since 2.0 + * + * @return The end value + */ + int GetEndValue(void) const; + + + /** + * Gets the type information of this instance. + * + * @since 2.0 + * + * @return The type information of this instance + */ + virtual AnimationType GetType(void) const; + + +protected: + friend class _IntegerAnimationImpl; + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This variable is for internal usage. + // + // @since 2.0 + // + class _IntegerAnimationImpl* _pIntegerAnimationImpl; + +private: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the default constructor for this class. + // + // @since 2.0 + // + IntegerAnimation(void); +}; // IntegerAnimation + + +}}} // Tizen::Ui::Animations + +#endif // _FUI_ANIM_INTEGER_ANIMATION_H_ diff --git a/inc/FUiAnimLinearTimingFunction.h b/inc/FUiAnimLinearTimingFunction.h new file mode 100644 index 0000000..9ecd639 --- /dev/null +++ b/inc/FUiAnimLinearTimingFunction.h @@ -0,0 +1,107 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimLinearTimingFunction.h + * @brief This is the header file for the %LinearTimingFunction class. + * + * This header file contains the declarations of the %LinearTimingFunction class. + */ + +#ifndef _FUI_ANIM_LINEAR_TIMING_FUNCTION_H_ +#define _FUI_ANIM_LINEAR_TIMING_FUNCTION_H_ + +#include + +namespace Tizen { namespace Ui { namespace Animations +{ + + +/** + * @class LinearTimingFunction + * @brief This class stores the information of a linear timing function. + * + * @since 2.0 + * + * The %LinearTimingFunction class provides linear timing function related information. + * + * For more information on the class features, see Timing Function. + * + */ +class _OSP_EXPORT_ LinearTimingFunction + : public Tizen::Base::Object + , public IVisualElementAnimationTimingFunction +{ +public: + + /** + * This is the default constructor for this class. + * + * @since 2.0 + */ + LinearTimingFunction(void); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~LinearTimingFunction(void); + + + /** + * Calculates the progress(pace) of an animation regarding the time elapsed. + * + * @since 2.0 + * + * @return The progress(pace) value calculated by linear equation @n + * @c 0 and @c 1 are the start and end values of an animation, respectively. + * @param[in] timeProgress The time progress value @n + * This must be in the range @c 0.0 to @c 1.0. + */ + virtual float CalculateProgress(float timeProgress) const; + + +private: + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the assignment operator for this class. + // + // @since 2.0 + // + LinearTimingFunction(const LinearTimingFunction& rhs); + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Assigns the value of the specified instance to the current instance of %LinearTimingFunction. + // + // @since 2.0 + // + LinearTimingFunction& operator =(const LinearTimingFunction& rhs); +}; // LinearTimingFunction + + +}}} // Tizen::Ui::Animations + +#endif //_FUI_ANIM_LINEAR_TIMING_FUNCTION_H_ diff --git a/inc/FUiAnimParallelAnimationGroup.h b/inc/FUiAnimParallelAnimationGroup.h new file mode 100644 index 0000000..124a239 --- /dev/null +++ b/inc/FUiAnimParallelAnimationGroup.h @@ -0,0 +1,253 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimParallelAnimationGroup.h + * @brief This is the header file for the %ParallelAnimationGroup class. + * + * This header file contains the declarations of the %ParallelAnimationGroup class. + */ + +#ifndef _FUI_ANIM_PARALLEL_ANIMATION_GROUP_H_ +#define _FUI_ANIM_PARALLEL_ANIMATION_GROUP_H_ + +#include +#include + +#include +#include + + +namespace Tizen { namespace Ui { namespace Animations +{ + + +/** + * @class ParallelAnimationGroup + * @brief This class is used to group a set of animations together. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %ParallelAnimationGroup class is used to group a set of animations together in parallel. + */ +class _OSP_EXPORT_ ParallelAnimationGroup + : public AnimationGroup +{ +public: + + /** + * This is the default constructor for this class. + * + * @since 2.0 + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + ParallelAnimationGroup(void); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~ParallelAnimationGroup(void); + + + /** + * This is the copy constructor for the %ParallelAnimationGroup class. + * + * @since 2.0 + * + * @param[in] animationGroup An instance of %ParallelAnimationGroup + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + ParallelAnimationGroup(const ParallelAnimationGroup& animationGroup); + + + /** + * Assigns the value of the specified instance to the current instance of %ParallelAnimationGroup. + * + * @since 2.0 + * + * @param[in] rhs An instance of %ParallelAnimationGroup + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + ParallelAnimationGroup& operator =(const ParallelAnimationGroup& rhs); + + + /** + * Checks whether the specified instance and the current instance of %ParallelAnimationGroup have equal animation values. + * + * @since 2.0 + * + * @return @c true if the animation of the two instances of %ParallelAnimationGroup have equal values, @n + * else @c false + * @param[in] rhs An instance of %ParallelAnimationGroup + */ + bool operator ==(const ParallelAnimationGroup& rhs) const; + + + /** + * Checks whether the specified instance and the current instance of %ParallelAnimationGroup have different animation values. + * + * @since 2.0 + * + * @return @c true if the values of the animations of the two instances of %ParallelAnimationGroup are not equal, @n + * else @c false + * @param[in] rhs An instance of %ParallelAnimationGroup + */ + bool operator !=(const ParallelAnimationGroup& rhs) const; + + + /** + * Checks whether the value of the current instance of %ParallelAnimationGroup equals the value of the specified instance. + * + * @since 2.0 + * + * @return @c true if the value of the current instance is equal to the value of the specified instance, @n + * else @c false + * @param[in] obj An instance of %ParallelAnimationGroup + * @remarks The %ParallelAnimationGroup class has a semantic value. @n + * This means that this method checks whether the two instances have the same animation. + */ + virtual bool Equals(const Tizen::Base::Object& obj) const; + + + /** + * Gets the hash value of the current instance. + * + * @since 2.0 + * + * @return The hash value of the current instance + * @remarks The two equal instances must return the same hash value. For better performance, the used hash function must generate a random + * distribution for all inputs. + */ + virtual int GetHashCode(void) const; + + + /** + * Removes all the animations from the animation group. + * + * @since 2.0 + */ + virtual void RemoveAllAnimations(void); + + + /** + * Gets the total number of animations currently stored in a group. + * + * @since 2.0 + * + * @return The total number of animations stored in a group + */ + virtual int GetAnimationCount(void) const; + + + /** + * Adds an animation to the animation group. @n + * Each animation target can have only one animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] animTarget The animation target type @n + * The animation is applied to the specified animation target type. + * @param[in] animation An object of type AnimationBase + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks If an animation is added to a target type that already has an animation associated with it, the old animation is overwritten with the new animation. + */ + result AddAnimation(AnimationTargetType animTarget, const AnimationBase& animation); + + + /** + * Removes an animation from the animation group with the specified animation target. + * + * @since 2.0 + * + * @return An error code + * @param[in] animTarget The animation target + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_OBJ_NOT_FOUND The animation with the specified animation target does not exist in the animation group. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveAnimation(AnimationTargetType animTarget); + + + /** + * Gets the animation object for the specified animation target. + * + * @since 2.0 + * + * @return An animation for the specified animation target in the animation group, @n + * else @c null if the animation target is empty + * @param[in] animTarget The animation target type to get an animation object + */ + AnimationBase* GetAnimationN(AnimationTargetType animTarget) const; + + + /** + * Checks whether an animation is added for the specified target type. + * + * @since 2.0 + * + * @return @c true if an animation is associated with the specified target type, @n + * else @c false + * @param[in] animTarget The animation target type + */ + bool IsAnimationAdded(AnimationTargetType animTarget); + + + /** + * Gets the type information of this instance. + * + * @since 2.0 + * + * @return The type information of this instance + */ + virtual AnimationGroupType GetType(void) const; + + +protected: + + friend class _ParallelAnimationGroupImpl; + + + // + // This variable is for internal use only. Using this variable can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This variable is for internal usage. + // + // @since 2.0 + // + class _ParallelAnimationGroupImpl* _pParallelAnimationGroupImpl; +}; // ParallelAnimationGroup + + +}}} // Tizen::Ui::Animations + +#endif // _FUI_ANIM_PARALLEL_ANIMATION_GROUP_H_ diff --git a/inc/FUiAnimPointAnimation.h b/inc/FUiAnimPointAnimation.h new file mode 100644 index 0000000..38110bc --- /dev/null +++ b/inc/FUiAnimPointAnimation.h @@ -0,0 +1,337 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimPointAnimation.h + * @brief This is the header file for the %PointAnimation class. + * + * This header file contains the declarations of the %PointAnimation class. + */ + +#ifndef _FUI_ANIM_POINT_ANIMATION_H_ +#define _FUI_ANIM_POINT_ANIMATION_H_ + +#include +#include + +namespace Tizen { namespace Ui { namespace Animations +{ + +/** + * @class PointAnimation + * @brief This class animates the Tizen::Graphics::Point object. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %PointAnimation class animates an object from a Tizen::Graphics::Point value to another %Tizen::Graphics::Point value + * based on the specified interpolator type. + * + * For more information on the class features, see Animating UI Controls. + */ +class _OSP_EXPORT_ PointAnimation + : public AnimationBase +{ +public: + + /** + * Initializes this instance of %PointAnimation with the specified parameters. + * + * @since 2.0 + * + * @param[in] startValue The start value for %PointAnimation + * @param[in] endValue The end value for %PointAnimation + * @param[in] duration The duration of animation in milliseconds + * @param[in] interpolator The type of interpolator used for the intermediate value calculation of the animation + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The value of the specified parameter is negative or the interpolator is of an invalid type. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + PointAnimation(const Tizen::Graphics::Point& startValue, const Tizen::Graphics::Point& endValue, long duration, AnimationInterpolatorType interpolator); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~PointAnimation(void); + + + /** + * This is the copy constructor for the %PointAnimation class. + * + * @since 2.0 + * + * @param[in] pointAnimation An instance of %PointAnimation + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + PointAnimation(const PointAnimation& pointAnimation); + + + /** + * Assigns the value of the specified instance to the current instance of %PointAnimation. + * + * @since 2.0 + * + * @param[in] pointAnimation An instance of %PointAnimation + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + PointAnimation& operator =(const PointAnimation& pointAnimation); + + + /** + * Checks whether the specified instance and the current instance of %PointAnimation have equal animation values. + * + * @since 2.0 + * + * @return @c true if the animation of the two instances of %PointAnimation are equal, @n + * else @c false + * @param[in] rhs An instance of %PointAnimation + */ + bool operator ==(const PointAnimation& rhs) const; + + + /** + * Checks whether the specified instance and the current instance of %PointAnimation have different animation values. + * + * @since 2.0 + * + * @return @c true if the values of the animations of the two instances of %PointAnimation are not equal, @n + * else @c false + * @param[in] rhs An instance of %PointAnimation + */ + bool operator !=(const PointAnimation& rhs) const; + + + /** + * Checks whether the value of the current instance of %PointAnimation equals the value of the specified instance. + * + * @since 2.0 + * + * @return @c true if the value of the current instance equals the value of the specified instance, @n + * else @c false + * @param[in] obj An instance of %PointAnimation + * @remarks The %PointAnimation class has a semantic value. @n + * This means that this method checks whether the two instances have the same animation. + */ + virtual bool Equals(const Tizen::Base::Object& obj) const; + + + /** + * Gets the hash value of the current instance. + * + * @since 2.0 + * + * @return The hash value of the current instance + * @remarks The two equal instances must return the same hash value. For better performance, the used hash function must generate a random + * distribution for all inputs. + */ + virtual int GetHashCode(void) const; + + + /** + * Gets the animated value for the current time. + * + * @since 2.0 + * + * @return An error code + * @param[in] currentTime The current time value of the animation @n + * The value must be between @c 0 and the duration of the animation. + * @param[out] animatedValue The animated value for the current time passed as the input parameter + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * + */ + result GetAnimatedValue(long currentTime, Tizen::Graphics::Point& animatedValue) const; + + + /** + * Adds a key frame to the animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] time The time stamp + * @param[in] value The value at the specified @c time + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks If @c time is greater than the duration, it becomes the new duration and @c value becomes the new @c endValue. @n + * The old duration and @c endValue are added as a new key frame entry in the list. @n + * If a key-value pair with the current key already exists, then the old value will be overwritten with the new one. @n + * An exception will be returned if time is equal to @c 0 or duration of the animation. + */ + result AddKeyFrame(long time, const Tizen::Graphics::Point& value); + + + /** + * Gets the keyframe at a particular index in this animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index value in the Keyframe list @n + * The value is sorted in an increasing order of time. + * @param[out] time The time stamp at the specified @c index + * @param[out] value The value at the specified @c index + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is out of range. + * @exception E_SYSTEM A system error has occurred. + * @remarks The @c time and @c value returned are present at the index of the sorted map list that is sorted with respect to the key. + * For example, if the user adds key-frame in the order (10,value1), (20,value2), (5,value3) and then + * GetKeyFrameAt(0,time,value) is called, the pair returned is (5,value3). + */ + result GetKeyFrameAt(int index, long& time, Tizen::Graphics::Point& value) const; + + + /** + * Removes the passed keyframe object from the keyframe list. + * + * @since 2.0 + * + * @return An error code + * @param[in] time The key frame time + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c time value is invalid. + * @exception E_OBJ_NOT_FOUND The specified @c time is not found in the KeyFrame List. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveKeyFrame(long time); + + + /** + * Removes the keyframe present at the specified @c index from the keyframe list. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index value in the Keyframe list @n + * The value is sorted in an increasing order of time. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is out of range. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveKeyFrameAt(int index); + + + /** + * Removes all the keyframes from the animation. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveAllKeyFrames(void); + + + /** + * Sets the start value of the animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] startValue The start value of the animation to set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetStartValue(const Tizen::Graphics::Point& startValue); + + + /** + * Sets the end value of the animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] endValue The end value of the animation to set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetEndValue(const Tizen::Graphics::Point& endValue); + + + /** + * Gets the start value of the animation. + * + * @since 2.0 + * + * @return The start value + */ + Tizen::Graphics::Point GetStartValue(void) const; + + + /** + * Gets the end value of the animation. + * + * @since 2.0 + * + * @return The end value + */ + Tizen::Graphics::Point GetEndValue(void) const; + + + /** + * Gets the type information of this instance. + * + * @since 2.0 + * + * @return The type information of this instance + */ + virtual AnimationType GetType(void) const; + + +protected: + + friend class _PointAnimationImpl; + + + // + // This variable is for internal use only. Using this variable can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This variable is for internal usage. + // + // @since 2.0 + // + class _PointAnimationImpl* _pPointAnimationImpl; + +private: + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the default constructor for this class. + // + // @since 2.0 + // + PointAnimation(void); +}; // PointAnimation + + +}}} // Tizen::Ui::Animations + +#endif // _FUI_ANIM_POINT_ANIMATION_H_ diff --git a/inc/FUiAnimRectangleAnimation.h b/inc/FUiAnimRectangleAnimation.h new file mode 100644 index 0000000..2700d45 --- /dev/null +++ b/inc/FUiAnimRectangleAnimation.h @@ -0,0 +1,373 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimRectangleAnimation.h + * @brief This is the header file for the %RectangleAnimation class. + * + * This header file contains the declarations of the %RectangleAnimation class. + */ + +#ifndef _FUI_ANIM_RECTANGLE_ANIMATION_H_ +#define _FUI_ANIM_RECTANGLE_ANIMATION_H_ + +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Animations +{ + +/** + * @class RectangleAnimation + * @brief This class animates the Tizen::Graphics::Rectangle object. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %RectangleAnimation class animates an object from a Tizen::Graphics::Rectangle value to another %Rectangle value based on the specified interpolator type. + * + * For more information on the class features, see Animating UI Controls. + */ +class _OSP_EXPORT_ RectangleAnimation + : public AnimationBase +{ +public: + + /** + * Initializes this instance of %RectangleAnimation with the specified parameters. + * + * @since 2.0 + * + * @param[in] startValue The start value for rectangle animation + * @param[in] endValue The end value for rectangle animation + * @param[in] duration The duration of animation in milliseconds + * @param[in] interpolator The type of interpolator @n + * This is used for the intermediate value calculation of the animation. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The value of the specified parameter is negative or the interpolator is of an invalid type. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + RectangleAnimation(const Tizen::Graphics::Rectangle& startValue, const Tizen::Graphics::Rectangle& endValue, long duration, AnimationInterpolatorType interpolator); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~RectangleAnimation(void); + + + /** + * This is the copy constructor for the %RectangleAnimation class. + * + * @since 2.0 + * + * @param[in] rectangleAnimation An instance of %RectangleAnimation + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + RectangleAnimation(const RectangleAnimation& rectangleAnimation); + + + /** + * Assigns the value of the specified instance to the current instance of %RectangleAnimation. + * + * @since 2.0 + * + * @param[in] rhs An instance of %RectangleAnimation + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + RectangleAnimation& operator =(const RectangleAnimation& rhs); + + + /** + * Checks whether the specified instance and the current instance of %RectangleAnimation have equal animation values. + * + * @since 2.0 + * + * @return @c true if the animation of the two instances of %RectangleAnimation have equal values, @n + * else @c false + * @param[in] rhs An instance of %RectangleAnimation + */ + bool operator ==(const RectangleAnimation& rhs) const; + + + /** + * Checks whether the specified instance and the current instance of %RectangleAnimation have different animation values. + * + * @since 2.0 + * + * @return @c true if the values of the animations of the two instances of %RectangleAnimation are not equal, @n + * else @c false + * @param[in] rhs An instance of %RectangleAnimation + */ + bool operator !=(const RectangleAnimation& rhs) const; + + + /** + * Checks whether the value of the current instance of %RectangleAnimation is equal to the value of the specified instance. + * + * @since 2.0 + * + * @return @c true if the value of the current instance is equal to the value of the specified instance, @n + * else @c false + * @param[in] obj An instance of %RectangleAnimation + * @remarks The %RectangleAnimation class has a semantic value. This means that this method checks whether the two instances have the same + * animation. + */ + virtual bool Equals(const Tizen::Base::Object& obj) const; + + + /** + * Gets the hash value of the current instance. + * + * @since 2.0 + * + * @return The hash value of the current instance + * @remarks The two equal instances must return the same hash value. For better performance, the used hash function must generate a random + * distribution for all inputs. + */ + virtual int GetHashCode(void) const; + + + /** + * Sets the anchor points for the animation. + * + * @since 2.0 + * + * @param[in] anchorX The X value of the anchor @n + * The control's animation is performed at this point. The range of the anchor point is @c 0.0 to @c 1.0. + * @param[in] anchorY The Y value of the anchor @n + * The control's animation is performed at this point. The range of the anchor point is @c 0.0 to @c 1.0. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @remarks The default anchor point value is (0.0, 0.0). The range of an anchor point is @c 0.0 to @c 1.0. @n + * When the anchor point value is (0.0, 0.0), the object is scaled and the top-left corner of the object remains fixed. @n + * For all the other anchor point values, the position property is changed. @n + * If the anchor point value is (0.5, 0.5), the object is scaled with respect to the center. @n + * If the anchor point value is (1.0, 1.0), the object is scaled and the bottom-right corner of the object remains fixed. + */ + result SetAnchor(float anchorX, float anchorY); + + + /** + * Gets the anchor point associated with the animation. @n + * The default anchor point is (0.0, 0.0). + * + * @since 2.0 + * + * @param[out] anchorX The X value of the anchor @n + * The control's animation is performed at this point. + * @param[out] anchorY The Y value of the anchor @n + * The control's animation is performed at this point. + */ + void GetAnchor(float& anchorX, float& anchorY) const; + + + /** + * Gets the animated value for the current time. + * + * @since 2.0 + * + * @return An error code + * @param[in] currentTime The current time value of the animation play @n + * The value must be between @c 0 and the duration of the animation. + * @param[out] animatedValue The animated value for the current time passed as the input parameter + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * + */ + result GetAnimatedValue(long currentTime, Tizen::Graphics::Rectangle& animatedValue) const; + + + /** + * Adds a key frame to the animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] time The time stamp + * @param[in] value The value at the specified @c time + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks If @c time is greater than the duration, it becomes the new duration and @c value becomes the new end value. @n + * Also, the old duration and end value are added as a new keyframe entry in the list. + * @remarks If a key-value pair with the current key already exists, the old value is overwritten with the new one. + * @remarks An exception is returned if @c time is equal to @c 0 or the duration of the animation. + */ + result AddKeyFrame(long time, const Tizen::Graphics::Rectangle& value); + + + /** + * Gets the keyframe at a specified @c index in this animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index value in the Keyframe list @n + * This is sorted in an increasing order of time. + * @param[out] time The time stamp at the specified @c index + * @param[out] value The value at the specified @c index + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is out of range. + * @exception E_SYSTEM A system error has occurred. + * @remarks The @c time and @c value returned is the one present at the index of the sorted map list (sorted with respect to the key). + * For example, if the user adds keyframe in the order (10,value1), (20,value2), (5,value3), and then GetKeyFrameAt(0,time,value) is called, + * the pair returned is (5, value3). + */ + result GetKeyFrameAt(int index, long& time, Tizen::Graphics::Rectangle& value) const; + + + /** + * Removes the passed keyframe object from the keyframe list. + * + * @since 2.0 + * + * @return An error code + * @param[in] time The key frame time + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c time value is invalid. + * @exception E_OBJ_NOT_FOUND The time passed is not found in the KeyFrame list. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveKeyFrame(long time); + + + /** + * Removes the keyframe present at the specified @c index from the keyframe list. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index value in the Keyframe list @n + * This is sorted in an increasing order of time. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is out of range. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveKeyFrameAt(int index); + + + /** + * Removes all the keyframes from an animation. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveAllKeyFrames(void); + + + /** + * Sets the start value of the animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] startValue The start value of the animation to set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result SetStartValue(const Tizen::Graphics::Rectangle& startValue); + + + /** + * Sets the end value of the animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] endValue The end value of the animation to set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result SetEndValue(const Tizen::Graphics::Rectangle& endValue); + + + /** + * Gets the start value of the animation. + * + * @since 2.0 + * + * @return The start value + */ + Tizen::Graphics::Rectangle GetStartValue(void) const; + + + /** + * Gets the end value of the animation. + * + * @since 2.0 + * + * @return The end value + */ + Tizen::Graphics::Rectangle GetEndValue(void) const; + + + /** + * Gets the type information of this instance. + * + * @since 2.0 + * + * @return The type information of this instance + */ + virtual AnimationType GetType(void) const; + + +protected: + friend class _RectangleAnimationImpl; + + + // + // This variable is for internal use only. Using this variable can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This variable is for internal usage. + // + // @since 2.0 + // + class _RectangleAnimationImpl* _pRectangleAnimationImpl; + + +private: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the default constructor for this class. + // + // @since 2.0 + // + RectangleAnimation(void); +}; // RectangleAnimation + + +}}} // Tizen::Ui::Animations + +#endif // _FANIM_RECTANGLEANIMATION_H_ diff --git a/inc/FUiAnimRotateAnimation.h b/inc/FUiAnimRotateAnimation.h new file mode 100644 index 0000000..76f1b4e --- /dev/null +++ b/inc/FUiAnimRotateAnimation.h @@ -0,0 +1,231 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimRotateAnimation.h + * @brief This is the header file for the %RotateAnimation class. + * + * This header file contains the declarations of the %RotateAnimation class. + */ + +#ifndef _FUI_ANIM_ROTATE_ANIMATION_H_ +#define _FUI_ANIM_ROTATE_ANIMATION_H_ + +#include + + +namespace Tizen { namespace Ui { namespace Animations +{ + + +/** + * @class RotateAnimation + * @brief This class animates between two angle values. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %RotateAnimation class animates an object from an angle value (float) to another angle value (float) + * based on the specified interpolator type. When associated with a Control, the animation is applied on the z-axis of the %Control. + * + * For more information on the class features, see Animating UI Controls. + */ +class _OSP_EXPORT_ RotateAnimation + : public FloatAnimation +{ +public: + + /** + * Initializes this instance of %RotateAnimation with the specified parameters. + * + * @since 2.0 + * + * @param[in] startValue The start value for the rotate animation @n + * If the value is positive, the control is rotated in the clockwise direction and if the value is negative, the control + * is rotated in the anti-clockwise direction. + * @param[in] endValue The end value for the rotate animation @n + * The value must be @c 0 or @c 360, else ControlAnimator::ControlAnimator() returns an @c E_INVALID_ARG exception. + * @param[in] duration The duration of animation in milliseconds + * @param[in] interpolator The type of interpolator @n + * This is used for the intermediate value calculation of the animation. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The value of the specified parameter is negative or the interpolator is of an invalid type. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + RotateAnimation(float startValue, float endValue, long duration, AnimationInterpolatorType interpolator); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~RotateAnimation(void); + + + /** + * This is the copy constructor for the %RotateAnimation class. + * + * @since 2.0 + * + * @param[in] rotateAnimation An instance of %RotateAnimation + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + RotateAnimation(const RotateAnimation& rotateAnimation); + + + /** + * Assigns the value of the specified instance to the current instance of %RotateAnimation. + * + * @since 2.0 + * + * @param[in] rhs An instance of %RotateAnimation + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + RotateAnimation& operator =(const RotateAnimation& rhs); + + + /** + * Checks whether the specified instance and the current instance of %RotateAnimation have equal animation values. + * + * @since 2.0 + * + * @return @c true if the animation of the two instances of %RotateAnimation have equal values, @n + * else @c false + * @param[in] rhs An instance of %RotateAnimation + */ + bool operator ==(const RotateAnimation& rhs) const; + + + /** + * Checks whether the specified instance and the current instance of %RotateAnimation have different animation values. + * + * @since 2.0 + * + * @return @c true if the values of the animations of the two instances of %RotateAnimation are not equal, @n + * else @c false + * @param[in] rhs An instance of %RotateAnimation + */ + bool operator !=(const RotateAnimation& rhs) const; + + + /** + * Checks whether the value of the current instance of %RotateAnimation is equal to the value of the specified instance. + * + * @since 2.0 + * + * @return @c true if the value of the current instance is equal to the value of the specified instance, @n + * else @c false + * @param[in] obj An instance of %RotateAnimation + * @remarks The %RotateAnimation class has a semantic value. This means that this method checks whether the two instances have the same animation. + */ + virtual bool Equals(const Tizen::Base::Object& obj) const; + + + /** + * Gets the hash value of the current instance. + * + * @since 2.0 + * + * @return The hash value of the current instance + * @remarks The two equal instances must return the same hash value. For better performance, the used hash function must generate a random + * distribution for all inputs. + */ + virtual int GetHashCode(void) const; + + + /** + * Sets the anchor points for the animation. + * + * @since 2.0 + * + * @param[in] anchorX The x value of the anchor @n + * The control's animation is performed at this point. The range of the anchor point is @c 0.0 to @c 1.0. + * @param[in] anchorY The y value of the anchor @n + * The control's animation is performed at this point. The range of the anchor point is @c 0.0 to @c 1.0. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @remarks The default anchor point value is (0.5, 0.5). The range of an anchor point is @c 0.0 to @c 1.0. @n + * If the anchor point value is (0.5, 0.5), the object is rotated and the center of the object remains fixed. @n + * If the anchor point value is (0.0, 0.0), the object is rotated and the top-left corner of the object remains fixed. @n + * If the anchor point value is (1.0, 1.0), the object is rotated and the right-bottom corner of the object remains fixed. + */ + result SetAnchor(float anchorX, float anchorY); + + + /** + * Gets the anchor point associated with the animation. @n + * The default anchor point is (0.5, 0.5). + * + * @since 2.0 + * + * @param[out] anchorX The x value of the anchor @n + * The control's animation is performed at this point. + * @param[out] anchorY The y value of the anchor @n + * The control's animation is performed at this point. + */ + void GetAnchor(float& anchorX, float& anchorY) const; + + + /** + * Gets the type information of this instance. + * + * @since 2.0 + * + * @return The type information of this instance + */ + virtual AnimationType GetType(void) const; + + +protected: + + friend class _RotateAnimationImpl; + + + // + // This variable is for internal use only. Using this variable can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This variable is for internal usage. + // + // @since 2.0 + // + class _RotateAnimationImpl* _pRotateAnimationImpl; + + +private: + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the default constructor for this class. + // + // @since 2.0 + // + RotateAnimation(void); +}; // RotateAnimation + + +}}} // Tizen::Ui::Animations + +#endif // _FUI_ANIM_ROTATE_ANIMATION_H_ diff --git a/inc/FUiAnimSequentialAnimationGroup.h b/inc/FUiAnimSequentialAnimationGroup.h new file mode 100644 index 0000000..5671eaa --- /dev/null +++ b/inc/FUiAnimSequentialAnimationGroup.h @@ -0,0 +1,286 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimSequentialAnimationGroup.h + * @brief This is the header file for the %SequentialAnimationGroup class. + * + * This header file contains the declarations of the %SequentialAnimationGroup class. + */ + +#ifndef _FUI_ANIM_SEQUENTIAL_ANIMATION_GROUP_H_ +#define _FUI_ANIM_SEQUENTIAL_ANIMATION_GROUP_H_ + +#include +#include + +#include +#include + + +namespace Tizen { namespace Ui { namespace Animations +{ + + +/** + * @class SequentialAnimationGroup + * @brief This class is used to group a set of animations together. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %SequentialAnimationGroup class is used to group a set of animations together in sequence. + */ +class _OSP_EXPORT_ SequentialAnimationGroup + : public AnimationGroup +{ +public: + + /** + * This is the default constructor for this class. + * + * @since 2.0 + * + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + SequentialAnimationGroup(void); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~SequentialAnimationGroup(void); + + + /** + * This is the copy constructor for the %SequentialAnimationGroup class. + * + * @since 2.0 + * + * @param[in] animationGroup An instance of %SequentialAnimationGroup + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + SequentialAnimationGroup(const SequentialAnimationGroup& animationGroup); + + + /** + * Assigns the value of the specified instance to the current instance of %SequentialAnimationGroup. + * + * @since 2.0 + * + * @param[in] rhs An instance of %SequentialAnimationGroup + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + SequentialAnimationGroup& operator =(const SequentialAnimationGroup& rhs); + + + /** + * Checks whether the specified instance and the current instance of %SequentialAnimationGroup have equal animation values. + * + * @since 2.0 + * + * @return @c true if the animation of the two instances of %SequentialAnimationGroup have equal values, @n + * else @c false + * @param[in] rhs An instance of %SequentialAnimationGroup + */ + bool operator ==(const SequentialAnimationGroup& rhs) const; + + + /** + * Checks whether the specified instance and the current instance of %SequentialAnimationGroup have different animation values. + * + * @since 2.0 + * + * @return @c true if the values of the animations of the two instances of %SequentialAnimationGroup are not equal, @n + * else @c false + * @param[in] rhs An instance of %SequentialAnimationGroup + */ + bool operator !=(const SequentialAnimationGroup& rhs) const; + + + /** + * Checks whether the value of the current instance of %SequentialAnimationGroup is equal to the value of the specified instance. + * + * @since 2.0 + * + * @return @c true if the value of the current instance is equal to the value of the specified instance, @n + * else @c false + * @param[in] obj An instance of %SequentialAnimationGroup + * @remarks The %SequentialAnimationGroup class has a semantic value. @n + * This means that this method checks whether the two instances have the same animation. + */ + virtual bool Equals(const Tizen::Base::Object& obj) const; + + + /** + * Gets the hash value of the current instance. + * + * @since 2.0 + * + * @return The hash value of the current instance + * @remarks The two equal instances must return the same hash value. For better performance, the used hash function must generate a random + * distribution for all inputs. + */ + virtual int GetHashCode(void) const; + + + /** + * Removes all the animations from the animation group. + * + * @since 2.0 + */ + virtual void RemoveAllAnimations(void); + + + /** + * Gets the number of animations currently stored in a group. + * + * @since 2.0 + * + * @return The total number of animations stored in a group + */ + virtual int GetAnimationCount(void) const; + + + /** + * Adds the specified animation to the animation group. + * + * @since 2.0 + * + * @return An error code + * @param[in] animTarget The animation target type @n + * The animation is applied to the specified animation target type. + * @param[in] animation An instance of AnimationBase + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result AddAnimation(AnimationTargetType animTarget, const AnimationBase& animation); + + + /** + * Sets the specified @c animation to the animation group. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index at which the animation is set + * @param[in] animTarget The AnimationTargetType to which the animation is applied + * @param[in] animation An instance of AnimationBase + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_OUT_OF_RANGE The specified @c index is out of range. + * @exception E_SYSTEM A system error has occurred. + * @remarks If an animation is added to the same index which already has an animation associated with it, the old animation will be overwritten with the new one. + */ + result SetAnimationAt(int index, AnimationTargetType animTarget, const AnimationBase& animation); + + + /** + * Inserts the specified @c animation to the animation group. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index at which the animation is inserted + * @param[in] animTarget The AnimationTargetType to which the animation is applied + * @param[in] animation An instance of AnimationBase + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_OUT_OF_RANGE The specified @c index is out of range. + * @exception E_SYSTEM A system error has occurred. + */ + result InsertAnimationAt(int index, AnimationTargetType animTarget, const AnimationBase& animation); + + + /** + * Removes the animation from the animation group at the specified @c index. + * + * @since 2.0 + * + * @return An error code + * @param[in] index An index value in the animation group list + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is out of range. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveAnimationAt(int index); + + + /** + * Gets the animation object at the specified @c index. + * + * @since 2.0 + * + * @return The animation object at the specified @c index value in the animation group, @n + * else @c null if the @c index is invalid + * @param[in] index The index value in the animation group list + */ + AnimationBase* GetAnimationAtN(int index) const; + + + /** + * Gets the target type of the animation at the specified @c index. + * + * @since 2.0 + * + * @return The target type of the animation at the specified @c index value in the animation group, @n + * else @c ANIMATION_TARGET_NONE if the specified @c index is invalid + * @param[in] index The index value in the animation group list + */ + AnimationTargetType GetAnimationTargetTypeAt(int index) const; + + + /** + * Gets the type information of this instance. + * + * @since 2.0 + * + * @return The type information of this instance + */ + virtual AnimationGroupType GetType(void) const; + + +protected: + + friend class _SequentialAnimationGroupImpl; + + + // + // This variable is for internal use only. Using this variable can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This variable is for internal usage. + // + // @since 2.0 + // + class _SequentialAnimationGroupImpl* _pSequentialAnimationGroupImpl; +}; // SequentialAnimationGroup + + +}}} // Tizen::Ui::Animations + +#endif // _FUI_ANIM_SEQUENTIAL_ANIMATION_GROUP_H_ diff --git a/inc/FUiAnimTypes.h b/inc/FUiAnimTypes.h new file mode 100644 index 0000000..457b193 --- /dev/null +++ b/inc/FUiAnimTypes.h @@ -0,0 +1,186 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimTypes.h + * @brief This is the header file for the common data types used by UI animations. + * + * This header file contains the declarations of the common data types and constants used by UI animations. + */ + +#ifndef _FUI_ANIM_TYPES_H_ +#define _FUI_ANIM_TYPES_H_ + + +namespace Tizen { namespace Ui { namespace Animations +{ + + +/** @enum HitTestResult + * + * Defines the hit test result. + * + * @since 2.0 + * @see IVisualElementContentProvider::HitTest() + * @see VisualElement::OnHitTest() + */ +enum HitTestResult { + HIT_TEST_NOWHERE = 0, /**< VisualElement does not contain the specified point */ + HIT_TEST_MATCH = 1 /**< VisualElement contains the specified point */ +}; + + + + +/** + * @enum AnimationType + * + * Defines the information of the animation type. + * + * @since 2.0 + */ +enum AnimationType +{ + ANIMATION_TYPE_FLOAT_ANIMATION = 0, /**< The float animation */ + ANIMATION_TYPE_INTEGER_ANIMATION, /**< The integer animation */ + ANIMATION_TYPE_DIMENSION_ANIMATION, /**< The dimension animation */ + ANIMATION_TYPE_RECTANGLE_ANIMATION, /**< The rectangle animation */ + ANIMATION_TYPE_POINT_ANIMATION, /**< The point animation */ + ANIMATION_TYPE_ROTATE_ANIMATION, /**< The rotate animation */ +}; + + +/** + * @enum AnimationInterpolatorType + * + * Defines the interpolator type used in animations. + * + * @since 2.0 + */ +enum AnimationInterpolatorType +{ + ANIMATION_INTERPOLATOR_LINEAR = 0, /**< The linear interpolator */ + ANIMATION_INTERPOLATOR_DISCRETE, /**< The discrete interpolator*/ + ANIMATION_INTERPOLATOR_EASE_IN, /**< The easeIn interpolator*/ + ANIMATION_INTERPOLATOR_EASE_OUT, /**< The easeOut interpolator*/ + ANIMATION_INTERPOLATOR_EASE_IN_OUT, /**< The easeInOut interpolator*/ + ANIMATION_INTERPOLATOR_BEZIER, /**< The bezier interpolator @n + Sets the control points for this interpolator using AnimationBase::SetBezierControlPoints(). */ +}; + + +/** + * @enum AnimationTargetType + * + * Defines the object property for which the animations are to be applied. + * + * @since 2.0 + */ +enum AnimationTargetType +{ + ANIMATION_TARGET_NONE = -1, /**< An invalid %Animation */ + ANIMATION_TARGET_SIZE, /**< An animation for the size property */ + ANIMATION_TARGET_POSITION, /**< An animation for the position property */ + ANIMATION_TARGET_ALPHA, /**< An animation for alpha property @n The value range for playing the alpha animation must be between @c 0.0 to @c 1.0. */ + ANIMATION_TARGET_ROTATION, /**< An animation for rotate property @n The control will be rotated in the xy-plane along the z-axis. */ + ANIMATION_TARGET_MAX // This enum value is for internal use only. + // Using this enum value can cause behavioral, security-related, and consistency-related issues in the application. +}; + + +/** + * @enum AnimatorStatus + * + * Defines the status of the animations attached to a control. + * + * @since 2.0 + */ +enum AnimatorStatus +{ + ANIMATOR_STATUS_PLAYING, /**< The animation being played */ + ANIMATOR_STATUS_STOPPED, /**< The animation stopped */ +}; + + +/** +* @enum AnimationGroupType +* +* Defines the animation group type information. +* +* @since 2.0 +*/ +enum AnimationGroupType +{ + ANIMATION_GROUP_TYPE_SEQUENTIAL = 0, /** The sequential animation group */ + ANIMATION_GROUP_TYPE_PARALLEL, /** The parallel animation group */ +}; + + +/** + * @enum AnimationTransactionStatus + * + * Defines the transaction status of the animation. + * @since 2.0 + */ +enum AnimationTransactionStatus +{ + ANIMATION_TRANSACTION_STATUS_PLAYING, /**< A transaction being played */ + ANIMATION_TRANSACTION_STATUS_STOPPED, /**< A transaction stopped */ +}; + + +/** + * @enum ControlAnimatorTriggerType + * + * Defines the trigger for animations attached to a control. + * + * @since 2.0 + */ +enum ControlAnimatorTriggerType +{ + ANIMATION_TRIGGER_USER = 0, /**< The animation attached to a control is explicitly triggered by the user */ + ANIMATION_TRIGGER_POSITION_CHANGE, /**< The animation attached to a control is implicitly triggered by changing the position of the control */ + ANIMATION_TRIGGER_SIZE_CHANGE, /**< The animation attached to a control is implicitly triggered by changing the size of the control */ + ANIMATION_TRIGGER_SHOW_STATE_CHANGE, /**< The animation attached to a control is implicitly triggered by changing the showstate of the control */ +}; + + + +/** + * @enum FrameAnimatorFormTransitionAnimation + * + * Defines the platform predefined animation set for the animation events. + * + * @since 2.0 + */ +enum FrameAnimatorFormTransitionAnimation +{ + FRAME_ANIMATOR_FORM_TRANSITION_ANIMATION_TRANSLATE_LEFT = 0, /**< The transition animation using translate left animation */ + FRAME_ANIMATOR_FORM_TRANSITION_ANIMATION_TRANSLATE_RIGHT, /**< The transition animation using translate right animation */ + FRAME_ANIMATOR_FORM_TRANSITION_ANIMATION_FADE_IN_OUT, /**< The transition animation using alpha animation */ + FRAME_ANIMATOR_FORM_TRANSITION_ANIMATION_ZOOM_IN, /**< The transition animation using scale animation */ + FRAME_ANIMATOR_FORM_TRANSITION_ANIMATION_ZOOM_OUT, /**< The transition animation using scale animation */ + FRAME_ANIMATOR_FORM_TRANSITION_ANIMATION_DEPTH_IN, /**< The transition animation using scale and alpha animation */ + FRAME_ANIMATOR_FORM_TRANSITION_ANIMATION_DEPTH_OUT, /**< The transition animation using scale and alpha animation */ + FRAME_ANIMATOR_FORM_TRANSITION_ANIMATION_MAX // This enum value is for internal use only. Using this enum value can cause behavioral, security-related, + // and consistency-related issues in the application. +}; + + +}}} // Tizen::Ui::Animations + +#endif // _FUI_ANIMATIONS_TYPES_H_ diff --git a/inc/FUiAnimVisualElement.h b/inc/FUiAnimVisualElement.h new file mode 100644 index 0000000..a25ad79 --- /dev/null +++ b/inc/FUiAnimVisualElement.h @@ -0,0 +1,1352 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimVisualElement.h + * @brief This is the header file for the %VisualElement class. + * + * This header file contains the declarations of the %VisualElement class. + */ + +#ifndef _FUI_ANIM_VISUAL_ELEMENT_H_ +#define _FUI_ANIM_VISUAL_ELEMENT_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Graphics { +class Canvas; +}} + +namespace Tizen { namespace Ui { namespace Animations +{ + +class VisualElementSurface; +class _VisualElementImpl; + + +/** + * @class VisualElement + * @brief This class is a base class for all displayable objects on screen with animations. + * + * @since 2.0 + * + * The %VisualElement class is a base class for all displayable objects on screen with animations. + * It encapsulates properties about coordinates (bounds, transform matrix, children transform matrix and so on), + * contents (content bounds, clipping, opacity, show state and so on) and tree-hierarchy. + * It also provides infrastructure necessary for animations (AddAnimation(), RemoveAnimation() and so on). + * A %VisualElement object instantiated by applications works as a model object and may have a cloned counter part for presentation on screen which has a separated life-cycle. + * The presentation object is managed by system and applications must not change properties of it. + * Most animations of %VisualElement are applied on presentation objects. Properties set by applications are stored in model objects while properties of presentation objects + * are changing during implicit or explicit animations. + * + * This class also provides interfaces such as IVisualElementContentProvider, IVisualElementEventListener, and IVisualElementAnimationProvider to override default behaviors + * without inheritances. + * + * For more information on the class features, see Visual Elements. + * + */ + +class _OSP_EXPORT_ VisualElement + : public Tizen::Base::Object +{ +public: + /** + * The lowest drawing group, such as, background element. + * + * @since 2.0 + */ + static const int Z_ORDER_GROUP_LOWEST = -1000; + + + /** + * The level of the default group. + * + * @since 2.0 + */ + static const int Z_ORDER_GROUP_NORMAL = 0; + + + /** + * The highest drawing group, such as, top-most element. + * + * @since 2.0 + */ + static const int Z_ORDER_GROUP_HIGHEST = 1000; + + + /** + * @enum RenderOperation + * Defines the render operation for %VisualElement. @n + * The contents of %VisualElement will be composited on screen using this operation. + */ + enum RenderOperation + { + RENDER_OPERATION_BLEND = 0, /**< The contents will be displayed blended with underlying %VisualElements */ + RENDER_OPERATION_COPY /**< The contents will be displayed obscuring other underlying %VisualElements */ + }; + + + /** + * The object is not fully constructed after this constructor is called. + * For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + VisualElement(void); + + /** + * Initializes this instance of %VisualElement. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(void); + + /** + * Deallocates this instance and all descendants of %VisualElement. + * + * @since 2.0 + * + * @remarks This method must be used to destroy this instance. @n + * Do not use @c delete operator. + * @remarks This method first destroys children, and then it destroys the parent(this instance). + * @remarks This method will call OnDestructing() callback before deallocating the instance. + * @remarks The destructing sequence is as follows: + * 1. Destroy children recursively. + * 2. Calls %OnDestructing() callback. + * 3. Detaches from parent. + * 4. Removes all animations associated with this instance. + * 5. Deallocates this instance. + * @see Construct() + */ + void Destroy(void); + + /** + * Sets the animation provider which creates implicit animations. + * + * @since 2.0 + * + * @return An error code + * @param[in] pProvider The animation provider to create implicit animations + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION This instance does not allow to set an animation provider. @n + * The animation provider can be set to the model instance only. + * + * @see IVisualElementAnimationProvider + * @see GetAnimationProvider() + */ + result SetAnimationProvider(IVisualElementAnimationProvider* pProvider); + + /** + * Gets the assigned animation provider. + * + * @since 2.0 + * + * @return The animation provider + * @exception E_INVALID_OPERATION This instance does not allow to get an animation provider. @n + * The animation provider can be set to the model instance only. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see IVisualElementAnimationProvider + * @see SetAnimationProvider() + */ + IVisualElementAnimationProvider* GetAnimationProvider(void) const; + + /** + * Sets the content provider which customizes information on contents. + * + * @since 2.0 + * + * @param[in] pProvider The content provider to customize information on content + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION This instance does not allow to set a content provider. @n + * The content provider can be set to the model instance only. + * @see IVisualElementContentProvider + * @see GetContentProvider() + */ + result SetContentProvider(IVisualElementContentProvider* pProvider); + + /** + * Gets the assigned content provider. + * + * @since 2.0 + * + * @return The content provider + * @exception E_INVALID_OPERATION This instance does not allow to get content provider. @n + * The content provider can be set to the model instance only. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see IVisualElementContentProvider + * @see SetContentProvider() + */ + IVisualElementContentProvider* GetContentProvider(void) const; + + /** + * Sets the %VisualElement event listener. + * + * @since 2.0 + * + * @param[in] pListener The %VisualElement event listener + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION This instance does not allow to set an event listener. @n + * The event listener can be set to the model instance only. + * @see IVisualElementEventListener + * @see GetVisualElementEventListener() + */ + result SetVisualElementEventListener(IVisualElementEventListener* pListener); + + /** + * Gets the assigned %VisualElement event listener. + * + * @since 2.0 + * + * @return The %VisualElement event listener + * @exception E_INVALID_OPERATION This instance does not allow to get an event listener. @n + * The event listener can be set to the model instance only. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see IVisualElementEventListener + * @see SetVisualElementEventListener() + */ + IVisualElementEventListener* GetVisualElementEventListener(void) const; + + + /** + * Overrides the OnConstructed() method to provide user-specific initialization code. + * + * @since 2.0 + * + * @remarks This method is called after the instance is initialized by the Construct() method successfully. + * @see Construct() + * @see Destroy() + * @see OnDestructing() + */ + virtual void OnConstructed(void); + + /** + * Overrides the OnDestructing() method to provide user-specific termination code. + * + * @since 2.0 + * + * @remarks This method is called before deallocating the %VisualElement instance by the Destroy() method. + * @see Destroy() + * @see Construct() + * @see OnConstructed() + */ + virtual void OnDestructing(void); + + /** + * Called by the GetChildAt() method to check whether this instance contains the @c point specified. @n + * If the Tizen::Ui::Animations::IVisualElementAnimationProvider interface is set to this instance, + * the Tizen::Ui::Animations::IVisualElementContentProvider::HitTest() callback will be called instead. + * + * @since 2.0 + * + * @return The hit test result + * @param[in] point The hit position in the coordinate space of this instance + * @remarks Hit test results must be one of the following values: @n + * - Tizen::Ui::Animations::HitTestResult::HIT_TEST_NOWHERE + * - Tizen::Ui::Animations::HitTestResult::HIT_TEST_MATCH + * @see GetChildAt() + * @see IVisualElementContentProvider::HitTest() + */ + virtual HitTestResult OnHitTest(const Tizen::Graphics::FloatPoint& point); + + /** + * Before the system calls OnDraw() method to fill the contents, the %OnPrepareDraw() method is called to give an opportunity to hook or prepare drawing. @n + * If the [IVisualElementContentProvider](@ref Tizen::Ui::Animations::IVisualElementContentProvider) interface is set to this instance, + * the [PrepareDraw()](@ref Tizen::Ui::Animations::IVisualElementContentProvider::PrepareDraw) callback will be called instead. + * + * @since 2.0 + * + * @return @c true if OnDraw() can be called, @n + * else @c false + * @see IVisualElementContentProvider::PrepareDraw() + */ + virtual bool OnPrepareDraw(void); + + /** + * Called to fill contents on the canvas provided by the system. @n + * If the [IVisualElementContentProvider](@ref Tizen::Ui::Animations::IVisualElementContentProvider) is set to this instance, + * the [DrawContent()](@ref Tizen::Ui::Animations::IVisualElementContentProvider::DrawContent) callback will be called instead. + * + * @since 2.0 + * + * @param[in] canvas The canvas to fill the contents of %VisualElement + * @see IVisualElementContentProvider::DrawContent() + */ + virtual void OnDraw(Tizen::Graphics::Canvas& canvas); + + /** + * Overrides the %OnCreateAnimationForProperty() method to provide user-specific implicit animation. @n + * If the [IVisualElementAnimationProvider](@ref Tizen::Ui::Animations::IVisualElementAnimationProvider) interface is set to this instance, + * the [CreateAnimationForProperty()](@ref Tizen::Ui::Animations::IVisualElementAnimationProvider::CreateAnimationForProperty) callback will be called instead. + * + * @since 2.0 + * + * @return The VisualElementAnimation instance for the specified property, @n + else @c null to disable implicit animation for the property + * @param[in] property The property to animate implicitly + * @remarks The returned [Animation](@ref Tizen::Ui::Animations::VisualElementAnimation) instance must be allocated on the heap if needed. @n + * If you do not need an implicit animation for the @c property at the time this method is called, return @c null. + * @see IVisualElementAnimationProvider::CreateAnimationForProperty() + */ + virtual VisualElementAnimation* OnCreateAnimationForProperty(const Tizen::Base::String& property); + + /** + * Overrides the %OnGetPropertyRequested() method to provide user-specific properties or to change default behaviors of %VisualElement class. @n + * This method is called whenever GetProperty() is called. + * + * @since 2.0 + * + * @return The property's value + * @param[in] property The property name + * @see SetProperty() + * @see GetProperty() + * @see OnSetPropertyRequested() + */ + virtual Tizen::Ui::Variant OnGetPropertyRequested(const Tizen::Base::String& property) const; + + /** + * Overrides the %OnSetPropertyRequested() method to provide user-specific properties or to change default behaviors of %VisualElement class. @n + * This method is called whenever SetProperty() is called. + * + * @since 2.0 + * + * @return An error code + * @param[in] property The property name + * @param[in] value The value of the property to set + * @see SetProperty() + * @see GetProperty() + * @see OnGetPropertyRequested() + */ + virtual result OnSetPropertyRequested(const Tizen::Base::String& property, const Tizen::Ui::Variant& value); + + /** + * Gets the parent of this instance. + * + * @since 2.0 + * + * @return The parent of the this instance + */ + VisualElement* GetParent(void) const; + + /** + * Gets a list of children of this instance. + * + * @since 2.0 + * + * @return The list of children of this instance + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks If an exception occurs, this method returns @c null. + */ + Tizen::Base::Collection::IList* GetChildrenN(void) const; + + /** + * Gets the count of children. + * + * @since 2.0 + * + * @return The count of children + */ + int GetChildrenCount(void) const; + + /** + * Checks whether this instance is a child or descendant of the specified one. + * + * @since 2.0 + * + * @return @c true if this instance is a child or descendant of the specified one, @n + * else @c false + * @param[in] other An instance of %VisualElement to test relationship + */ + bool IsChildOf(const VisualElement& other) const; + + /** + * Attaches a child to this instance. @n + * The %AttachChild() method attaches the specified @c child at the highest position in the Z order group of the @c child. + * If you need to change Z-Order group, you can change it using the SetZOrderGroup() method. + * + * @since 2.0 + * + * @return An error code + * @param[in] child The %VisualElement instance to attach to this instance + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The input parameter is incorrect. Either of the following conditions has occurred: @n + * - The specified @c child is not instantiated successfully. @n + * - The specified @c child is this instance. @n + * - The specified @c child is already an ancestor of this instance. + * @see SetZOrderGroup() + * @see InsertChild() + * @see DetachChild() + * @see ChangeZOrder() + */ + result AttachChild(const VisualElement& child); + + /** + * Inserts a child to this instance. @n + * If @c pReference is not @c null, the Z order group of @c child will be changed into that of @c pReference and @c child will be + * placed right above or below the @c pReference instance according to the @c above parameter. + * + * @since 2.0 + * + * @return An error code + * @param[in] child The %VisualElement instance to attach to this instance + * @param[in] pReference A pointer to the %VisualElement instance that is referenced + * @param[in] above Specifies the position of @c child relative to the @c pReference + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The input parameter is incorrect. Either of the following conditions has occurred: @n + * - The specified @c child is not instantiated successfully. @n + * - The specified @c child is this instance. @n + * - The specified @c child and @c pReference are same. @n + * - The specified @c child is already an ancestor of this instance. @n + * - The parent of @c pReference is not this instance if @c pReference is not @c null. @n + * @remarks If @c above is @c true, the @c child will be attached above @c pReference in Z order, + * else it will be attached below the @c pReference %VisualElement. @n + * If @c pReference is @c null, the @c child will be attached at the highest position in the @c child's Z order group, + * else the child will be attached at the lowest position in the @c child's Z order group. + * @see SetZOrderGroup() + * @see AttachChild() + * @see DetachChild() + * @see ChangeZOrder() + */ + result InsertChild(const VisualElement& child, const VisualElement* pReference, bool above); + + /** + * Detaches a child from this instance. + * + * @since 2.0 + * + * @param[in] child The %VisualElement instance to detach from this instance + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND The specified @c child is not a child of this instance. + * @remarks This method detaches @c child from this instance. If you need to deallocate %VisualElement, call Destroy() method, not C++ delete. + * @see InsertChild() + * @see AttachChild() + */ + result DetachChild(const VisualElement& child); + + /** + * Changes Z order of this instance. + * + * @since 2.0 + * + * @param[in] pReference A pointer to the %VisualElement instance that is referenced + * @param[in] above Specifies the position of this instance relative to the @c pReference + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The input parameter is incorrect. Either of the following conditions has occurred: @n + * - This instance does not have a parent (not attached). @n + * - This instance and @c pReference do not have same parent if @c pReference is not @c null. @n + * - The specified @c pReference is this instance. @n + * @remarks If @c above is @c true, this instance will be attached above @c pReference in Z order, + * else it will be attached below the @c pReference %VisualElement. @n + * If @c pReference is @c null, this instance will be attached at the highest position in the Z order group of this instance, + * else the child will be attached at the lowest position in the Z order group of this instance. + * @see InsertChild() + * @see AttachChild() + * @see DetachChild() + */ + result ChangeZOrder(const VisualElement* pReference, bool above); + + /** + * Gets the child of the specified @c name. @n + * If there are multiple matches of the name, it returns the first match. + * + * @since 2.0 + * + * @return The %VisualElement instance having the specified @c name @n + * else @c null if there is not %VisualElement with the specified @c name + * @param[in] name The name of the %VisualElement + * @param[in] searchDescendants @c true to find a match among all the descendants of this instance, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND There is no %VisualElement with the specified @c name. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks If an exception occurs, this method returns @c null. + * @see GetName() + * @see SetName() + */ + VisualElement* GetChild(const Tizen::Base::String& name, bool searchDescendants) const; + + /** + * Gets the farthest (highest Z order) %VisualElement descendant including this instance that contains a specified @c point. @n + * The OnHitTest() method or [HitTest](@ref Tizen::Ui::Animations::IVisualElementContentProvider::HitTest) callback may be called + * for descendants of this instance including itself. + * + * @since 2.0 + * + * @return The %VisualElement that contains @c point, @n + * else @c null if @c point is completely outside of this instance + * @param[in] point The position in coordinate space of this instance + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND There is no %VisualElement containing the specified @c point. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks If an exception occurs, this method returns @c null. + * @remarks This method assumes that all ancestors of this instance do not clip children. + * @see IVisualElementContentProvider::HitTest() + * @see OnHitTest() + * @see IsClipChildrenEnabled() + * @see SetClipChildrenEnabled() + */ + VisualElement* GetChildAt(const Tizen::Graphics::FloatPoint& point) const; + + /** + * Adds an animation without key name. + * + * @since 2.0 + * + * @return An error code + * @param[in] animation The animation instance + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The input parameter is incorrect. + * @exception E_INVALID_OPERATION This instance is not a model object. @n + * An animation can be added to the model instance only. + * @see RemoveAnimation() + * @see GetAnimationN() + */ + result AddAnimation(const VisualElementAnimation& animation); + + /** + * Adds an animation with key name. + * + * @since 2.0 + * + * @return An error code + * @param[in] keyName The name of the animation that is used to identify animations @n + * Empty @c keyName is allowed. + * @param[in] animation The animation instance + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The input parameter is incorrect. + * @exception E_OBJ_ALREADY_EXIST An animation with @c keyName already exists. + * @exception E_INVALID_OPERATION This instance is not a model object. @n + * An animation can be added to the model instance only. + * @see RemoveAnimation() + * @see GetAnimationN() + */ + result AddAnimation(const Tizen::Base::String& keyName, const VisualElementAnimation& animation); + + /** + * Removes the animation with the specified @c keyName. + * + * @since 2.0 + * + * @return An error code + * @param[in] keyName The name of the animation to remove + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND An animation with @c keyName does not exist. + * @see AddAnimation() + * @see GetAnimationN() + */ + result RemoveAnimation(const Tizen::Base::String& keyName); + + /** + * Gets the animation playing for the specified property. + * + * @since 2.0 + * + * @return A pointer to the animation + * @param[in] keyName The name of the animation + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND An animation with @c keyName does not exist. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks If an exception occurs, this method returns @c null. + * @see AddAnimation() + * @see RemoveAnimation() + */ + VisualElementAnimation* GetAnimationN(const Tizen::Base::String& keyName) const; + + /** + * Removes all animations. + * + * @since 2.0 + * + * @see AddAnimation() + * @see RemoveAnimation() + */ + void RemoveAllAnimations(void); + + /** + * Adds a rectangle to update region of this instance. @n + * The update region represents the portion of the %VisualElement's area that must be redrawn by the OnDraw() method. + * + * @since 2.0 + * + * @return An error code + * @param[in] pRectangle The pointer to the rectangular region that contains the coordinates of the rectangle to add to the update region @n + * If @c pRectangle is @c null, entire area is added to the update region. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The contents of this instance is set by the SetSurface() method. + * @see SetSurface() + */ + result InvalidateRectangle(const Tizen::Graphics::FloatRectangle* pRectangle); + + /** + * Gets the smallest rectangle that completely encloses the update region of this instance. @n + * Applications can use the update region in the OnDraw() method to minimize the redrawing area to improve performance. + * The %GetUpdateRectangle() method returns an empty rectangle if it is not called inside OnDraw() method. + * + * @since 2.0 + * + * @return The rectangle to update + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks If an exception occurs, this method returns FloatRectangle(0.0, 0.0, -1.0, -1.0). + * @see InvalidateRectangle() + */ + Tizen::Graphics::FloatRectangle GetUpdateRectangle(void) const; + + /** + * Updates the content area of all the descendants including this instance. + * The %Draw() method will call OnDraw() or DrawContent() method only if there are regions invalidated by InvalidateRectangle(). + * The platform will call this method later automatically if applications do not call explicitly. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This instance is not attached to the maintained tree for displaying. @n + * For displaying, this instance should be descendant of the root %VisualElement. + * @exception E_SYSTEM A system error has occurred. + * @see IVisualElementContentProvider + */ + result Draw(void); + + /** + * Marks the entire area of this instance to be flushed. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * + * @see Flush() + */ + result SetFlushNeeded(void); + + /** + * Creates and returns a graphics canvas whose bounds, position, and size are equal to those of this instance. + * + * @since 2.0 + * + * @return The graphic canvas of the %VisualElement, @n + * else @c null if an exception occurs + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @exception E_INVALID_OPERATION The contents of this instance is set by the SetSurface() method. + * @exception E_OUT_OF_RANGE The size of the %VisualElement instance is @c 0 or smaller. + * @remarks This method allocates a Tizen::Graphics::Canvas whose bounds are equal to that of the %VisualElement. + * It is the developer's responsibility to deallocate the canvas after use. + * The canvas is guaranteed to be valid only if the properties of the parent %VisualElement of the canvas remain unchanged. + * Therefore, one must delete previously allocated canvas and create a new canvas using this method, + * if the size or position of the %VisualElement is changed. @n + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks If an exception occurs, this method returns @c null. + * @see GetCanvasN(const Tizen::Graphics::Rectangle& bounds) + */ + Tizen::Graphics::Canvas* GetCanvasN(void) const; + + + /** + * Creates and returns a graphic canvas of the specified area. + * + * @since 2.0 + * + * @return The graphic canvas of the %VisualElement, @n + * else @c null if an exception occurs + * @param[in] bounds The position relative to the top-left corner of the %VisualElement and size + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @exception E_INVALID_OPERATION The contents of this instance is set by the SetSurface() method. + * @exception E_OUT_OF_RANGE The specified @c bounds do not intersect with the bounds of the %VisualElement. @n + * The width and height must be greater than @c 0. + * @remarks Only the graphic canvas of displayable %VisualElement can be obtained. + * If the specified area is not inside the %VisualElement, + * the graphics canvas of overlapped area between the %VisualElement and the specified @c bound is returned. @n + * This method allocates a Tizen::Graphics::Canvas whose bounds are equal to that of the %VisualElement. + * It is the developer's responsibility to deallocate the canvas after use. + * The canvas is guaranteed to be valid only if the properties of the parent %VisualElement of the canvas remain unchanged. + * Therefore, one must delete previously allocated canvas and create a new canvas using this method, + * if the size or position of the control is changed. @n + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks If an exception occurs, this method returns @c null. + * @see GetCanvasN() + */ + Tizen::Graphics::Canvas* GetCanvasN(const Tizen::Graphics::Rectangle& bounds) const; + + /** + * Gets the name of this instance. + * + * @since 2.0 + * + * @return The name of this instance + */ + Tizen::Base::String GetName(void) const; + + /** + * Sets the name of this instance. + * + * @since 2.0 + * + * @param[in] name The name of the %VisualElement instance @n + * Empty or duplicated name with other instances are also allowed. + */ + void SetName(const Tizen::Base::String& name); + + /** + * Gets the value of the %VisualElement's property. + * + * @since 2.0 + * + * @return The value of the specified property + * @param[in] property The %VisualElement's property + * @exception E_SUCCESS The method is successful. + * @exception E_KEY_NOT_FOUND The specified @c property is not found. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks If an exception occurs, this method returns @c Variant::NULL_VARIANT. + * @remarks Additional exceptions can occur according to the behavior of subclasses. + * @see SetProperty() + * @see OnGetPropertyRequested() + */ + Variant GetProperty(const Tizen::Base::String& property) const; + + /** + * Sets the value of the %VisualElement's property. + * + * @since 2.0 + * + * @return The property's value + * @param[in] property The %VisualElement's property + * @param[in] value The value of the %VisualElement's property to set + * @exception E_SUCCESS The method is successful. + * @exception E_KEY_NOT_FOUND The specified @c property is not found. + * @remarks Additional exceptions can occur according to the behavior of subclasses. + * @see GetProperty() + * @see OnSetPropertyRequested() + */ + result SetProperty(const Tizen::Base::String& property, const Variant& value); + + /** + * Sets the Z order group of this instance. + * + * @since 2.0 + * + * @return An error code + * @param[in] zOrderGroup The value of Z order which must be between @c Z_ORDER_GROUP_LOWEST and @c Z_ORDER_GROUP_HIGHEST @n + * The default value is @c Z_ORDER_GROUP_NORMAL. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The @c zOrderGroup is not between @c Z_ORDER_GROUP_LOWEST and @c Z_ORDER_GROUP_HIGHEST. + * @remarks You can choose the @c zOrderGroup value as follows: @n + * - Tizen::Ui::Animations::Z_ORDER_GROUP_LOWEST @n + * - Tizen::Ui::Animations::Z_ORDER_GROUP_NORMAL @n + * - Tizen::Ui::Animations::Z_ORDER_GROUP_HIGHEST @n + * Or you can specify an integer value between @c ZORDER_GROUP_LOWEST and @c ZORDER_GROUP_HIGHEST. + * @see GetZOrderGroup() + */ + result SetZOrderGroup(int zOrderGroup); + + /** + * Gets the Z order group of this instance. + * + * @since 2.0 + * + * @return The Z order group of this instance + * @see SetZOrderGroup() + */ + int GetZOrderGroup(void) const; + + /** + * Checks whether the redraw-on-resize feature is enabled. + * + * @since 2.0 + * + * @return @c true if the redraw-on-resize feature is enabled, @n + * else @c false + * @remarks The entire content area will be added to the update region when bounds are changed if redraw-on-resize is enabled. @n + * Otherwise, current contents will be scaled for the new bounds of this instance without redrawing. + * @see SetRedrawOnResizeEnabled() + */ + bool IsRedrawOnResizeEnabled(void) const; + + /** + * Enables or disables the redraw-on-resize feature. + * + * @since 2.0 + * + * @param[in] enable Set to @c true if invalidation is needed whenever resized, @n + * else @c false + * @see IsRedrawOnResizeEnabled() + */ + void SetRedrawOnResizeEnabled(bool enable); + + /** + * Gets the position and the size of this instance. + * + * @since 2.0 + * + * @return An instance of the Tizen::Graphics::FloatRectangle that represents the position of top-left corner, @n + * the width, and the height of this instance. @n It has relative coordinate space to the parent. + * @see SetBounds() + */ + Tizen::Graphics::FloatRectangle GetBounds(void) const; + + /** + * Sets the position and the size of this instance. + * + * @since 2.0 + * + * @return An error code + * @param[in] bounds The new bounds of this instance + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @remarks When the size of @c bounds is changed, the entire content area will be added to the update region of this instance if redraw-on-resize feature is enabled. + * @see GetBounds() + * @see IsRedrawOnResizeEnabled() + * @see SetRedrawOnResizeEnabled() + */ + result SetBounds(const Tizen::Graphics::FloatRectangle& bounds); + + /** + * Gets the position on the Z-axis. + * + * @since 2.0 + * + * @return The position on the Z-axis + * @see SetZPosition() + */ + float GetZPosition(void) const; + + /** + * Sets the position on the Z-axis. + * + * @since 2.0 + * + * @param[in] zPosition The position on the Z-axis + * @see GetZPosition() + */ + void SetZPosition(float zPosition); + + /** + * Checks whether this instance is visible or not. @n + * Even if the show state is @c true, this instance can be invisible when show state of one of the ancestors is @c false. + * + * @since 2.0 + * + * @return @c true if this instance is visible, @n + * else @c false + * @see GetShowState() + * @see SetShowState() + */ + bool IsVisible(void) const; + + /** + * Gets the show state of this instance. + * + * @since 2.0 + * + * @return The show state of the %VisualElement instance, @n + * else @c false + * @remarks Even if the show state is @c true, the %VisualElement is invisible if it is not attached to a parent. + * @see SetShowState() + * @see IsVisible() + */ + bool GetShowState(void) const; + + /** + * Sets the show state of this instance. + * + * @since 2.0 + * + * @param[in] show Set to @c true if this instance needs to show, @n + * else @c false + * @see GetShowState() + * @see IsVisible() + */ + void SetShowState(bool show); + + /** + * Gets the opacity of this instance. + * + * @since 2.0 + * + * @return The opacity of this instance + * @see SetOpacity() + */ + float GetOpacity(void) const; + + /** + * Sets the opacity of this instance. + * + * @since 2.0 + * + * @param[in] opacity The new opacity which must be within the range [0.0, 1.0] + * @remarks The changing opacity affects all the descendants of this instance. + * @see GetOpacity() + */ + void SetOpacity(float opacity); + + /** + * Enables or disables the implicit animation. @n + * If enabled, implicit animations may be created whenever animatable properties of this instance change. + * + * @since 2.0 + * + * @param[in] enable Set to @c true to enable the implicit animation, @n + * else @c false + * @remarks The implicit animation is enabled by default. + * @see IsImplicitAnimationEnabled() + */ + void SetImplicitAnimationEnabled(bool enable); + + /** + * Checks whether the implicit animation is enabled. + * + * @since 2.0 + * + * @return @c true if the implicit animation is enabled, @n + * else @c false + * @see SetImplicitAnimationEnabled() + */ + bool IsImplicitAnimationEnabled(void) const; + + /** + * Gets the transform matrix of this instance. + * + * @since 2.0 + * + * @return The transform matrix of this instance + * @see SetTransformMatrix() + */ + Tizen::Graphics::FloatMatrix4 GetTransformMatrix(void) const; + + /** + * Sets the transform matrix of this instance. + * + * @since 2.0 + * + * @return An error code + * @param[in] transform The transform matrix + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The input parameter is incorrect. @n + * The E_INVALID_ARG exception occurs when the specified @c transform is not invertible. + * @see GetTransformMatrix() + */ + result SetTransformMatrix(const Tizen::Graphics::FloatMatrix4& transform); + + /** + * Gets the transform matrix applied to each child. + * + * @since 2.0 + * + * @return The transform matrix applied to each child + * @remarks The transform matrix for children is typically used for the projection matrix to layout children in 3D space. + * @see SetChildrenTransformMatrix() + */ + Tizen::Graphics::FloatMatrix4 GetChildrenTransformMatrix(void) const; + + /** + * Sets the transform matrix applied to each child. + * + * @since 2.0 + * + * @return An error code + * @param[in] transform The transform matrix + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The input parameter is incorrect. @n + * The E_INVALID_ARG exception occurs when the specified @c transform is not invertible. + * @see GetChildrenTransformMatrix() + */ + result SetChildrenTransformMatrix(const Tizen::Graphics::FloatMatrix4& transform); + + + /** + * Gets the anchor point for this instance's transform matrix in uniform coordinate space + * (0.0 and 1.0 mean left/top and right/bottom of the bounds, respectively). + * + * @since 2.0 + * + * @return The anchor point of this instance + * @see SetAnchor() + */ + Tizen::Graphics::FloatPoint GetAnchor(void) const; + + /** + * Sets the anchor point of this instance's transform matrix in uniform coordinate space + * (0.0 and 1.0 mean left/top and right/bottom of the bounds, respectively). + * + * @since 2.0 + * + * @param[in] anchor The anchor point in uniform coordinate space + * @see GetAnchor() + */ + void SetAnchor(const Tizen::Graphics::FloatPoint& anchor); + + /** + * Gets the Z component of this instance's anchor point for transform matrix. + * + * @since 2.0 + * + * @return The Z component of the anchor point + * @see SetAnchorZ() + */ + float GetAnchorZ(void) const; + + /** + * Sets the Z component of this instance's anchor point for transform matrix. + * + * @since 2.0 + * + * @param[in] anchorZ The Z component of anchor point + * @see GetAnchorZ() + */ + void SetAnchorZ(float anchorZ); + + /** + * Gets the custom data of this instance. + * + * @since 2.0 + * + * @return The user data associated with this instance + * @see SetUserData() + */ + void* GetUserData(void) const; + + /** + * Sets the custom data of this instance. + * + * @since 2.0 + * + * @param[in] pUserData The user data associated with this instance + * @see GetUserData() + */ + void SetUserData(void* pUserData); + + /** + * Sets the contents of this instance with the specified VisualElementSurface. @n + * The contents of the @c pSurface is not copied by the %SetSurface() method, but shared with this instance. + * + * @since 2.0 + * + * @return An error code + * @param[in] pSurface The pointer to VisualElementSurface @n + * If @c pSurface is @c null, surface will be created internally by system. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION This instance does not allow VisualElementSurface for contents. + * @remarks If applications modify the contents of @c pSurface, the modifications will be applied to all + * the %VisualElements which share same VisualElementSurface. But in this case, applications need to call + * the SetFlushNeeded() method for those %VisualElements because the modifications of the @c pSurface will not be applied on the screen automatically. + * @see GetSurfaceN() + */ + result SetSurface(VisualElementSurface* pSurface); + + /** + * Gets the VisualElementSurface this instance uses for its contents. + * + * @since 2.0 + * + * @return A pointer to VisualElementSurface + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks If an exception occurs, this method returns @c null. + * @see SetSurface() + */ + VisualElementSurface* GetSurfaceN(void) const; + + /** + * Sets the render operation of this instance. + * + * @since 2.0 + * + * @return An error code + * @param[in] renderOperation The new rendering operation + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c renderOperation is out of range. + * @see GetRenderOperation() + */ + result SetRenderOperation(RenderOperation renderOperation); + + /** + * Gets the render operation of this instance. + * + * @since 2.0 + * + * @return The render operation of this instance + * @see SetRenderOperation() + */ + RenderOperation GetRenderOperation(void) const; + + /** + * Checks whether all the descendants are clipped to the bounds of this instance. + * + * @since 2.0 + * + * @return @c true if this instance clips all the descendants, @n + * else @c false + * @see SetClipChildrenEnabled() + */ + bool IsClipChildrenEnabled(void) const; + + /** + * Enables or disables clipping of all the descendants. + * + * @since 2.0 + * + * @param[in] clipChildren Set to @c true if all the descendants are needed to clip to the bounds of this instance, @n + * else @c false + * @see IsClipChildrenEnabled() + */ + void SetClipChildrenEnabled(bool clipChildren); + + /** + * Converts the specified @c point in @c pFromVisualElement coordinate space to this instance's coordinate space. + * + * @since 2.0 + * + * @return An error code + * @param[in,out] point The point to convert + * @param[in] pFromVisualElement The %VisualElement instance with @c point in its coordinate space + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The input parameter is incorrect. + * @remarks This instance and @c pFromVisualElement must share a common ancestor. @n + * If @c null, it is regarded that @c point is in the screen coordinate space. + * @see ConvertCoordinates(Tizen::Graphics::FloatRectangle& rectangle, const VisualElement* pFromVisualElement) + */ + result ConvertCoordinates(Tizen::Graphics::FloatPoint& point, const VisualElement* pFromVisualElement) const; + + /** + * Converts the specified @c rectangle in @c pFromVisualElement coordinate space to this instance's coordinate space. + * + * @since 2.0 + * + * @return An error code + * @param[in,out] rectangle The rectangle to convert + * @param[in] pFromVisualElement The %VisualElement instance with @c rectangle in its coordinate space + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The input parameter is incorrect. + * @exception E_SYSTEM A system error has occurred. + * @remarks This instance and @c pFromVisualElement must share a common parent. @n + * If @c null, it is regarded that @c rectangle is in the screen coordinate space. + * @see ConvertCoordinates(Tizen::Graphics::FloatPoint& point, const VisualElement* pFromVisualElement) + */ + result ConvertCoordinates(Tizen::Graphics::FloatRectangle& rectangle, const VisualElement* pFromVisualElement) const; + + /** + * Sets the sub-rectangle of contents which this instance must display. + * + * @since 2.0 + * + * @return An error code + * @param[in] contentBounds The sub-rectangle of contents to display in uniform coordinate space + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The width and height of @c contentBounds must be greater than @c 0.0. + * @remarks Default @c contentBounds is FloatRectangle(0.0, 0.0, 1.0, 1.0). + * @remarks If each component of @c contentBounds is not within the range [0.0, 1.0], the integer portion of the coordinates are + * ignored and only fractional part is used which creates a repeating contents. + * @see GetContentBounds() + */ + result SetContentBounds(const Tizen::Graphics::FloatRectangle& contentBounds); + + /** + * Gets the sub-rectangle of contents which this instance must display. + * + * @since 2.0 + * + * @return The sub-rectangle of contents to be displayed in uniform coordinate space + * @remarks Default @c contentBounds is FloatRectangle(0.0, 0.0, 1.0, 1.0). + * @see SetContentBounds() + */ + Tizen::Graphics::FloatRectangle GetContentBounds(void) const; + + /** + * Acquires the %VisualElement instance for display. + * + * @since 2.0 + * + * @return The %VisualElement instance for display(readonly) + * @remarks If this instance is a presentation object, this method returns itself. + * @see ReleasePresentationInstance() + */ + const VisualElement* AcquirePresentationInstance(void); + + /** + * Releases the %VisualElement instance for display. + * + * @since 2.0 + * + * @remarks This method should be called only after AcquirePresentationInstance() call. + * @see AcquirePresentationInstance() + */ + void ReleasePresentationInstance(void); + + /** + * Acquires the %VisualElement instance for model. + * + * @since 2.0 + * + * @return The %VisualElement instance for model(readonly) + * @remarks If this instance is a model object, this method returns itself. + * @see ReleaseModelInstance() + */ + + const VisualElement* AcquireModelInstance(void); + + /** + * Releases the %VisualElement instance for model. + * + * @since 2.0 + * + * @remarks This method should be called only after AcquireModelInstance() call. + */ + void ReleaseModelInstance(void); + + /** + * Flushes %VisualElements on screen. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks Because this method may degrade the performance of system, applications must use this method only when really needed. + * @see SetFlushNeeded() + */ + static result Flush(void); + + +protected: + /** + * This is copy constructor for the %VisualElement class. + * + * @since 2.0 + * + * @param[in] rhs An instance of %VisualElement + * @see CloneN() + */ + VisualElement(const VisualElement& rhs); + + /** + * This is the destructor for this class. + * + * @since 2.0 + * + * @remarks The delete operator cannot be used to deallocate the %VisualElement instance. + * @see Destroy() + */ + virtual ~VisualElement(void); + + /** + * Creates and returns a polymorphic copy of this %VisualElement instance for the presentation. @n + * All descendants of %VisualElement must implement the %CloneN() method and the copy constructor appropriately. @n + * When the %VisualElement instance is created, the framework make a %VisualElement for the presentation with this method. + * + * @since 2.0 + * + * @return The clone of this instance + */ + virtual VisualElement* CloneN(void) const; + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void VisualElement_Reserved1(void) {} + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void VisualElement_Reserved2(void) {} + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void VisualElement_Reserved3(void) {} + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void VisualElement_Reserved4(void) {} + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void VisualElement_Reserved5(void) {} + + +private: + + // + // The implementation of this assignment constructor is intentionally blank to prohibit assignment of objects. + // + // @since 2.0 + // + VisualElement& operator =(const VisualElement& rhs); + + +protected: + _VisualElementImpl* _pVisualElementImpl; + + friend class _VisualElementImpl; +}; // VisualElement + + +}}} // Tizen::Ui::Animations + +#endif //_FUIANIMVISUALELEMENT_H_ diff --git a/inc/FUiAnimVisualElementAnimation.h b/inc/FUiAnimVisualElementAnimation.h new file mode 100644 index 0000000..0bf0619 --- /dev/null +++ b/inc/FUiAnimVisualElementAnimation.h @@ -0,0 +1,465 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimVisualElementAnimation.h + * @brief This is the header file for the %VisualElementAnimation class. + * + * This header file contains the declarations of the %VisualElementAnimation class. + */ + +#ifndef _FUI_ANIM_VISUAL_ELEMENT_ANIMATION_H_ +#define _FUI_ANIM_VISUAL_ELEMENT_ANIMATION_H_ + +#include + +namespace Tizen { namespace Ui { namespace Animations +{ + + +class IVisualElementAnimationStatusEventListener; +class IVisualElementAnimationTimingFunction; +class IVisualElementAnimationValueInterpolator; +class _VisualElementAnimationImpl; + +/** + * @class VisualElementAnimation + * @brief This class is the base class for all the %VisualElementAnimation classes. + * + * @since 2.0 + * + * The %VisualElementAnimation class defines the basic animation properties, such as the interpolator to be used, + * the duration of the animation in milliseconds, the delay before the animation is started in milliseconds, and the repeat count. + * + * For more information on the class features, see Visual Element Animations. + * + */ +class _OSP_EXPORT_ VisualElementAnimation + : public Tizen::Base::Object +{ +public: + + /** + * This is the default constructor for this class. + * + * @since 2.0 + * + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + VisualElementAnimation(void); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~VisualElementAnimation(void); + + + /** + * This is the copy constructor for the %VisualElementAnimation class. + * + * @since 2.0 + * + * @param[in] animation An instance of %VisualElementAnimation + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + VisualElementAnimation(const VisualElementAnimation& animation); + + + /** + * Assigns the value of the specified instance to the current instance of %VisualElementAnimation. + * + * @since 2.0 + * + * @param[in] rhs An instance of %VisualElementAnimation + */ + VisualElementAnimation& operator =(const VisualElementAnimation& rhs); + + + /** + * Checks whether the specified instance and current instance of %VisualElementAnimation have equal animation values. + * + * @since 2.0 + * + * @return @c true if the animation of the two instances of %VisualElementAnimation are equal, @n + * else @c false + * @param[in] rhs An instance of %VisualElementAnimation + */ + bool operator ==(const VisualElementAnimation& rhs) const; + + + /** + * Checks whether the specified instance and current instance of %VisualElementAnimation have different animation values. + * + * @since 2.0 + * + * @return @c true if the values of the animations of the two instances of %VisualElementAnimation are not equal, @n + * else @c false + * @param[in] rhs An instance of %VisualElementAnimation + */ + bool operator !=(const VisualElementAnimation& rhs) const; + + + /** + * Checks whether the value of the current instance of %VisualElementAnimation equals the value of the specified instance. + * + * @since 2.0 + * + * @return @c true if the value of the current instance equals the value of the specified instance, @n + * else @c false + * @param[in] obj An instance of %VisualElementAnimation + * @remarks The %VisualElementAnimation class has a semantic value which means that this method checks whether the two instances have the same animation. + */ + virtual bool Equals(const Tizen::Base::Object& obj) const; + + + /** + * Gets the hash value of the current instance. + * + * @since 2.0 + * + * @return The hash value of the current instance + * @remarks The two equal instances must return the same hash value. + * For better performance, the used hash function must generate a random distribution for all inputs. + */ + virtual int GetHashCode(void) const; + + + /** + * Gets the copied instance of the class. + * + * @since 2.0 + * + * @return An instance of %VisualElementAnimation + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + virtual VisualElementAnimation* CloneN(void) const; + + + /** + * Sets an IVisualElementAnimationStatusEventListener listener instance to listen to the events of a particular animation. @n + * The added listener, %IVisualElementAnimationStatusEventListener, can listen to events on the specified event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @param[in] pListener The listener instance to set + */ + void SetVisualElementAnimationStatusEventListener(IVisualElementAnimationStatusEventListener* pListener); + + + /** + * Gets the IVisualElementAnimationStatusEventListener listener. + * + * @since 2.0 + * + * @return A pointer to the IVisualElementAnimationStatusEventListener instance @n + * If listener has not been set, @c null is returned. + * @see SetVisualElementAnimationStatusEventListener() + */ + IVisualElementAnimationStatusEventListener* GetVisualElementAnimationStatusEventListener(void) const; + + + /** + * Sets the timing function to calculate the animation pace. + * + * @since 2.0 + * + * @param[in] pTimingFunction The timing function instance to set + * @remarks If @c pTimingFunction is @c null, the default timing function is used which is pre-defined by the UI framework. + * @see GetTimingFunction() + */ + void SetTimingFunction(const IVisualElementAnimationTimingFunction* pTimingFunction); + + + /** + * Gets the timing function. + * + * @since 2.0 + * + * @return A pointer to the timing function instance + * If timing function has not been set, the default timing function is returned. + * @see SetTimingFunction() + */ + const IVisualElementAnimationTimingFunction* GetTimingFunction(void) const; + + + /** + * Sets the interpolator to calculate the current value for the specific time during the animation. + * + * @since 2.0 + * + * @param[in] pInterpolator The interpolator instance to set + * @remarks If @c pInterpolator is @c null, the default interpolator is used which is pre-defined by the UI framework. + * @see GetValueInterpolator() + */ + void SetValueInterpolator(const IVisualElementAnimationValueInterpolator* pInterpolator); + + + /** + * Gets the value interpolator. + * + * @since 2.0 + * + * @return A pointer to the interpolator instance + * If interpolator has not been set, the default interpolator is returned. + * @see SetValueInterpolator() + */ + const IVisualElementAnimationValueInterpolator* GetValueInterpolator(void) const; + + + /** + * Sets the duration of the animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] milliseconds The duration of the animation in milliseconds + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The value of the specified parameter is negative or lesser than the offset of the animation. + * @see GetDuration() + */ + result SetDuration(long milliseconds); + + + /** + * Gets the duration of the animation in milliseconds. + * + * @since 2.0 + * + * @return The duration value of the animation + * @see SetDuration() + */ + long GetDuration(void) const; + + + /** + * Sets the offset value of the animation. @n + * Additionally, the %SetOffset() alters the start value and duration for which an animation is played. + * + * @since 2.0 + * + * @return An error code + * @param[in] milliseconds The offset of the animation in milliseconds + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The value of the specified parameter is negative or greater than the duration of the animation. + * @remarks If the start value of the animation is @c 0.0, the end value is @c 1.0, the duration is @c 100 ms and the offset value is @c 20 ms, + * the actual animation starts at @c 0th ms and plays for @c 80 ms with a start value of @c 0.2. @n + * If @c autoReverse is set to @c true, the backward animation plays for @c 100ms, from @c 1.0 to @c 0.0. + * @see GetOffset() + */ + result SetOffset(long milliseconds); + + + /** + * Gets the offset value in milliseconds after the animation starts. + * + * @since 2.0 + * + * @return The offset value of the animation in milliseconds @n + * The default value of the offset is @c 0. + * @see SetOffset() + */ + long GetOffset(void) const; + + + /** + * Sets the delay for the animation. @n + * The animation starts after the duration of delay has passed. + * + * @since 2.0 + * + * @return An error code + * @param[in] milliseconds The delay for the animation to start in milliseconds + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The value of the specified parameter is negative. + * @remarks This method does not alter the start, end, and duration values of the animation. + * @see GetDelay() + */ + result SetDelay(long milliseconds); + + + /** + * Gets the delay value in milliseconds before the animation starts. + * + * @since 2.0 + * + * @return The delay value in milliseconds @n + * The default value of the delay is @c 0. + * @see SetDelay() + */ + long GetDelay(void) const; + + + /** + * Sets the repeat count for the animation. @n + * Repeats an animation for the specified number of times. + * + * @since 2.0 + * + * @return An error code + * @param[in] count The number of times the animation is repeated + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The value of the specified parameter is negative. + * @remarks A delay and offset is applied to an animation only when the animation is played for the first time. + * If @c count is set to @c 0, the animation is repeated indefinitely. + * @see GetRepeatCount() + */ + result SetRepeatCount(long count); + + + /** + * Gets the repeat count value of the animation. + * + * @since 2.0 + * + * @return The repeat count value of the animation @n + * The default value of the repeat count is @c 1. + * @see SetRepeatCount() + */ + long GetRepeatCount(void) const; + + + /** + * Sets the @c autoReverse property of the animation. @n + * If enabled, the forward and backward animation can also be played. + * + * @since 2.0 + * + * @param[in] autoReverse Set to @c true to enable the @c autoReverse property of the animation, @n + * else @c false + * @remarks If @c autoReverse is set to @c true, the duration of the animation is doubled. + * If the repeat count is more than @c 1, @c autoReverse is applied to each iteration. @n + * Note that if @c autoReverse is set to @c true, one forward animation play and + * one backward animation play is one iteration. + * @see IsAutoReverseEnabled() + */ + void SetAutoReverseEnabled(bool autoReverse); + + + /** + * Checks whether auto reverse is enabled. + * + * @since 2.0 + * + * @return @c true if auto reverse is enabled, @n + * else @c false @n + * The default auto reverse value is @c false. + * @see SetAutoReverseEnabled() + */ + bool IsAutoReverseEnabled(void) const; + + + /** + * Sets the scale ratio of the animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] scaleRatio The scale ratio value of the animation + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The value of the specified parameter is below @c 0. + * @remarks If @c scaleRatio is @c 0.5, then the animation speed is 2 times faster. + * @see GetScaleRatio() + */ + result SetScaleRatio(float scaleRatio); + + + /** + * Gets the scale ratio value of the animation. + * + * @since 2.0 + * + * @return The scale ratio value of the animation @n + * The default value of scale ratio is @c 1.0f. + * @see SetScaleRatio() + */ + float GetScaleRatio(void) const; + + + /** + * Sets the custom data of the animation. + * + * @since 2.0 + * + * @param[in] pUserData The user data associated with this instance + * @see GetUserData() + */ + void SetUserData(void* pUserData); + + + /** + * Gets the custom data of the animation. + * + * @since 2.0 + * + * @return The user data associated with this instance + * @see SetUserData() + */ + void* GetUserData(void) const; + + + /** + * Gets the predefined timing function by name. + * + * @since 2.0 + * + * @return The specified timing function + * @param[in] name The timing function name + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @remarks The parameter @c name must be "Linear", "EaseIn", "EaseOut", "EaseInOut", "EaseOutIn", "Discrete", "Bezier", "ExpIn", "ExpOut", "EaseElasticIn", or "EaseElasticOut". + * The specific error code can be accessed using the GetLastResult() method. + */ + static const IVisualElementAnimationTimingFunction* GetTimingFunctionByName(const Tizen::Base::String& name); + + +protected: + + // + // This variable is for internal use only. Using this variable can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the constructor for derived classes. + // + // @since 2.0 + // + VisualElementAnimation(_VisualElementAnimationImpl* pImpl); + + + // + // This variable is for internal use only. Using this variable can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // @since 2.0 + // + _VisualElementAnimationImpl* _pAnimationImpl; + + friend class _VisualElementAnimationImpl; +}; // VisualElementAnimation + + +}}} // Tizen::Ui::Animations + +#endif // _FUI_ANIM_VISUAL_ELEMENT_ANIMATION_H_ diff --git a/inc/FUiAnimVisualElementAnimationGroup.h b/inc/FUiAnimVisualElementAnimationGroup.h new file mode 100644 index 0000000..1f35f14 --- /dev/null +++ b/inc/FUiAnimVisualElementAnimationGroup.h @@ -0,0 +1,239 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimVisualElementAnimationGroup.h + * @brief This is the header file for the %VisualElementAnimationGroup class. + * + * This header file contains the declarations of the %VisualElementAnimationGroup class. + */ + +#ifndef _FUI_ANIM_VISUAL_ELEMENT_ANIMATION_GROUP_H_ +#define _FUI_ANIM_VISUAL_ELEMENT_ANIMATION_GROUP_H_ + +#include + + +namespace Tizen { namespace Ui { namespace Animations +{ + +class _VisualElementAnimationGroupImpl; + +/** + * @class VisualElementAnimationGroup + * @brief This class is used to group a set of animations together. + * + * @since 2.0 + * + * The %VisualElementAnimationGroup class is used to group a set of animations together. + * + * For more information on the class features, see Groups. + */ +class _OSP_EXPORT_ VisualElementAnimationGroup + : public VisualElementAnimation +{ +public: + + /** + * This is the default constructor for this class. + * + * @since 2.0 + * + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + VisualElementAnimationGroup(void); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~VisualElementAnimationGroup(void); + + + /** + * This is the copy constructor for the %VisualElementAnimationGroup class. + * + * @since 2.0 + * + * @param[in] animationGroup An instance of %VisualElementAnimationGroup + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + VisualElementAnimationGroup(const VisualElementAnimationGroup& animationGroup); + + + /** + * Assigns the value of the specified instance to the current instance of %VisualElementAnimationGroup. + * + * @since 2.0 + * + * @param[in] rhs An instance of %VisualElementAnimationGroup + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + VisualElementAnimationGroup& operator =(const VisualElementAnimationGroup& rhs); + + + /** + * Checks whether the specified instance and current instance of %VisualElementAnimationGroup have equal animation values. + * + * @since 2.0 + * + * @return @c true if the animation of the two instances of %VisualElementAnimationGroup are equal, @n + * else @c false + * @param[in] rhs An instance of %VisualElementAnimationGroup + */ + bool operator ==(const VisualElementAnimationGroup& rhs) const; + + + /** + * Checks whether the specified instance and current instance of %VisualElementAnimationGroup have different animation values. + * + * @since 2.0 + * + * @return @c true if the values of the animations of the two instances of %VisualElementAnimationGroup are not equal, @n + * else @c false + * @param[in] rhs An instance of %VisualElementAnimationGroup + */ + bool operator !=(const VisualElementAnimationGroup& rhs) const; + + + /** + * Checks whether the value of the current instance of %VisualElementAnimationGroup equals the value of the specified instance. + * + * @since 2.0 + * + * @return @c true if the value of the current instance equals the value of the specified instance, @n + * else @c false + * @param[in] obj An instance of %VisualElementAnimationGroup + * @remarks The %VisualElementAnimationGroup class has a semantic value that means this method checks whether the two instances have the same animation. + */ + virtual bool Equals(const Tizen::Base::Object& obj) const; + + + /** + * Gets the hash value of the current instance. + * + * @since 2.0 + * + * @return The hash value of the current instance + * @remarks The two equal instances must return the same hash value. + * For better performance, the used hash function must generate a random distribution for all inputs. + */ + virtual int GetHashCode(void) const; + + /** + * Gets the copied instance of the class. + * + * @since 2.0 + * + * @return An instance of VisualElementAnimation + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + virtual VisualElementAnimation* CloneN(void) const; + + + /** + * Gets the number of animations currently stored in a group. + * + * @since 2.0 + * + * @return The total number of animations stored in a group + * @remarks If an error occurs, the return value is @c -1. @n + * An element of %VisualElementAnimationGroup is counted as one. + */ + int GetAnimationCount(void) const; + + + /** + * Adds the specified @c animation to the animation group without key name. + * + * @since 2.0 + * + * @return An error code + * @param[in] animation An instance of VisualElementAnimation + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @see RemoveAnimationAt() + */ + result AddAnimation(const VisualElementAnimation& animation); + + + /** + * Removes an animation from the group. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the animation + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is out of range. + * @exception E_OBJ_NOT_FOUND The specified @c index is not found. + * @see AddAnimation() + */ + result RemoveAnimationAt(int index); + + + /** + * Removes all the animations from the animation group. + * + * @since 2.0 + * + * @see AddAnimation() + * @see RemoveAnimationAt() + */ + void RemoveAllAnimations(void); + + + /** + * Gets an animation from the group. + * + * @since 2.0 + * + * @return An animation for the specified @c index in the animation group, @n + * else @c null if the animation does not exist + * @param[in] index The index of the animation + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is out of range. + * @exception E_OBJ_NOT_FOUND The animation is not found. + * @remarks The specific error code can be accessed using the GetLastResult() method. @n + * This method allocates a Tizen::Ui::Animations::VisualElementAnimation. + * It is the developer's responsibility to deallocate the animation after use. + * @see AddAnimation() + * @see RemoveAnimationAt() + * @see RemoveAllAnimations() + */ + VisualElementAnimation* GetAnimationAtN(int index) const; + + +protected: + + friend class _VisualElementAnimationGroupImpl; +}; // VisualElementAnimationGroup + + +}}} // Tizen::Ui::Animations + +#endif // _FUI_ANIM_VISUAL_ELEMENT_ANIMATION_GROUP_H_ diff --git a/inc/FUiAnimVisualElementAnimationProvider.h b/inc/FUiAnimVisualElementAnimationProvider.h new file mode 100644 index 0000000..0db7b9f --- /dev/null +++ b/inc/FUiAnimVisualElementAnimationProvider.h @@ -0,0 +1,102 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimVisualElementAnimationProvider.h + * @brief This is the header file for the %VisualElementAnimationProvider class. + * + * This header file contains the declarations of the %VisualElementAnimationProvider class. + */ + +#ifndef _FUI_ANIM_VISUAL_ELEMENT_ANIMATION_PROVIDER_H_ +#define _FUI_ANIM_VISUAL_ELEMENT_ANIMATION_PROVIDER_H_ + +#include +#include + +namespace Tizen { namespace Ui { namespace Animations +{ + + +/** +* @class VisualElementAnimationProvider +* @brief This class implements the provider for the events generated by the VisualElement. +* +* @since 2.0 +* +* The %VisualElementAnimationProvider class customizes the implicit animations. The class that needs to override default implicit animations must implement this interface, and +* the instance created with that class is registered with VisualElement, using the VisualElement::SetAnimationProvider() method. +* When the properties defined in %VisualElement and its descendants are changed, the CreateAnimationForProperty() method of this interface is invoked. +*/ + +class _OSP_EXPORT_ VisualElementAnimationProvider + : virtual public IVisualElementAnimationProvider +{ +public: + + /** + * This is the default constructor for this class. + * + * @since 2.0 + */ + VisualElementAnimationProvider(void); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~VisualElementAnimationProvider(void); + + +public: + /** + * Invoked for creating an animation when the property is changed. + * + * @since 2.0 + * + * @return A VisualElementAnimation instance for @c property + * @param[in] target The VisualElement instance that needs implicit animation + * @param[in] property The property of this instance for which animation is required + * @remarks If implicit animation for @c property is not required, return @c null. + */ + virtual VisualElementAnimation* CreateAnimationForProperty(VisualElement& target, const Tizen::Base::String& property); + + +private: + + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + // @since 2.0 + // + VisualElementAnimationProvider(const VisualElementAnimationProvider& value); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + // @since 2.0 + // + VisualElementAnimationProvider& operator =(const VisualElementAnimationProvider& value); +}; // VisualElementAnimationProvider + + +}}} // Tizen::Ui::Animations + +#endif //_FUI_ANIM_VISUAL_ELEMENT_ANIMATION_PROVIDER_H_ + diff --git a/inc/FUiAnimVisualElementContentProvider.h b/inc/FUiAnimVisualElementContentProvider.h new file mode 100644 index 0000000..66cf42e --- /dev/null +++ b/inc/FUiAnimVisualElementContentProvider.h @@ -0,0 +1,122 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimVisualElementContentProvider.h + * @brief This is the header file for the %VisualElementContentProvider class. + * + * This header file contains the declarations of the %VisualElementContentProvider class. + */ + +#ifndef _FUIANIM_VISUAL_ELEMENT_CONTENT_PROVIDER_H_ +#define _FUIANIM_VISUAL_ELEMENT_CONTENT_PROVIDER_H_ + +#include + +namespace Tizen { namespace Graphics { +class Canvas; +class FloatPoint; +}} // Tizen::Graphics + +namespace Tizen { namespace Ui { namespace Animations +{ + +class VisualElement; + +/** +* @class VisualElementContentProvider +* @brief This class customizes content of VisualElement. +* +* @since 2.0 +* +* The %VisualElementContentProvider class provides the content and information on it. The class that needs to customize content must implement this interface, and +* using the VisualElement::SetContentProvider() method register to the VisualElement. +* This class implements IVisualElementContentProvider for the default operation of the contents. +*/ +class _OSP_EXPORT_ VisualElementContentProvider + : public IVisualElementContentProvider +{ +public: + /** + * This is the default constructor for this class. + * + * @since 2.0 + */ + VisualElementContentProvider(void); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~VisualElementContentProvider(void); + +public: + /** + * Checks whether the %PrepareDraw() method is invoked by UI framework before DrawContent() is called. @n + * If this method returns @c true, VisualElement can call the %DrawContent() method. + * + * @since 2.0 + * + * @return @c true if DrawContent() can be called, @n + * else @c false + * @param[in] target The VisualElement instance to check + */ + virtual bool PrepareDraw(VisualElement& target); + + + /** + * Fills the contents in the given canvas. + * + * @since 2.0 + * + * @param[in] target The VisualElement instance to draw + * @param[in] canvas The graphic canvas for drawing + * @see VisualElement::OnDraw() + * @see VisualElement::InvalidateRectangle() + */ + virtual void DrawContent(VisualElement& target, Tizen::Graphics::Canvas& canvas); + + + /** + * The %HitTest() method is called by VisualElement::GetChildAt(). @n + * The %VisualElement::GetChildAt() method traverses through a list of all the children, and performs a hit test search at the @c point using this method. @n + * You can modify hit test search result by overriding this method. + * + * @since 2.0 + * + * @return The hit test result + * @param[in] target The VisualElement target to test + * @param[in] point The position of source to check + * @remarks Hit test results must be one of the following: @n + * - Tizen::Ui::Animations::HitTestResult::HIT_TEST_NOWHERE + * - Tizen::Ui::Animations::HitTestResult::HIT_TEST_MATCH + * @see VisualElement::GetChildAt() + */ + virtual HitTestResult HitTest(VisualElement& target, const Tizen::Graphics::FloatPoint& point); + +private: + VisualElementContentProvider(const VisualElementContentProvider& value); + VisualElementContentProvider& operator =(const VisualElementContentProvider& value); + +}; // VisualElementContentProvider + + +}}} // Tizen::Ui::Animations + +#endif //_FUIANIM_VISUAL_ELEMENT_CONTENT_PROVIDER_H_ diff --git a/inc/FUiAnimVisualElementPropertyAnimation.h b/inc/FUiAnimVisualElementPropertyAnimation.h new file mode 100644 index 0000000..1cade52 --- /dev/null +++ b/inc/FUiAnimVisualElementPropertyAnimation.h @@ -0,0 +1,190 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimVisualElementPropertyAnimation.h + * @brief This is the header file for the %VisualElementPropertyAnimation class. + * + * This header file contains the declarations of the %VisualElementPropertyAnimation class. + */ + +#ifndef _FUI_ANIM_VISUAL_ELEMENT_PROPERTY_ANIMATION_H_ +#define _FUI_ANIM_VISUAL_ELEMENT_PROPERTY_ANIMATION_H_ + +#include + +namespace Tizen { namespace Ui { namespace Animations +{ + + +class _VisualElementPropertyAnimationImpl; + +/** + * @class VisualElementPropertyAnimation + * @brief This class is for property animation. + * + * @since 2.0 + * + * The %VisualElementPropertyAnimation class defines the basic property animation. + */ +class _OSP_EXPORT_ VisualElementPropertyAnimation + : public VisualElementValueAnimation +{ +public: + + /** + * This is the default constructor for this class. + * + * @since 2.0 + * + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + VisualElementPropertyAnimation(void); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~VisualElementPropertyAnimation(void); + + + /** + * This is the copy constructor for the %VisualElementPropertyAnimation class. + * + * @since 2.0 + * + * @param[in] animation An instance of %VisualElementPropertyAnimation + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + VisualElementPropertyAnimation(const VisualElementPropertyAnimation& animation); + + + /** + * Assigns the value of the specified instance to the current instance of %VisualElementPropertyAnimation. + * + * @since 2.0 + * + * @param[in] rhs An instance of %VisualElementPropertyAnimation + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + VisualElementPropertyAnimation& operator =(const VisualElementPropertyAnimation& rhs); + + + /** + * Checks whether the specified instance and current instance of %VisualElementPropertyAnimation have equal animation values. + * + * @since 2.0 + * + * @return @c true if the animation of the two instances of %VisualElementPropertyAnimation are equal, @n + * else @c false + * @param[in] rhs An instance of %VisualElementPropertyAnimation + */ + bool operator ==(const VisualElementPropertyAnimation& rhs) const; + + + /** + * Checks whether the specified instance and current instance of %VisualElementPropertyAnimation have different animation values. + * + * @since 2.0 + * + * @return @c true if the values of the animations of the two instances of %VisualElementPropertyAnimation are not equal, @n + * else @c false + * @param[in] rhs An instance of %VisualElementPropertyAnimation + */ + bool operator !=(const VisualElementPropertyAnimation& rhs) const; + + + /** + * Checks whether the value of the current instance of %VisualElementPropertyAnimation equals the value of the specified instance. + * + * @since 2.0 + * + * @return @c true if the value of the current instance equals the value of the specified instance, @n + * else @c false + * @param[in] obj An instance of %VisualElementPropertyAnimation + * @remarks The %VisualElementPropertyAnimation class has a semantic value that means this method checks whether the two instances have the same animation. + */ + virtual bool Equals(const Tizen::Base::Object& obj) const; + + + /** + * Gets the hash value of the current instance. + * + * @since 2.0 + * + * @return The hash value of the current instance + * @remarks The two equal instances must return the same hash value. + * For better performance, the used hash function must generate a random distribution for all inputs. + */ + virtual int GetHashCode(void) const; + + + /** + * Gets the copied instance of the class. + * + * @since 2.0 + * + * @return An instance of VisualElementAnimation + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + virtual VisualElementAnimation* CloneN(void) const; + + + /** + * Sets the property for the animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] property The property name to which the animation is applied + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @see GetPropertyName() + */ + result SetPropertyName(const Tizen::Base::String& property); + + + /** + * Gets the string of property to which the animation is applied. + * + * @since 2.0 + * + * @return A string of property + * @see SetPropertyName() + */ + Tizen::Base::String GetPropertyName(void) const; + + +protected: + + friend class _VisualElementPropertyAnimationImpl; +}; // VisualElementPropertyAnimation + + +}}} // Tizen::Ui::Animations + +#endif // _FUI_ANIM_VISUAL_ELEMENT_PROPERTY_ANIMATION_H_ diff --git a/inc/FUiAnimVisualElementSurface.h b/inc/FUiAnimVisualElementSurface.h new file mode 100644 index 0000000..2351ece --- /dev/null +++ b/inc/FUiAnimVisualElementSurface.h @@ -0,0 +1,216 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimVisualElementSurface.h + * @brief This is the header file for the %VisualElementSurface class. + * + * This header file contains the declarations of the %VisualElementSurface class. + */ + +#ifndef _FUI_ANIM_VISUAL_ELEMENT_SURFACE_H_ +#define _FUI_ANIM_VISUAL_ELEMENT_SURFACE_H_ + +#include +#include +#include + +namespace Tizen { namespace Graphics +{ + class BufferInfo; +}} // Tizen::Graphics + +namespace Tizen { namespace Ui { namespace Animations +{ + +class DisplayContext; +class _VisualElementSurfaceImpl; + +/** +* @class VisualElementSurface +* @brief This class provides methods to control %VisualElementSurface. +* +* @since 2.0 +* +* The %VisualElementSurface class provides methods to control %VisualElementSurface. +*/ +class _OSP_EXPORT_ VisualElementSurface + : public Tizen::Base::Object +{ +public: + + /** + * This is the default constructor for this class. + * + * @since 2.0 + */ + VisualElementSurface(void); + + /** + * This is the copy constructor for the %VisualElementSurface class. + * + * @since 2.0 + * + * @param[in] rhs An instance of %VisualElementSurface + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks It does not perform a deep copy (shared with the source). + */ + VisualElementSurface(const VisualElementSurface& rhs); + + /** + * Assigns the value of the specified instance to the current instance of %VisualElementSurface. + * + * @since 2.0 + * + * @param[in] rhs An instance of %VisualElementSurface + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks It does not perform a deep copy (shared with the source). + */ + VisualElementSurface& operator =(const VisualElementSurface& rhs); + + /** + * This is the default destructor for this class. + * + * @since 2.0 + */ + virtual ~VisualElementSurface(void); + +public: + + /** + * Initializes this instance of %VisualElementSurface with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] displayContext The display context of the window + * @param[in] size The size of the %VisualElementSurface instance + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by the method. + * @exception E_INVALID_ARG The display context is invalid. + * @remarks The width and height of the @c size parameter is the logical size and must be greater than @c 0. + * @remarks If this condition is not satisfied, the E_OUT_OF_RANGE exception is returned. + * @see Tizen::Ui::Window::GetDisplayContext() + */ + result Construct(const DisplayContext& displayContext, const Tizen::Graphics::Dimension& size); + + /** + * Gets the buffer-related information of the %VisualElementSurface instance. + * + * @since 2.0 + * + * @return An error code + * @param[out] bufferInfo The buffer-related information of the surface + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + */ + result GetBufferInfo(Tizen::Graphics::BufferInfo& bufferInfo) const; + + /** + * Gets the size of the %VisualElementSurface instance. + * + * @since 2.0 + * + * @return The size of the %VisualElementSurface instance + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks If an error occurs, this method returns Tizen::Graphics:Dimension(0, 0). + */ + Tizen::Graphics::Dimension GetSize(void) const; + + /** + * Compares the Tizen::Base::Object instance with the calling %VisualElementSurface instance for equivalence. + * + * @since 2.0 + * + * @return @c true if the specified instance share the content with the current instance, @n + * else @c false + * @param[in] obj The object to compare with the current instance + * @see GetHashCode() + */ + virtual bool Equals(const Tizen::Base::Object& obj) const; + + /** + * Gets the hash value of the current instance. + * + * @since 2.0 + * + * @return The hash value of the current instance + * @remarks The hash code of a buffer depends only upon its remaining elements. + */ + virtual int GetHashCode(void) const; + + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void VisualElementSurface_Reserved1(void) {} + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void VisualElementSurface_Reserved2(void) {} + + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void VisualElementSurface_Reserved3(void) {} + + +private: + + // + // This variable is for internal use only. Using this variable can cause behavioral, security-related, + // and consistency-related issues in the application. + // + /** + * @since 2.0 + */ + _VisualElementSurfaceImpl* __pVisualElementSurfaceImpl; + + friend class _VisualElementSurfaceImpl; + +}; // VisualElementSurface + + +}}} // Tizen::Ui::Animations + +#endif // _FUI_ANIM_VISUAL_ELEMENT_SURFACE_H_ + diff --git a/inc/FUiAnimVisualElementValueAnimation.h b/inc/FUiAnimVisualElementValueAnimation.h new file mode 100644 index 0000000..bab39d3 --- /dev/null +++ b/inc/FUiAnimVisualElementValueAnimation.h @@ -0,0 +1,329 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimVisualElementValueAnimation.h + * @brief This is the header file for the %VisualElementValueAnimation class. + * + * This header file contains the declarations of the %VisualElementValueAnimation class. + */ + +#ifndef _FUI_ANIM_VISUAL_ELEMENT_VALUE_ANIMATION_H_ +#define _FUI_ANIM_VISUAL_ELEMENT_VALUE_ANIMATION_H_ + +#include +#include + +namespace Tizen { namespace Ui { namespace Animations +{ + + +class IVisualElementAnimationTickEventListener; +class _VisualElementValueAnimationImpl; + +/** + * @class VisualElementValueAnimation + * @brief This class is for value animation. + * + * @since 2.0 + * + * The %VisualElementValueAnimation class defines the basic value animation. + */ +class _OSP_EXPORT_ VisualElementValueAnimation + : public VisualElementAnimation +{ +public: + + /** + * This is the default constructor for this class. + * + * @since 2.0 + * + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + VisualElementValueAnimation(void); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~VisualElementValueAnimation(void); + + + /** + * This is the copy constructor for the %VisualElementValueAnimation class. + * + * @since 2.0 + * + * @param[in] animation An instance of %VisualElementValueAnimation + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + VisualElementValueAnimation(const VisualElementValueAnimation& animation); + + + /** + * Assigns the value of the specified instance to the current instance of %VisualElementValueAnimation. + * + * @since 2.0 + * + * @param[in] rhs An instance of %VisualElementValueAnimation + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + VisualElementValueAnimation& operator =(const VisualElementValueAnimation& rhs); + + + /** + * Checks whether the specified instance and current instance of %VisualElementValueAnimation have equal animation values. + * + * @since 2.0 + * + * @return @c true if the animation of the two instances of %VisualElementValueAnimation are equal, @n + * else @c false + * @param[in] rhs An instance of %VisualElementValueAnimation + */ + bool operator ==(const VisualElementValueAnimation& rhs) const; + + + /** + * Checks whether the specified instance and current instance of %VisualElementValueAnimation have different animation values. + * + * @since 2.0 + * + * @return @c true if the values of the animations of the two instances of %VisualElementValueAnimation are not equal, @n + * else @c false + * @param[in] rhs An instance of %VisualElementValueAnimation + */ + bool operator !=(const VisualElementValueAnimation& rhs) const; + + + /** + * Checks whether the value of the current instance of %VisualElementValueAnimation equals the value of the specified instance. + * + * @since 2.0 + * + * @return @c true if the value of the current instance equals the value of the specified instance, @n + * else @c false + * @param[in] obj An instance of %VisualElementValueAnimation + * @remarks The %VisualElementValueAnimation class has a semantic value which means that this method checks whether the two instances have the same animation. + */ + virtual bool Equals(const Tizen::Base::Object& obj) const; + + + /** + * Gets the hash value of the current instance. + * + * @since 2.0 + * + * @return The hash value of the current instance + * @remarks The two equal instances must return the same hash value. + * For better performance, the used hash function must generate a random distribution for all inputs. + */ + virtual int GetHashCode(void) const; + + + /** + * Gets the copied instance of the class. + * + * @since 2.0 + * + * @return An instance of %VisualElementAnimation + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + virtual VisualElementAnimation* CloneN(void) const; + + + /** + * Sets an IVisualElementAnimationTickEventListener listener instance to listen to the events of a particular animation. @n + * The set listener, %IVisualElementAnimationTickEventListener, can listen to events on the specified event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @param[in] pListener The listener to set + */ + void SetVisualElementAnimationTickEventListener(IVisualElementAnimationTickEventListener* pListener); + + + /** + * Gets the IVisualElementAnimationTickEventListener listener. + * + * @since 2.0 + * + * @return A pointer to the IVisualElementAnimationTickEventListener instance @n + * If listener has not been set, @c null is returned. + * @see SetVisualElementAnimationTickEventListener() + */ + IVisualElementAnimationTickEventListener* GetVisualElementAnimationTickEventListener(void) const; + + + /** + * Sets the start value of the animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] startValue The start value of the animation to set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The type of Variant is empty. + * @see GetStartValue() + */ + result SetStartValue(const Tizen::Ui::Variant& startValue); + + + /** + * Gets the start value of the animation. + * + * @since 2.0 + * + * @return The start value of animation + * @see SetStartValue() + */ + Tizen::Ui::Variant GetStartValue(void) const; + + + /** + * Sets the end value of the animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] endValue The end value of the animation to set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The type of Variant is empty. + * @see GetEndValue() + */ + result SetEndValue(const Tizen::Ui::Variant& endValue); + + + /** + * Gets the end value of the animation. + * + * @since 2.0 + * + * @return The end value of animation + * @see SetEndValue() + */ + Tizen::Ui::Variant GetEndValue(void) const; + + + /** + * Sets the flag to apply the end value of the animation when the animation is finished. + * + * @since 2.0 + * + * @param[in] apply Set to @c true to apply the end values of the animation, @n + * else @c false + * @remarks There is no difference in behavior with this method in value animation. @n + * So you must set the end value by seeing this value. + * @see IsEndValueApplied() + */ + void SetEndValueApplied(bool apply); + + + /** + * Checks whether the end value of the animation is applied when the animation is finished. + * + * @since 2.0 + * + * @return @c true if the end value is applied, @n + * else @c false @n + * The default value is @c true. + * @see SetEndValueApplied() + */ + bool IsEndValueApplied(void) const; + + + /** + * Adds the key frame information for the animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] timeProgress The specified time progress value @n + * This must be in the range @c 0.0 to @c 1.0 and cannot be @c 0.0 and @c 1.0. + * @param[in] value The value at the specified time + * @param[in] pTimingFunction The timing function instance that is used in keyframe segment + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c value parameter is invalid. + * @exception E_OUT_OF_RANGE The specified @c timeProgress is not within the range @c 0 to @c 1 (exclusive). + * @remarks If a key-value pair with the current key already exists, the old value is overwritten with the new one. + * If timing function is @c null, the default timing function is applied. + * The timing function is applied to current pace from previous pace. + * @see RemoveKeyFrame() + * @see RemoveAllKeyFrames() + */ + result AddKeyFrame(float timeProgress, const Tizen::Ui::Variant& value, const IVisualElementAnimationTimingFunction* pTimingFunction = null); + + + /** + * Removes the key frame information for the animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] timeProgress The time progress for the key frame to remove + * This must be in the range @c 0.0 to @c 1.0 and cannot be @c 0.0 and @c 1.0. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The value of the specified parameter is not within the range @c 0 to @c 1 (exclusive). + * @exception E_OBJ_NOT_FOUND The key frame with @c timeProgress does not exist. + * @see AddKeyFrame() + * @see RemoveAllKeyFrames() + */ + result RemoveKeyFrame(float timeProgress); + + + /** + * Removes all the key frame information for the animation. + * + * @since 2.0 + * + * @see AddKeyFrame() + * @see RemoveKeyFrame() + */ + void RemoveAllKeyFrames(void); + + +protected: + + // + // This variable is for internal use only. Using this variable can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This is the constructor for derived classes. + // + // @since 2.0 + // + VisualElementValueAnimation(_VisualElementValueAnimationImpl* pImpl); + + + friend class _VisualElementValueAnimationImpl; +}; // VisualElementValueAnimation + + +}}} // Tizen::Ui::Animations + +#endif // _FUI_ANIM_VISUAL_ELEMENT_VALUE_ANIMATION_H_ + diff --git a/inc/FUiAnimations.h b/inc/FUiAnimations.h new file mode 100644 index 0000000..b2f3b3a --- /dev/null +++ b/inc/FUiAnimations.h @@ -0,0 +1,373 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiAnimations.h + * @brief This is the header file for the %Animations namespace. + * + * This header file contains the declarations and descriptions of the %Animations namespace. + */ + +#ifndef _FUI_ANIMATIONS_H_ +#define _FUI_ANIMATIONS_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen +{ +namespace Ui +{ +/** + * @namespace Tizen::Ui::Animations + * @brief This namespace contains the classes for the animation-related functionalities. + * @since 2.0 + * + * @remarks @b Header @b %file: @b \#include @b @n + * @b Library : @b osp-uifw + * + * + * + * The %Animations namespace provides animation capabilities for the UI controls. + * + * For more information on the %Animations namespace features, see Animations Guide. + * + * The following diagram illustrates the relationships between the classes belonging to the %Animations namespace. + * @image html ui_animations_classdiagram.png + * + * The following examples demonstrate how to use the %Animations namespace. + * + * @code +// Sample code for Control Animation using ControlAnimator +#include +#include + +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; +using namespace Tizen::Ui::Animations; +using namespace Tizen::Graphics; + +class AnimationSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IActionEventListener +{ +public: + virtual result OnInitializing(void); + virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId); + +protected: + static const int ID_BUTTON = 101; + Tizen::Ui::Controls::Button *__pButton; +}; + +result +AnimationSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of Button + __pButton = new Button(); + __pButton->Construct(Rectangle(10, 200, 460, 100)); + __pButton->SetText(L"Start animation"); + __pButton->SetActionId(ID_BUTTON); + __pButton->AddActionEventListener(*this); + AddControl(*__pButton); + + return r; +} + +void +AnimationSample::OnActionPerformed(const Control& source, int actionId) +{ + switch(actionId) + { + case ID_BUTTON: + { + // Starts an animation + result r = E_SUCCESS; + + ControlAnimator* pButtonAnimator = __pButton->GetControlAnimator(); + Point startPos = __pButton->GetPosition(); + Point endPos(startPos.x, startPos.y + 200); + PointAnimation pointAnimation(startPos, + endPos, + 2000, + ANIMATION_INTERPOLATOR_LINEAR); + + pointAnimation.SetAutoReverseEnabled(true); + + r = pButtonAnimator->StartUserAnimation(ANIMATION_TARGET_POSITION, pointAnimation); + if (IsFailed(r)) + { + AppLog("Start Animation on Button Failed.\n"); + return; + } + } + break; + } +} + * @endcode + * + * @code +// Sample code for Form Transition Animation using FrameAnimator +#include +#include + +using namespace Tizen::App; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; +using namespace Tizen::Ui::Animations; + +bool +FrameAnimatorSample::OnAppInitializing(AppRegistry& appRegistry) +{ + // Creates instances of Form + Form1 *pForm1 = new Form1(); + pForm1->Initialize(); + + Form2* pForm2 = new Form2(); + pForm2->Initialize(); + + // Adds forms to the frame + Frame *pFrame = GetAppFrame()->GetFrame(); + pFrame->AddControl(*pForm1); + pFrame->AddControl(*pForm2); + + // Sets the current form + pFrame->SetCurrentForm(*pForm1); + + // Display the form + pForm1->Invalidate(); + + return true; +} + +// Transition from Form1 to Form2 +void +Form1::OnActionPerformed(const Control& source, int actionId) +{ + switch(actionId) + { + case ID_FOOTER_BUTTON_TRANSIT: + { + result r = E_SUCCESS; + + Frame *pFrame = UiApp::GetInstance()->GetAppFrame()->GetFrame(); + FrameAnimator *pFrameAnimator = pFrame->GetFrameAnimator(); + + Form *nextForm = static_cast(pFrame->GetControl(L"Form2")); + + if(pFrameAnimator->GetStatus() == ANIMATOR_STATUS_STOPPED) + { + pFrameAnimator->SetFormTransitionAnimation (FRAME_ANIMATOR_FORM_TRANSITION_ANIMATION_TRANSLATE_LEFT, + 1000, + ANIMATION_INTERPOLATOR_LINEAR ); + r = pFrameAnimator->SetCurrentForm (*nextForm); + if (IsFailed(r)) + { + AppLog("SetCurrentForm on the Form2 Failed.\n"); + return; + } + } + } + break; + default: + break; + } +} + +// Transition from Form2 to Form1 +void +Form2::OnActionPerformed(const Control& source, int actionId) +{ + switch(actionId) + { + case ID_FOOTER_BUTTON_TRANSIT: + { + result r = E_SUCCESS; + + Frame *pFrame = UiApp::GetInstance()->GetAppFrame()->GetFrame(); + FrameAnimator *pFrameAnimator = pFrame->GetFrameAnimator(); + + Form *nextForm = static_cast(pFrame->GetControl(L"Form1")); + if(pFrameAnimator->GetStatus() == ANIMATOR_STATUS_STOPPED) + { + pFrameAnimator->SetFormTransitionAnimation(FRAME_ANIMATOR_FORM_TRANSITION_ANIMATION_TRANSLATE_RIGHT, + 1000, + ANIMATION_INTERPOLATOR_LINEAR ); + r = pFrameAnimator->SetCurrentForm (*nextForm); + if (IsFailed(r)) + { + AppLog("SetCurrentForm on the Form1 Failed.\n"); + return; + } + } + } + break; + default: + break; + } +} + * @endcode + * + * @code + // Sample code for VisualElement and VisualElementAnimation +#include +#include +#include + +using namespace Tizen::Ui::Animations; +using namespace Tizen::Ui::Controls; +using namespace Tizen::Graphics; + +class VisualElementSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IActionEventListener + , public Tizen::Ui::Animations::VisualElementContentProvider +{ +public: + virtual result OnInitializing(void); + virtual result OnTerminating(void); + + virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId); + + virtual void DrawContent(Tizen::Ui::Animations::VisualElement& target, Tizen::Graphics::Canvas& canvas); + +private: + static const int ID_FOOTER_START_ANIMATION = 101; + + Tizen::Ui::Animations::VisualElement* __pRect; +}; + +result +VisualElementSample::OnInitializing(void) +{ + __pRect = new VisualElement(); + __pRect->Construct(); + __pRect->SetName(L"Rect"); + __pRect->SetBounds(FloatRectangle(50.0f, 50.0f, 200.0f, 200.0f)); + __pRect->SetShowState(true); + __pRect->SetContentProvider(this); + + GetVisualElement()->AttachChild(*__pRect); + __pRect->InvalidateRectangle(null); + + return E_SUCCESS; +} + +result +VisualElementSample::OnTerminating(void) +{ + __pRect->Destroy(); + + return E_SUCCESS; +} + +void +VisualElementSample::OnActionPerformed(const Tizen::Ui::Control& source, int actionId) +{ + switch(actionId) + { + case ID_FOOTER_START_ANIMATION: + { + VisualElementPropertyAnimation* pAnimation = new VisualElementPropertyAnimation(); + pAnimation->SetPropertyName(L"opacity"); + pAnimation->SetStartValue(1.0f); + pAnimation->SetEndValue(0.0f); + pAnimation->SetDuration(500); + pAnimation->SetAutoReverseEnabled(true); + + __pRect->AddAnimation(*pAnimation); + delete pAnimation; + } + break; + + default: + break; + } +} + +void +VisualElementSample::DrawContent(Tizen::Ui::Animations::VisualElement& target, Tizen::Graphics::Canvas& canvas) +{ + if (target.GetName() == L"Rect") + { + canvas.FillRectangle(Color::GetColor(COLOR_ID_WHITE), Rectangle(0, 0, 200, 200)); + } +} + * @endcode + * + * + * + */ + +namespace Animations +{ +}; + +} } // Tizen::Ui + +#endif // _FUI_ANIMATIONS_H_ diff --git a/inc/FUiCardLayout.h b/inc/FUiCardLayout.h new file mode 100755 index 0000000..e8eb4e6 --- /dev/null +++ b/inc/FUiCardLayout.h @@ -0,0 +1,156 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCardLayout.h + * @brief This is the header file for the %CardLayout class. + * + * This header file contains the declarations of the %CardLayout class. + */ + +#ifndef _FUI_CARD_LAYOUT_H_ +#define _FUI_CARD_LAYOUT_H_ + +#include + +namespace Tizen { namespace Ui +{ +class Control; + +/** + * @class CardLayout + * @brief The card layout fits a child control to the container by changing the position and the size of the child control. + * + * @since 2.0 + * + * The %CardLayout class defines the card layout for a container.@n + * + * @code +// Sample code for CardLayoutSample.h +#include + +class CardLayoutSample + : public Tizen::Ui::Controls::Form +{ +public: + bool Initialize(void); + virtual result OnInitializing(void); +}; + * @endcode + * + * @code +// Sample code for CardLayoutSample.cpp +#include + +#include "CardLayoutSample.h" + +using namespace Tizen::Graphics; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; + +bool +CardLayoutSample::Initialize(void) +{ + // Creates an instance of CardLayout + CardLayout formLayout; + formLayout.Construct(); + + // Applies the card layout to the form + Construct(formLayout, FORM_STYLE_NORMAL); + return true; +} + +result +CardLayoutSample::OnInitializing(void) +{ + result = E_SUCCESS; + + // Creates an instance of 1st panel + Panel* pFirstPanel = new Panel(); + pFirstPanel->Construct(Rectangle(0, 0, 50, 50)); + pFirstPanel->SetBackgroundColor(Color(0xFF, 0x40, 0x40, 0xFF)); + + // Adds the 1st panel to the form + AddControl(*pFirstPanel); + + // Creates an instance of 2nd panel + Panel* pSecondPanel = new Panel(); + pSecondPanel->Construct(Rectangle(0, 0, 50, 50)); + pSecondPanel->SetBackgroundColor(Color(0x40, 0x40, 0xFF, 0xFF)); + + // Adds the 2nd panel to the form + AddControl(*pSecondPanel); + + return r; +} + * @endcode + * + */ +class _OSP_EXPORT_ CardLayout + : public Layout +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + CardLayout(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~CardLayout(void); + + /** + * Initializes this instance of %CardLayout. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + */ + result Construct(void); + + /** + * Gets the type of the layout. + * + * @since 2.0 + * + * @return The layout type + */ + virtual LayoutType GetLayoutType(void) const; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + CardLayout(const CardLayout& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + CardLayout& operator =(const CardLayout& rhs); + +}; // CardLayout + +}} // Tizen::Ui + +#endif // _FUI_CARD_LAYOUT_H_ diff --git a/inc/FUiClipboard.h b/inc/FUiClipboard.h new file mode 100644 index 0000000..3a06497 --- /dev/null +++ b/inc/FUiClipboard.h @@ -0,0 +1,319 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiClipboard.h + * @brief This is the header file for the %Clipboard class. + * + * This header file contains the declarations of the %Clipboard class and its helper classes. + */ + +#ifndef _FUI_CLIPBOARD_H_ +#define _FUI_CLIPBOARD_H_ + +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Ui +{ +class _ClipboardImpl; + +/** + * @class Clipboard + * @brief This class defines a common behavior for %Clipboard. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %Clipboard class manages the copy and paste operation between and within applications. + * + * For more information on the class features, see Clipboard. + * + * The following example demonstrates how to use the %Clipboard class. + * + * @code +// Sample code for ClipboardSample.h +#include + +class ClipboardSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IActionEventListener +{ +public: + ClipboardSample(void) + : __pLabel(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + + // IActionEventListener + virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId); + +private: + static const int ID_BUTTON_OK = 101; + + Tizen::Ui::Controls::Label* __pLabel; +}; + * @endcode + * + * @code +// Sample code for ClipboardSample.cpp +#include +#include +#include + +#include "ClipboardSample.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::Graphics; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; + +bool +ClipboardSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +ClipboardSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Sets data to a clip board item + ClipboardItem item; + String resourcePath = App::GetInstance()->GetAppResourcePath(); + item.Construct(CLIPBOARD_DATA_TYPE_HTML, String(resourcePath + L"screen-size-normal/IDF_FORM.xml")); + + // Gets an instance of Clipboard and copies an item to it + Clipboard* pClipboard = Clipboard::GetInstance(); + pClipboard->CopyItem(item); + + // Creates controls to test clipboard + Button* pButton = new Button(); + pButton->Construct(Rectangle(50, 50, 200, 80), "COPY"); + pButton->SetActionId(ID_BUTTON_OK); + pButton->AddActionEventListener(*this); + AddControl(*pButton); + + __pLabel = new Label(); + __pLabel->Construct(Rectangle(0, 200, GetClientAreaBounds().width, 80), L".."); + AddControl(*__pLabel); + + return r; +} + +void +ClipboardSample::OnActionPerformed(const Tizen::Ui::Control& source, int actionId) +{ + switch(actionId) + { + case ID_BUTTON_OK: + { + // Gets an instance of Clipboard + Clipboard* pClipboard = Clipboard::GetInstance(); + + // Retrieves a latest item + ClipboardItem* pItem = pClipboard->RetrieveLatestItemN(CLIPBOARD_DATA_TYPE_TEXT + | CLIPBOARD_DATA_TYPE_HTML + | CLIPBOARD_DATA_TYPE_AUDIO + | CLIPBOARD_DATA_TYPE_VIDEO ); + + //Gets data from the clipboard item + String* pString = dynamic_cast(pItem->GetData()); + + __pLabel->SetText(*pString + L" is Copied"); + __pLabel->Invalidate(false); + + delete pItem; + } + break; + default: + break; + } +} + * @endcode + */ +class _OSP_EXPORT_ Clipboard + : public Tizen::Base::Object + , public Tizen::Ui::IClipboard +{ +public: + /** + * Gets the system clipboard. + * + * @since 2.0 + * + * @return The pointer to the system clipboard + * @remarks The copy and paste operation is performed through the system + * clipboard that can be obtained through this method. @n + * The method returns @c null if a system error occurs. + */ + static Clipboard* GetInstance(void); + + /** + * Copies the specified @c item to the system clipboard. + * + * @since 2.0 + * + * @return An error code + * @param[in] item The item to save in the system clipboard + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method returns @c E_INVALID_ARG if the specified item is + * not constructed. @n + * For the text and image data type, the data itself is copied + * by the method and kept by the system clipboard. + */ + result CopyItem(const ClipboardItem& item); + + /** + * Retrieves a collection of items that matches the specified data types from the + * system clipboard. + * + * @since 2.0 + * + * @return The pointer to a Tizen::Base::Collection::IList that contains a collection of ClipboardItem, @n + * else @c null if an error occurs + * @param[in] dataTypes The types of items @n Multiple data types can be + * combined using bitwise OR. + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND The item of the specified data types is not found. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. @n + * This method returns a pointer to an Tizen::Base::Collection::IList that contains + * a collection of ClipboardItem. The returned pointer to %Tizen::Base::Collection::IList + * and all the elements in %Tizen::Base::Collection::IList must be deleted by applications. @n + * The items in %Tizen::Base::Collection::IList are sorted in the reverse order in which + * they are copied to the system clipboard. So, the first + * item in %Tizen::Base::Collection::IList is the latest one among them. @n + * @c dataType can be a combination of ClipboardDataType. + * @see Tizen::Ui::ClipboardDataType + */ + Tizen::Base::Collection::IList* RetrieveItemsN(unsigned long dataTypes); + + /** + * Retrieves the latest item for the specified data types from the system clipboard. + * + * @since 2.0 + * + * @return The pointer to a ClipboardItem instance, @n + * else @c null if an error occurs + * @param[in] dataTypes The types of items @n Multiple data types can be + * combined using bitwise OR. + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND The item of the specified data types is not found. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. @n + * This method returns the pointer to a ClipboardItem instance. The + * returned %ClipboardItem must be deleted by applications. @n + * If there is no matched item in the system clipboard, this method + * returns @c null. @n + * @c dataType can be a combination of ClipboardDataType. + * @see Tizen::Ui::ClipboardDataType + */ + Tizen::Ui::ClipboardItem* RetrieveLatestItemN(unsigned long dataTypes); + + /** + * Shows the clipboard popup with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] dataTypes The types of items @n Multiple data types can be + * combined using bitwise OR. + * @param[in] listener The clipboard popup event listener + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance + * prohibits the execution of the specified + * operation. + * @exception E_SYSTEM A system error has occurred. + * @remarks @c dataTypes can decide whether the clipboard popup shows image items or not. + * If @c dataTypes contains #CLIPBOARD_DATA_TYPE_IMAGE, all types of items are shown. + * If not, text items, html items, video items, and audio items are shown except image items. @n + * This method returns @c E_INVALID_OPERATION if the clipboard popup is currently + * being shown. Furthermore, attempting to show the clipboard popup when the application is + * in the background will return @c E_INVALID_OPERATION. @n + * The clipboard popup shows the current content of the system clipboard. The user + * can clear the system clipboard or choose a clipboard item for the paste operation. + * @see Tizen::Ui::ClipboardDataType + */ + static result ShowPopup(unsigned long dataTypes, const IClipboardPopupEventListener& listener); + + /** + * Hides the clipboard popup. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method returns @c E_INVALID_OPERATION if no clipboard popup is currently being shown. + */ + static result HidePopup(void); + + /** + * Checks whether the clipboard popup is currently being shown. + * + * @since 2.0 + * + * @return @c true if the clipboard popup is being shown, @n + * else @c false + */ + static bool IsPopupVisible(void); + +private: + // + // This default constructor is intentionally declared as private to implement the Singleton semantic. + // + Clipboard(void); + + // + // This destructor is intentionally declared as private to implement the Singleton semantic. + // + virtual ~Clipboard(void); + + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + Clipboard(const Clipboard& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + Clipboard& operator =(const Clipboard& rhs); + +private: + friend class _ClipboardImpl; + +private: + _ClipboardImpl* __pClipboardImpl; +}; // Clipboard + +}} //Tizen::Ui + +#endif //_FUI_CLIPBOARD_H_ diff --git a/inc/FUiClipboardItem.h b/inc/FUiClipboardItem.h new file mode 100644 index 0000000..dacd7a8 --- /dev/null +++ b/inc/FUiClipboardItem.h @@ -0,0 +1,123 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiClipboardItem.h + * @brief This is the header file for the %ClipboardItem class. + * + * This header file contains the declarations of the %ClipboardItem class and its helper classes. + */ + +#ifndef _FUI_CLIPBOARD_ITEM_H_ +#define _FUI_CLIPBOARD_ITEM_H_ + +#include +#include + +namespace Tizen { namespace Ui +{ +class _ClipboardItemImpl; + +/** + * @class ClipboardItem + * @brief This class defines a common behavior for %ClipboardItem. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %ClipboardItem class represents the items in the system Clipboard. The %ClipboardItem is the unit of data handling between + * the system clipboard and applications, and it contains both data itself and the type of the data. + * + * For more information on the class features, see Clipboard. + * + */ +class _OSP_EXPORT_ ClipboardItem + : public Tizen::Base::Object +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + ClipboardItem(void); + + /** + * This destructor overrides Osp::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~ClipboardItem(void); + + /** + * Initializes this instance of %ClipboardItem with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] dataType The data type + * @param[in] data The data to be copied + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks For the image data type, the bitmap instance must be deleted + * by the application after the item is copied to the clipboard. + */ + result Construct(ClipboardDataType dataType, const Tizen::Base::Object& data); + + /** + * Gets the data type of %ClipboardItem. + * + * @since 2.0 + * + * @return The data type of the clipboard item + */ + ClipboardDataType GetDataType(void) const; + + /** + * Gets the data of %ClipboardItem. + * + * @since 2.0 + * + * @return The pointer to the data + * @remarks The application needs to type-cast the returned data object + * according to its data type. + */ + Tizen::Base::Object* GetData(void) const; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + ClipboardItem(const ClipboardItem& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + ClipboardItem& operator =(const ClipboardItem& rhs); + +private: + friend class _ClipboardItemImpl; + +private: + _ClipboardItemImpl* __pImpl; +}; // ClipboardItem + +}} // Tizen::Ui + +#endif // _FUI_CLIPBOARD_ITEM_H_ diff --git a/inc/FUiClipboardTypes.h b/inc/FUiClipboardTypes.h new file mode 100644 index 0000000..510c511 --- /dev/null +++ b/inc/FUiClipboardTypes.h @@ -0,0 +1,50 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiClipboardTypes.h + * @brief This is the header file for the Clipboard enumeration. + * + * The Clipboard enumeration defines the data types for the system clipboard. + */ + +#ifndef _FUI_CLIPBOARD_ENUM_H_ +#define _FUI_CLIPBOARD_ENUM_H_ + +namespace Tizen { namespace Ui +{ +/** + * @enum ClipboardDataType + * + * Defines the data types supported by %Clipboard. + * + * @since 2.0 + */ +enum ClipboardDataType +{ + CLIPBOARD_DATA_TYPE_TEXT = 0x0001, /**< The text data type */ + CLIPBOARD_DATA_TYPE_HTML = 0x0002, /**< The HTML data type */ + CLIPBOARD_DATA_TYPE_IMAGE = 0x0004, /**< The image data type */ + CLIPBOARD_DATA_TYPE_VIDEO = 0x0008, /**< The video data type */ + CLIPBOARD_DATA_TYPE_AUDIO = 0x0010, /**< The audio data type */ + CLIPBOARD_DATA_TYPE_MAX = 0x7fff, // The data type max + CLIPBOARD_DATA_TYPE_NONE = 0x0000 // No data type +}; + +}} // Tizen::Ui + +#endif // _FUI_CLIPBOARD_ENUM_H_ diff --git a/inc/FUiCompositeMode.h b/inc/FUiCompositeMode.h new file mode 100644 index 0000000..b5654c8 --- /dev/null +++ b/inc/FUiCompositeMode.h @@ -0,0 +1,59 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCompositeMode.h + * @brief This is the header file for the %Container class. + * + * This header file contains the declarations of the %Container class. + */ + +#ifndef _FUI_COMPOSITE_MODE_H_ +#define _FUI_COMPOSITE_MODE_H_ + +#ifdef COMPOSITE_MODE_NONE +#undef COMPOSITE_MODE_NONE +#endif + +namespace Tizen {namespace Ui +{ + +/** +* @enum CompositeMode +* +* Defines the mode for compositing controls. +* +* @since 2.0 +*/ +enum CompositeMode +{ + /** Composites two UI controls using alpha-blending */ + COMPOSITE_MODE_ALPHA_BLENDING, + + /** Composites two UI controls in the way that the given chroma key color from one control is made transparent */ + COMPOSITE_MODE_CHROMA_KEY, + + /** Composites two UI controls in the way that one control overwrites another control */ + COMPOSITE_MODE_OVERWRITE, + + /** Does not composite the given control */ + COMPOSITE_MODE_NONE, +}; + +}} // Tizen::Ui + +#endif // _FUI_COMPOSITE_MODE_H_ diff --git a/inc/FUiContainer.h b/inc/FUiContainer.h new file mode 100644 index 0000000..9418b31 --- /dev/null +++ b/inc/FUiContainer.h @@ -0,0 +1,625 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiContainer.h + * @brief This is the header file for the %Container class. + * + * This header file contains the declarations of the %Container class. + */ + +#ifndef _FUI_CONTAINER_H_ +#define _FUI_CONTAINER_H_ + +#include +#include +#include + +namespace Tizen { namespace Ui { + +class Layout; +class _ContainerImpl; + +/** + * @class Container + * @brief This class is an abstract base class of all the generic containers of Controls. + * + * @since 2.0 + * + * @remarks As the %Container is an abstract class, use the Tizen::Ui::Controls::Panel class or another class derived from + * %Container to apply the container functionality. + * + * The %Container class is the abstract base class of all generic Control containers. A container is a UI element which can contain + * other UI elements. + * + * For more information on the class features, see Containers. + * + + * + */ +class _OSP_EXPORT_ Container + : public Control +{ + +public: + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~Container(void) = 0; + +public: + /** + * Adds the control at the end of the list maintained by the container. + * + * @since 2.0 + * + * @return An error code + * @param[in] control The control to be added to the container + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The specified @c control is an instance of Window, or this control's parent container. + * @exception E_MAX_EXCEEDED The number of child controls has exceeded the maximum limit. + * @exception E_SYSTEM A system error has occurred. + * @remarks When the control is added, it is placed at the top of the drawing stack maintained by the container.@n + * This means the last control added is drawn last + * @remarks A control becomes displayable only after it has been added to a displayable container. Some methods may not work normally if the methods + * of the control are called before adding the control to a container. After the control is added to a %Container, the OnInitializing() + * method of the control are called before adding the control to a container. After the control is added to a %Container, the + * OnInitializing() method of the control is invoked for the initialization of the control such as creating and adding child controls. + * @see Tizen::Ui::Control::OnInitializing() + * @see Tizen::Ui::Control::OnTerminating() + * @code + * { + * // Uses Panel instead of Container, because Container is an abstract class. + * Panel* pPanel = new Panel(); + * pPanel->Construct(Rectangle(100, 250, 300, 300)); + * + * Form* pForm = new Form(); + * pForm->Construct(FORM_STYLE_NORMAL|FORM_STYLE_TITLE|FORM_STYLE_INDICATOR); + * pForm->AddControl(*pPanel); + * + * //... + * pForm->Invalidate(true); + * //... + * } + * @endcode + */ + result AddControl(const Control& control); + + /** + * Before the system calls OnDraw() method to allow the user to do custom drawing, this method is called to clear the canvas. The user can override this method to change this default behavior. + * + * @since 2.0 + * + * @see GetCanvasN() + */ + virtual void OnClearBackground(void); + + /** + * Called when the container needs to draw itself. @n + * Users can override this method to display user-specific drawings. @n + * This method is called after the container has drawn itself, but just before the container draws its child controls. + * + * @if OSPCOMPAT + * @brief [Compatibility] + * @endif + * @since 2.0 + * + * @if OSPCOMPAT + * @compatibility This method has compatibility issues with OSP compatible applications. @n + * For more information, see @ref CompOnDrawPage "here". + * @endif + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + virtual result OnDraw(void); + + /** + * @if OSPCOMPAT + * @page CompOnDrawPage Compatibility for OnDraw() + * @section CompOnDrawPage IssueSection Issues + * Implementing this method in OSP compatible applications has the following issues: @n + * -# The platform draws the control by calling the parent's OnDraw() callback before invoking the control's OnDraw() callback. So, the users can't control the control's drawing behavior by overriding the OnDraw() callback. + * + * @section CompOnDrawPage SolutionSection Resolutions + * This issue has been resolved in Tizen. @n + * -# The platform does not call the parent's OnDraw() callback before invoking the control's OnDraw() callback. Therefore, you needs to call the parent container's OnDraw() callback in the OnDraw() callback if you override this method. + * @endif + */ + + /** + * Called to notify that the control's show state is changing. + * + * @since 2.0 + * + * @param[in] showState The new show state of the control + * @see Osp::Ui::Control::SetShowState() + */ + virtual void OnShowStateChanging(bool showState); + + /** + * Called to notify that the control's show state is changed. + * + * @since 2.0 + * + * @param[in] showState The new show state of the control + * @see Tizen::Ui::Control::SetShowState() + */ + virtual void OnShowStateChanged(bool showState); + + /** + * Called to notify that the bounds of the control is changing. + * + * @since 2.0 + * + * @return An error code + * @param[in] oldRect The old position and size values of the control + * @param[in] newRect The new position and size values of the control + * @remarks If the method returns an exception, the resulting exception + * is propagated and the control's size is unchanged.@n + * Provide control specific exceptions. + * @see Tizen::Ui::Control::SetBounds() + * @see Tizen::Ui::Control::SetSize() + */ + virtual result OnBoundsChanging(const Tizen::Graphics::Rectangle& oldRect, const Tizen::Graphics::Rectangle& newRect); + + /** + * Called to notify that the bounds of the control is changed. + * + * @since 2.0 + * + * @return An error code + * @param[in] oldRect The old position and size values of the control + * @param[in] newRect The new position and size values of the control + * @see Tizen::Ui::Control::SetBounds() + * @see Tizen::Ui::Control::SetSize() + */ + virtual void OnBoundsChanged(const Tizen::Graphics::Rectangle& oldRect, const Tizen::Graphics::Rectangle& newRect); + + /** + * Overrides this method to indicate that the specified @c width and @c height + * can be supported or a new @c width and @c height should be applied instead + * of the specified values. + * + * @since 2.0 + * + * @return A Boolean flag that indicates whether the specified @c width + * and @ height are supported. + * @param[in, out] evaluatedSize The width and the height that need to be evaluated. + */ + virtual void OnEvaluateSize(Tizen::Graphics::Dimension& evaluatedSize); + + /** + * Removes the specified control from the container. + * + * @since 2.0 + * + * @return An error code + * @param[in] control The child control to be removed + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND The specified instance is not found within the indicated range (that is, the @c control is not found). + * @exception E_SYSTEM A system error has occurred. + * @remarks The removed child control is deleted from the memory. Before deletion, OnTerminating() of the child control is called. + * @see Tizen::Ui::Control::OnTerminating() + */ + result RemoveControl(const Control& control); + + /** + * Removes the specified control from the container. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the control to be removed + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is out of range. + * @exception E_SYSTEM A system error has occurred. + * @remarks The removed child control is deleted from the memory. Before deletion, OnTerminating() of the child control is called. + * @see Tizen::Ui::Control::OnTerminating() + */ + result RemoveControl(int index); + + /** + * Removes all the controls from the container. + * + * @since 2.0 + * + * @remarks The removed child controls are deleted from the memory. Before deletion, OnTerminating() of the child control is called. + * @see Tizen::Ui::Control::OnTerminating() + */ + void RemoveAllControls(void); + + /** + * Gets the control at the specified index of the list that is kept by the container. + * + * @since 2.0 + * + * @return The control at the specified index of the list, @n + * else @c null if the index is not valid + * @param[in] index The index of the control + */ + Control* GetControl(int index) const; + + /** + * Gets the control with the specified name. @n + * If there are multiple matches of the name, the first match is returned. + * + * @if OSPCOMPAT + * @brief [Compatibility] + * @endif + * @since 2.0 + * + * @if OSPCOMPAT + * @compatibility This method has compatibility issues with OSP compatible applications. @n + * For more information, see @ref CompGetControlPage "here". + * @endif + * + * @return The control having the specified name, @n + * else @c null if the name is not valid + * @param[in] name The name of the control + * @param[in] recursive Set to @c true to find a match recursively, @n + * else @c false + */ + Control* GetControl(const Tizen::Base::String& name, bool recursive = false) const; + + /** + * @if OSPCOMPAT + * @page CompGetControlPage Compatibility for GetControl() + * @section CompGetControlPage IssueSection Issues + * Implementing this method in OSP compatible applications has the following issues: @n + * -# GetControl() method searches for itself first and then child controls in OSP, whereas only @n + * child controls are searched for from Tizen. + * + * @section CompGetControlPage SolutionSection Resolutions + * This issue has been resolved in Tizen. @n + * @endif + */ + + /** + * Gets the number of the controls in the container. + * + * @since 2.0 + * + * @return The number of controls in the container + */ + int GetControlCount(void) const; + + /** + * Gets a list of the controls of the container. + * + * @since 2.0 + * + * @return The list of the controls of the container + */ + Tizen::Base::Collection::IList* GetControls(void) const; + + /** + * Gets the portrait layout of the container. + * + * @since 2.0 + * + * @return The portrait layout of the container, @n + * else @c null if the layout does not exist + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The returned layout can be @c null, if it is not set. + */ + Layout* GetPortraitLayoutN(void) const; + + /** + * Gets the landscape layout of the container. + * + * @since 2.0 + * + * @return The landscape layout of the container, @n + * else @c null if the layout does not exist + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The returned layout can be @c null, if it is not set. + */ + Layout* GetLandscapeLayoutN(void) const; + + /** + * Gets the layout of the current orientation. + * + * @since 2.0 + * + * @return The layout of the current orientation, @n + * else @c null if the layout does not exist + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The returned layout can be @c null, if it is not set. + */ + Layout* GetLayoutN(void) const; + + /** + * Checks whether the specified control is a child or descendant of the container. + * + * @since 2.0 + * + * @return @c true if the specified control is within the containment hierarchy of the container, @n + * else @c false + * @param[in] control The control + */ + bool IsAncestorOf(const Control& control) const; + + /** + * Sets whether the specified child control must always be above other children. + * + * @since 2.0 + * + * @return An error code + * @param[in] control The child control + * @param[in] alwaysOnTop The Boolean value indicating that @c control + * must always be on the top + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid.@n + * The specified control is not a child of this + * container. + * @remarks If multiple child control are set as "always on top", then + * their relative order is not specified. If the specified child + * control is a container, then all its children inherit this + * property and they are "always on top" of other controls.@n + * If the method is called on a child control with a @c false + * value, then it's state becomes normal. The relative order + * of child controls in normal state is not specified. + * @see IsControlAlwaysOnTop() + */ + result SetControlAlwaysOnTop(Tizen::Ui::Control& control, bool alwaysOnTop); + + /** + * Sets whether the specified child control must always be below other children. + * + * @since 2.0 + * + * @return An error code + * @param[in] control The child control + * @param[in] alwaysAtBottom The Boolean value indicating that @c control + * must always be at the bottom. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid.@n + * The specified control is not a child of this + * container. + * @remarks If multiple child control are set as "always at bottom", then + * their relative order is not specified. If the specified child + * control is a container, then all its children inherit this + * property and they become "always at bottom" as well.@n + * If the method is called on a child control with a @c false + * value, then it's state becomes normal. The relative order + * of child controls in normal state is not specified. + * @see IsControlAlwaysAtBottom() + */ + result SetControlAlwaysAtBottom(Tizen::Ui::Control& control, bool alwaysAtBottom); + + /** + * Checks whether the specified child control is always at the bottom of + * the drawing stack. + * + * @since 2.0 + * + * @return @c true if the specified child control is set as always at the bottom, @n + * else @c false + * @param[in] control The child control + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid.@n + * The specified control is not a child of this + * container. + * @remarks The specific error code can be accessed using the GetLastResult() + * method. + * @see SetControlAlwaysAtBottom() + */ + bool IsControlAlwaysAtBottom(const Tizen::Ui::Control& control) const; + + /** + * Checks whether the specified child control is always on the top of + * the drawing stack. + * + * @since 2.0 + * + * @return @c true if the specified child control is set as always on the top, @n + * else @c false + * @param[in] control The child control + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The specified control is not a child of this + * container. + * @remarks The specific error code can be accessed using the GetLastResult() + * method. + * @see SetControlAlwaysOnTop() + */ + bool IsControlAlwaysOnTop(const Tizen::Ui::Control& control) const; + +protected: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + Container(void); + + /** + * Initializes this instance of %Container. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(void); + + /** + * Initializes this instance of %Container. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect The rectangle bounds to be set + * @param[in] resizable Set to @c true to make the container resizable, @n + * else @c false + * @param[in] movable Set to @c true to make the container movable, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @remarks This method must be called from the derived classes's construct methods. + * @remarks If the @c resizable is @c false, IsResizable() returns @c false. + * @see IsResizable() + */ + result Construct(const Tizen::Graphics::Rectangle& rect, bool resizable = true, bool movable = true); + + /** + * Initializes this instance of %Container with the specified layout and rectangular region. + * + * @since 2.0 + * + * @return An error code + * @param[in] layout The layout for both the portrait and landscape mode + * @param[in] rect The location and size of the %Container + * @param[in] resizable Set to @c true to make the container resizable, @n + * else @c false + * @param[in] movable Set to @c true to make the container movable, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @remarks This method must be called from the derived classes's construct methods. + * @remarks If the @c resizable is @c false, IsResizable() returns @c false. + * @see IsResizable() + * @see Tizen::Ui::Layout + * @see Tizen::Ui::Container::GetLayoutN() + */ + result Construct(const Tizen::Ui::Layout& layout, const Tizen::Graphics::Rectangle& rect, bool resizable = true, bool movable = true); + + /** + * Initializes this instance of %Container with the specified layouts and rectangular region. + * + * @since 2.0 + * + * @return An error code + * @param[in] portraitLayout The layout for the portrait mode + * @param[in] landscapeLayout The layout for the landscape mode + * @param[in] rect The location and size of the %Container + * @param[in] resizable Set to @c true to make the container resizable, @n + * else @c false + * @param[in] movable Set to @c true to make the container movable, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @remarks If the @c resizable is @c false, IsResizable() returns @c false. + * @see IsResizable() + * @see Tizen::Ui::Layout + * @see Tizen::Ui::Layout + * @see Tizen::Ui::Container::GetLayoutN() + * @see Tizen::Ui::Container::GetPortraitLayoutN() + * @see Tizen::Ui::Container::GetLandscapeLayoutN() + */ + result Construct(const Tizen::Ui::Layout& portraitLayout, const Tizen::Ui::Layout& landscapeLayout, const Tizen::Graphics::Rectangle& rect, bool resizable = true, bool movable = true); + + /** + * Gets the index of the specified control. + * + * @since 2.0 + * @return An error code + * @param[in] control The control + * @param[out] index The index of the control + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND The specified instance of Control is not found. + * @see SetControlAt() + * + */ + result GetControlAt(const Control& control, int& index) const; + + /** + * Sets the control at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] control The control + * @param[in] index The index + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is out of range. + * @exception E_SYSTEM A system error has occurred. + * @remarks The @c control must be first added to this container. @n + * Call the Invalidate() method after this, to apply the change to be shown. + * @see Invalidate(), GetControlAt() + * + */ + result SetControlAt(const Control& control, int index); + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + Container(const Container& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + Container& operator =(const Container& rhs); + +protected: + friend class _ContainerImpl; + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void Container_Reserved1(void) {} + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void Container_Reserved2(void) {} + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void Container_Reserved3(void) {} + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void Container_Reserved4(void) {} + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void Container_Reserved5(void) {} + +}; // Container + +}} //Tizen::Ui + +#endif //_FUI_CONTAINER_H_ diff --git a/inc/FUiControl.h b/inc/FUiControl.h new file mode 100644 index 0000000..622b764 --- /dev/null +++ b/inc/FUiControl.h @@ -0,0 +1,1489 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiControl.h + * @brief This is the header file for the %Control class. + * + * This header file contains the declarations of the %Control class. + */ + +#ifndef _FUI_CONTROL_H_ +#define _FUI_CONTROL_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Animations { +class ControlAnimator; +class VisualElement; +}}} + +namespace Tizen { namespace Ui { + +class AccessibilityContainer; +class Container; +class _ControlImpl; +class TouchGestureDetector; + +/** + * @class Control + * @brief This class is the abstract base class of all the UI control classes. + * + * @since 2.0 + * + * @remarks In order for a control to be displayed, it must first be bound to a window of the underlying window system. The control's window is + * created when it (or its ancestor) is added to a valid control containment hierarchy. A containment hierarchy is valid if and + * only if the root of the hierarchy is an instance of the Window class. + * + * The %Control class is the abstract base class of all user interface elements. It encapsulates a + * "window" of the underlying window system, and provides the infrastructure necessary for the + * elements to respond to user inputs. The %Control class also determines how a key event is dispatched + * and processed. + * + * For more information on the class features, see UI Controls. + * + * + * The following examples demonstrate how to use the %Control class. + * + * Size and Position + * + * @code + * // Sets the size + * pControl->SetSize(100, 100); // 100 pixels wide and 100 pixels long + * + * // Sets the position + * pControl->SetPosition(5, 5); // Control is drawn 5 pixels down and 5 pixels left from the top-left corner of its parent + * @endcode + * + * Draw and Show + * + * @code + * // Gets a instance of Canvas + * Canvas* pCanvas = pControl->GetCanvasN(); + * + * // Fills the canvas with white color + * pCanvas->Clear(Tizen::Graphics::Color(255, 255, 255)); + * + * // Shows changes on screen + * pControl->Invalidate(true); + * + * delete pCanvas; + * @endcode + * + * Key and input focus + * + * @code + * // Implements MyKeyEventListener + * IKeyEventListener* pKeyListener = new MyKeyEventListener(); + * pControl->SetFocus(); + * + * // The added key listener should be deleted after use + * pControl->AddKeyEventListener(*pKeyListener); + * @endcode + * + */ +class _OSP_EXPORT_ Control + : public Tizen::Base::Object +{ + +public: + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~Control(void); + + /** + * Adds the IFocusEventListener instance to the %Control instance. @n + * The added listener gets notified when the control gains or loses its focus. + * + * @since 2.0 + * + * @param[in] listener The event listener to add + * @see RemoveFocusEventListener() + */ + void AddFocusEventListener(IFocusEventListener& listener); + + /** + * Adds the IKeyEventListener instance to the %Control instance. @n + * The added listener gets notified when a key is pressed, released, or long pressed. + * + * @since 2.0 + * + * @param[in] listener The event listener to add + * @see RemoveKeyEventListener() + */ + void AddKeyEventListener(IKeyEventListener& listener); + + /** + * Adds the ITouchEventListener instance to the %Control instance. @n + * The added listener gets notified when a touch event such as a press or a release is fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to add + * @see RemoveTouchEventListener() + */ + void AddTouchEventListener(ITouchEventListener& listener); + + /** + * Adds the ITouchModeChangedEventListener instance to the %Control instance. @n + * The added listener gets notified when the device's touch mode is changed. + * + * @since 2.0 + * + * @param[in] listener The event listener to add + * @see RemoveTouchModeChangedEventListener() + */ + void AddTouchModeChangedEventListener(Tizen::Ui::ITouchModeChangedEventListener& listener); + + /** + * Adds the IDragDropEventListener instance to the %Control instance. @n + * The added listener gets notified when a drag or a drop happens in the control. + * + * @since 2.0 + * + * @param[in] listener The event listener to add + * @see RemoveDragDropEventListener() + */ + void AddDragDropEventListener(IDragDropEventListener& listener); + + /** + * Removes the focus listener instance. @n + * The removed listener is not notified even when focus events are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to remove + * @see AddFocusEventListener() + */ + void RemoveFocusEventListener(IFocusEventListener& listener); + + /** + * Removes the key event listener instance. @n + * The removed listener is not notified even when key events are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to remove + * @see AddKeyEventListener() + */ + void RemoveKeyEventListener(IKeyEventListener& listener); + + /** + * Removes the touch event listener instance. @n + * The removed listener is not notified even when touch events are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to remove + * @see AddTouchEventListener() + */ + void RemoveTouchEventListener(ITouchEventListener& listener); + + /** + * Removes the touch mode changed event listener instance. @n + * The removed listener is not notified even when the touch mode changed events are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to remove + * @see AddTouchModeChangedEventListener() + */ + void RemoveTouchModeChangedEventListener(Tizen::Ui::ITouchModeChangedEventListener& listener); + + /** + * Adds the IDragDropEventListener instance to the %Control instance. @n + * The added listener gets notified when a drag or a drop happens in the control. + * + * @since 2.0 + * + * @param[in] listener The event listener to add + * @see Tizen::Ui::IDragDropEventListener::OnTouchDragged() + * @see Tizen::Ui::IDragDropEventListener::OnTouchDropped() + * @see RemoveDragDropEventListener() + */ + void RemoveDragDropEventListener(IDragDropEventListener& listener); + + /** + * Overrides this method to provide user-specific initialization code before the control is added to a container. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_FAILURE The method has failed. + * @remarks This method is called when the control is about to be added to a container. + * @remarks To cancel adding this control to the parent, return @c E_FAILURE in this method. + * @see OnTerminating() + */ + virtual result OnInitializing(void); + + /** + * Overrides this method to provide user-specific termination code. + * + * @if OSPCOMPAT + * @brief [Compatibility] + * @endif + * @since 2.0 + * + * @if OSPCOMPAT + * @compatibility This method has compatibility issues with OSP compatible applications. @n + * For more information, see @ref CompOnTerminatingPage "here". + * @endif + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_FAILURE The method has failed. + * @remarks This method is called right before the control is removed successfully from the container. + * @remarks To cancel removing this control from the parent, return @c E_FAILURE in this method. + * @see OnInitializing() + */ + virtual result OnTerminating(void); + + /** + * @if OSPCOMPAT + * @page CompOnTerminatingPage Compatibility for OnTerminating() + * @section CompOnterminatingPage IssueSection Issues + * Implementing this method in OSP compatible applications has the following issues: @n + * -# OnTerminating() callback is called from child to parent. + * + * @section CompOnTerminatingPage SolutionSection Resolutions + * This issue has been resolved in Tizen. @n + * -# OnTerminating() callback is called from parent to child. + * @endif + */ + + /** + * Called asynchronously when the user event that is sent by SendUserEvent() method is + * dispatched to the control. + * + * @since 2.0 + * + * @param[in] requestId The user-defined event ID + * @param[in] pArgs A pointer to the argument list + * @see SendUserEvent() + */ + virtual void OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs); + + /** + * Checks whether the control is movable. + * + * @since 2.0 + * + * @return @c true if the control is movable, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks When control is not movable SetPosition() and SetBounds() return @c E_UNSUPPORTED_OPERATION. + * @see SetPosition() + * @see SetBounds() + */ + bool IsMovable(void) const; + + /** + * Checks whether the control is resizable. + * + * @since 2.0 + * + * @return @c true if the control is resizable, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @remarks Even if this method returns @c true, the size can be changed internally. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks When control is not resizable, + * SetSize(), SetBounds(), SetMinimumSize() and SetMaximumSize() return @c E_UNSUPPORTED_OPERATION. + * @see SetSize() + * @see SetBounds() + * @see SetMinimumSize() + * @see SetMaximumSize() + */ + bool IsResizable(void) const; + + /** + * Gets the position and the size of the control. + * + * @since 2.0 + * + * @return An instance of the Tizen::Graphics::Rectangle that represents the position of top-left corner, + * the width, and the height of the control + * @remarks The shape of the control is rectangular that is defined by the top-left point, + * and the width or height. The position + * of the top-left point is relative to the top-left corner of the parent container. + * @see SetBounds() + */ + Tizen::Graphics::Rectangle GetBounds(void) const; + + /** + * Gets the position and the size of the control. + * + * @since 2.0 + * + * @param[out] x The x position of top-left corner of the control + * @param[out] y The y position of top-left corner of the control + * @param[out] width The width of the rectangular region + * @param[out] height The height of the rectangular region + * @remarks The shape of the control is regarded as a rectangle that is defined + * by the top-left point and the width or height. + * The position of the top-left point is relative to the top-left corner of + * the parent container. + * @see SetBounds() + */ + void GetBounds(int& x, int& y, int& width, int& height) const; + + /** + * Gets the position of the control's top-left corner. + * + * @since 2.0 + * + * @return The position of the control's top-left corner + * @remarks The position of top-left corner is relative to the top-left corner of its parent container. + * @see GetBounds() + */ + Tizen::Graphics::Point GetPosition(void) const; + + /** + * Gets the position of the control's top-left corner. + * + * @since 2.0 + * + * @param[out] x The x position of the control's top-left corner + * @param[out] y The y position of the control's top-left corner + * @remarks The position of top-left corner is relative to the top-left corner of its parent container. + * @see GetBounds() + */ + void GetPosition(int& x, int& y) const; + + /** + * Gets the size of the control. + * + * @since 2.0 + * + * @return The size of the control + * @see GetBounds() + */ + Tizen::Graphics::Dimension GetSize(void) const; + + /** + * Gets the size of the control. + * + * @since 2.0 + * + * @param[out] width The width of the control + * @param[out] height The height of the control + * @see GetBounds() + */ + void GetSize(int& width, int& height) const; + + /** + * Gets the x position of the control. @n + * The position of control is relative to the top-left corner of its parent container. + * + * @since 2.0 + * + * @return The x position of the control + * @see GetBounds() + * @see GetPosition() + * @see GetY() + */ + int GetX(void) const; + + /** + * Gets the y position of the control. @n + * The position of control is relative to the top-left corner of its parent container. + * + * @since 2.0 + * + * @return The y position of the control + * @see GetBounds() + * @see GetPosition() + * @see GetX() + */ + int GetY(void) const; + + /** + * Gets the width of the control. + * + * @since 2.0 + * + * @return The width of the control + * @see GetBounds() + * @see GetSize() + * @see GetHeight() + */ + int GetWidth(void) const; + + /** + * Gets the height of the control. + * + * @since 2.0 + * + * @return The height of the control + * @see GetBounds() + * @see GetSize() + * @see GetWidth() + */ + int GetHeight(void) const; + + /** + * Gets the minimum size of the control. + * + * @since 2.0 + * + * @return The minimum size of the control + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The first call of the method returns the system-defined minimum size. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Dimension GetMinimumSize(void) const; + + /** + * Gets the maximum size of the control. + * + * @since 2.0 + * + * @return The maximum size of the control + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The first call of the method returns the system-defined maximum size. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Dimension GetMaximumSize(void) const; + + /** + * Gets a font of the control. + * + * @since 2.0 + * + * @return The font name set in the control, @n + * else an empty string if the font is not set + * @see SetFont() + */ + Tizen::Base::String GetFont(void) const; + + /** + * Sets the position and size of the control. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect The new bounds of the control + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The control has not been constructed as yet. + * @exception E_UNSUPPORTED_OPERATION This control is neither movable nor resizable. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks Do not override this method. + * @remarks The size of the control must be within the range defined by the minimum size and the maximum size. + * @see IsMovable() + * @see IsResizable() + * @see GetMinimumSize() + * @see GetMaximumSize() + * @see SetPosition() + * @see SetSize() + */ + result SetBounds(const Tizen::Graphics::Rectangle& rect); + + /** + * Sets the position and size of the control. @n + * The position is set at (x, y), and the @c width and @c height parameters contain + * the width and height values of the object, respectively. + * + * @since 2.0 + * + * @return An error code + * @param[in] x The new x position of the control + * @param[in] y The new y position of the control + * @param[in] width The new width of the control + * @param[in] height The new height of the control + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The control has not been constructed as yet. + * @exception E_UNSUPPORTED_OPERATION This control is neither movable nor resizable. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks Do not override this method. + * @remarks The size of the control must be within the range defined by the minimum size and the maximum size. + * @see IsMovable() + * @see IsResizable() + * @see GetMinimumSize() + * @see GetMaximumSize() + * @see SetPosition() + * @see SetSize() + */ + result SetBounds(int x, int y, int width, int height); + + /** + * Sets the relative position of the control. + * + * @since 2.0 + * + * @return An error code + * @param[in] Position The new position + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The control has not been constructed as yet. + * @exception E_UNSUPPORTED_OPERATION This control is not movable. + * @exception E_SYSTEM A system error has occurred. + * @remarks Do not override this method. + * @remarks The position of the control are relative to the top-left corner of its parent. + * @see IsMovable() + * @see SetBounds() + */ + result SetPosition(const Tizen::Graphics::Point& Position); + + /** + * Sets the position of the control. + * + * @since 2.0 + * @return An error code + * @param[in] x The new x position of the control + * @param[in] y The new y position of the control + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The control has not been constructed as yet. + * @exception E_UNSUPPORTED_OPERATION This control is not movable. + * @exception E_SYSTEM A system error has occurred. + * @remarks Do not override this method. + * @remarks The x,y position of the control are relative to the top-left corner of its parent. + * @see IsMovable() + * @see SetBounds() + */ + result SetPosition(int x, int y); + + /** + * Sets the size of the control. @n + * + * @since 2.0 + * + * @return An error code + * @param[in] size The new width and height + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The control has not been constructed as yet. + * @exception E_UNSUPPORTED_OPERATION This control is not resizable. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks Do not override this method. + * @remarks The size of the control must be within the range defined by the minimum size and the maximum size. + * @see IsResizable() + * @see GetMinimumSize() + * @see GetMaximumSize() + * @see SetBounds() + */ + result SetSize(const Tizen::Graphics::Dimension& size); + + /** + * Sets the size of the control. @n + * The @c width and @c height parameters contain the width and height values of the object, respectively. + * + * @since 2.0 + * + * @return An error code + * @param[in] width The new width of the control + * @param[in] height The new height of the control + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The control has not been constructed as yet. + * @exception E_UNSUPPORTED_OPERATION This control is not resizable. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks Do not override this method. + * @remarks The size of the control must be within the range defined by the minimum size and the maximum size. + * @see IsResizable() + * @see GetMinimumSize() + * @see GetMaximumSize() + * @see SetBounds() + */ + result SetSize(int width, int height); + + /** + * Sets the minimum size of the control. + * + * @since 2.0 + * + * @return An error code + * @param[in] newMinDim The new minimum size of the control + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION This control is not resizable. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method can affect the maximum size and the current size of the control. @n + * The control needs to be redrawn to reflect the change in its size. @n + * If the current maximum size or the control size is smaller than the new minimum size, + * it becomes the same as the new minimum size. + * @see IsResizable() + */ + result SetMinimumSize(const Tizen::Graphics::Dimension& newMinDim); + + /** + * Sets the maximum size of the control. + * + * @since 2.0 + * + * @return An error code + * @param[in] newMaxDim The new maximum size of the control + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION This control is not resizable. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method can affect the minimum size and the current size of the control. @n + * The control needs to be redrawn to reflect the change in its size. @n + * If the current minimum size or the control size is greater than the new maximum size, + * it becomes the same as the new maximum size. + * @see IsResizable() + */ + result SetMaximumSize(const Tizen::Graphics::Dimension& newMaxDim); + + /** + * Converts the specified screen position to the position in control's coordinate system. + * + * @since 2.0 + * + * @return The position relative to the top-left corner of the control's client-area + * @param[in] screenPosition The position relative to the top-left corner of the screen + * @see ConvertToScreenPosition() + */ + Tizen::Graphics::Point ConvertToControlPosition(const Tizen::Graphics::Point& screenPosition) const; + + /** + * Converts the specified position in the control's coordinate system to the screen position. + * + * @since 2.0 + * + * @return The position relative to the top-left corner of the screen + * @param[in] controlPosition The position relative to the top-left corner of the control's client-area + * @see ConvertToControlPosition() + */ + Tizen::Graphics::Point ConvertToScreenPosition(const Tizen::Graphics::Point& controlPosition) const; + + /** + * Sets the font of the control. + * + * @since 2.0 + * + * @return An error code + * @param[in] fontName The app font name or system font name @n + * The app font name is retrieved using Tizen::Graphics::Font::GetFaceName(Tizen::Base::String& filepath). @n + * The system font name is retrieved using Tizen::Graphics::Font::GetSystemFontListN(). + * Sets an empty string to reset. + * @exception E_SUCCESS The method is successful. + * @exception E_FILE_NOT_FOUND The specified font cannot be found or accessed. + * @remarks At first, the value of @c fontName is considered app font name if it matches one of the face names of the font files which are located in @b '/res/font'. + * If not, the value of @c fontName is considered system font name if it matches one of the retrieved values using Tizen::Graphics::Font::GetSystemFontListN(). + * @remarks The control first attempts to find the control font. If it fails, then it searches for the application default font and the system font, in sequence. + * @see GetFont() + */ + result SetFont(const Tizen::Base::String& fontName); + + /** + * Checks whether the specified @c point is inside the control. + * + * @since 2.0 + * + * @return @c true if the specified @c point is inside the control, @n + * else @c false + * @param[in] point The point to check + * @remarks The specified @c point must be defined relative to the top-left corner of the control. + */ + bool Contains(const Tizen::Graphics::Point& point) const; + + /** + * Checks whether the specified point is inside the control. + * + * @since 2.0 + * + * @return @c true if the specified point is inside the control, @n + * else @c false + * @param[in] x The x position of the point to check + * @param[in] y The y position of the point to check + * @remarks The specified point must be defined relative to the top-left corner of the control. + */ + bool Contains(int x, int y) const; + + /** + * Draws child controls recursively. + * + * @if OSPCOMPAT + * @brief [Compatibility] + * @endif + * @since 2.0 + * + * @if OSPCOMPAT + * @compatibility This method has compatibility issues with OSP compatible applications. @n + * For more information, see @ref CompDrawPage "here". + * @endif + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * Note: This control cannot be displayed. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method calls OnDraw() immediately in a synchronous way. + * @see Show() + */ + result Draw(void); + + /** + * @if OSPCOMPAT + * @page CompDrawPage Compatibility for Draw() + * @section CompDrawPage IssueSection Issues + * Implementing this method in OSP compatible applications has the following issues: @n + * -# Draw() method draws child controls in a recursive way regardless of the visibility of the parent. + * + * @section CompDrawPage SolutionSection Resolutions + * This issue has been resolved in Tizen. @n + * -# Draw() method does not draw child controls if the control itself is not visible. + * @endif + */ + + /** + * Draws the control. + * + * @since 2.0 + * + * @param[in] recursive Set to @c true to draw child controls recursively, @n + * else @c false + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * Note: This control cannot be displayed. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method calls OnDraw() immediately in a synchronous way. + * @see Show() + */ + result Draw(bool recursive); + + /** + * Shows the control on the screen. + * + * @since 2.0 + * @final Although this method is virtual, it should not be overridden. + * If overridden, it may not work as expected. + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * Note: This control cannot be displayed. + * @exception E_SYSTEM A system error has occurred. + * @remarks Do not override this method. + */ + virtual result Show(void); + + /** + * Invalidates the control. + * + * @since 2.0 + * + * @param[in] recursive Set to @c true to invalidate child controls recursively, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * Note: This control cannot be displayed. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks OnDraw() is not called immediately, but called asynchronously just before the screen is updated. + * @see Show() + */ + void Invalidate(bool recursive); + + /** + * Invalidates the control of the specified position and size. + * + * @since 2.0 + * + * @param[in] bounds The position relative to the top-left corner of the control + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * Note: This control cannot be displayed. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see Show() + */ + void InvalidateBounds(const Tizen::Graphics::Rectangle& bounds); + + /** + * Draws the control asynchronously. + * + * @since 2.0 + * + * @param[in] show Set to @c true to also show the control, @n + * else @c false + * @remarks This method posts a draw event in the event queue. @n + * Drawing requested by %RequestRedraw() occurs when the draw event is fired to the control. + */ + void RequestRedraw(bool show = true) const; + + /** + * Creates and returns a graphics canvas whose bounds (that is, position and size) are equal to those + * of the control. + * + * @since 2.0 + * + * @return The graphic canvas of the control, @n + * else @c null if an exception occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @remarks The method allocates a Tizen::Graphics::Canvas whose bounds are equal to that of the control. + * It is the developer's responsibility to deallocate the canvas after use. + * The canvas is guaranteed to be valid only if the properties of the parent controls of the canvas remain unchanged. + * Therefore, one must delete previously allocated canvas and create a new canvas using the %GetCanvasN() method + * if the size or position of the control is changed. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks The Frame and Form (and between different Form instances) share a single frame-buffer. Therefore, + * if custom drawing is performed on the graphic canvas of Frame and Form + * then it will appear on the screen regardless of which control is currently visible on the screen. + * @see GetCanvasN(const Tizen::Graphics::Rectangle& bounds) const + * @see GetCanvasN(int x, int y, int width, int height) const + * @code + * result + * MyForm::OnDraw(void) + * { + * result r = E_SUCCESS; + * Canvas* pCanvas = GetCanvasN(); + * if (pCanvas != null) + * { + * // add your drawing code here + * } + * if (pCanvas) + * delete pCanvas; + * // Do not call Show(). It will be called automatically after OnDraw() callback. + * return r; + * } + * @endcode + */ + Tizen::Graphics::Canvas* GetCanvasN(void) const; + + /** + * Creates and returns a graphic canvas of the control of the specified position and size. + * + * @since 2.0 + * + * @return The graphic canvas of the control, @n + * else @c null if an exception occurs + * @param[in] bounds The bounds of the graphic canvas + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified bounds does not intercept with the bounds of the control. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @remarks Only the graphic canvas of displayable controls can be obtained. + * If the specified area is not inside the control, + * the graphics canvas of overlapped area between the control and the specified bound is returned. @n + * @remarks The method allocates an Tizen::Graphics::Canvas whose bounds are equal to that of the control. + * It is the developer's responsibility to deallocate the canvas after use. + * The canvas is guaranteed to be valid only if the properties of the parent controls of the canvas remain unchanged. + * Therefore, one must delete previously allocated canvas and create a new canvas using the %GetCanvasN() method + * if the size or position of the control is changed. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks The Frame and Form (and between different Form instances) share a single frame-buffer. Therefore, + * if custom drawing is performed on the graphic canvas of Frame and Form + * then it will appear on the screen regardless of which control is currently visible on the screen. + * @see GetCanvasN(void) const + * @see GetCanvasN(int x, int y, int width, int height) const + */ + Tizen::Graphics::Canvas* GetCanvasN(const Tizen::Graphics::Rectangle& bounds) const; + + /** + * Creates and returns a graphic canvas of the specified position and size in the control. + * + * @since 2.0 + * + * @return The graphic canvas of the control, @n + * else @c null if an exception occurs + * @param[in] x The x position relative to the top-left corner of the control + * @param[in] y The y position relative to the top-left corner of the control + * @param[in] width The width of a graphic canvas + * @param[in] height The height of a graphic canvas + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified bounds does not intercept with the bounds of the control. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @remarks Only the graphic canvas of displayable controls can be obtained. + * If the specified area is not inside the control, + * the graphics canvas of the overlapped area between the control and the specified bound is returned. @n + * @remarks The method allocates an Tizen::Graphics::Canvas whose bounds are equal to that of the control. + * It is the developer's responsibility to deallocate the canvas after use. + * The canvas is guaranteed to be valid only if properties of the parent controls of the canvas remain unchanged. + * Therefore, one must delete the previously allocated canvas and create a new canvas using the %GetCanvasN() method + * if the size or position of the control is changed. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks The Frame and Form (and between different Form instances) share a single frame-buffer. Therefore, + * if custom drawing is performed on the graphic canvas of Frame and Form + * then it will appear on the screen regardless of which control is currently visible on the screen. + * @see GetCanvasN(void) const + * @see GetCanvasN(const Tizen::Graphics::Rectangle& bounds) const + */ + Tizen::Graphics::Canvas* GetCanvasN(int x, int y, int width, int height) const; + + /** + * Checks whether the control is currently visible on the screen. + * + * @since 2.0 + * + * @return @c true if the control is currently visible on the screen, @n + * else @c false + * @remarks If this method is called before the control is added to a parent, @c false is returned. + * @see GetShowState() + * @see SetShowState() + */ + bool IsVisible(void) const; + + /** + * Gets the current show state of the control. + * + * @since 2.0 + * + * @return The show state of the control + * @remarks Even if the control's state is "show", the control may not be visible. + * @see SetShowState() + * @see IsVisible() + */ + bool GetShowState(void) const; + + /** + * Sets the show state of the control. + * + * @since 2.0 + * + * @return An error code + * @param[in] state The new show state + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * Note: This control cannot be displayed. + * @exception E_SYSTEM A system error has occurred. + * @remarks Do not override this method. + * @remarks Even if this method is invoked, the control is not drawn or shown. @n + * To draw and show the control, use Invalidate() method. @n + * Once the control's show state is set to @c false, + * the show state needs to be set to @c true again before you draw and show the control. + * @see GetShowState() + * @see Invalidate() + */ + result SetShowState(bool state); + + /** + * Gets the dedicated %VisualElement instance for this control. + * + * @since 2.0 + * + * @return An instance of the VisualElement + * @remarks If an application developer modifies the state of the returned VisualElement + * and the host control is not aware of this change, then the control may behave egregiously. + * It is highly recommended to restore the %VisualElement state to avoid such conflicts. + */ + Tizen::Ui::Animations::VisualElement* GetVisualElement(void) const; + + /** + * Gets the parent of the control. + * + * @since 2.0 + * + * @return The current parent of the control + */ + Container* GetParent(void) const; + + /** + * Gets the name of the control. + * + * @since 2.0 + * + * @return The name of the control + */ + Tizen::Base::String GetName(void) const; + + /** + * Sets the name of the control. + * + * @since 2.0 + * + * @param[in] name The name of the control + */ + void SetName(const Tizen::Base::String& name); + + /** + * Checks whether the control is focusable. + * + * @since 2.0 + * + * @return @c true if control is focusable, @n + * else @c false + * @remarks The focus ability of the container classes like Panel is @c false by default. + */ + bool IsFocusable(void) const; + + /** + * Sets the focus ability of the control. @n + * Non-Focusable controls cannot take the key focus. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * Note: The control does not permit to change its focus ability. + * @exception E_SYSTEM A system error has occurred. + * @remarks The focus ability of the container classes like Panel is @c false by default. + * @remarks The RadioGroup class does not render the UI. + * Therefore, RadioGroup::SetFocusable() returns @c E_SYSTEM. + */ + result SetFocusable(bool focusable); + + /** + * Checks whether the control currently has the input focus. + * + * @since 2.0 + * + * @return @c true if the control currently has the input focus, @n + * else @c false + * @remarks If this method is called before the control is added to a parent, @c false is returned. + * @see SetFocus() + */ + bool HasFocus(void) const; + + /** + * Sets the focus to the control. @n + * This method is called if the control needs to listen to user input events such as key pressed. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * Note: This control cannot be displayed. + * @exception E_INVALID_CONDITION The control is not contained in, or is not the top z-order frame or form. + * @remarks Do not override this method. + */ + result SetFocus(void); + + /** + * Checks whether the control is enabled. + * + * @since 2.0 + * + * @return @c true if the control is enabled, @n + * else @c false + * @remarks If this method is called before the control is added to a parent, @c false is returned. + * @see SetEnabled() + */ + bool IsEnabled(void) const; + + /** + * Enables or disables the control. @n + * Only an enabled control can respond to the user input. By default, the control is enabled. + * + * @since 2.0 + * + * @return An error code + * @param[in] enable The new state of the object + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_SYSTEM A system error has occurred. + * @remarks Do not override this method. + */ + result SetEnabled(bool enable); + + /** + * Checks whether the device is in touch mode. @n + * When the user interacts with the device by touching it, the device is in touch mode. + * + * @since 2.0 + * + * @return @c true if the device is in touch mode, @n + * else @c false + * @remarks This method returns @c false, for devices with QWERTY keyboard. + * The user can navigate the UI using directional keys. + */ + bool IsInTouchMode(void) const; + + /** + * Enables or disables the drag operation in the %Control. + * + * @since 2.0 + * + * @param[in] enable Set to @c true to enable the drag operation, @n + * else @c false + * @see SetDropEnabled() + */ + void SetDragEnabled(bool enable); + + /** + * Enables or disables the drop operations in the %Control. + * + * @since 2.0 + * + * @param[in] enable Set to @c true to enable drop operations, @n + * else @c false + * @remarks To receive drop event, control's drag property has to be enabled. + * @see SetDragEnabled() + */ + void SetDropEnabled(bool enable); + + /** + * Sends a user event to the control. + * + * @since 2.0 + * + * @param[in] requestId The user-defined event ID + * @param[in] pArgs A pointer to the argument list + * @remarks This method posts a user event in the event queue + * and returns immediately to support asynchronous actions of the framework. + * @see OnUserEventReceived() + */ + void SendUserEvent(RequestId requestId, const Tizen::Base::Collection::IList* pArgs) const; + + /** + * Stops the current UI event dispatch sequence by indicating the current input event is consumed. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks If this method is invoked during an UI event (key or touch) propagation sequence, + * the method will stop the propagation and consequently the system will not be notified of the event. @n + * The method will not have any effect if no UI event is being dispatched. @n + * It is recommended that this method is called within IKeyEventListener or + * ITouchEventListener to stop the event from propagating to the next step. + */ + result ConsumeInputEvent(void); + + /** + * Gets the control animator of the current instance of %Control + * + * @since 2.0 + * + * @return A pointer to ControlAnimator, @n + * else @c null if this instance is not constructed or not added to a parent or non-animatable + */ + Tizen::Ui::Animations::ControlAnimator* GetControlAnimator(void) const; + + /** + * Adds the gesture detector to the %Control. @n + * The added gesture detector receives touch events prior to %Control. + * + * @since 2.0 + * + * @return An error code + * @param[in] gestureDetector The gesture detector + * @exception E_SUCCESS The method is successful. + * @see RemoveGestureDetector() + */ + result AddGestureDetector(const TouchGestureDetector& gestureDetector); + + /** + * Removes the gesture detector from the %Control. + * + * @since 2.0 + * + * @return An error code + * @param[in] gestureDetector The gesture detector + * @exception E_SUCCESS The method is successful. + * @see AddGestureDetector() + */ + result RemoveGestureDetector(const TouchGestureDetector& gestureDetector); + + /** + * @if OSPDEPREC + * Gets the composite mode for merging with other controls. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because changing composition mode is not allowed any more. + * @since 2.0 + * + * @return The composite mode + * @exception E_SUCCESS The method is successful. + * @remarks In Tizen, this method only returns @c COMPOSITE_MODE_ALPHA_BLENDING. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @endif + */ + Tizen::Ui::CompositeMode GetCompositeMode(void) const; + + /** + * @if OSPDEPREC + * Sets the composite mode for merging with other controls. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because changing composition mode is not allowed any more. + * @since 2.0 + * + * @return An error code + * @param[in] compositeMode The composite mode + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The method is not supported. + * @remarks In Tizen, only @c COMPOSITE_MODE_ALPHA_BLENDING is allowed. + * Otherwise, this method returns @c E_UNSUPPORTED_OPERATION. + * @endif + */ + result SetCompositeMode(Tizen::Ui::CompositeMode compositeMode); + + /** + * @if OSPDEPREC + * Gets the chroma key color value that is used for the control composition. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because chroma key color is not supported any more. + * @since 2.0 + * + * @return The chroma key color + * @exception E_UNSUPPORTED_OPERATION The method is not supported. + * @remarks In Tizen, this method always fails and returns Tizen::Graphics::Color(0, 0, 0, 0). + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @endif + */ + Tizen::Graphics::Color GetChromaKeyColor(void) const; + + /** + * @if OSPDEPREC + * Sets the chroma key color value that is used for the control composition. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because chroma key color is not supported any more. + * @since 2.0 + * + * @return An error code + * @param[in] chromaKeyColor The chroma key color + * @exception E_UNSUPPORTED_OPERATION The method is not supported. + * @remarks In Tizen, this method always fails. + * @endif + */ + result SetChromaKeyColor(Tizen::Graphics::Color chromaKeyColor); + + /** + * Captures the composited scene of the Panel control. + * + * @since 2.0 + * + * @return A Tizen::Graphics::Bitmap instance that captures the current composited scene of the Panel control, @n + * else @c null if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION This method is not supported. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks This method is not supported in the following class that is derived from Panel class: + * @li OverlayPanel + * @remarks The bounds of the %Panel control must be within the client area of the Form control to get a valid composited scene. + */ + Tizen::Graphics::Bitmap* GetCapturedBitmapN(void) const; + + /** + * Gets the position and the size of the invalidated bounds. + * + * @since 2.0 + * + * @return An instance of Tizen::Graphics::Rectangle that represents the position of top-left corner, + * the width, and the height of the invalidated bounds + */ + Tizen::Graphics::Rectangle GetInvalidatedBounds(void) const; + + /** + * Enables or disables the multi-point touch of the %Control. + * + * @since 2.0 + * + * @param[in] enable A Boolean flag indicating whether to enable the multi-point touch + * + * @see IsMultipointTouchEnabled() + */ + + void SetMultipointTouchEnabled(bool enable); + + /** + * Checks whether the multi-point touch is enabled. + * + * @since 2.0 + * + * @return @c true if the multi-point touch is enabled, @n + * else @c false + * @see SetMultipointTouchEnabled() + */ + bool IsMultipointTouchEnabled(void) const; + + /** + * Gets the accessibility container. + * + * @since 2.0 + * + * @return The accessibilit container of the control, if the control supports accessibility feature. @n + * Else @c null. + * @see AccessibilityContainer::GetOwner() + */ + const AccessibilityContainer* GetAccessibilityContainer(void) const; + + /** + * Gets the accessibility container. + * + * @since 2.0 + * + * @return The accessibilit container of the control, if the control supports accessibility feature. @n + * Else @c null. + * @see AccessibilityContainer::GetOwner() + */ + AccessibilityContainer* GetAccessibilityContainer(void); + +protected: + /** + * Gets the default key event listener. + * + * @since 2.0 + * + * @return The default key event listener, @n + * else @null is returned if listener is not set or a system error has occurred + * @see SetDefaultKeyEventListener() + */ + IKeyEventListener* GetDefaultkeyEventListener(void) const; + + /** + * Gets the default touch event listener. + * + * @since 2.0 + * + * @return The default touch event listener @n + * If not listener has been set or a system error has occurred @c null is returned. + * @see SetDefaultTouchEventListener() + */ + ITouchEventListener* GetDefaultTouchEventListener(void) const; + + /** + * Sets the default key event listener. + * + * @since 2.0 + * + * @return An error code + * @param[in] pDefaultListener The default key event listener + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The registered listener will be notified to handle the key events + * after all application event listeners have been notified. + * @see GetDefaultkeyEventListener() + */ + result SetDefaultKeyEventListener(IKeyEventListener* pDefaultListener); + + /** + * Sets the default touch event listener. + * + * @since 2.0 + * + * @return An error code + * @param[in] pDefaultListener The default touch event listener + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The registered listener will be notified to handle the touch events + * after all application event listeners have been notified. + * @see GetDefaultTouchEventListener() + */ + result SetDefaultTouchEventListener(ITouchEventListener* pDefaultListener); + + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + Control(void); + + /** + * This method is for internal use only. Using this method can cause behavioral, security-related, + * and consistency-related issues in the application. + * + * Initializes this instance of %Control. + * + * @since 2.0 + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(void); + + /** + * Frees the resources allocated by Construct(). + * + * @since 2.0 + */ + void Dispose(void); + +protected: + _ControlImpl* _pControlImpl; + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void Control_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void Control_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void Control_Reserved3(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void Control_Reserved4(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void Control_Reserved5(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void Control_Reserved6(void) {} + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + Control(const Control& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + Control& operator =(const Control& rhs); + +private: + friend class _ControlImpl; +}; // Control + +}} // Tizen::Ui + +#endif // _FUI_CONTROL_H_ diff --git a/inc/FUiControls.h b/inc/FUiControls.h new file mode 100644 index 0000000..2e63307 --- /dev/null +++ b/inc/FUiControls.h @@ -0,0 +1,456 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiControls.h + * @brief This is the header file for the %Tizen::Ui::Controls namespace. + * + * This header file contains the declarations and descriptions of the %Tizen::Ui::Controls namespace. + */ + +#ifndef _FUI_CONTROLS_H_ +#define _FUI_CONTROLS_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen +{ +/** + * @namespace Tizen::Ui::Controls + * @brief This namespace contains the classes and interfaces for creating rich user interface components for the applications. + * @since 2.0 + * + * @remarks @b %Header @b %file: @b \#include @b @n + * @b Library : @b osp-uifw + * + * The %Ui::Controls namespace contains classes that have graphical representations that can be displayed on the screen as UI elements and with + * which the user can interact. + * + * For more information on the %Ui::Controls namespace features, see UI Controls Guide. + * + */ + +namespace Ui +{ + +namespace Controls +{ + +/** + * @if OSPDEPREC + * The system color for the text that appears in the indicator and the command area (for example, Header and Footer). + * + * @brief [Deprecated] + * @deprecated This object is provided only for backward compatibility and will be deleted in a future release. + * @since 2.0 + * + * @remarks Different color values can be defined for different device models. + * @endif + */ +/** + * @if OSPDEPREC + * @htmlonly + * + * @endhtmlonly + * @endif + */ +extern const Tizen::Graphics::Color SYSTEM_COLOR_TITLE_TEXT; + +/** + * @if OSPDEPREC + * The system color for the text that appears in controls, has a different background color than that of its parent (for example, Button). + * + * @brief [Deprecated] + * @deprecated This object is provided only for backward compatibility and will be deleted in a future release. + * @since 2.0 + * + * @remarks Different color values can be defined for different device models. + * @endif + */ +/** + * @if OSPDEPREC + * @htmlonly + * + * @endhtmlonly + * @endif + */ +extern const Tizen::Graphics::Color SYSTEM_COLOR_BODY_TEXT; + +/** + * @if OSPDEPREC + * The system default foreground color (for example, Label and CheckButton). + * + * @brief [Deprecated] + * @deprecated This object is provided only for backward compatibility and will be deleted in a future release. + * @since 2.0 + * + * @remarks Different color values can be defined for different device models. + * @endif + */ +/** + * @if OSPDEPREC + * @htmlonly + * + * @endhtmlonly + * @endif + */ +extern const Tizen::Graphics::Color SYSTEM_COLOR_FOREGROUND; + +/** + * @if OSPDEPREC + * The system default background color (for example, Label, Panel, and ScrollPanel). + * + * @brief [Deprecated] + * @deprecated This object is provided only for backward compatibility and will be deleted in a future release. + * @since 2.0 + * + * @remarks Different color values can be defined for different device models. + * @endif + */ +/** + * @if OSPDEPREC + * @htmlonly + * + * @endhtmlonly + * @endif + */ +extern const Tizen::Graphics::Color SYSTEM_COLOR_BACKGROUND; + +/** + * @if OSPDEPREC + * The system default color for the List background. + * + * @brief [Deprecated] + * @deprecated This object is provided only for backward compatibility and will be deleted in a future release. + * @since 2.0 + * + * @remarks Different color values can be defined for different device models. + * @endif + */ +/** + * @if OSPDEPREC + * @htmlonly + * + * @endhtmlonly + * @endif + */ +extern const Tizen::Graphics::Color SYSTEM_COLOR_LIST_BACKGROUND; + +/** + * @if OSPDEPREC + * The system default color for the Form background. + * + * @brief [Deprecated] + * @deprecated This object is provided only for backward compatibility and will be deleted in a future release. + * @since 2.0 + * + * @remarks Different color values can be defined for different device models. + * @endif + */ +/** + * @if OSPDEPREC + * @htmlonly + * + * @endhtmlonly + * @endif + */ +extern const Tizen::Graphics::Color SYSTEM_COLOR_FORM_BACKGROUND; + +/** + * @if OSPDEPREC + * The system default color for the background of the Form with grouped style child controls. + * + * @brief [Deprecated] + * @deprecated This object is provided only for backward compatibility and will be deleted in a future release. + * @since 2.0 + * + * @remarks Different color values can be defined for different device models. + * @endif + */ +/** + * @if OSPDEPREC + * @htmlonly + * + * @endhtmlonly + * @endif + */ +extern const Tizen::Graphics::Color SYSTEM_COLOR_FORM_GROUP_BACKGROUND; + +/** + * @if OSPDEPREC + * The system default color for the Popup background. + * + * @brief [Deprecated] + * @deprecated This object is provided only for backward compatibility and will be deleted in a future release. + * @since 2.0 + * + * @remarks Different color values can be defined for different device models. + * @endif + */ +/** + * @if OSPDEPREC + * @htmlonly + * + * @endhtmlonly + * @endif + */ +extern const Tizen::Graphics::Color SYSTEM_COLOR_POPUP_BACKGROUND; + +/** + * @if OSPDEPREC + * The system default color of the group item text. + * + * @brief [Deprecated] + * @deprecated This object is provided only for backward compatibility and will be deleted in a future release. + * @since 2.0 + * + * @remarks Different color values can be defined for different device models. + * @endif + */ +/** + * @if OSPDEPREC + * @htmlonly + * + * @endhtmlonly + * @endif + */ +extern const Tizen::Graphics::Color SYSTEM_COLOR_GROUP_ITEM_TEXT; + +/** + * @if OSPDEPREC + * The system default color of the list text. + * + * @brief [Deprecated] + * @deprecated This object is provided only for backward compatibility and will be deleted in a future release. + * @since 2.0 + * + * @remarks Different color values can be defined for different device models. + * @endif + */ +/** + * @if OSPDEPREC + * @htmlonly + * + * @endhtmlonly + * @endif + */ +extern const Tizen::Graphics::Color SYSTEM_COLOR_LIST_ITEM_TEXT; + +/** + * @if OSPDEPREC + * The system default color of the list item text, when an item is selected. + * + * @brief [Deprecated] + * @deprecated This object is provided only for backward compatibility and will be deleted in a future release. + * @since 2.0 + * + * @remarks Different color values can be defined for different device models. + * @endif + */ +/** + * @if OSPDEPREC + * @htmlonly + * + * @endhtmlonly + * @endif + */ +extern const Tizen::Graphics::Color SYSTEM_COLOR_LIST_ITEM_PRESSED_TEXT; + +/** + * @if OSPDEPREC + * The system default color of the list element text when the item is highlighted. + * + * @brief [Deprecated] + * @deprecated This object is provided only for backward compatibility and will be deleted in a future release. + * @since 2.0 + * + * @remarks Different color values can be defined for different device models. + * @endif + */ +/** + * @if OSPDEPREC + * @htmlonly + * + * @endhtmlonly + * @endif + */ +extern const Tizen::Graphics::Color SYSTEM_COLOR_LIST_ITEM_HIGHLIGHTED_TEXT; + +}; // Tizen::Ui::Controls +}; // Tizen::Ui +}; // Tizen +#endif // _FUI_CONTROLS_H_ diff --git a/inc/FUiCtrlAnimation.h b/inc/FUiCtrlAnimation.h new file mode 100644 index 0000000..ed84d47 --- /dev/null +++ b/inc/FUiCtrlAnimation.h @@ -0,0 +1,342 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlAnimation.h + * @brief This header file contains the declarations of the %Animation class. + * + * This header file contains the declarations of the %Animation class and its helper classes. + */ + +#ifndef _FUI_CTRL_ANIMATION_H_ +#define _FUI_CTRL_ANIMATION_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @enum AnimationStatus + * + * Defines the animation status. + * + * @since 2.0 + */ +enum AnimationStatus +{ + ANIMATION_STOPPED, /**< The %Animation is in 'stopped' state */ + ANIMATION_PAUSED, /**< The %Animation is in 'paused' state */ + ANIMATION_PLAYING /**< The %Animation is in 'playing' state */ +}; + + +/** + * @class Animation + * @brief This class defines the common behavior of an %Animation control. + * + * @since 2.0 + * + * The %Animation class displays a series of frames one by one that are represented by the AnimationFrame instances. + * + * For more information on the class features, see Animation. + * + * + * The following example demonstrates how to use the %Animation class. + * + * + * @code +// Sample code for AnimationSample.h +#include +#include + +class AnimationSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IAnimationEventListener +{ +public: + AnimationSample(void) + : __animationFrameList(){} + + bool Initialize(void); + virtual result OnInitializing(void); + virtual result OnTerminating(void); + + // IAnimationEventListener + virtual void OnAnimationStopped(const Tizen::Ui::Control& source); + +private : + Tizen::Base::Collection::ArrayList __animationFrameList; +}; + + * @endcode + * + * @code + +// Sample code for AnimationSample.cpp +#include +#include + +#include "AnimationSample.h" + +using namespace Tizen::App; +using namespace Tizen::Base::Collection; +using namespace Tizen::Graphics; +using namespace Tizen::Ui::Controls; + +bool +AnimationSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +AnimationSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Gets instances of Bitmap + AppResource *pAppResource = Application::GetInstance()->GetAppResource(); + Bitmap* pBitmap1 = pAppResource->GetBitmapN(L"progressing00_big.png"); + Bitmap* pBitmap2 = pAppResource->GetBitmapN(L"progressing02_big.png"); + Bitmap* pBitmap3 = pAppResource->GetBitmapN(L"progressing04_big.png"); + Bitmap* pBitmap4 = pAppResource->GetBitmapN(L"progressing06_big.png"); + + // Creates instances of AnimationFrame + AnimationFrame* pAniFrame1 = new AnimationFrame(*pBitmap1, 1000) ; + AnimationFrame* pAniFrame2 = new AnimationFrame(*pBitmap2, 1000) ; + AnimationFrame* pAniFrame3 = new AnimationFrame(*pBitmap3, 1000) ; + AnimationFrame* pAniFrame4 = new AnimationFrame(*pBitmap4, 1000) ; + + __animationFrameList.Construct(); + __animationFrameList.Add(*pAniFrame1); + __animationFrameList.Add(*pAniFrame2); + __animationFrameList.Add(*pAniFrame3); + __animationFrameList.Add(*pAniFrame4); + + // Creates an instance of Animation + Animation* pAnimation = new Animation(); + pAnimation->Construct(Rectangle((GetClientAreaBounds().width - pBitmap1->GetWidth()) / 2, 100, + pBitmap1->GetWidth(), pBitmap1->GetHeight()), __animationFrameList); + pAnimation->SetRepeatCount(100); + pAnimation->AddAnimationEventListener(*this); + + // Adds the animation to the form + AddControl(*pAnimation); + + // Plays the animation + pAnimation->Play(); + + delete pBitmap1; + delete pBitmap2; + delete pBitmap3; + delete pBitmap4; + + return r; +} + +result +AnimationSample::OnTerminating(void) +{ + result r = E_SUCCESS; + + // Deallocates added animation frames from the list + __animationFrameList.RemoveAll(true); + + return r; +} + +void +AnimationSample::OnAnimationStopped(const Control& source) +{ + // .... +} + * @endcode + * + */ +class _OSP_EXPORT_ Animation + : public Tizen::Ui::Control +{ + +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + Animation(void); + + + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~Animation(void); + + + /** + * Initializes this instance of %Animation with the specified parameters. @n + * The input list of the AnimationFrame instances (@c aniFrames) should be deleted explicitly after use. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect An instance of the Rectangle class @n + * This instance represents the x and y coordinates of the top-left corner of the created window along with + * its width and height. + * @param[in] aniFrames An IList of %AnimationFrames used in the animation + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @remarks A control is fully usable only after it has been added to a container, therefore some methods may fail if used earlier. @n + * @remarks The size of the control must be within the range defined by the minimum size and the maximum size. + * @see AnimationFrame + */ + result Construct(const Tizen::Graphics::Rectangle& rect, const Tizen::Base::Collection::IList& aniFrames); + + +public: + /** + * Adds a listener instance to the current instance of %Animation. @n + * The added listener can listen to the events on the given event dispatcher's context when they are fired. @n + * When an animation stops, a state change event with the state name "ANIMATION_NOTIFY_CLOSE" is fired. + * + * @since 2.0 + * + * @param[in] listener The listener to be added + */ + void AddAnimationEventListener(Tizen::Ui::IAnimationEventListener& listener); + + + /** + * Removes a listener instance from the current instance of %Animation. @n + * The removed listener cannot listen to the events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to be removed + */ + void RemoveAnimationEventListener(Tizen::Ui::IAnimationEventListener& listener); + + + /** + * Sets the repeat count of the animation. @n + * If this value is not set, the default value is @c 1. + * + * @since 2.0 + * + * @param[in] count The repeat count + */ + void SetRepeatCount(int count); + + + /** + * Gets the total repeat count of the animation. + * + * @since 2.0 + * + * @return The total repeat count, @n + * else @c -1 if the %Animation instance is not constructed + */ + int GetRepeatCount(void) const; + + + /** + * Gets the current repeated count of the animation. + * + * @since 2.0 + * + * @return The current repeated count, @n + * else @c -1 if the %Animation instance is not constructed + */ + int GetCurrentRepeatedCount(void) const; + + + /** + * Gets the total image count of the animation. + * + * @since 2.0 + * + * @return The total image count, @n + * else @c -1 if the %Animation instance is not constructed + */ + int GetImageCount(void) const; + + + /** + * Plays the animation. + * + * @since 2.0 + */ + void Play(void); + + + /** + * Stops the animation. + * + * @since 2.0 + */ + void Stop(void); + + + /** + * Pauses the animation. + * + * @since 2.0 + */ + void Pause(void); + + + /** + * Gets the status of the animation. + * + * @since 2.0 + * + * @return The status of animation, @n + * else ANIMATION_STOPPED if the %Animation control is not constructed + */ + AnimationStatus GetStatus(void) const; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + Animation(const Animation& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + Animation& operator =(const Animation& rhs); + + friend class _AnimationImpl; + +}; // Animation + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_ANIMATION_H_ diff --git a/inc/FUiCtrlAnimationFrame.h b/inc/FUiCtrlAnimationFrame.h new file mode 100644 index 0000000..5290b14 --- /dev/null +++ b/inc/FUiCtrlAnimationFrame.h @@ -0,0 +1,133 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlAnimationFrame.h + * @brief This is the header file for the %AnimationFrame class. + * + * This header file contains the declarations of the %AnimationFrame class and its helper classes. + */ + +#ifndef _FUI_CTRL_ANIMATION_FRAME_H_ +#define _FUI_CTRL_ANIMATION_FRAME_H_ + +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +class _AnimationFrameImpl; + +/** + * @class AnimationFrame + * @brief This class defines the common behavior of an %AnimationFrame control. + * + * @since 2.0 + * + * The %AnimationFrame class defines the common behavior of an %AnimationFrame control. + * An animation frame includes an image to be displayed and its duration. + * The duration indicates how long the image is displayed when the animation is playing. + * + * For more information on the class features, see Animation. + * + */ +class _OSP_EXPORT_ AnimationFrame + : public Tizen::Base::Object +{ + +public: + /** + * This is the default constructor for this class. + * + * @since 2.0 + */ + AnimationFrame(void); + + /** + * Initializes this instance of %AnimationFrame with the specified parameters. @n + * It creates an instance of %AnimationFrame with the specified image and duration. + * + * @since 2.0 + * + * @param[in] frame The bitmap to be displayed + * @param[in] duration The duration in milliseconds for which the bitmap is displayed + */ + AnimationFrame(const Tizen::Graphics::Bitmap& frame, long duration); + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + ~AnimationFrame(void); + + /** + * Sets the bitmap to be displayed during animation play. + * + * @since 2.0 + * + * @param[in] frame The bitmap to be displayed + */ + void SetFrame(const Tizen::Graphics::Bitmap& frame); + + /** + * Gets the bitmap to be displayed. + * + * @since 2.0 + * + * @return The bitmap + */ + const Tizen::Graphics::Bitmap* GetFrame(void) const; + + /** + * Sets the duration for which the bitmap is displayed. + * + * @since 2.0 + * + * @param[in] duration The duration in milliseconds for which the bitmap is displayed + */ + void SetDuration(long duration); + + /** + * Gets the duration for which the bitmap is displayed. + * + * @since 2.0 + * + * @return The duration value + */ + long GetDuration(void) const; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + AnimationFrame(const AnimationFrame& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + AnimationFrame& operator =(const AnimationFrame& rhs); + +private: + _AnimationFrameImpl* __pAnimationFrameImpl; + +}; // AnimationFrame + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_ANIMATION_FRAME_H_ diff --git a/inc/FUiCtrlButton.h b/inc/FUiCtrlButton.h new file mode 100644 index 0000000..7c969cb --- /dev/null +++ b/inc/FUiCtrlButton.h @@ -0,0 +1,516 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlButton.h + * @brief This is the header file for the %Button class. + * + * This header file contains the declarations of the %Button class and its helper classes. + */ + +#ifndef _FUI_CTRL_BUTTON_H_ +#define _FUI_CTRL_BUTTON_H_ + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +/** + * @enum ButtonStatus + * + * Defines the %Button control status. + * + * @since 2.0 + */ +enum ButtonStatus +{ + BUTTON_STATUS_NORMAL, /**< The normal status */ + BUTTON_STATUS_DISABLED, /**< The disabled status */ + BUTTON_STATUS_PRESSED, /**< The pressed status */ + BUTTON_STATUS_HIGHLIGHTED /**< The highlighted status */ +}; + +/** + * @class Button + * @brief This class defines the common behavior of a %Button control. + * + * @since 2.0 + * + * The %Button class displays a rectangular area that can be pressed. + * + * For more information on the class features, see Buttons. + * + * The following example demonstrates how to use the %Button class. + * + * + * @code +// Sample code for ButtonSample.h +#include + +class ButtonSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IActionEventListener +{ +public: + ButtonSample(void) + : __pButton(null) + , __pBitmapButton(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + + // IActionEventListener + virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId); + +private: + static const int ID_BUTTON = 101; + static const int ID_BITMAP_BUTTON = 102; + + Tizen::Ui::Controls::Button* __pButton; + Tizen::Ui::Controls::Button* __pBitmapButton; +}; + + * @endcode + * + * @code +// Sample code for ButtonSample.cpp +#include +#include + +#include "ButtonSample.h" + +using namespace Tizen::App; +using namespace Tizen::Graphics; +using namespace Tizen::Ui::Controls; + +bool +ButtonSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +ButtonSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of Button + __pButton = new Button(); + __pButton->Construct(Rectangle(50, 50, 200, 200), L"Button"); + __pButton->SetActionId(ID_BUTTON); + __pButton->AddActionEventListener(*this); + + AddControl(*__pButton); + + // Creates an instance of Button for bitmap button + __pBitmapButton = new Button(); + __pBitmapButton->Construct(Rectangle(260, 50, 200, 200)); + __pBitmapButton->SetActionId(ID_BITMAP_BUTTON); + __pBitmapButton->AddActionEventListener(*this); + + // Gets instances of Bitmap + AppResource *pAppResource = Application::GetInstance()->GetAppResource(); + Bitmap* pBitmapNormal = pAppResource->GetBitmapN(L"tizen.png"); + Bitmap* pBitmapPressed = pAppResource->GetBitmapN(L"tizen.png"); + + // Sets the bitmaps to the bitmap button + __pBitmapButton->SetNormalBackgroundBitmap(*pBitmapNormal); + __pBitmapButton->SetPressedBackgroundBitmap(*pBitmapPressed); + + // Deallocates bitmaps + delete pBitmapNormal; + delete pBitmapPressed; + + // Adds the bitmap button to the form + AddControl(*__pBitmapButton); + + return r; +} + +// IActionEventListener implementation +void +ButtonSample::OnActionPerformed(const Control& source, int actionId) +{ + switch (actionId) + { + case ID_BUTTON: + { + // .... + } + break; + case ID_BITMAP_BUTTON: + { + // .... + } + break; + default: + break; + } +} + * @endcode + * + */ +class _OSP_EXPORT_ Button + : public Tizen::Ui::Control +{ +public: + /** + * This is the default constructor for this class. + * + * @since 2.0 + */ + Button(void); + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~Button(void); + + /** + * Initializes this instance of %Button with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect An instance of the Rectangle class @n + * This instance represents the x and y coordinates of the top-left corner @n + * of the created window along with its width and height. @n + * @param[in] text The text to be displayed on the button + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks A control is fully functional only after it has been added to a container. Therefore, some methods may fail if they are used before + * adding the control to the container. + * @remarks To display the text in multi-lines or to denote the end of line, use '\\n'. + * @remarks The size of the control must be within the range defined by the minimum and maximum sizes. + */ + result Construct(const Tizen::Graphics::Rectangle& rect, const Tizen::Base::String& text = L""); + + /** + * Adds a listener instance. @n + * The added listener can listen to events on the given event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + */ + void AddActionEventListener(Tizen::Ui::IActionEventListener& listener); + + /** + * Removes a listener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + */ + void RemoveActionEventListener(Tizen::Ui::IActionEventListener& listener); + + /** + * Sets the action ID of the button. + * + * @since 2.0 + * + * @param[in] actionId The action ID + */ + void SetActionId(int actionId); + + /** + * Gets the action ID of the button. + * + * @since 2.0 + * + * @return An integer value representing the action ID + */ + int GetActionId(void) const; + +public: + /** + * Sets the text that the button displays. + * + * @since 2.0 + * + * @param[in] text The text of the button + * @remarks To display text in multi-lines or to denote the end of line, use '\\n'. + */ + void SetText(const Tizen::Base::String& text); + + /** + * Sets the horizontal alignment of the text of the button. + * + * @since 2.0 + * + * @param[in] alignment The horizontal text alignment + */ + void SetTextHorizontalAlignment(HorizontalAlignment alignment); + + /** + * Sets the vertical alignment of the text of the button. + * + * @since 2.0 + * + * @param[in] alignment The vertical text alignment + */ + void SetTextVerticalAlignment(VerticalAlignment alignment); + +public: + /** + * Gets the text displayed by the button. + * + * @since 2.0 + * + * @return The text of the button + */ + Tizen::Base::String GetText(void) const; + + /** + * Gets the horizontal alignment of the text of the button. + * + * @since 2.0 + * + * @return The horizontal text alignment + */ + HorizontalAlignment GetTextHorizontalAlignment(void) const; + + /** + * Gets the vertical alignment of the text of the button. + * + * @since 2.0 + * + * @return The vertical text alignment + */ + VerticalAlignment GetTextVerticalAlignment(void) const; + + //Normal color + /** + * Sets the color of the text to be displayed on the button. + * + * @since 2.0 + * + * @param[in] color The text color to be set + */ + virtual void SetTextColor(const Tizen::Graphics::Color& color); + + /** + * Gets the color of the text to be displayed on the button. + * + * @since 2.0 + * + * @return The text color + */ + virtual Tizen::Graphics::Color GetTextColor(void) const; + + //Pressed color + /** + * Sets the text color of the button for the pressed state. + * + * @since 2.0 + * + * @param[in] color The color to be set + */ + void SetPressedTextColor(const Tizen::Graphics::Color& color); + + /** + * Gets the text color of the button for the pressed state. + * + * @since 2.0 + * + * @return The text color when the button is pressed + */ + Tizen::Graphics::Color GetPressedTextColor(void) const; + + //Disabled color + /** + * Sets the text color of the button for the disabled state. + * + * @since 2.0 + * + * @param[in] color The color to be set + */ + void SetDisabledTextColor(const Tizen::Graphics::Color& color); + + /** + * Gets the text color of the button for the disabled state. + * + * @since 2.0 + * + * @return The disabled text color + */ + Tizen::Graphics::Color GetDisabledTextColor(void) const; + + /** + * Sets the text color of the button for the highlighted state. + * + * @since 2.0 + * + * @param[in] color The color to be set + * @remarks While navigating the user interface using the directional keys, the focused UI control is highlighted. + */ + void SetHighlightedTextColor(const Tizen::Graphics::Color& color); + + /** + * Gets the text color of the button for the highlighted state. + * + * @since 2.0 + * + * @return The highlighted text color + * @remarks While navigating the user interface using the directional keys, the selected UI control is highlighted and takes the focus. + */ + Tizen::Graphics::Color GetHighlightedTextColor(void) const; + + /** + * Sets a bitmap that is to be displayed when the button is not pressed. + * + * @since 2.0 + * + * @param[in] position The location of a bitmap where it is to be displayed on the button + * @param[in] bitmap The bitmap of to be set + */ + void SetNormalBitmap(const Tizen::Graphics::Point& position, const Tizen::Graphics::Bitmap& bitmap); + + /** + * Sets the bitmap that is to be displayed on the button when it is pressed. + * + * @since 2.0 + * + * @param[in] position The location of a bitmap where it is to be displayed on the Button control + * @param[in] bitmap The bitmap to be set + */ + void SetPressedBitmap(const Tizen::Graphics::Point& position, const Tizen::Graphics::Bitmap& bitmap); + + /** + * Sets the disabled bitmap of the button. + * + * @since 2.0 + * + * @param[in] position The location of disabled bitmap + * @param[in] bitmap The disabled bitmap of the button + */ + void SetDisabledBitmap(const Tizen::Graphics::Point& position, const Tizen::Graphics::Bitmap& bitmap); + + /** + * Sets the normal background bitmap of the button. + * + * @since 2.0 + * + * @param[in] bitmap The normal background image + */ + void SetNormalBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap); + + /** + * Sets the pressed background bitmap of the button. + * + * @since 2.0 + * + * @param[in] bitmap The pressed background bitmap + */ + void SetPressedBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap); + + /** + * Sets the highlighted background bitmap of the button. + * + * @since 2.0 + * + * @param[in] bitmap The highlighted background bitmap + * @remarks When a user navigates the user interface using the directional keys, the focused UI control is highlighted. + */ + void SetHighlightedBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap); + + /** + * Gets the color of the button for the specified status. + * + * @since 2.0 + * + * @return The color, @n + * else RGBA(0, 0, 0, 0) if an error occurs + * @param[in] status The status + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetColor(ButtonStatus status) const; + + /** + * Sets the color of the button for the specified status. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The status + * @param[in] color The button color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetColor(ButtonStatus status, const Tizen::Graphics::Color& color); + + /** + * Gets the text size. + * + * @since 2.0 + * + * @return The size of the text, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetTextSize() + */ + int GetTextSize(void) const; + + /** + * Sets the text size. + * + * @since 2.0 + * + * @return An error code + * @param[in] size The text size + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The specified @c size must be greater than @c 0. + * @exception E_SYSTEM A system error has occurred. + * @see GetTextSize() + */ + result SetTextSize(int size); + +protected: + friend class _ButtonImpl; + +private: + // + // This is the copy constructor for this class. + // + Button(const Button& rhs); + + // + // Assigns the value of the specified instance to the current instance of %Button. + // + Button& operator =(const Button& rhs); + +}; // Button + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_BUTTON_H_ diff --git a/inc/FUiCtrlButtonItem.h b/inc/FUiCtrlButtonItem.h new file mode 100644 index 0000000..766c2f5 --- /dev/null +++ b/inc/FUiCtrlButtonItem.h @@ -0,0 +1,224 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlButtonItem.h + * @brief This is the header file for the %ButtonItem class. + * + * This header file contains the declarations of the %ButtonItem class. + */ +#ifndef _FUI_CTRL_BUTTON_ITEM_H_ +#define _FUI_CTRL_BUTTON_ITEM_H_ + +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +/** + * @enum ButtonItemStatus + * + * Defines the possible states of the button item. + * + * @since 2.0 + */ +enum ButtonItemStatus +{ + BUTTON_ITEM_STATUS_NORMAL, /**< The normal status */ + BUTTON_ITEM_STATUS_PRESSED, /**< The selected status */ + BUTTON_ITEM_STATUS_HIGHLIGHTED, /**< The highlighted status */ + BUTTON_ITEM_STATUS_DISABLED /**< The disabled status */ +}; + +/** + * @enum ButtonPosition + * + * Defines the possible positions of the button item. + * + * @since 2.0 + */ +enum ButtonPosition +{ + BUTTON_POSITION_LEFT = 0, /**< The position of the button is towards the left of the object */ + BUTTON_POSITION_RIGHT /**< The position of the button is towards the right of the object */ +}; + +/** + * @enum ButtonItemStyle + * + * Defines the possible styles of the button item. + * + * @since 2.0 + */ +enum ButtonItemStyle +{ + BUTTON_ITEM_STYLE_TEXT = 0, /**< The text %ButtonItem style */ + BUTTON_ITEM_STYLE_ICON /**< The icon %ButtonItem style */ +}; + +/** + * @class ButtonItem + * @brief This class is an implementation of %ButtonItem. + * + * @since 2.0 + * + * The %ButtonItem class is a helper class that specifies the + * properties of button items in a Footer or Header. + */ +class _OSP_EXPORT_ ButtonItem + : public Tizen::Base::Object +{ + +public: + /** + * This is the default constructor for this class. + * + * @since 2.0 + */ + ButtonItem(void); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~ButtonItem(void); + + + /** + * Initializes this instance of %ButtonItem with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] style The style of the button item + * @param[in] actionId The action ID of the button item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The specified @c actionId of the specified item must be a positive integer. + */ + result Construct(ButtonItemStyle style, int actionId); + + + /** + * Gets the action ID of the button item. + * + * @since 2.0 + * + * @return The action ID, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + int GetActionId(void) const; + + + /** + * Gets the text of the button item. + * + * @since 2.0 + * + * @return The item text, @n + * else an empty string if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Base::String GetText(void) const; + + + /** + * Sets the action ID of the button item. + * + * @since 2.0 + * + * @return An error code + * @param[in] actionId The action ID of the button item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The specified @c actionId of the specified item must be a positive integer. + */ + result SetActionId(int actionId); + + + /** + * Sets the background bitmap image of the button item. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The item status + * @param[in] pBitmap The background bitmap image to be set, @n + * else @c null if no bitmap image is displayed + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @remarks If the size is greater than the default size, the bitmap image is scaled accordingly. + */ + result SetBackgroundBitmap(ButtonItemStatus status, const Tizen::Graphics::Bitmap* pBitmap); + + + /** + * Sets the icon of the button item for the specified state. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The item status + * @param[in] pIcon The icon to be set, @n + * else @c null if no icon is displayed + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @remarks If the style of %ButtonItem is BUTTON_ITEM_STYLE_TEXT, the method returns E_INVALID_OPERATION. @n + * If an icon is not set for a state, the icon for BUTTON_ITEM_STATUS_NORMAL is used. + */ + result SetIcon(ButtonItemStatus status, const Tizen::Graphics::Bitmap* pIcon); + + + /** + * Sets the text of %ButtonItem. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text to be set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The style of %ButtonItem is BUTTON_ITEM_STYLE_ICON. + * @remarks If the text cannot be displayed in a line, then the text is automatically displayed in two lines and the ellipsis is applied if the text + * is longer than two lines. @n + * Use @htmlonly '\n' @endhtmlonly to denote the end of the first line. + */ + result SetText(const Tizen::Base::String& text); + + +private: + ButtonItem(const ButtonItem& rhs); + ButtonItem& operator =(const ButtonItem& rhs); + +private: + friend class _FooterImpl; + friend class _HeaderImpl; + friend class _ButtonItemImpl; + + class _ButtonItemImpl* __pImpl; +}; + +}}} //Tizen::Ui::Controls + +#endif // _FUI_CTRL_BUTTON_ITEM_H_ diff --git a/inc/FUiCtrlCheckButton.h b/inc/FUiCtrlCheckButton.h new file mode 100644 index 0000000..66501a7 --- /dev/null +++ b/inc/FUiCtrlCheckButton.h @@ -0,0 +1,599 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlCheckButton.h + * @brief This is the header file for the %CheckButton class. + * + * This header file contains the declarations of the %CheckButton class and its helper classes. + */ + +#ifndef _FUI_CTRL_CHECK_BUTTON_H_ +#define _FUI_CTRL_CHECK_BUTTON_H_ + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +/** + * @enum CheckButtonStatus + * + * Defines the %CheckButton status. + * + * @since 2.0 + */ +enum CheckButtonStatus +{ + CHECK_BUTTON_STATUS_NORMAL, /**< The normal status */ + CHECK_BUTTON_STATUS_DISABLED, /**< The disabled status */ + CHECK_BUTTON_STATUS_PRESSED, /**< The pressed status */ + CHECK_BUTTON_STATUS_HIGHLIGHTED /**< The highlighted status */ +}; + +/** + * @enum CheckButtonStyle + * + * Defines the %CheckButton style. + * + * @since 2.0 + */ +enum CheckButtonStyle +{ + CHECK_BUTTON_STYLE_MARK, /**< The mark style for multiple selection */ + CHECK_BUTTON_STYLE_MARK_WITH_DIVIDER, /**< @if OSPDEPREC @deprecated This enumeration field is deprecated because the use of the divider style is no longer recommended @n + Instead of using the divider style, use the detailed button style. @endif */ + CHECK_BUTTON_STYLE_ONOFF, /**< @if OSPDEPREC @deprecated This enumeration field is deprecated because the use of the on-off style is no longer recommended @n + Instead of using the on-off style, use the on-off sliding style @endif */ + CHECK_BUTTON_STYLE_ONOFF_WITH_DIVIDER, /**< @if OSPDEPREC @deprecated This enumeration field is deprecated because the use of the on-off style is no longer recommended @endif */ + CHECK_BUTTON_STYLE_RADIO, /**< The radio style for single selection */ + CHECK_BUTTON_STYLE_RADIO_WITH_DIVIDER, /**< @if OSPDEPREC @deprecated This enumeration field is deprecated because the use of the divider style is no longer recommended @n + Instead of using the divider style, use the detailed button style @endif */ + CHECK_BUTTON_STYLE_ONOFF_SLIDING, /**< The slider style on/off */ + CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON, /**< The mark style with detail button */ + CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON, /**< The radio style with detail button */ +}; + +/** + * @class CheckButton + * @brief This class defines the common behavior of a %CheckButton control. + * + * @since 2.0 + * + * The %CheckButton class displays a rectangular area, which can be selected, and shows the current selection. + * + * For more information on the class features, see Buttons. + * + * The following example demonstrates how to use the %CheckButton class. + * + * + * @code +// Sample code for CheckButtonSample.h +#include + +class CheckButtonSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IActionEventListener +{ +public: + CheckButtonSample(void) + : __pCheckButton(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + + // IActionEventListener + virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId); + +private : + static const int ID_BUTTON_CHECKED = 101; + static const int ID_BUTTON_UNCHECKED = 102; + static const int ID_BUTTON_SELECTED = 103; + + Tizen::Ui::Controls::CheckButton* __pCheckButton; +}; + + * @endcode + * + * @code +// Sample Code for CheckButtonSample.cpp +#include + +#include "CheckButtonSample.h" + +using namespace Tizen::Graphics; +using namespace Tizen::Ui::Controls; + +bool +CheckButtonSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +CheckButtonSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates a CheckButton + __pCheckButton = new CheckButton(); + __pCheckButton->Construct(Rectangle(50, 50, 400, 100), + CHECK_BUTTON_STYLE_RADIO_WITH_DIVIDER, BACKGROUND_STYLE_DEFAULT, false, L"CheckButton"); + __pCheckButton->SetActionId(ID_BUTTON_CHECKED, ID_BUTTON_UNCHECKED, ID_BUTTON_SELECTED); + __pCheckButton->AddActionEventListener(*this); + + // Add a CheckButton to the Form + AddControl(*__pCheckButton); + + return r; +} + +// Implements an IActionEventListener +void +CheckButtonSample::OnActionPerformed(const Control& source, int actionId) +{ + switch (actionId) + { + case ID_BUTTON_CHECKED: + // Todo: + break; + case ID_BUTTON_UNCHECKED: + // Todo: + break; + case ID_BUTTON_SELECTED: + // Todo: + break; + default: + break; + } +} + + * @endcode + * + */ +class _OSP_EXPORT_ CheckButton + : public Tizen::Ui::Control +{ +public: + /** + * This is the default constructor for this class. + * + * @since 2.0 + */ + CheckButton(void); + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~CheckButton(void); + + /** + * Initializes this instance of %CheckButton with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect An instance of the Rectangle class @n + * This instance represents the x and y coordinates of the top-left corner of the created window + * along with the width and height of the window. + * @param[in] style The style of the %CheckButton control + * @param[in] backgroundStyle The background style set of the %CheckButton control + * @param[in] showTitle Set to @c true to enable the title, @n + * else @c false + * @param[in] text The text of the %CheckButton control + * @param[in] groupStyle The group style of the %CheckButton control + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid.@n + * The specified size is less than the minimum size of the control. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The background style of BACKGROUND_STYLE_NONE does not work with group styles except GROUP_STYLE_NONE. + * @exception E_SYSTEM A system error has occurred. + * @remarks A control is fully usable only after it has been added to a container, therefore some methods may fail if used earlier. @n + */ + result Construct(const Tizen::Graphics::Rectangle& rect, CheckButtonStyle style, BackgroundStyle backgroundStyle = + BACKGROUND_STYLE_DEFAULT, bool showTitle = false, const Tizen::Base::String& text = L"", GroupStyle groupStyle = GROUP_STYLE_NONE); + + /** + * Sets the selected status of the %CheckButton control. + * + * @since 2.0 + * + * @param[in] select Set to @c true if the %CheckButton control is selected, @n + * else @c false + */ + void SetSelected(bool select); + + /** + * Checks whether the %CheckButton control has been selected. + * + * @since 2.0 + * + * @return @c true if the %CheckButton is selected, @n + * else @c false + */ + bool IsSelected(void) const; + +public: + /** + * Adds an IActionEventListener instance. @n + * The added listener can listen to events on the context of the given event dispatcher when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + */ + void AddActionEventListener(Tizen::Ui::IActionEventListener& listener); + + /** + * Removes an IActionEventListener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + */ + void RemoveActionEventListener(Tizen::Ui::IActionEventListener& listener); + + /** + * Sets the action IDs for the %CheckButton control. + * + * @since 2.0 + * + * @param[in] checkedActionId The action ID for the checked state + * @param[in] uncheckedActionId The action ID for the unchecked state + * @param[in] selectedActionId The action ID for the selected state + */ + void SetActionId(int checkedActionId, int uncheckedActionId, int selectedActionId = -1); + + /** + * Gets the action ID for the checked state. + * + * @since 2.0 + * + * @return An integer value representing the action ID + */ + int GetCheckedActionId(void) const; + + /** + * Gets the action ID for the unchecked state. + * + * @since 2.0 + * + * @return An integer value representing the action ID + */ + int GetUncheckedActionId(void) const; + + /** + * Gets the action ID for the selected state. + * + * @since 2.0 + * + * @return An integer value representing the action ID + */ + int GetSelectedActionId(void) const; + +public: + /** + * Sets the text that the %CheckButton control displays. + * + * @since 2.0 + * + * @param[in] text The text of the %CheckButton control + */ + void SetText(const Tizen::Base::String& text); + + /** + * Sets the horizontal alignment of the text of the %CheckButton control. + * + * @since 2.0 + * + * @param[in] alignment The horizontal text alignment + */ + void SetTextHorizontalAlignment(HorizontalAlignment alignment); + + /** + * Sets the vertical alignment of the text of the %CheckButton control. + * + * @since 2.0 + * + * @param[in] alignment The vertical text alignment + */ + void SetTextVerticalAlignment(VerticalAlignment alignment); + +public: + /** + * Gets the text of the %CheckButton control. + * + * @since 2.0 + * + * @return The text of the %CheckButton control + */ + Tizen::Base::String GetText(void) const; + + /** + * Gets the horizontal alignment of the text of the %CheckButton control. + * + * @since 2.0 + * @return The horizontal text alignment + */ + HorizontalAlignment GetTextHorizontalAlignment(void) const; + + /** + * Gets the vertical alignment of the text of the %CheckButton control. + * + * @since 2.0 + * @return The vertical text alignment + */ + VerticalAlignment GetTextVerticalAlignment(void) const; + + /** + * Sets the title text of the %CheckButton control. + * + * @since 2.0 + * @return An error code + * @param[in] title The title text to be set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetTitleText(const Tizen::Base::String& title); + + /** + * Gets the title text of the %CheckButton control. + * + * @since 2.0 + * @return The title text + */ + Tizen::Base::String GetTitleText(void) const; + + //Normal color + /** + * Sets the text color of the %CheckButton control. + * + * @since 2.0 + * + * @param[in] color The text color to be set + */ + void SetTextColor(const Tizen::Graphics::Color& color); + + /** + * Gets the text color of the %CheckButton control. + * + * @since 2.0 + * + * @return The text color + */ + Tizen::Graphics::Color GetTextColor(void) const; + + //Normal color + /** + * Sets the title text color of the %CheckButton control. + * + * @since 2.0 + * + * @param[in] color The text color to be set + */ + void SetTitleTextColor(const Tizen::Graphics::Color& color); + + /** + * Gets the title text color of the %CheckButton control. + * + * @since 2.0 + * + * @return The text color + */ + Tizen::Graphics::Color GetTitleTextColor(void) const; + + /** + * Sets the color of the %CheckButton control for the specified status. + * + * @since 2.0 + * @return An error code + * @param[in] color The color to be set + * @param[in] status The status + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation.@n + * The operation is not supported if the background style is BACKGROUND_STYLE_NONE. + * @exception E_SYSTEM A system error has occurred. + */ + result SetColor(CheckButtonStatus status, const Tizen::Graphics::Color& color); + + /** + * Gets the color of the %CheckButton control for the specified status. + * + * @since 2.0 + * @return The color, @n + * else RGBA (0, 0, 0, 0) if an error occurs + * @param[in] status The status + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The background style is not proper. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetColor(CheckButtonStatus status) const; + + /** + * Sets the text color of the %CheckButton control for the pressed status. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The text color to be set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetPressedTextColor(const Tizen::Graphics::Color& color); + + /** + * Gets the text color of the %CheckButton control for the pressed status. + * + * @since 2.0 + * @return The text color, @n + * else RGBA (0, 0, 0, 0) if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetPressedTextColor(void) const; + + /** + * Sets the title text color of the %CheckButton control for the pressed status. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The pressed title text color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetPressedTitleTextColor(const Tizen::Graphics::Color& color); + + /** + * Gets the title text color of the %CheckButton for the pressed status. + * + * @since 2.0 + * + * @return The title text color, @n + * else RGBA (0, 0, 0, 0) if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetPressedTitleTextColor(void) const; + + /** + * Sets the text color of the %CheckButton control for the highlighted status. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The text color to be set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetHighlightedTextColor(const Tizen::Graphics::Color& color); + + /** + * Gets the text color of the %CheckButton control for the highlighted status. + * + * @since 2.0 + * + * @return The text color, @n + * else RGBA (0, 0, 0, 0) if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetHighlightedTextColor(void) const; + + /** + * Sets the title text color of the %CheckButton control for the highlighted status. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The highlighted title text color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetHighlightedTitleTextColor(const Tizen::Graphics::Color& color); + + /** + * Gets the title text color of the %CheckButton control for the highlighted status. + * + * @since 2.0 + * + * @return The title text color, @n + * else RGBA (0, 0, 0, 0) if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetHighlightedTitleTextColor(void) const; + + /** + * Sets the text color of the %CheckButton control for the disabled status. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The text color to be set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetDisabledTextColor(const Tizen::Graphics::Color& color); + + /** + * Gets the text color of the %CheckButton control for the disabled status. + * + * @since 2.0 + * + * @return The text color, @n + * else RGBA (0, 0, 0, 0) if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetDisabledTextColor(void) const; + + /** + * Sets the title text color of the %CheckButton control for the disabled status. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The disabled title text color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetDisabledTitleTextColor(const Tizen::Graphics::Color& color); + + /** + * Gets the title text color of %CheckButton for the disabled status. + * + * @since 2.0 + * + * @return The title text color, @n + * else RGBA (0, 0, 0, 0) if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetDisabledTitleTextColor(void) const; + +protected: + friend class _CheckButtonImpl; + +private: + friend class RadioGroup; + + // + // This is the copy constructor for this class. + // + CheckButton(const CheckButton& rhs); + + // + // Assigns the value of the specified instance to the current instance of %CheckButton. + // + CheckButton& operator =(const CheckButton& rhs); + +}; // CheckButton + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_CHECK_BUTTON_H_ diff --git a/inc/FUiCtrlColorPicker.h b/inc/FUiCtrlColorPicker.h new file mode 100644 index 0000000..28cc03b --- /dev/null +++ b/inc/FUiCtrlColorPicker.h @@ -0,0 +1,261 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlColorPicker.h + * @brief This is the header file for the %ColorPicker class. + * + * This header file contains the declarations of the %ColorPicker class. + */ +#ifndef _FUI_CTRL_COLOR_PICKER_H_ +#define _FUI_CTRL_COLOR_PICKER_H_ + +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @class ColorPicker + * @brief This class defines the common behavior of a %ColorPicker control. + * + * @since 2.0 + * + * The %ColorPicker class displays a set of 3 sliders (hue, saturation, and luminance) with which the user can define a color. + * + * For more information on the class features, see ColorPicker. + * + * The following example demonstrates how to use the %ColorPicker class. + * + * @code +// Sample code for ColorPickerSample.h +#include +#include + +class ColorPickerSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IColorChangeEventListener +{ +public: + ColorPickerSample(void) + : __pColorPicker(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + + // IColorChangeEventListener + virtual void OnColorChanged(const Tizen::Ui::Control& source, const Tizen::Graphics::Color& color); + +private: + Tizen::Ui::Controls::ColorPicker* __pColorPicker; +}; + + * @endcode + * + * @code + +// Sample code for ColorPickerSample.cpp +#include "ColorPickerSample.h" + +using namespace Tizen::Graphics; +using namespace Tizen::Ui::Controls; + +bool +ColorPickerSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +ColorPickerSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of ColorPicker + __pColorPicker = new ColorPicker(); + __pColorPicker->Construct(Point(10,50)); + __pColorPicker->AddColorChangeEventListener(*this); + + // Adds the color picker to the form + AddControl(*__pColorPicker); + + return r; +} + +// IColorChangeEventListener implementation +void +ColorPickerSample::OnColorChanged(const Control& source, const Color& color) +{ + // .... +} + * @endcode + */ + +class _OSP_EXPORT_ ColorPicker + : public Tizen::Ui::Control +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + ColorPicker(void); + + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~ColorPicker(void); + + /** + * Initializes this instance of %ColorPicker with the specified parameter. + * + * @since 2.0 + * + * @return An error code + * @param[in] point The position of this %ColorPicker in the container + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks A control is fully usable only after it has been added to a container. Therefore, some methods may fail if the control is used earlier. + */ + result Construct(const Tizen::Graphics::Point& point); + + /** + * Gets the current color value of %ColorPicker. + * + * @since 2.0 + * + * @return The current color value + */ + Tizen::Graphics::Color GetColor(void) const; + + /** + * Gets the current hue value of %ColorPicker. + * + * @since 2.0 + * + * @return The current hue value + * @remarks The return value is between @c 0 to @c 100. + */ + int GetHue(void) const; + + /** + * Gets the current saturation value of %ColorPicker. + * + * @since 2.0 + * + * @return The current saturation value + * @remarks The return value is between @c 0 to @c 100. + */ + int GetSaturation(void) const; + + /** + * Gets the current luminance value of %ColorPicker. + * + * @since 2.0 + * + * @return The current luminance value + * @remarks The return value is between @c 0 to @c 100. + */ + int GetLuminance(void) const; + + /** + * Sets the color value of %ColorPicker. + * + * @since 2.0 + * + * @param[in] color The color value + */ + void SetColor(const Tizen::Graphics::Color& color); + + /** + * Sets the hue value of %ColorPicker. + * + * @since 2.0 + * + * @param[in] hue The hue value of this object + * @remarks The value should be between @c 0 to @c 100. + * + */ + void SetHue(int hue); + + /** + * Sets the saturation value of %ColorPicker. + * + * @since 2.0 + * + * @param[in] saturation The saturation value of this object + * @remarks The value should be between @c 0 to @c 100. + * + */ + void SetSaturation(int saturation); + + /** + * Sets the luminance value of %ColorPicker. + * + * @since 2.0 + * + * @param[in] luminance The luminance value of this object + * @remarks The value should be between @c 0 to @c 100. + * + */ + void SetLuminance(int luminance); + + /** + * Adds a listener instance. + * The added listener can listen to events on the given event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @see RemoveColorChangeEventListener() + */ + void AddColorChangeEventListener(Tizen::Ui::IColorChangeEventListener& listener); + + /** + * Removes a listener instance. + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @see AddColorChangeEventListener() + */ + void RemoveColorChangeEventListener(Tizen::Ui::IColorChangeEventListener& listener); + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + ColorPicker(const ColorPicker& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + ColorPicker& operator =(const ColorPicker& rhs); + + friend class _ColorPickerImpl; +}; // ColorPicker + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_COLOR_PICKER_H_ diff --git a/inc/FUiCtrlContextMenu.h b/inc/FUiCtrlContextMenu.h new file mode 100644 index 0000000..9296d01 --- /dev/null +++ b/inc/FUiCtrlContextMenu.h @@ -0,0 +1,733 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlContextMenu.h + * @brief This is the header file for the %ContextMenu class. + * + * This header file contains the declarations of the %ContextMenu class and its helper classes. + */ + +#ifndef _FUI_CTRL_CONTEXT_MENU_H_ +#define _FUI_CTRL_CONTEXT_MENU_H_ + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Graphics +{ +class Bitmap; +}; +}; + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @enum ContextMenuStyle + * + * Defines the %ContextMenu style. + * + * @since 2.0 + */ +enum ContextMenuStyle +{ + CONTEXT_MENU_STYLE_LIST,/**< The style of the vertical list of image + text */ + CONTEXT_MENU_STYLE_GRID,/**< The style of the grid of buttons */ + CONTEXT_MENU_STYLE_ICON /**<@if OSPDEPREC @deprecated This enumeration field is deprecated because this style can be implemented using the CONTEXT_MENU_STYLE_GRID style @endif */ +} ; + +/** + * @enum ContextMenuItemStatus + * + * Defines the possible states of the %ContextMenu control item. + * + * @since 2.0 + */ +enum ContextMenuItemStatus +{ + CONTEXT_MENU_ITEM_STATUS_NORMAL, /**< The normal state */ + CONTEXT_MENU_ITEM_STATUS_PRESSED, /**< The pressed state */ + CONTEXT_MENU_ITEM_STATUS_HIGHLIGHTED /**< The highlighted state */ +}; + +/** + * @enum ContextMenuAnchorDirection + * + * Defines the direction of the %ContextMenu control. + * + * @since 2.0 + */ +enum ContextMenuAnchorDirection +{ + CONTEXT_MENU_ANCHOR_DIRECTION_LEFTWARD, /**< The anchor arrow direction is leftward */ + CONTEXT_MENU_ANCHOR_DIRECTION_RIGHTWARD,/**< The anchor arrow direction is rightward */ + CONTEXT_MENU_ANCHOR_DIRECTION_UPWARD, /**< The anchor arrow direction is upward */ + CONTEXT_MENU_ANCHOR_DIRECTION_DOWNWARD, /**< The anchor arrow direction is downward */ + CONTEXT_MENU_ANCHOR_DIRECTION_AUTO /**< The anchor arrow direction is auto */ +}; + +/** + * @class ContextMenu + * @brief This class defines the common behavior of a %ContextMenu control. + * + * @since 2.0 + * + * The %ContextMenu class displays a special purpose window that is used to present users with context-sensitive options. + * + * For more information on the class features, see ContextMenu. + * + * The following example demonstrates how to use the %ContextMenu class. + + * + * @code +// Sample code for ContextMenuSample.h +#include +class ContextMenuSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IActionEventListener +{ +public: + ContextMenuSample(void) + :__pContextMenu(null){} + + bool Initialize(void); + void ShowContextMenu(bool show); + virtual result OnInitializing(void); + virtual result OnTerminating(void); + + // IActionEventListener + virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId); + +private: + static const int ID_CONTEXTMENU_ITEM1 = 101; + static const int ID_CONTEXTMENU_ITEM2 = 102; + static const int ID_BTN_SHOW_CONTEXTMENU = 103; + + Tizen::Ui::Controls::ContextMenu *__pContextMenu; +}; + + * @endcode + * + * @code + +// Sample code for ContextMenuSample.cpp +#include + +#include "ContextMenuSample.h" + +using namespace Tizen::Graphics; +using namespace Tizen::Ui::Controls; + +bool +ContextMenuSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +ContextMenuSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of ContextMenu + __pContextMenu = new ContextMenu(); + __pContextMenu->Construct(Point(400, 150), CONTEXT_MENU_STYLE_LIST); + + __pContextMenu->AddItem(L"Item1", ID_CONTEXTMENU_ITEM1); + __pContextMenu->AddItem(L"Item2", ID_CONTEXTMENU_ITEM2); + __pContextMenu->AddActionEventListener(*this); + + // Creates an instance of Button to show the context menu + Button* pButton = new Button(); + pButton->Construct(Rectangle(50, 50, 400, 100), L"Show ContextMenu"); + pButton->SetActionId(ID_BTN_SHOW_CONTEXTMENU); + pButton->AddActionEventListener(*this); + + // Adds the button to the form + AddControl(*pButton); + + return r; +} + +// Sets the anchor position of the context menu +void +ContextMenuSample::ShowContextMenu(bool show) +{ + __pContextMenu->SetPosition(Point(300, 200)); + + // Change to desired show state + __pContextMenu->SetShowState(show); + + //Calls Show() of the control + if (show) + { + __pContextMenu->Show(); + } + else + { + Invalidate(true); + } +} + +result +ContextMenuSample::OnTerminating(void) +{ + result r = E_SUCCESS; + + // Deallocates the __pContextMenu + delete __pContextMenu; + + return r; +} + +// IActionEventListener implementation +void +ContextMenuSample::OnActionPerformed(const Control& source, int actionId) +{ + switch (actionId) + { + case ID_CONTEXTMENU_ITEM1: + { + // .... + } + break; + case ID_CONTEXTMENU_ITEM2: + { + // .... + } + break; + case ID_BTN_SHOW_CONTEXTMENU: + { + ShowContextMenu(true); + } + break; + default: + break; + } +} + * @endcode + * + */ +class _OSP_EXPORT_ ContextMenu + : public Tizen::Ui::Window +{ +public: +// Lifecycle + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + * + */ + ContextMenu(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + * + */ + virtual ~ContextMenu(void); + + /** + * Initializes this instance of %ContextMenu with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] point The x and y coordinates of the anchor of %ContextMenu + * @param[in] style The context menu style + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This instance has already been constructed. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(const Tizen::Graphics::Point& point, ContextMenuStyle style); + + /** + * Initializes this instance of %ContextMenu with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] point The x and y coordinates of the anchor of the %ContextMenu control + * @param[in] style The context menu style + * @param[in] direction The anchor arrow direction + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This instance has already been constructed. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(const Tizen::Graphics::Point& point, ContextMenuStyle style, ContextMenuAnchorDirection direction); + + /** + * Adds a listener instance. + * The added listener can listen to events on the given context of the event dispatcher when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + */ + void AddActionEventListener(Tizen::Ui::IActionEventListener& listener); + + /** + * Removes the specified listener instance. + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + */ + void RemoveActionEventListener(Tizen::Ui::IActionEventListener& listener); + + +// Operation + /** + * Appends the specified item at the end of the %ContextMenu control. + * + * @since 2.0 + * + * @return An error code + * @param[in] normalBitmap The normal bitmap of the item + * @param[in] pPressedBitmap The pressed bitmap of the item + * @param[in] actionId The action ID for this item + * @exception E_SUCCESS The method is successful. + * @exception E_MAX_EXCEEDED The number of items has exceeded the maximum limit. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method can only be used when the style of the context menu is CONTEXT_MENU_STYLE_GRID. + */ + result AddItem(const Tizen::Graphics::Bitmap& normalBitmap, const Tizen::Graphics::Bitmap* pPressedBitmap, int actionId); + + /** + * Appends the specified item at the end of the %ContextMenu control. + * + * @since 2.0 + * + * @return An error code + * @param[in] normalBitmap The normal bitmap of the item + * @param[in] pPressedBitmap The pressed bitmap of the item + * @param[in] pHighlightedBitmap The highlighted bitmap of the item + * @param[in] actionId The action ID for this item + * @exception E_SUCCESS The method is successful. + * @exception E_MAX_EXCEEDED The number of items has exceeded the maximum limit. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method can only be used when the style of the context menu is CONTEXT_MENU_STYLE_GRID. @n + * When a user navigates the user interface using the directional keys, the selected UI control is highlighted and the control takes the + * focus. + */ + result AddItem(const Tizen::Graphics::Bitmap& normalBitmap, const Tizen::Graphics::Bitmap* pPressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap, int actionId); + + /** + * Appends the specified item at the end of the %ContextMenu control. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The string of the item to be appended + * @param[in] actionId The specified action ID for this item + * @exception E_SUCCESS The method is successful. + * @exception E_MAX_EXCEEDED The number of items has exceeded the maximum limit. + * @exception E_SYSTEM A system error has occurred. + */ + result AddItem(const Tizen::Base::String& text, int actionId); + + /** + * Appends the specified item at the end of the %ContextMenu control. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The string of the item to be appended + * @param[in] actionId The specified action ID for this item + * @param[in] normalBitmap The normal bitmap of the item + * @param[in] pPressedBitmap The pressed bitmap of the item + * @param[in] pHighlightedBitmap The highlighted bitmap of the item + * @exception E_SUCCESS The method is successful. + * @exception E_MAX_EXCEEDED The total number of items has exceeded the maximum limit. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method can only be used when the style of the context menu is CONTEXT_MENU_STYLE_LIST. + */ + result AddItem(const Tizen::Base::String& text, int actionId, const Tizen::Graphics::Bitmap& normalBitmap, const Tizen::Graphics::Bitmap* pPressedBitmap = null, const Tizen::Graphics::Bitmap* pHighlightedBitmap = null); + + /** + * Inserts the specified item at the given index of the %ContextMenu control. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The location + * @param[in] normalBitmap The normal bitmap of the item + * @param[in] pPressedBitmap The pressed bitmap of the item + * @param[in] actionId The specified action ID for this item + * @exception E_SUCCESS The method is successful. + * @exception E_MAX_EXCEEDED The number of items has exceeded the maximum limit. + * @exception E_OUT_OF_RANGE The specified @c index is less than @c 0 or greater than the number of items in %ContextMenu. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method can only be used when the style of the context menu is CONTEXT_MENU_STYLE_GRID. @n + * The %ContextMenu control can have a maximum of 3 icons. + */ + result InsertItemAt(int index, const Tizen::Graphics::Bitmap& normalBitmap, const Tizen::Graphics::Bitmap* pPressedBitmap, int actionId); + + /** + * Inserts the specified item at the given index of the %ContextMenu control. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The location + * @param[in] normalBitmap The normal bitmap of the item + * @param[in] pPressedBitmap The pressed bitmap of the item + * @param[in] pHighlightedBitmap The highlighted bitmap of the item + * @param[in] actionId The specified action ID for this item + * @exception E_SUCCESS The method is successful. + * @exception E_MAX_EXCEEDED The number of items has exceeded the maximum limit. + * @exception E_OUT_OF_RANGE The specified @c index is less than @c 0 or greater than the number of items in %ContextMenu. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method can only be used when the style of the context menu is CONTEXT_MENU_STYLE_GRID. @n + * @remarks When a user navigates the user interface using the directional keys, the selected UI control is highlighted and the control takes the focus. + */ + result InsertItemAt(int index, const Tizen::Graphics::Bitmap& normalBitmap, const Tizen::Graphics::Bitmap* pPressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap, int actionId); + + /** + * Inserts the specified item at the given index of the %ContextMenu control. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The location + * @param[in] text The string of the item to set + * @param[in] actionId The specified action ID for this item + * @exception E_SUCCESS The method is successful. + * @exception E_MAX_EXCEEDED The number of items has exceeded the maximum limit. + * @exception E_OUT_OF_RANGE The specified @c index is less than @c 0 or greater than the number of items in %ContextMenu. + * @exception E_SYSTEM A system error has occurred. + */ + result InsertItemAt(int index, const Tizen::Base::String& text, int actionId); + + /** + * Inserts the specified item at the given index of the %ContextMenu control. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The location + * @param[in] text The string of the item to set + * @param[in] actionId The specified action ID for this item + * @param[in] normalBitmap The normal bitmap of the item + * @param[in] pPressedBitmap The pressed bitmap of the item + * @param[in] pHighlightedBitmap The highlighted bitmap of the item + * @exception E_SUCCESS The method is successful. + * @exception E_MAX_EXCEEDED The number of items has exceeded the maximum limit. + * @exception E_OUT_OF_RANGE The specified @c index is less than @c 0 or greater than the number of items in %ContextMenu. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method can only be used when the style of the context menu is CONTEXT_MENU_STYLE_LIST. + */ + result InsertItemAt(int index, const Tizen::Base::String& text, int actionId, const Tizen::Graphics::Bitmap& normalBitmap, const Tizen::Graphics::Bitmap* pPressedBitmap = null, const Tizen::Graphics::Bitmap* pHighlightedBitmap = null); + + /** + * Sets the specified item at the given index of the %ContextMenu control. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The location + * @param[in] normalBitmap The normal bitmap of the item + * @param[in] pPressedBitmap The pressed bitmap of the item + * @param[in] actionId The action ID for this item + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is less than @c 0 or greater than the number of items in %ContextMenu. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method can only be used when the style of the context menu is CONTEXT_MENU_STYLE_GRID. + */ + result SetItemAt(int index, const Tizen::Graphics::Bitmap& normalBitmap, const Tizen::Graphics::Bitmap* pPressedBitmap, int actionId); + + /** + * Sets the specified item at the given index of the %ContextMenu control. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The location + * @param[in] normalBitmap The normal bitmap of the item + * @param[in] pPressedBitmap The pressed bitmap of the item + * @param[in] pHighlightedBitmap The highlighted bitmap of the item + * @param[in] actionId The action ID for this item + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is less than @c 0 or greater than the number of items in %ContextMenu. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method can only be used when the style of the context menu is CONTEXT_MENU_STYLE_GRID. @n + * @remarks When a user navigates the user interface using the directional keys, @n + * the selected UI control is highlighted and the control takes the focus. + */ + result SetItemAt(int index, const Tizen::Graphics::Bitmap& normalBitmap, const Tizen::Graphics::Bitmap* pPressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap, int actionId); + + /** + * Sets the specified item at the given index of the %ContextMenu control. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The location + * @param[in] text The string of the item to set + * @param[in] actionId The action ID for this item + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index less than @c 0 or greater than the number of items in %ContextMenu. + * @exception E_SYSTEM A system error has occurred. + */ + result SetItemAt(int index, const Tizen::Base::String& text, int actionId); + + /** + * Sets the specified item at the given index of the %ContextMenu control. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The location + * @param[in] text The string of the item to set + * @param[in] actionId The action ID for this item + * @param[in] normalBitmap The normal bitmap of the item + * @param[in] pPressedBitmap The pressed bitmap of the item + * @param[in] pHighlightedBitmap The highlighted bitmap of the item + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index less than @c 0 or greater than the number of items in %ContextMenu. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method can only be used when the style of the context menu is CONTEXT_MENU_STYLE_LIST. + */ + result SetItemAt(int index, const Tizen::Base::String& text, int actionId, const Tizen::Graphics::Bitmap& normalBitmap, const Tizen::Graphics::Bitmap* pPressedBitmap = null, const Tizen::Graphics::Bitmap* pHighlightedBitmap = null); + + /** + * Removes the item at the specified index from the %ContextMenu control. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The location + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveItemAt(int index); + + /** + * Removes all items from the %ContextMenu control. + * + * @since 2.0 + * + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveAllItems(void); + + /** + * Gets the number of items of the %ContextMenu control. + * + * @since 2.0 + * + * @return The number of items registered for %ContextMenu, @n + * else @c -1 if an error occurs + */ + int GetItemCount(void) const; + + /** + * Gets the index of the item with the specified action ID. + * + * @since 2.0 + * + * @return The index of the item, @n + * else @c -1 if an error occurs + * @param[in] actionId The action ID + */ + int GetItemIndexFromActionId(int actionId) const; + + /** + * Gets the action ID of the item at the specified index. + * + * @since 2.0 + * + * @return The action ID of the item, @n + * else @c -1 if the specified index is invalid + * @param[in] index The index of the item + */ + int GetItemActionIdAt(int index) const; + + /** + * Gets the item text color of the %ContextMenu control for the specified status. + * + * @since 2.0 + * + * @return The item text color, @n + * else RGBA (0,0,0,0) if an error occurs + * @param[in] status The item status + */ + Tizen::Graphics::Color GetItemTextColor(ContextMenuItemStatus status) const; + + /** + * Sets the item text color of the %ContextMenu control for the specified status. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The item status + * @param[in] color The item text color to be set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result SetItemTextColor(ContextMenuItemStatus status, const Tizen::Graphics::Color& color); + + /** + * Sets the position of the anchor. + * + * @since 2.0 + * + * @return An error code + * @param[in] position The new position + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @remarks The x and y coordinates of the anchor are defined in the coordinate space of its parent, + * which means that @c x and @c y must be defined relative to the top-left corner (0,0) of its parent. + */ + result SetAnchorPosition(const Tizen::Graphics::Point& position); + + /** + * Gets the position of the anchor. + * + * @since 2.0 + * + * @return The position of the anchor + * @remarks The coordinate of the anchor position is defined from the top-left corner of its parent Container. + */ + Tizen::Graphics::Point GetAnchorPosition(void) const; + + /** + * Gets the color of the %ContextMenu control. + * + * @since 2.0 + * + * @return The color of %ContextMenu control, @n + * else RGBA(0, 0, 0, 0) if an error occurs + * @see SetColor() + */ + Tizen::Graphics::Color GetColor(void) const; + + /** + * Sets the color of the %ContextMenu control. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The color to be set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @exception E_SYSTEM A system error has occurred. + * @see GetColor() + */ + result SetColor(const Tizen::Graphics::Color& color); + + /** + * Gets the item color for the specified status. + * + * @since 2.0 + * + * @return The color of %ContextMenu control, @n + * else RGBA(0, 0, 0, 0) if an error occurs + * @param[in] status The menu item status + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The item color for CONTEXT_MENU_ITEM_STATUS_NORMAL is not supported. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. @n + * The item color for the CONTEXT_MENU_ITEM_STATUS_NORMAL status is always the same as the color of the %ContextMenu control. + * @see SetItemColor() + */ + Tizen::Graphics::Color GetItemColor(ContextMenuItemStatus status) const; + + /** + * Sets the item color for the specified status. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The menu item status + * @param[in] color The color to be set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The item color for CONTEXT_MENU_ITEM_STATUS_NORMAL is not supported. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @exception E_SYSTEM A system error has occurred. + * @remarks The item color for the CONTEXT_MENU_ITEM_STATUS_NORMAL status is always the same as the color of the %ContextMenu control. + * @see GetItemColor() + */ + result SetItemColor(ContextMenuItemStatus status, const Tizen::Graphics::Color& color); + + /** + * Gets maximum number of visible items. + * + * @since 2.0 + * + * @return The maximum number of visible items, @n + * else @c -1 if an error occurs + * @see SetMaxVisibleItemsCount() + */ + int GetMaxVisibleItemsCount(void) const; + + /** + * Sets maximum number of visible items. + * + * @since 2.0 + * + * @return An error code + * @param[in] maxItemsCount The maximum number of the visible menu items + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c parameter is out of possible range. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @exception E_SYSTEM A system error has occurred. + * @remarks @c maxItemsCount should be greater than @c 0 and less than @c 8. The default value for + * the maximum number of the visible menu items is @c 4. + * @see GetMaxVisibleItemsCount() + */ + result SetMaxVisibleItemsCount(int maxItemsCount); + +protected: + friend class _ContextMenuImpl; +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + // @since 2.0 + // + // + ContextMenu(const ContextMenu& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + // @since 2.0 + // + // + ContextMenu& operator =(const ContextMenu& rhs); +}; // ContextMenu + +}}} // Tizen::Ui: Control + +#endif // _FUI_CTRL_CONTEXT_MENU_H_ diff --git a/inc/FUiCtrlControlsTypes.h b/inc/FUiCtrlControlsTypes.h new file mode 100644 index 0000000..34cc315 --- /dev/null +++ b/inc/FUiCtrlControlsTypes.h @@ -0,0 +1,100 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlControlsTypes.h + * @brief This is the header file for the enumerations. + * + * This header file contains the declarations of the enumerations. + */ +#ifndef _FUI_CTRL_CONTROLS_TYPES_H_ +#define _FUI_CTRL_CONTROLS_TYPES_H_ + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @enum MarginType + * + * Defines different margin types for a control. + * + * @since 2.0 + */ +enum MarginType +{ + MARGIN_TYPE_LEFT, /**< The left side of the margin */ + MARGIN_TYPE_RIGHT, /**< The right side of the margin */ + MARGIN_TYPE_TOP, /**< The top side of the margin */ + MARGIN_TYPE_BOTTOM /**< The bottom side of the margin */ +}; + +/** + * @enum BackgroundStyle + * + * Defines the background style. + * + * @since 2.0 + */ +enum BackgroundStyle +{ + BACKGROUND_STYLE_NONE = 0, /**< The image with no background */ + BACKGROUND_STYLE_DEFAULT, /**< The default background image */ +}; + +/** + * @enum IconPosition + * + * Defines position of the text. + * + * @since 2.0 + */ +enum IconPosition +{ + ICON_POSITION_LEFT, /**< The position of the icon is to the left of the object */ + ICON_POSITION_RIGHT /**< The position of the icon is to the right of the object */ +}; + +/** + * @enum HorizontalAlignment + * + * Defines horizontal alignment of the text. + * + * @since 2.0 + */ +enum HorizontalAlignment +{ + ALIGNMENT_LEFT, /**< The text is left-aligned */ + ALIGNMENT_CENTER, /**< The text is center-aligned horizontally */ + ALIGNMENT_RIGHT /**< The text is right-aligned */ +}; + +/** + * @enum VerticalAlignment + * + * Defines vertical alignment of the text. + * + * @since 2.0 + */ +enum VerticalAlignment +{ + ALIGNMENT_TOP, /**< The text is top-aligned */ + ALIGNMENT_MIDDLE, /**< The text is center-aligned vertically */ + ALIGNMENT_BOTTOM /**< The text is bottom-aligned */ +}; + +}}}// Tizen::Ui::Controls + +#endif //_FUI_CTRL_CONTROLS_TYPES_H_ diff --git a/inc/FUiCtrlCustomItem.h b/inc/FUiCtrlCustomItem.h new file mode 100644 index 0000000..06d763f --- /dev/null +++ b/inc/FUiCtrlCustomItem.h @@ -0,0 +1,279 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlCustomItem.h + * @brief This is the header file for the %CustomItem class. + * + * This header file contains the declarations of the %CustomItem class and its helper classes. + */ + +#ifndef _FUI_CTRL_CUSTOM_ITEM_H_ +#define _FUI_CTRL_CUSTOM_ITEM_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +class _CustomItemImpl; + +/** + * @class CustomItem + * @brief This class defines the common behavior for %CustomItem. + * + * @since 2.0 + * + * The %CustomItem class displays a list item, which is the unit of handling a ListView or GroupedListView. It provides customized formatting of specific list items. + * + * For more information on the class features, see ListViews. + * + */ + +class _OSP_EXPORT_ CustomItem + : public ListItemBase +{ +public: + /** + * The object is not fully constructed after this constructor is + * called. For full construction, the Construct() method must be + * called right after calling this constructor. + * + * @since 2.0 + */ + CustomItem(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~CustomItem(void); + + /** + * Initializes this instance of %CustomItem with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemSize The size of the item + * @param[in] style The style of the annex + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(const Tizen::Graphics::Dimension& itemSize, ListAnnexStyle style); + + /** + * Adds an instance of EnrichedText as an element to the %CustomItem control. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect The bounds of the element + * @param[in] elementId The element ID + * @param[in] text The instance of EnrichedText + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result AddElement(const Tizen::Graphics::Rectangle& rect, int elementId, const Tizen::Graphics::EnrichedText& text); + + /** + * Adds the text as an element to the %CustomItem control. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect The bounds of the element + * @param[in] elementId The element ID + * @param[in] text The text string to add + * @param[in] textSliding Set to @c true to allow a long text to slide, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks If the width of the specified @c text exceeds the width of the element and @c textSliding is set to @c true, the text slides + * automatically when the user long-presses. + */ + result AddElement(const Tizen::Graphics::Rectangle& rect, int elementId, const Tizen::Base::String& text, bool textSliding = true); + + /** + * Adds the text as an element to the %CustomItem control. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect The bounds of the element + * @param[in] elementId The element ID + * @param[in] text The text string to add + * @param[in] textSize The size of the text + * @param[in] normalTextColor The color of the text in the normal status + * @param[in] pressedTextColor The color of the text in the pressed status + * @param[in] highlightedTextColor The color of the text in the highlighted status + * @param[in] textSliding Set to @c true to allow a long text to slide, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks The default size of text is 38 on a WVGA screen, 22 on a HVGA screen and 20 on a WQVGA screen. + */ + result AddElement(const Tizen::Graphics::Rectangle& rect, int elementId, const Tizen::Base::String& text, int textSize, const Tizen::Graphics::Color& normalTextColor, const Tizen::Graphics::Color& pressedTextColor, const Tizen::Graphics::Color& highlightedTextColor, bool textSliding = true); + + /** + * Adds the bitmap image as an element to the %CustomItem control. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect The bounds of the element + * @param[in] elementId The element ID + * @param[in] normalBitmap The bitmap image displayed when the item is in normal status + * @param[in] pPressedBitmap The bitmap image displayed when the item is pressed + * @param[in] pHighlightedBitmap The bitmap image displayed when the item is highlighted + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result AddElement(const Tizen::Graphics::Rectangle& rect, int elementId, const Tizen::Graphics::Bitmap& normalBitmap, const Tizen::Graphics::Bitmap* pPressedBitmap = NULL, const Tizen::Graphics::Bitmap* pHighlightedBitmap = NULL); + + /** + * Adds the custom drawing element to the %CustomItem control. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect The bounds of the element + * @param[in] elementId The element ID + * @param[in] element The custom element + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result AddElement(const Tizen::Graphics::Rectangle& rect, int elementId, const ICustomElement& element); + + /** + * Removes the element from the %CustomItem control. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveAllElements(void); + + /** + * Removes the element with the specified element ID. + * + * @since 2.0 + * + * @return An error code + * @param[in] elementId The element ID + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveElement(int elementId); + + /** + * Sets the selection type of an element. + * + * @since 2.0 + * + * @param[in] elementId The element ID + * @param[in] enable Set to @c true to make only the element selected when touched, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks Based on the selection type of an element, the area within which the background color changes is different when an element is touched. + */ + result SetElementSelectionEnabled(int elementId, bool enable); + + /** + * Sets the horizontal alignment of text in the specified element. + * + * @since 2.0 + * + * @param[in] elementId The element ID + * @param[in] alignment The horizontal alignment of text + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_INVALID_OPERATION The specified element does not handle text.@n + * The specified element does not contain text. + * @exception E_SYSTEM A system error has occurred. + */ + result SetElementTextHorizontalAlignment(int elementId, HorizontalAlignment alignment); + + /** + * Sets the vertical alignment of text in the specified element. + * + * @since 2.0 + * + * @param[in] elementId The element ID + * @param[in] alignment The vertical alignment of text + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_INVALID_OPERATION The specified element does not handle text.@n + * The specified element does not contain text. + * @exception E_SYSTEM A system error has occurred. + */ + result SetElementTextVerticalAlignment(int elementId, VerticalAlignment alignment); + + /** + * Sets the auto-link mask. + * + * @since 2.0 + * + * @return An error code + * @param[in] elementId The element ID + * @param[in] mask The auto-link mask @n + * Multiple link types can be combined using bitwise OR operator (see Tizen::Base::Utility::LinkType). @n + * For more information, see AutoLink Detection. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_INVALID_OPERATION The specified element does not handle text. + * @exception E_SYSTEM A system error has occurred. + * @remarks When @c mask is set to @c 0, the auto-link detection is disabled. + * @see Tizen::Base::Utility::LinkType + */ + result SetElementAutoLinkMask(int elementId, unsigned long mask); + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + CustomItem(const CustomItem& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + CustomItem& operator =(const CustomItem& rhs); +}; // CustomItem + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_CUSTOM_ITEM_H_ + diff --git a/inc/FUiCtrlCustomList.h b/inc/FUiCtrlCustomList.h new file mode 100644 index 0000000..eb11c03 --- /dev/null +++ b/inc/FUiCtrlCustomList.h @@ -0,0 +1,857 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlCustomList.h + * @brief This is the header file for the %CustomList class. + * + * This header file contains the declarations of the %CustomList class and its helper classes. + */ + +#ifndef _FUI_CTRL_CUSTOM_LIST_H_ +#define _FUI_CTRL_CUSTOM_LIST_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @if OSPDEPREC + * @class CustomList + * @brief [Deprecated] This class defines the common behavior of a %CustomList control. + * + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * The %CustomList class represents a list which has user-configured items. An item in a custom list can have + * different layout and height than the other items. Each item is composed of elements, which can be texts and bitmaps + * and is configured using CustomListItem and CustomListItemFormat. + * + * When an item in a custom list is selected or deselected, an item event is generated. It is passed on to all item event listeners + * that have registered an interest in item events generated by the custom list. If an application wants to perform tasks when a custom + * list item is selected and deselected, it must implement ICustomItemEventListener and register the listener to receive events from + * the custom list by calling the custom list's AddCustomItemEventListener() method. + * + * Note that CustomListItem and CustomListItemFormat need to be created on a heap. The items of a custom list are deleted automatically + * when the %CustomList control is destroyed. If you want to remove certain list items, you must use RemoveItemAt(). CustomListItemFormat + * must be deleted by the application. + * + * Refer to CustomListItem and CustomListItemFormat. + * + * Example: + * + * @image html ui_controls_customlist.png + * + * + * This is a simple UI application that uses a %CustomList control. + * + * + * @code +//Sample code for CustomListSample.h +#include + +// Forward Declaration +class CustomListElement; + +class CustomListSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::ICustomItemEventListener +{ +public: + CustomListSample(void) + : __pCustomList(null) + , __pCustomListItemFormat(null) + , __pListElement(null){} + + bool Initialize(void); + result AddListItem(Tizen::Ui::Controls::CustomList& customList, Tizen::Base::String itemText, + Tizen::Graphics::Bitmap* pBitmapNormal, Tizen::Graphics::Bitmap* pBitmapFocused); + + virtual result OnInitializing(void); + virtual result OnTerminating(void); + + // ICustomItemEventListener + virtual void OnItemStateChanged(const Tizen::Ui::Control& source, int index, int itemId, Tizen::Ui::ItemStatus status); + virtual void OnItemStateChanged(const Tizen::Ui::Control& source, int index, int itemId, int elementId, Tizen::Ui::ItemStatus status); + +private: + static const int ID_LIST_ITEM = 101; + static const int ID_LIST_TEXT = 102; + static const int ID_LIST_BITMAP = 103; + static const int ID_FORMAT_CUSTOM = 104; + + Tizen::Ui::Controls::CustomList* __pCustomList; + Tizen::Ui::Controls::CustomListItemFormat* __pCustomListItemFormat; + CustomListElement* __pListElement; +}; + * @endcode + * + * @code +// Sample code for CutomListSample.cpp +#include +#include + +#include "CustomListSample.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::Graphics; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; + +class CustomListElement + : public ICustomListElement +{ +public: + result + DrawElement(const Tizen::Graphics::Canvas& canvas, const Tizen::Graphics::Rectangle& rect, CustomListItemStatus itemStatus) + { + result r = E_SUCCESS; + + Canvas* pCanvas = const_cast(&canvas); + + pCanvas->SetLineWidth(5); + pCanvas->SetForegroundColor(Color::GetColor(COLOR_ID_GREEN)); + if (pCanvas->DrawRectangle(rect) != E_SUCCESS) + { + return r; + } + + if (pCanvas->DrawText(Point(rect.x+20, rect.y+20), L"Custom") != E_SUCCESS) + { + return r; + } + + return r; + } +}; + +bool +CustomListSample::Initialize() +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +CustomListSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of CustomListElement + __pListElement = new CustomListElement(); + + // Creates an instance of CustomList + __pCustomList = new CustomList(); + __pCustomList->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height), CUSTOM_LIST_STYLE_NORMAL); + __pCustomList->AddCustomItemEventListener(*this); + + // Creates an instance of CustomListItemFormat + __pCustomListItemFormat = new CustomListItemFormat(); + __pCustomListItemFormat->Construct(); + __pCustomListItemFormat->AddElement(ID_LIST_TEXT, Rectangle(10, 25, 150, 80)); + __pCustomListItemFormat->AddElement(ID_LIST_BITMAP, Rectangle(170, 10, 70, 80)); + __pCustomListItemFormat->AddElement(ID_FORMAT_CUSTOM, Rectangle(GetClientAreaBounds().width - 120, 20, 100, 60)); + __pCustomListItemFormat->SetElementEventEnabled(ID_LIST_TEXT, true); + __pCustomListItemFormat->SetElementEventEnabled(ID_LIST_BITMAP, true); + __pCustomListItemFormat->SetElementEventEnabled(ID_FORMAT_CUSTOM, true); + + // Gets instances of Bitmap + AppResource* pAppResource = Application::GetInstance()->GetAppResource(); + Bitmap *pBitmapNormal = pAppResource->GetBitmapN(L"tizen.png"); + Bitmap *pBitmapFocused = pAppResource->GetBitmapN(L"tizen.png"); + + // Adds the item to the custom list + for (int i = 0; i < 30; i++) + { + String str = L"Text"; + str.Append(i+1); + AddListItem(*__pCustomList, str, pBitmapNormal, pBitmapFocused); + } + + // Adds the custom list to the form + AddControl(*__pCustomList); + + // Deallocates bitmaps + delete pBitmapNormal; + delete pBitmapFocused; + + return r; +} + +result +CustomListSample::OnTerminating(void) +{ + result r = E_SUCCESS; + + // Deallocates item format and the element + delete __pCustomListItemFormat; + delete __pListElement; + + return r; +} + +result +CustomListSample::AddListItem(CustomList& customList, String itemText, Bitmap* pBitmapNormal, Bitmap* pBitmapFocused) +{ + // Creates an instance of CustomListItem + CustomListItem* pItem = new CustomListItem(); + + pItem->Construct(100); + pItem->SetItemFormat(*__pCustomListItemFormat); + pItem->SetElement(ID_LIST_TEXT, itemText); + pItem->SetElement(ID_LIST_BITMAP, *pBitmapNormal, pBitmapFocused); + pItem->SetElement(ID_FORMAT_CUSTOM, *(static_cast(__pListElement))); + + customList.AddItem(*pItem, ID_LIST_ITEM); + + return E_SUCCESS; +} + +// ICustomItemEventListener implementation +void +CustomListSample::OnItemStateChanged(const Control& source, int index, int itemId, ItemStatus status) +{ + switch (itemId) + { + case ID_LIST_ITEM: + { + // .... + } + break; + default: + break; + } +} + +void +CustomListSample::OnItemStateChanged(const Control& source, int index, int itemId, int elementId, Tizen::Ui::ItemStatus status) +{ + switch (itemId) + { + case ID_LIST_ITEM: + { + switch (elementId) + { + case ID_LIST_TEXT: + { + // .... + } + break; + + case ID_LIST_BITMAP: + { + // .... + } + break; + default: + break; + } + } + break; + default: + break; + } +} + * @endcode + * @endif + */ +class _OSP_EXPORT_ CustomList + : public Tizen::Ui::Control +{ +public: + /** + * @if OSPDEPREC + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * @endif + */ + CustomList(void); + + /** + * @if OSPDEPREC + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * @endif + */ + virtual ~CustomList(void); + +public: + /** + * @if OSPDEPREC + * Initializes this instance of %CustomList with the specified parameters. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] rect The x and y position of the top-left corner of the %CustomList control along with the width and height of the control + * @param[in] style The style set of %CustomList + * @param[in] itemDivider Set to @c true to display the divider, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks The size of the control must be within the range as defined by the minimum and maximum size. + * @remarks The minimum size of this control is 92 x 72 on a WVGA screen, 60 x 48 on a HVGA screen and 46 x 36 on a WQVGA screen. + * @endif + */ + result Construct(const Tizen::Graphics::Rectangle& rect, CustomListStyle style, bool itemDivider = true); + + + /** + * @if OSPDEPREC + * Adds the custom item event listener instance. @n + * The added listener gets notified when the state of CustomListItem is changed. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @endif + */ + void AddCustomItemEventListener(Tizen::Ui::ICustomItemEventListener& listener); + + /** + * @if OSPDEPREC + * Removes the custom item event listener instance. @n + * The removed listener is not notified even when custom item events are fired. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @endif + */ + void RemoveCustomItemEventListener(Tizen::Ui::ICustomItemEventListener& listener); + + /** + * @if OSPDEPREC + * Adds the specified item to the %CustomList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] item The custom list item to be added + * @param[in] itemId The item ID for the item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specified @c itemId can be used to identify a specific CustomListItem or @n + * to associate user-allocated resources. @n + * Note that the custom list does not throw an exception @n + * if the same itemID is assigned to multiple items. @n + * @remarks The added item is deleted automatically when the list is destroyed. @n + * Do not add, insert, or set an item that already belongs to the %CustomList control. + * @endif + */ + result AddItem(const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Inserts the specified item to %CustomList at the specified index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] index The index at which to insert the item + * @param[in] item The custom list item to be inserted + * @param[in] itemId The item ID for the item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The specified @c index is less than @c 0 or greater than or equal to the item count. + * @exception E_SYSTEM A system error has occurred. + * @remarks The inserted item is deleted automatically when the list is destroyed. @n + * Do not add, insert, or set an item that already belongs to the %CustomList control. + * @endif + */ + result InsertItemAt(int index, const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Sets the contents of the item at the specified index in the %CustomList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] index The index at which to set the contents of the item + * @param[in] item The custom list item to be set + * @param[in] itemId The item ID for the item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The specified @c index is less than @c 0 or greater than or equal to the item count. + * @exception E_SYSTEM A system error has occurred. + * @remarks Do not add, insert, or set an item that already belongs to the %CustomList control. + * @endif + */ + result SetItemAt(int index, const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Removes the item at the specified index in the %CustomList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the item to be deleted + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The specified @c index is less than @c 0 or greater than or equal to the item count. + * @exception E_SYSTEM A system error has occurred. + * @remarks The removed list item is deleted from the memory. + * @endif + */ + result RemoveItemAt(int index); + + /** + * @if OSPDEPREC + * Removes all the items from the %CustomList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The removed list items are deleted from the memory. + * @endif + */ + result RemoveAllItems(void); + + /** + * @if OSPDEPREC + * Gets the item at the specified index in the %CustomList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @return A custom list item, @n + * else @c null if the specified index is out of range + * @param[in] index The index of the item to get + * @endif + */ + const CustomListItem* GetItemAt(int index) const; + + /** + * @if OSPDEPREC + * Gets the number of items in the %CustomList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @return The number of items in %CustomList, @n + * else @c -1 if an error occurs + * @endif + */ + int GetItemCount(void) const; + + /** + * @if OSPDEPREC + * Enables or disables the status of the item at the specified @c index in the %CustomList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the item whose status is to be set + * @param[in] enable Set to @c true to enable, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetItemEnabled(int index, bool enable); + + /** + * @if OSPDEPREC + * Checks whether the specified index in the %CustomList control is enabled. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @return @c true if the item is enabled, @n + * else @c false + * @param[in] index The index of the item to be checked + * @endif + */ + bool IsItemEnabled(int index) const; + + /** + * @if OSPDEPREC + * Sets the check status of the item at the specified index in the %CustomList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the item to be set + * @param[in] check The check status + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method can only be used when the style of the list allows selection. + * @endif + */ + result SetItemChecked(int index, bool check); + + /** + * @if OSPDEPREC + * Checks whether the item at the specified index is checked in the %CustomList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @return @c true if the item is checked, @n + * else @c false + * @param[in] index The index of the item to check + * @remarks This method can only be used when the style of the list allows selection. + * @endif + */ + bool IsItemChecked(int index) const; + + /** + * @if OSPDEPREC + * Sets the check status for all items of the %CustomList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] check The check status + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method can only be used when the style of the list allows multiple selections. + * @endif + */ + result SetAllItemsChecked(bool check); + + + /** + * @if OSPDEPREC + * Removes the checked items of the %CustomList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method can only be used when the style of the list allows multiple selections. + * @remarks The removed list items are deleted from the memory. + * @endif + */ + result RemoveAllCheckedItems(void); + + /** + * @if OSPDEPREC + * Gets the first item of all the checked items in the %CustomList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @return The index of the first checked item, @n + * else @c -1 if no item is checked or an error occurs + * @endif + */ + int GetFirstCheckedItemIndex(void) const; + + /** + * @if OSPDEPREC + * Gets the last item of all the checked items in the %CustomList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @return The index of the last checked item, @n + * else @c -1 if no item is checked or an error occurs + * @endif + */ + int GetLastCheckedItemIndex(void) const; + + /** + * @if OSPDEPREC + * Gets the next checked item from the specified index in the %CustomList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @return The index of the next checked item @n + * else @c -1 if no more item after the specified index is checked, @n + * or the specified @c index is less than @c 0 or greater than the item count. + * @param[in] index The index of the %CustomList control item + * endif + */ + int GetNextCheckedItemIndexAfter(int index) const; + + /** + * @if OSPDEPREC + * Gets the index of the item at the specified position. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @return The index of the item, @n + * else @c -1 if the specified position is not inside any of the items + * @param[in] x The x position of the point + * @param[in] y The y position of the point + * @endif + */ + int GetItemIndexFromPosition(int x, int y) const; + + /** + * @if OSPDEPREC + * Gets the index of the item at the specified position. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @return The index of the item, @n + * else @c -1 if the specified position is not inside any of the items + * @param[in] position The position of the point + * @endif + */ + int GetItemIndexFromPosition(const Tizen::Graphics::Point& position) const; + + /** + * @if OSPDEPREC + * Gets the index of the first item from the visible items in the %CustomList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @return The index of the first item, @n + * else @c -1 if no item is visible + * @endif + */ + int GetTopDrawnItemIndex(void) const; + + /** + * @if OSPDEPREC + * Gets the index of the last item from the visible items in the %CustomList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @return The index of the last item, @n + * else @c -1 if no item is visible + * @endif + */ + int GetBottomDrawnItemIndex(void) const; + + /** + * @if OSPDEPREC + * Sets the background color of the %CustomList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @param[in] color The background color + * @endif + */ + void SetBackgroundColor(const Tizen::Graphics::Color& color); + + /** + * @if OSPDEPREC + * Sets the text to be displayed when there is no item in the %CustomList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @param[in] text The text message to be displayed + * @endif + */ + void SetTextOfEmptyList(const Tizen::Base::String& text); + + /** + * @if OSPDEPREC + * Sets the color of the text to be displayed when there is no item in the %CustomList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @param[in] color The color of the text to be displayed + * @endif + */ + void SetTextColorOfEmptyList(const Tizen::Graphics::Color& color); + + /** + * @if OSPDEPREC + * Gets the color of the text to display when there is no item in the CustomList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @return The color of the text to be displayed + * @endif + */ + Tizen::Graphics::Color GetTextColorOfEmptyList(void) const; + + /** + * @if OSPDEPREC + * Gets the index of the item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @return The index of the item, @n + * else @c -1 if no item has the specified item ID + * @param[in] itemId The item ID of the %CustomList control item + * @remarks One or more indexes can have the same item ID, @n + * and this method returns the first item from such items. + * @endif + */ + int GetItemIndexFromItemId(int itemId) const; + + /** + * @if OSPDEPREC + * Gets the item ID of the item at the specified index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @return The item ID of the item, @n + * else @c -1 if the specified @c index is less than @c 0 or greater than the item count + * @param[in] index The index of the %CustomList control item + * @endif + */ + int GetItemIdAt(int index) const; + + /** + * @if OSPDEPREC + * Scrolls to the bottom of the %CustomList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * @endif + */ + void ScrollToBottom(void); + + /** + * @if OSPDEPREC + * Scrolls to the top of the %CustomList. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * @endif + */ + void ScrollToTop(void); + + /** + * @if OSPDEPREC + * Scrolls to the item at the specified index. @n + * The specified item is drawn at the top of the %CustomList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the %CustomList control item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The specified @c index is less than @c 0 or greater than the item count. + * @endif + */ + result ScrollToTop(int index); + + /** + * @if OSPDEPREC + * Draws and shows the item at the specified index in the %CustomList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use ListView class. + * @since 2.0 + * + * @return An error code + * + * @param[in] index The index of the %CustomList control item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @exception E_INVALID_OPERATION The item has never been drawn before calling this method. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The specified @c index is less than @c 0 or greater than the item count. + * @endif + */ + result RefreshItem(int index); + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + CustomList(const CustomList& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + CustomList& operator =(const CustomList& rhs); + + friend class _CustomListImpl; + +}; //CustomList + +}}} //Tizen::Ui::Controls + +#endif // _FUI_CTRL_CUSTOM_LIST_H_ diff --git a/inc/FUiCtrlCustomListItem.h b/inc/FUiCtrlCustomListItem.h new file mode 100644 index 0000000..c5c6a3a --- /dev/null +++ b/inc/FUiCtrlCustomListItem.h @@ -0,0 +1,329 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlCustomListItem.h + * @brief This is the header file for the %CustomListItem class. + * + * This header file contains the declarations of the %CustomListItem class and its helper classes. + */ + +#ifndef _FUI_CTRL_CUSTOM_LIST_ITEM_H_ +#define _FUI_CTRL_CUSTOM_LIST_ITEM_H_ + +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +class _CustomListItemImpl; +class CustomListItemFormat; +/** + * @if OSPDEPREC + * @class CustomListItem + * @brief [Deprecated] This class defines the common behavior of an item of the CustomList control. + * + * @deprecated This class is deprecated. Instead of using this class, use CustomItem class. + * @since 2.0 + * + * The %CustomListItem class represents a custom list item which is the unit of + * handling of a custom list. A custom list item is composed of one or more elements, + * which can be texts and bitmaps. Custom drawable elements are also supported via + * ICustomListElement. The value of the elements is set using %CustomListItem. + * + * Note that %CustomListItem needs to be created on a heap. CustomListItems will be deleted automatically + * when the CustomList is destroyed. If you want to remove certain list items, you must use RemoveItemAt(). + * + * Refer to CustomListItemFormat. + * + * @endif + */ +class _OSP_EXPORT_ CustomListItem + : public Tizen::Base::Object +{ +public: + /** + * @if OSPDEPREC + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use CustomItem class + * + * @since 2.0 + * @endif + */ + CustomListItem(void); + + /** + * @if OSPDEPREC + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use CustomItem class + * @since 2.0 + * @endif + */ + virtual ~CustomListItem(void); + +public: + /** + * @if OSPDEPREC + * Initializes this instance of %CustomListItem with the specified parameter. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use CustomItem class + * @since 2.0 + * + * @return An error code + * @param[in] itemHeight The height of %CustomListItem + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result Construct(int itemHeight); + + /** + * @if OSPDEPREC + * Sets the format of %CustomListItem. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use CustomItem class + * @since 2.0 + * + * @param[in] itemFormat An instance of %CustomListItemFormat + * @remarks Do not delete @c itemFormat before the associated %CustomListItem is removed from %CustomList, because %CustomListItemFormat is constantly + * used while %CustomListItem is added to CustomList. + * @endif + */ + void SetItemFormat(const CustomListItemFormat& itemFormat); + + /** + * Gets the format of %CustomListItem. + * + * @since 2.0 + * + * @return A pointer to CustomListItemFormat, @n + * else @c null if a system error occurs + */ + const CustomListItemFormat* GetItemFormat(void) const; + + /** + * @if OSPDEPREC + * Sets the background bitmap image which is displayed when the item is focused. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use CustomItem class + * @since 2.0 + * + * @param[in] bitmap The background bitmap image + * @remarks The specified bitmap is automatically scaled to the size of an associated item. + * @see SetNormalItemBackgroundBitmap() + * @endif + */ + void SetFocusedItemBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap); + + /** + * @if OSPDEPREC + * Sets the background image of the item which is displayed when the item is in normal state. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use CustomItem class + * @since 2.0 + * + * @param[in] bitmap The background bitmap image + * @remarks The specified bitmap is automatically scaled to the size of an+B6 associated item. + * @see SetFocusedItemBackgroudBitmap() + * @endif + */ + void SetNormalItemBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap); + + /** + * @if OSPDEPREC + * Sets the highlighted background image on the rectangle of each list item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use CustomItem class + * @since 2.0 + * + * @param[in] bitmap The background image + * @remarks When a user navigates the user interface using the directional keys, @n + * the selected UI control is highlighted and takes the focus. + * @endif + */ + + void SetHighlightedItemBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap); + + /** + * @if OSPDEPREC + * Sets the text of the element for %CustomListItem. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use CustomItem class + * @since 2.0 + * + * @return An error code + * @param[in] elementId The ID of the element + * @param[in] text The text string to be added + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks To display text in multi-lines or to denote the end of line use '\\n'. + * @endif + */ + result SetElement(int elementId, const Tizen::Base::String& text); + + /** + * @if OSPDEPREC + * Sets the bitmap of the element for %CustomListItem. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use CustomItem class + * @since 2.0 + * + * @return An error code + * @param[in] elementId The ID of the element + * @param[in] normalBitmap The bitmap displayed when the item is in the normal state + * @param[in] pFocusedBitmap The bitmap displayed when the item is focused + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetElement(int elementId, const Tizen::Graphics::Bitmap& normalBitmap, const Tizen::Graphics::Bitmap* pFocusedBitmap); + + + /** + * @if OSPDEPREC + * Sets the bitmap of the element for %CustomListItem. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use CustomItem class + * @since 2.0 + * + * @return An error code + * @param[in] elementId The ID of the element + * @param[in] normalBitmap The bitmap displayed when the item is in the normal state + * @param[in] pFocusedBitmap The bitmap displayed when the item is selected + * @param[in] pHighlightedBitmap The bitmap displayed when the item is highlighted + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetElement(int elementId, const Tizen::Graphics::Bitmap& normalBitmap, const Tizen::Graphics::Bitmap* pFocusedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap); + + /** + * @if OSPDEPREC + * Sets the custom element for %CustomListItem. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use CustomItem class + * @since 2.0 + * + * @return An error code + * @param[in] elementId The ID of the element + * @param[in] element The custom element + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks Do not delete @c element before the associated %CustomListItem is removed from CustomList, @n + * as ICustomListElement is constantly used while %CustomListItem is added to %CustomList. @n + * Call RefreshItem() to draw the custom element that has been set with this method. + * @endif + */ + result SetElement(int elementId, const ICustomListElement& element); + + /** + * @if OSPDEPREC + * Sets the element ID of the checkbox of %CustomListItem. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use CustomItem class + * @since 2.0 + * + * @return An error code + * @param[in] elementId The ID of the element + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetCheckBox(int elementId); + + /** + * @if OSPDEPREC + * Sets the percent value of %CustomListItem. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use CustomItem class + * @since 2.0 + * + * @return An error code + * @param[in] value The percent value of %CustomListItem @n + * The valid range of integers is from @c 0 to @c 100 + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetValue(int value); + + /** + * @if OSPDEPREC + * Gets the percentage value of %CustomListItem. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use CustomItem class + * @since 2.0 + * + * @return The percentage value, @n + * else @c -1 if a system error occurs + * @endif + */ + int GetValue(void) const; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + CustomListItem(const CustomListItem& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + CustomListItem& operator =(const CustomListItem& rhs); + +private: + + CustomListItemFormat* __pCustomListItemFormat; + _CustomListItemImpl* __pCustomListItemImpl; + + friend class _CustomListImpl; + friend class _CustomListItemImpl; + friend class _ExpandableListImpl; + friend class _SlidableListImpl; + friend class _GroupedListImpl; + friend class _SlidableGroupedListImpl; + friend class _ListImpl; + + friend class _CustomListItemDataProvider; + friend class _SlidableListItemProvider; + friend class _ListBaseImpl; + friend class _GroupedListItemDataProvider; + friend class _ExpandableListItemDataProvider; + friend class _SlidableGroupedListItemProvider; + friend class _ListItemDataProvider; +}; //CustomListItem + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_CUSTOM_LIST_ITEM_H_ diff --git a/inc/FUiCtrlCustomListItemFormat.h b/inc/FUiCtrlCustomListItemFormat.h new file mode 100644 index 0000000..1df299e --- /dev/null +++ b/inc/FUiCtrlCustomListItemFormat.h @@ -0,0 +1,315 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlCustomListItemFormat.h + * @brief This is the header file for the %CustomListItemFormat class. + * + * This header file contains the declarations of the %CustomListItemFormat class and its helper classes. + */ + +#ifndef _FUI_CTRL_CUSTOM_LIST_ITEM_FORMAT_H_ +#define _FUI_CTRL_CUSTOM_LIST_ITEM_FORMAT_H_ + +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +/** + * @if OSPDEPREC + * @class CustomListItemFormat + * @brief [Deprecated] This class defines the common behavior of an item format of a CustomList control. + * + * @deprecated This class is deprecated. There is no need to use this class. + * @since 2.0 + * + * The %CustomListItemFormat class defines the common behavior of an item format of a CustomList control. + * A custom list item is composed of elements, which can be texts and bitmaps. + * A custom list item format determines the configuration of elements of a list item + * and the position and the size of a custom list item. + * + * Note that %CustomListItemFormat needs to be created on a heap and it must be + * deleted explicitly after use. However, CustomListItem must + * be manually deleted because items are removed from memory by the List when + * it is destroyed. + * + * Refer to CustomListItem. + * @endif + */ +class _OSP_EXPORT_ CustomListItemFormat + : public Tizen::Base::Object +{ +public: + /** + * @if OSPDEPREC + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. There is no need to use this class. + * @since 2.0 + * @endif + */ + CustomListItemFormat(void); + + /** + * @if OSPDEPREC + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. There is no need to use this class. + * @since 2.0 + * + */ + virtual ~CustomListItemFormat(void); + +public: + /** + * @if OSPDEPREC + * Initializes this instance of %CustomListItemFormat. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. There is no need to use this class. + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * + */ + result Construct(void); + + /** + * @if OSPDEPREC + * Adds the %CustomListElement with bounds equal to @c rect. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. There is no need to use this class. + * @since 2.0 + * + * @return An error code + * @param[in] elementId The ID of the element + * @param[in] rect The bounds of the element + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result AddElement(int elementId, const Tizen::Graphics::Rectangle& rect); + + /** + * @if OSPDEPREC + * Adds the %CustomListElement with bounds equal to @c rect and size of the text @c textSize. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. There is no need to use this class. + * @since 2.0 + * + * @return An error code + * @param[in] elementId The ID of the element + * @param[in] rect The bounds of the element + * @param[in] textSize The size of the text + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result AddElement(int elementId, const Tizen::Graphics::Rectangle& rect, int textSize); + + /** + * @if OSPDEPREC + * Adds the %CustomListElement with bounds equal to @c rect, specifying the size of text and the color of text. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. There is no need to use this class. + * @since 2.0 + * + * @return An error code + * @param[in] elementId The ID of the element + * @param[in] rect The bounds of the element + * @param[in] textSize The size of the text + * @param[in] normalTextColor The color of the text in the normal status + * @param[in] focusedTextColor The color of the text in the focused status + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result AddElement(int elementId, const Tizen::Graphics::Rectangle& rect, int textSize, const Tizen::Graphics::Color& normalTextColor, const Tizen::Graphics::Color& focusedTextColor); + + /** + * @if OSPDEPREC + * Adds the %CustomListElement with bounds equal to @c rect, specifying the size of text and the color of text. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. There is no need to use this class. + * @since 2.0 + * + * @return An error code + * @param[in] elementId The ID of the element + * @param[in] rect The bounds of the element + * @param[in] textSize The size of the text + * @param[in] normalTextColor The color of the text in the normal status + * @param[in] focusedTextColor The color of the text in the focused status + * @param[in] highlightedTextColor The color of the text in the highlighted status + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result AddElement(int elementId, const Tizen::Graphics::Rectangle& rect, int textSize, const Tizen::Graphics::Color& normalTextColor, const Tizen::Graphics::Color& focusedTextColor, const Tizen::Graphics::Color& highlightedTextColor); + + /** + * @if OSPDEPREC + * Gets the position and size of the element. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. There is no need to use this class. + * @since 2.0 + * + * @return The bounds of the element, @n + * else a rectangle of (0, 0, -1, -1) if there is no element matching the specified ID + * @param[in] elementId The ID of the element + * @endif + */ + Tizen::Graphics::Rectangle GetElement(int elementId) const; + + /** + * @if OSPDEPREC + * Gets the ID of the first element. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. There is no need to use this class. + * @since 2.0 + * + * @return The ID of the first element, @n + * else @c -1 if a system error occurs + * @endif + */ + int GetFirstElementId(void) const; + + /** + * @if OSPDEPREC + * Gets the ID of the next element of the specified element. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. There is no need to use this class. + * @since 2.0 + * + * @return The ID of the next element of the specified element, @n + * else @c -1 if there is no element next to the element specified by @c elementId + * @param[in] elementId The ID of the element + * @endif + */ + int GetNextElementId(int elementId) const; + + /** + * @if OSPDEPREC + * Gets the ID of the first element of all enabled items. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. There is no need to use this class. + * @since 2.0 + * + * @return The ID of the first enabled element, @n + * else @c -1 if no element is enabled + * @endif + */ + int GetFirstEnabledElementId(void) const; + + /** + * @if OSPDEPREC + * Gets the ID of the next enabled element after the specified element. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. There is no need to use this class. + * @since 2.0 + * + * @return The ID of the next enabled element, @n + * else @c -1 if no element after the specified element is enabled + * @param[in] elementId The ID of the element + * @endif + */ + int GetNextEnabledElementId(int elementId) const; + + /** + * @if OSPDEPREC + * Gets the ID of the previous enabled element ID of the specified element. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. There is no need to use this class. + * @since 2.0 + * + * @return The ID of the previous enabled element, @n + * else @c -1 if no element before the specified element is enabled + * @param[in] elementId The ID of the element + * @endif + */ + int GetPreviousEnabledElementId(int elementId) const; + + /** + * @if OSPDEPREC + * Sets the event status for the specified element. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. There is no need to use this class. + * @since 2.0 + * + * @param[in] elementId The ID of the element + * @param[in] enable Set to @c true to allow the specified element to handle the events, @n + * else @c false + * @endif + */ + void SetElementEventEnabled(int elementId, bool enable); + + /** + * @if OSPDEPREC + * Checks whether the event status is enabled for the specified element. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. There is no need to use this class. + * @since 2.0 + * + * @return @c true if the event status is enabled, @n + * else @c false + * @param[in] elementId The ID of the element + * @endif + */ + bool IsElementEventEnabled(int elementId); + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + CustomListItemFormat(const CustomListItemFormat& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + CustomListItemFormat& operator =(const CustomListItemFormat& rhs); + +private: + + class _CustomListItemFormatImpl* __pCustomListItemFormatImpl; + + friend class _CustomListItemImpl; + friend class _CustomListImpl; + friend class _ExpandableListImpl; + friend class _SlidableListImpl; + friend class _GroupedListImpl; + friend class _SlidableGroupedListImpl; +}; //CustomListItemFormat + +}}} //Tizen::Ui::Controls + +#endif // _FUI_CTRL_CUSTOM_LIST_ITEM_FORMAT_H_ diff --git a/inc/FUiCtrlCustomListTypes.h b/inc/FUiCtrlCustomListTypes.h new file mode 100644 index 0000000..e2874eb --- /dev/null +++ b/inc/FUiCtrlCustomListTypes.h @@ -0,0 +1,54 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlCustomListTypes.h + * @brief This is the header file for the CustomListStyle enumeration. + * + * The CustomListStyle enumeration defines the styles for the CustomList control. + */ +#ifndef _FUI_CTRL_CUSTOM_LIST_TYPES_H_ +#define _FUI_CTRL_CUSTOM_LIST_TYPES_H_ + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @if OSPDEPREC + * @enum CustomListStyle + * + * Defines the styles of CustomList. + * + * @brief [Deprecated] + * @deprecated This enumeration is deprecated. Instead of using this enumeration, use ListAnnexStyle enumeration for CustomItem or SimpleItem class. @n + * @since 2.0 + * @endif + */ +enum CustomListStyle +{ + CUSTOM_LIST_STYLE_NORMAL = 0, /**< @if OSPDEPREC No mark, radio, or On/Off check @endif */ + CUSTOM_LIST_STYLE_RADIO, /**< @if OSPDEPREC The radio style for single selection @endif */ + CUSTOM_LIST_STYLE_RADIO_WITH_DIVIDER, /**< @if OSPDEPREC The radio style with divider for single selection @endif */ + CUSTOM_LIST_STYLE_MARK, /**< @if OSPDEPREC The mark style for multiple selection @endif */ + CUSTOM_LIST_STYLE_MARK_WITH_DIVIDER, /**< @if OSPDEPREC The mark style with divider for multiple selection @endif */ + CUSTOM_LIST_STYLE_ONOFF, /**< @if OSPDEPREC The On/Off style */ + CUSTOM_LIST_STYLE_ONOFF_WITH_DIVIDER /**< @if OSPDEPREC The On/Off style with divider */ +}; + +}}} // Tizen::Ui::Controls + +#endif //_FUI_CTRL_CUSTOM_LIST_TYPES_H_ diff --git a/inc/FUiCtrlDatePicker.h b/inc/FUiCtrlDatePicker.h new file mode 100644 index 0000000..11b88dc --- /dev/null +++ b/inc/FUiCtrlDatePicker.h @@ -0,0 +1,380 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlDatePicker.h + * @brief This is the header file for the %DatePicker class. + * + * This header file contains the declarations of the %DatePicker class. + */ +#ifndef _FUI_CTRL_DATE_PICKER_H_ +#define _FUI_CTRL_DATE_PICKER_H_ + +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @class DatePicker + * @brief This class displays a full screen %DatePicker on top of the screen. + * + * @since 2.0 + * + * @remarks One cannot change the size and the position of the %DatePicker. + * + * The %DatePicker class displays a full screen window-based selector that allows the user to select a certain date. + * + * For more information on the class features, see DatePicker, TimePicker, and DateTimePicker. + * + * The following example demonstrates how to use the %DatePicker class. + * + * @code +// Sample code for DatePickerSample.h +#include + +class DatePickerSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IDateChangeEventListener + , public Tizen::Ui::IActionEventListener +{ +public: + DatePickerSample(void) + :__pDatePicker(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + virtual result OnTerminating(void); + void ShowDatePicker(bool show); + + // IActionEventListener + virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId); + + // IDateChangeEventListener + virtual void OnDateChanged(const Tizen::Ui::Control& source, int year, int month, int day); + virtual void OnDateChangeCanceled(const Tizen::Ui::Control& source); + +private: + static const int ID_BUTTON = 101; + + Tizen::Ui::Controls::DatePicker* __pDatePicker; +}; + + * @endcode + * + * @code +// Sample code for DatePickerSample.cpp +#include "DatePickerSample.h" +#include + +using namespace Tizen::Graphics; +using namespace Tizen::Ui::Controls; + +bool +DatePickerSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +DatePickerSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of Button + Button* pButton = new Button(); + pButton->Construct(Rectangle(50, 50, 300, 200), L"Show DatePicker"); + pButton->SetActionId(ID_BUTTON); + pButton->AddActionEventListener(*this); + + // Adds the button to the form + AddControl(*pButton); + + // Creates an instance of DatePicker + __pDatePicker = new DatePicker(); + __pDatePicker->Construct(); + + // Adds an instace of IDateChangeEventListener + __pDatePicker->AddDateChangeEventListener(*this); + + // Shows the date picker after it's owner form is shown. + + return r; +} + +void +DatePickerSample::ShowDatePicker(bool show) +{ + // Changes to desired show state + __pDatePicker->SetShowState(show); + + // Calls Show() of the control + if (show) + { + __pDatePicker->Show(); + } + // Calls Show() of the container + else + { + Invalidate(true); + } +} + +result +DatePickerSample::OnTerminating(void) +{ + result r = E_SUCCESS; + + // Deallocates the date picker + delete __pDatePicker; + + return r; +} + +// IActionEventListener implementation +void +DatePickerSample::OnActionPerformed(const Control& source, int actionId) +{ + switch (actionId) + { + case ID_BUTTON: + { + ShowDatePicker(true); + } + break; + default: + break; + } +} + +// IDateChangeEventListener implementation +void +DatePickerSample::OnDateChanged(const Control& source, int year, int month, int day) +{ + // .... +} + +void +DatePickerSample::OnDateChangeCanceled(const Control& source) +{ + // .... +} + * @endcode + */ +class _OSP_EXPORT_ DatePicker + : public Tizen::Ui::Window +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + DatePicker(void); + + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~DatePicker(void); + + /** + * Adds a data change event listener instance. @n + * The added listener is called when the date of the %DatePicker is changed either through user manipulation or by calling one of its setters. + * + * @since 2.0 + * + * @param[in] listener The listener to be added + * @see IDateChangeEventListener::OnDateChanged() + * @see IDateChangeEventListener::OnDateChangeCanceled() + * @see RemoveDateChangeEventListener() + */ + void AddDateChangeEventListener(Tizen::Ui::IDateChangeEventListener& listener); + + /** + * Removes a date changed event listener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to be removed + * @see IDateChangeEventListener::OnDateChanged() + * @see IDateChangeEventListener::OnDateChangeCanceled() + * @see AddDateChangeEventListener() + */ + void RemoveDateChangeEventListener(Tizen::Ui::IDateChangeEventListener& listener); + + /** + * Initializes this instance of %DatePicker with the specified parameter. + * + * @since 2.0 + * + * @return An error code + * @param[in] title The title + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(const Tizen::Base::String& title = L""); + + /** + * Gets the current date value of the %DatePicker control. + * + * @since 2.0 + * + * @return A %DateTime instance + */ + Tizen::Base::DateTime GetDate(void) const; + + /** + * Gets the current day value of the %DatePicker control. @n + * The day value is between @c 1 to @c 31. + * + * @since 2.0 + * + * @return The current day value, @n + * else @c -1 if an error occurs + */ + int GetDay(void) const; + + /** + * Gets the current month value of the %DatePicker control. @n + * The month value is between @c 1 to @c 12. + * + * @since 2.0 + * + * @return The current month value, @n + * else @c -1 if an error occurs + */ + int GetMonth(void) const; + + /** + * Gets the current year value of the %DatePicker control. + * The year value is between @c 1 to @c 9999. + * + * @since 2.0 + * + * @return The current year value, @n + * else @c -1 if an error occurs + * + */ + int GetYear(void) const; + + /** + * Sets the date value of the %DatePicker control. + * + * @since 2.0 + * + * @param[in] date The date to be set + */ + void SetDate(const Tizen::Base::DateTime& date); + + /** + * Sets the date value of the %DatePicker control with the current date. + * + * @since 2.0 + */ + void SetCurrentDate(void); + + /** + * Sets the year value. @n + * The year value should be between @c 1 and @c 9999. + * + * @since 2.0 + * + * @return An error code + * @param[in] year The year value + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified year value is invalid. + */ + result SetYear(int year); + + /** + * Sets the month value. @n + * The month value should be between @c 1 and @c 12. + * + * @since 2.0 + * + * @return An error code + * @param[in] month The month value + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified month value is invalid. + */ + result SetMonth(int month); + + /** + * Sets the day value. @n + * The day value should be between @c 1 and @c 31. + * + * @since 2.0 + * + * @return An error code + * @param[in] day The day value + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c day is invalid. + */ + result SetDay(int day); + + /** + * Sets the valid year range. + * The range should be set in between @c 1 and @c 9999. + * + * @since 2.0 + * + * @return An error code + * @param[in] minYear The minimum year for the valid range + * @param[in] maxYear The maximum year for the valid range + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The given year range is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result SetYearRange(int minYear, int maxYear); + + /** + * Gets the valid year range. + * + * @since 2.0 + * + * @return An error code + * @param[out] minYear The minimum year for the valid range + * @param[out] maxYear The maximum year for the valid range + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result GetYearRange(int& minYear, int& maxYear) const; + +protected: + friend class _DatePickerImpl; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + DatePicker(const DatePicker& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + DatePicker& operator =(const DatePicker& rhs); + +}; // DatePicker + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_DATE_PICKER_H_ diff --git a/inc/FUiCtrlDateTimePicker.h b/inc/FUiCtrlDateTimePicker.h new file mode 100644 index 0000000..543246e --- /dev/null +++ b/inc/FUiCtrlDateTimePicker.h @@ -0,0 +1,454 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlDateTimePicker.h + * @brief This is the header file for the %DateTimePicker class. + * + * This header file contains the declarations of the %DateTimePicker class. + */ +#ifndef _FUI_CTRL_DATE_TIME_PICKER_H_ +#define _FUI_CTRL_DATE_TIME_PICKER_H_ + +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @class DateTimePicker + * @brief This class displays a full screen %DateTimePicker on top of the screen. + * + * @since 2.0 + * + * The %DateTimePicker class displays a full screen window-based selector that allows the user to select a certain date and time. + * + * For more information on the class features, see DatePicker, TimePicker, and DateTimePicker. + * + * The following example demonstrates how to use the %DateTimePicker class. + * + * @code +// Sample code for DateTimePickerSample.h +#include + +class DateTimePickerSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IDateTimeChangeEventListener + , public Tizen::Ui::IActionEventListener +{ +public: + DateTimePickerSample(void) + :__pDateTimePicker(null){} + + bool Initialize(void); + void ShowDateTimePicker(bool show); + virtual result OnInitializing(void); + virtual result OnTerminating(void); + + // IActionEventListener + virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId); + + // IDateTimeChangeEventListener + virtual void OnDateTimeChanged(const Tizen::Ui::Control& source, int year, int month, int day, int hour, int minute); + virtual void OnDateTimeChangeCanceled(const Tizen::Ui::Control& source); + +private: + static const int ID_BUTTON = 101; + + Tizen::Ui::Controls::DateTimePicker* __pDateTimePicker; +}; + + * @endcode + * + * @code +// Sample code for DateTimePickerSample.cpp +#include + +#include "DateTimePickerSample.h" + +using namespace Tizen::Graphics; +using namespace Tizen::Ui::Controls; + +bool +DateTimePickerSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +DateTimePickerSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of Button + Button* pButton = new Button(); + pButton->Construct(Rectangle(50, 50, 300, 200), L"Show DateTimePicker"); + pButton->SetActionId(ID_BUTTON); + pButton->AddActionEventListener(*this); + + // Adds the button to the form + AddControl(*pButton); + + // Creates an instance of DateTimePicker + __pDateTimePicker = new DateTimePicker(); + __pDateTimePicker->Construct(); + + // Adds an instace of IDateTimeChangeEventListener + __pDateTimePicker->AddDateTimeChangeEventListener(*this); + + // Shows the date time picker after it's owner form is shown. + + return r; +} + +void +DateTimePickerSample::ShowDateTimePicker(bool show) +{ + // Changes to desired show state + __pDateTimePicker->SetShowState(show); + + // Calls Show() of the control + if (show) + { + __pDateTimePicker->Show(); + } + // Calls Show() of the container + else + { + Invalidate(true); + } +} + +result +DateTimePickerSample::OnTerminating(void) +{ + result r = E_SUCCESS; + + // Deallocates the date time picker + delete __pDateTimePicker; + + return r; +} + +// IActionEventListener implementation +void +DateTimePickerSample::OnActionPerformed(const Control& source, int actionId) +{ + switch (actionId) + { + case ID_BUTTON: + { + ShowDateTimePicker(true); + } + break; + default: + break; + } +} + +// IDateTimeChangeEventListener implementation +void +DateTimePickerSample::OnDateTimeChanged(const Control& source, int year, int month, int day, int hour, int minute) +{ + // .... +} + +void +DateTimePickerSample::OnDateTimeChangeCanceled(const Control& source) +{ + // .... +} + * @endcode + */ + +class _OSP_EXPORT_ DateTimePicker + : public Tizen::Ui::Window +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + DateTimePicker(void); + + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~DateTimePicker(void); + + /** + * Adds the IDateTimeChangeEventListener instance. @n + * The added listener gets notified when date or time of the %DateTimePicker instance is changed either by user manipulation or by calling one of its + * setters. + * + * @since 2.0 + * + * @param[in] listener The listener to be added + * @see IDateTimeChangeEventListener::OnDateTimeChanged() + * @see IDateTimeChangeEventListener::OnDateTimeChangeCanceled() + * @see RemoveDateTimeChangeEventListener() + */ + void AddDateTimeChangeEventListener(Tizen::Ui::IDateTimeChangeEventListener& listener); + + /** + * Removes the IDateTimeChangeEventListener instance. @n + * The removed listener is not called even when the date and time change events are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to be removed + * @see IDateTimeChangeEventListener::OnDateTimeChanged() + * @see IDateTimeChangeEventListener::OnDateTimeChangeCanceled() + * @see AddDateTimeChangeEventListener() + */ + void RemoveDateTimeChangeEventListener(Tizen::Ui::IDateTimeChangeEventListener& listener); + + /** + * Initializes this instance of %DateTimePicker to the current date and time in the wall time mode. + * + * @since 2.0 + * + * @return An error code + * @param[in] title The title + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(const Tizen::Base::String& title = L""); + + /** + * Sets the date and time value of the %DateTimePicker control. + * + * @since 2.0 + * + * @param[in] dateTime The date and time to be set + */ + void SetDateTime(const Tizen::Base::DateTime& dateTime); + + /** + * Sets the date and time value of the %DateTimePicker control with the current date and time in the Coordinated Universal Time (UTC) mode. + * + * @since 2.0 + */ + void SetCurrentDateTime(void); + + /** + * Sets the year value of the %DateTimePicker control. + * + * @since 2.0 + * + * @return An error code + * @param[in] year The year value + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c year value is invalid. + * @exception E_SYSTEM A system error has occurred. + * @exception E_OUT_OF_RANGE The value of the argument is outside the valid range defined by SetYearRange(). + * @remarks The specified @c year should be in the range set by SetYearRange(). The default year range is from @c 1 to @c 9999. + * @see SetYearRange() + */ + result SetYear(int year); + + /** + * Sets the month value. @n + * The month value should be between @c 1 and @c 12. + * + * @since 2.0 + * + * @return An error code + * @param[in] month The month value + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c month value is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result SetMonth(int month); + + /** + * Sets the day value. + * The day value should be between @c 1 and @c 31. + * + * @since 2.0 + * + * @return An error code + * @param[in] day The day value + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c day value is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result SetDay(int day); + + /** + * Sets the hour value of the %DateTimePicker control. + * The hour value should be between @c 0 and @c 23. + * + * @since 2.0 + * + * @return An error code + * @param[in] hour The hour value to be set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c hour value is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result SetHour(int hour); + + /** + * Sets the minute value of the %DateTimePicker control. + * The minute value should be between @c 0 and @c 59. + * + * @since 2.0 + * + * @return An error code + * @param[in] minute The minute value to be set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c minute value is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result SetMinute(int minute); + + /** + * Gets the current date and time value of the %DateTimePicker control. + * + * @since 2.0 + * + * @return The current date and time + * @remarks This method does not work when %DateTimePicker style is DATETIME_PICKER_STYLE_FROMTO. + */ + Tizen::Base::DateTime GetDateTime(void) const; + + /** + * Gets the current year value of %DateTimePicker. @n + * The year value should be between @c 1 to @c 9999. + * + * @since 2.0 + * + * @return The current year value, @n + * else @c -1 if an error occurs + */ + int GetYear(void) const; + + /** + * Gets the current month value of %DateTimePicker. @n + * The month value should be between @c 1 to @c 12. + * + * @since 2.0 + * + * @return The current month value, @n + * else @c -1 if an error occurs + */ + int GetMonth(void) const; + + /** + * Gets the current day value of %DateTimePicker. @n + * The day value should be between @c 1 to @c 31. + * + * @since 2.0 + * + * @return The current day value , @n + * else @c -1 if an error occurs + */ + int GetDay(void) const; + + /** + * Gets the current hour value of the %DateTimePicker control. @n + * The hour value should be between @c 0 to @c 23. + * + * @since 2.0 + * + * @return The current hour value, @n + * else @c -1 if an error occurs + * @remarks Whether the time display mode is 12-hour or 24-hour, this method always returns the hour value ranging from @c 0 to @c 23. + */ + int GetHour(void) const; + + /** + * Gets the current minute value of the %DateTimePicker control. + * + * @since 2.0 + * + * @return The current minute value, @n + * else @c -1 if an error occurs + */ + int GetMinute(void) const; + + /** + * Sets the 12-hour or 24-hour display mode of the %DateTimePicker control. + * + * @since 2.0 + */ + void Set24HourNotationEnabled(bool enable); + + /** + * Checks whether the 24-hour notation is enabled for the %DateTimePicker control. @n + * This can be 12-hour or 24-hour mode. + * + * @since 2.0 + * + * @return @c true if the 24-hour notation is enabled, @n + * else @c false if the 12-hour notation is enabled + */ + bool Is24HourNotationEnabled(void) const; + + /** + * Sets the valid year range. @n + * The range should be set between @c 1 and @c 9999. + * + * @since 2.0 + * + * @return An error code + * @param[in] minYear The minimum year for the valid range + * @param[in] maxYear The maximum year for the valid range + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified year range is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result SetYearRange(int minYear, int maxYear); + + /** + * Gets the valid year range. + * + * @since 2.0 + * + * @return An error code + * @param[out] minYear The minimum year for the valid range + * @param[out] maxYear The maximum year for the valid range + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result GetYearRange(int& minYear, int& maxYear) const; + +protected: + friend class _DateTimePickerImpl; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + DateTimePicker(const DateTimePicker& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + DateTimePicker& operator =(const DateTimePicker& rhs); + +}; // DateTimePicker + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_DATE_TIME_PICKER_H_ diff --git a/inc/FUiCtrlEditArea.h b/inc/FUiCtrlEditArea.h new file mode 100644 index 0000000..b424610 --- /dev/null +++ b/inc/FUiCtrlEditArea.h @@ -0,0 +1,1300 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlEditArea.h + * @brief This is the header file for the %EditArea class. + * + * This header file contains the declarations of the %EditArea class and its helper classes. + */ + +#ifndef _FUI_CTRL_EDIT_AREA_H_ +#define _FUI_CTRL_EDIT_AREA_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Locales +{ +class Locale; +}} // Tizen::Locales + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @class EditArea + * @brief This class defines the common behavior for the %EditArea control. + * + * @since 2.0 + * + * The %EditArea class displays a multi-line text editor. + * + * For more information on the class features, see EditArea and EditField. + * + * The following example demonstrates how to use the %EditArea class. + * + * @code +// Sample code for EditAreaSample.h +#include + +class EditAreaSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::ITextEventListener +{ +public: + EditAreaSample(void) + : __pEditArea(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + + // ITextEventListener + virtual void OnTextValueChanged(const Tizen::Ui::Control& source); + virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source); + +private: + Tizen::Ui::Controls::EditArea* __pEditArea; +}; + * @endcode + * + * @code +// Sample code for EditAreaSample.cpp +#include + +#include "EditAreaSample.h" + +using namespace Tizen::Graphics; +using namespace Tizen::Ui::Controls; + +bool +EditAreaSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +EditAreaSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of EditArea + __pEditArea = new EditArea(); + __pEditArea->Construct(Rectangle(50, 100, 400, 150)); + __pEditArea->AddTextEventListener(*this); + + // Adds the edit area to the form + AddControl(*__pEditArea); + + return r; +} + +// ITextEventListener implementation +void +EditAreaSample::OnTextValueChanged(const Tizen::Ui::Control& source) +{ + // .... +} + +void +EditAreaSample::OnTextValueChangeCanceled(const Tizen::Ui::Control& source) +{ + // .... +} + * @endcode + * + */ +class _OSP_EXPORT_ EditArea + : public Tizen::Ui::Control +{ +// Lifecycle +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + EditArea(void); + + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~EditArea(void); + + /** + * Initializes this instance of the %EditArea control with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect An instance of the Graphics::Rectangle class @n + * This instance represents the x and y coordinates of the top-left corner of the created window along with + * the width and height of the control. + * @param[in] inputStyle Determines whether the fullscreen keypad or overlay keypad is displayed + * @param[in] limitLength The maximum limit of the length of the text that can be displayed by %EditArea + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid.@n + * The specified @c limitLength is less than or equal to @c 0. @n + * The @c rect.width or the @c rect.height is less than 0. + * @exception E_SYSTEM A system error has occurred. + * @remarks Some methods of the control will only work as expected when it becomes 'displayable'. + * For more information, see Control::IsDisplayable() @n + * The orientation of the full-screen style keypad is determined by the current device orientation. + */ + result Construct(const Tizen::Graphics::Rectangle& rect, InputStyle inputStyle = INPUT_STYLE_FULLSCREEN, int limitLength = 1000); + +public: + /** + * Gets the horizontal text alignment. + * + * @since 2.0 + * + * @return The horizontal text alignment + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetTextAlignment() + */ + HorizontalAlignment GetTextAlignment(void) const; + + /** + * Sets the horizontal text alignment. + * + * @since 2.0 + * + * @return An error code + * @param[in] alignment The horizontal text alignment + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetTextAlignment() + */ + result SetTextAlignment(HorizontalAlignment alignment); + + /** + * Checks whether the view mode is enabled. + * + * @since 2.0 + * + * @return @c true if the view mode is enabled, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetViewModeEnabled() + */ + bool IsViewModeEnabled(void) const; + + /** + * Enables or disables the view mode. + * + * @since 2.0 + * + * @return An error code + * @param[in] enable Set to @c true to enable the view mode, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks When the view mode is enabled, the auto-detected links will be displayed as linked text. + * @see IsViewModeEnabled() + */ + result SetViewModeEnabled(bool enable); + + /** + * Sets the auto-link mask. + * + * @since 2.0 + * + * @return An error code + * @param[in] autoLinks The auto-link mask @n + * Multiple link types can be combined using bitwise OR (see Tizen::Base::Utility::LinkType). @n + * For more information, see AutoLink Detection. + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation.@n + * The operation is not supported if the input style is not INPUT_STYLE_OVERLAY. + * @exception E_SYSTEM A system error has occurred. + * @remarks When @c autoLinks is set to zero, the auto-link detection is disabled. + * @see Tizen::Base::Utility::LinkType + * @see GetAutoLinkMask() + * @see IsViewModeEnabled() + * @see SetViewModeEnabled() + */ + result SetAutoLinkMask(unsigned long autoLinks); + + /** + * Gets the auto-link mask. + * + * @since 2.0 + * + * @return The auto-link mask + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation.@n + * This operation is not supported if the input style is not INPUT_STYLE_OVERLAY. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult()() method. + * @see SetAutoLinkMask() + */ + unsigned long GetAutoLinkMask(void) const; + + /** + * Adds the specified link event listener. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @remarks This method is supported when the input style is @c INPUT_STYLE_OVERLAY.@n + * The added listener will be notified when the links are selected by the user. + * @see RemoveUiLinkEventListener() + */ + void AddUiLinkEventListener(Tizen::Ui::IUiLinkEventListener& listener); + + /** + * Removes the specified link event listener. @n + * The removed listener cannot listen to the events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @remarks This method is supported when the input style is @c INPUT_STYLE_OVERLAY. + * @see AddUiLinkEventListener() + */ + void RemoveUiLinkEventListener(Tizen::Ui::IUiLinkEventListener& listener); + + /** + * Gets the line spacing. + * + * @since 2.0 + * + * @return The line spacing, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult()() method. + * @see SetLineSpacing() + */ + int GetLineSpacing(void) const; + + /** + * Sets the line spacing. @n + * The line spacing is determined by multiplying @c multiplier to the default line spacing and adding @c extra. + * + * @code + * The line spacing = (default line spacing) * multiplier + extra + * @endcode + * @since 2.0 + * + * @return An error code + * @param[in] multiplier The line spacing multiplier + * @param[in] extra The extra line spacing + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid, or @n + * the specified line spacing value cannot be supported. + * @exception E_SYSTEM A system error has occurred. + * @see GetLineSpacing() + */ + result SetLineSpacing(int multiplier, int extra); + + /** + * Gets the margin value of the specified margin type. + * + * @since 2.0 + * + * @return The margin value, @n + * else @c -1 if an error occurs + * @param[in] marginType The margin type + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult()() method. + * @see SetMargin() + */ + int GetMargin(EditMarginType marginType) const; + + /** + * Sets the margin value for the specified margin type. + * + * @since 2.0 + * + * @return An error code + * @param[in] marginType The margin type + * @param[in] margin The margin value to set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The specified @c margin cannot be a negative integer. + * @exception E_SYSTEM A system error has occurred. + * @see GetMargin() + */ + result SetMargin(EditMarginType marginType, int margin); + + /** + * Enables or disables the keypad action. + * + * @since 2.0 + * @return An error code + * @param[in] enable Set to @c true to enable the keypad action, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The underlying input method does not support this operation. + * @remarks Depending on the value of input param, the enter key have a enable or disable look accordingly. + */ + result SetKeypadActionEnabled(bool enable); + + /** + * Checks whether the keypad action is enabled. + * + * @since 2.0 + * @return @c true if the keypad action is enabled, @n + * else @c false + */ + bool IsKeypadActionEnabled(void) const; + + /** + * Gets the keypad action type. + * + * @since 2.0 + * + * @return The keypad action + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation.@n + * This operation is not supported if the input style is not INPUT_STYLE_OVERLAY. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult()() method. + */ + Tizen::Ui::KeypadAction GetKeypadAction(void) const; + + /** + * Sets the keypad action type. + * + * @since 2.0 + * + * @return An error code + * @param[in] keypadAction The keypad action + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation.@n + * This operation is not supported if the input style is not INPUT_STYLE_OVERLAY. + * @exception E_SYSTEM A system error has occurred. + * @remarks Depending on the value of @c keypadAction specified, the enter key label of the keypad will change accordingly. + */ + result SetKeypadAction(Tizen::Ui::KeypadAction keypadAction); + + /** + * Gets the keypad style. + * + * @since 2.0 + * + * @return The keypad style + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetKeypadStyle() + */ + KeypadStyle GetKeypadStyle(void) const; + + /** + * Sets the keypad style. + * + * @since 2.0 + * + * @return An error code + * @param[in] keypadStyle The keypad style + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The specified @c keypadStyle cannot be @c KEYPAD_STYLE_PASSWORD. + * @exception E_SYSTEM A system error has occurred. + * @remarks Depending on the value of the specified @c keypadStyle, the keypad's layout will change accordingly. + * @see GetKeypadStyle() + */ + result SetKeypadStyle(KeypadStyle keypadStyle); + + /** + * Checks whether the text prediction is enabled. + * + * @since 2.0 + * @return @c true if the text prediction is enabled, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @see SetTextPredictionEnabled() + */ + bool IsTextPredictionEnabled(void) const; + + /** + * Enables or disables the text prediction. + * + * @since 2.0 + * @param[in] enable Set to @c true to enable the text prediction, @n + * else @c false + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. + * @see IsTextPredictionEnabled() + */ + result SetTextPredictionEnabled(bool enable); + + /** + * Sets the visibility of the command buttons of the overlay style keypad. + * + * @since 2.0 + * + * @return An error code + * @param[in] visible Set to @c true to make the overlay keypad command buttons visible, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation.@n + * This operation is not supported if the input style is not INPUT_STYLE_OVERLAY. + * @exception E_SYSTEM A system error has occurred. + */ + result SetOverlayKeypadCommandButtonVisible(bool visible); + + /** + * Checks whether the command buttons of the overlay style keypad are visible. + * + * @since 2.0 + * + * @return @c true if the overlay command buttons are set to be visible, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation.@n + * This operation is not supported if the input style is not INPUT_STYLE_OVERLAY. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult()() method. + */ + bool IsOverlayCommandButtonVisible(void) const; + + /** + * Hides the keypad. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation.@n + * This operation is not supported if the input style is not INPUT_STYLE_OVERLAY. + * @exception E_SYSTEM A system error has occurred. + * @see ShowKeypad() + */ + result HideKeypad(void); + + /** + * Gets the text size. + * + * @since 2.0 + * + * @return The size of the text, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetTextSize() + */ + int GetTextSize(void) const; + + /** + * Sets the text size. + * + * @since 2.0 + * + * @return An error code + * @param[in] size The text size + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The specified @c size cannot be a negative integer. + * @exception E_SYSTEM A system error has occurred. + * @see GetTextSize() + */ + result SetTextSize(int size); + + /** + * Gets the color of %EditArea for the specified status. + * + * @since 2.0 + * + * @return The color, @n + * else RGBA (0,0,0,0) if an error occurs + * @param[in] status The status + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetColor(EditStatus status) const; + + /** + * Gets the text color of the specified text color type. + * + * @since 2.0 + * + * @return The color, @n + * else RGBA (0,0,0,0) if an error occurs + * @param[in] type The text color type + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetTextColor() + */ + Tizen::Graphics::Color GetTextColor(EditTextColor type) const; + + /** + * Sets the background bitmap of the %EditArea control for the specified status. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The status + * @param[in] bitmap The background bitmap + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetBackgroundBitmap(EditStatus status, const Tizen::Graphics::Bitmap& bitmap); + + /** + * Sets the color of the %EditArea control for the specified status. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The status + * @param[in] color The color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetColor() + */ + result SetColor(EditStatus status, const Tizen::Graphics::Color& color); + + /** + * Sets the text color of the %EditArea control for the specified text color type. + * + * @since 2.0 + * + * @return An error code + * @param[in] type The text color type + * @param[in] color The text color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetTextColor() + */ + result SetTextColor(EditTextColor type, const Tizen::Graphics::Color& color); + + /** + * Gets a portion of text that is displayed by the %EditArea control. + * + * @since 2.0 + * + * @return The specified portion of the text, @n + * else an empty string if an error occurs + * @param[in] start The starting index of the range + * @param[in] end The last index of the range + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified index is outside the bounds of the data structure. @n + * The index is greater than the number of elements or less than @c 0. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult()() method. + * @see SetText() + */ + Tizen::Base::String GetText(int start, int end) const; + + /** + * Adds the specified keypad event listener. @n + * The added listener is notified when the keypad associated with the %EditArea control is opened or closed. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @see RemoveKeypadEventListener() + */ + void AddKeypadEventListener(Tizen::Ui::IKeypadEventListener& listener); + + /** + * Removes the specified keypad event listener. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @see AddKeypadEventListener() + */ + void RemoveKeypadEventListener(Tizen::Ui::IKeypadEventListener& listener); + + /** + * Adds a text block event listener. + * The added listener is notified when the text block is selected. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @remarks Programmatically modifying the text block does not cause the text block selection event to fire. + * @see RemoveTextBlockEventListener() + */ + void AddTextBlockEventListener(Tizen::Ui::ITextBlockEventListener& listener); + + /** + * Removes the specified text block event listener. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @see AddTextBlockEventListener() + */ + void RemoveTextBlockEventListener(Tizen::Ui::ITextBlockEventListener& listener); + + /** + * Adds a listener instance. @n + * The added listener can listen to the text related events. + * + * @since 2.0 + * + * @param[in] listener The listener to be added + * @see RemoveTextEventListener() + */ + void AddTextEventListener(Tizen::Ui::ITextEventListener& listener); + + /** + * Removes a listener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to be removed + * @see AddTextEventListener() + */ + void RemoveTextEventListener(Tizen::Ui::ITextEventListener& listener); + + /** + * Adds a listener instance to listen to the scroll panel events. + * + * @since 2.0 + * + * @param[in] listener The listener to be added + * @remarks To listen to scroll panel events, the parent of the %EditArea control must be an instance of ScrollPanel. @n + * When OnOverlayControlCreated() or OnOvelayControlClosed() is called, the application resets the bounds of the controls placed + * within the %ScrollPanel. %ScrollPanel is automatically redrawn after this method is called. + * @see RemoveScrollPanelEventListener() + */ + void AddScrollPanelEventListener(Tizen::Ui::IScrollPanelEventListener& listener); + + /** + * Removes the scroll panel event listener. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to be removed + * @see AddScrollPanelEventListener() + */ + void RemoveScrollPanelEventListener(Tizen::Ui::IScrollPanelEventListener& listener); + + /** + * Adds a listener instance. @n + * The added listener is notified when the action event is fire by the command buttons of the keypad. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @see RemoveActionEventListener() + */ + void AddActionEventListener(Tizen::Ui::IActionEventListener& listener); + + + /** + * Removes a listener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @see AddActionEventListener() + */ + void RemoveActionEventListener(Tizen::Ui::IActionEventListener& listener); + + /** + * Adds a listener instance for language events. @n + * The added listener is notified when the input language is changed. + * + * @since 2.0 + * + * @param[in] listener The listener to be added + * @remarks The application can recognize when the language is changed from the keypad by adding Tizen::Ui::ILanguageEventListener. + * @see RemoveLanguageEventListener() + */ + void AddLanguageEventListener(Tizen::Ui::ILanguageEventListener& listener); + + /** + * Removes the specified listener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to be removed + * @see AddLanguageEventListener() + */ + void RemoveLanguageEventListener(Tizen::Ui::ILanguageEventListener& listener); + + /** + * Gets the remaining length of the %EditArea control. + * + * @since 2.0 + * + * @return The remaining length of the %EditArea control, @n + * else @c -1 if an error occurs. + */ + int GetRemainingLength(void) const; + + /** + * Enables or disables the lowercase mode. + * + * @since 2.0 + * + * @param[in] enable Set to @c true to enable the lowercase mode, @n + * else @c false + */ + void SetLowerCaseModeEnabled(bool enable); + + /** + * Checks whether the lowercase mode is enabled. + * + * @since 2.0 + * + * @return @c true if the lowercase mode is enabled, @n + * else @c false + */ + bool IsLowerCaseModeEnabled(void) const; + + /** + * @if OSPDEPREC + * Sets the input mode category. + * + * @brief [Deprecated] + * @deprecated We no longer provide a method to specify the list of styles which the user can set the keypad to, @n + * or the current mode to initially set the keypad to, from this list. It is recommended to use SetKeypadStyle() method instead. + * @since 2.0 + * + * @return An error code + * @param[in] categories The categories to be set @n + * Multiple input categories can be combined using bitwise OR (see Tizen::Ui::Controls::EditInputModeCategory). + * @param[in] enable The category value to be set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input mode category is invalid. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation @n + * The specified @c categories cannot be supported with the current keypad style. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetInputModeCategory(unsigned long categories, bool enable); + + /** + * @if OSPDEPREC + * Sets the current input mode category. + * + * @brief [Deprecated] + * @deprecated We no longer provide a method to specify the list of styles which the user can set the keypad to, @n + * or the current mode to initially set the keypad to, from this list. It is recommended to use SetKeypadStyle() method instead. + * @since 2.0 + * + * @return An error code + * @param[in] inputModeCategory An item of input category + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetCurrentInputModeCategory(EditInputModeCategory inputModeCategory); + + /** + * @if OSPDEPREC + * Gets the input mode category. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because we no longer provide a method to specify the list of styles @n + * which the user can set the keypad to. It is recommended to use GetKeypadStyle() method instead. + * @since 2.0 + * + * @return A bitwise combination of Tizen::Ui::Controls::EditInputModeCategory, @n + * else @c EDIT_INPUTMODE_ALPHA if an error occurs + * @endif + */ + unsigned long GetInputModeCategory(void) const; + + /** + * @if OSPDEPREC + * Gets the current input mode category. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because we no longer provide a method to specify the list of styles @n + * which the user can set the keypad to. It is recommended to use GetKeypadStyle() method instead. + * @since 2.0 + * + * @return The current input mode category + * @endif + */ + EditInputModeCategory GetCurrentInputModeCategory(void) const; + + /** + * Sets the cursor at the specified position. + * + * @since 2.0 + * + * @return An error code + * @param[in] position The cursor position that is to be set + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c position is less than @c 0 or greater than the maximum length. + * @exception E_SYSTEM A system error has occurred. + */ + result SetCursorPosition(int position); + + /** + * Gets the cursor position. + * + * @since 2.0 + * + * @return The current cursor position, @n + * else @c -1 if an error occurs + */ + int GetCursorPosition(void) const; + + /** + * Gets the text that is displayed by the %EditArea control. + * + * @since 2.0 + * + * @return The text of the %EditArea control, @n + * else an empty string if an error occurs + */ + Tizen::Base::String GetText(void) const; + + /** + * Gets the length of the text that is displayed by the %EditArea control. + * + * @since 2.0 + * + * @return The length of the text, @n + * else @c -1 if an error occurs + */ + int GetTextLength(void) const; + + /** + * Sets the text of the %EditArea control. + * + * @since 2.0 + * + * @param[in] text The text that needs to be displayed by the %EditArea control. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The length of the specified @c text exceeds the system limitation or the limit length. + * @exception E_SYSTEM A system error has occurred. + * @remarks Use @htmlonly '\n' @endhtmlonly to denote the end of the line. + */ + result SetText(const Tizen::Base::String& text); + + /** + * Inserts the specified text at the current cursor position. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text to be inserted + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks Use @htmlonly '\n' @endhtmlonly to denote the end of the line.@n + */ + result InsertTextAtCursorPosition(const Tizen::Base::String& text); + + /** + * Appends the specified text at the end of the existing text. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text to be appended + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks Use @htmlonly '\n' @endhtmlonly to denote the end of the line.@n + */ + result AppendText(const Tizen::Base::String& text); + + /** + * Appends the specified character at the end of the existing text. + * + * @since 2.0 + * + * @return An error code + * @param[in] character The character to be appended + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The method modifies the text buffer that is managed by the %EditArea control. To display the + * changes, the control must be drawn again. + */ + result AppendCharacter(const Tizen::Base::Character& character); + + /** + * Inserts the text that will be displayed by bitmap at the specified text position. + * + * @since 2.0 + * + * @return An error code + * @param[in] position The position to insert the text + * @param[in] text The text to be inserted + * @param[in] textImage The alternate bitmap to be drawn + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c position is outside the valid range. @n + * Either the specified @c position is greater than the number of existing text in the %EditArea or less than @c 0. + * @exception E_MAX_EXCEEDED The length of the specified @c text exceeds the maximum length of the text that can be displayed by %EditArea. + * @remarks The method modifies the text buffer that is managed by the %EditArea control. @n + * To display the changes, the control must be drawn again. The text to be inserted will be displayed by @c textImage. + */ + result InsertTextAt(int position, const Tizen::Base::String& text, const Tizen::Graphics::Bitmap& textImage); + + /** + * Appends the text that will be displayed by bitmap at the end of the existing text. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text to be appended + * @param[in] textImage The alternate bitmap to be drawn + * @exception E_SUCCESS The method is successful. + * @exception E_MAX_EXCEEDED The length of the specified @c text exceeds the maximum length of the text that can be displayed by %EditArea. + * @remarks The method modifies the text buffer that is managed by the %EditArea control. @n + * To display the changes, the control must be drawn again. The text to be appended will be displayed by @c textImage. + */ + result AppendText(const Tizen::Base::String& text, const Tizen::Graphics::Bitmap& textImage); + + /** + * Clears the text that is displayed by the %EditArea control. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The method modifies the text buffer that is managed by the %EditArea control. To display the + * changes, the control must be drawn again. + */ + result Clear(void); + + /** + * Deletes a character at the current cursor position. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The method modifies the text buffer that is managed by the %EditArea control. To display the + * changes, the control must be drawn again. + */ + result DeleteCharacterAtCursorPosition(void); + + /** + * Gets the range of the current text block. + * + * @since 2.0 + * + * @param[out] start The first index of the current text block + * @param[out] end The last index of the current text block + */ + void GetCurrentTextRange(int& start, int& end) const; + + /** + * Displays the guide text when there is no text in the %EditArea control. + * + * @since 2.0 + * + * @param[in] guideText The guide text + * @remarks This is the default text that is displayed in the %EditArea control when the focus is given to it. + */ + void SetGuideText(const Tizen::Base::String& guideText); + + /** + * Gets the guide text. + * + * @since 2.0 + * + * @return The guide text, @n + * else an empty string if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetGuideText() + */ + Tizen::Base::String GetGuideText(void) const; + + /** + * Gets the text color of the guide text. + * + * @since 2.0 + * + * @return The guide text color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetGuideTextColor() + */ + Tizen::Graphics::Color GetGuideTextColor(void) const; + + /** + * Sets the text color of the guide text. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The guide text color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetGuideTextColor() + */ + result SetGuideTextColor(const Tizen::Graphics::Color& color); + + /** + * Enables or disables the keypad. + * + * @since 2.0 + * + * @param[in] enable Set to @c true to enable the keypad, @n + * else @c false + */ + void SetKeypadEnabled(bool enable); + + /** + * Checks whether the keypad is enabled. + * + * @since 2.0 + * + * @return @c true if the keypad is enabled, @n + * else @c false + */ + bool IsKeypadEnabled(void) const; + + /** + * Shows the keypad. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method is supported only when the input style is INPUT_STYLE_OVERLAY. + */ + result ShowKeypad(void); + + /** + * Gets the line count. + * + * @since 2.0 + * + * @return The line count + */ + int GetTextLineCount(void) const; + + /** + * Gets the range of the current text block. + * + * @since 2.0 + * + * @param[out] start The starting index of the current text block + * @param[out] end The end index of the current text block + */ + void GetBlockRange(int& start, int& end) const; + + /** + * Begins the text block from the current cursor position. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks Move the cursor position to the end of the text block. + * @see SetCursorPosition() + * @see ReleaseBlock() + * @see IsBlocked() + */ + result BeginBlock(void); + + /** + * Releases the text block. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see BeginBlock() + * @see IsBlocked() + */ + result ReleaseBlock(void); + + /** + * Checks whether a portion of the text is blocked. + * + * @since 2.0 + * + * @return @c true if the text is blocked, @n + * else @c false + * @see BeginBlock() + * @see ReleaseBlock() + */ + bool IsBlocked(void) const; + + /** + * Copies the text block to the clipboard. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see Cut(), Paste(), Remove() + */ + result Copy(void); + + /** + * Cuts the text block and copies it to the clipboard. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see Copy(), Remove(), Paste() + */ + result Cut(void); + + /** + * Pastes the copied text at the cursor position. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see Copy(), Cut(), Remove() + */ + result Paste(void); + + /** + * Removes the text that is marked by the text block. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see Copy(), Cut(), Paste() + */ + result Remove(void); + + /** + * Checks whether the text in the %EditArea control has been clipped. + * + * @since 2.0 + * + * @return @c true if the text has been clipped, @n + * else @c false + * @remarks 'Clipped' means that the text has been copied to the clipboard. + * @see Copy(), Cut(), Paste(), Remove() + */ + bool IsClipped(void) const; + + /** + * Sets the command button properties of the keypad. + * + * @since 2.0 + * + * @return An error code + * @param[in] position The position of the command button + * @param[in] text The label of the command button + * @param[in] actionId The action ID + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method is supported when the input style is @c INPUT_STYLE_OVERLAY. + */ + result SetOverlayKeypadCommandButton(CommandButtonPosition position, const Tizen::Base::String& text, int actionId); + + /** + * Gets the text of the specified command button. + * + * @since 2.0 + * + * @return The text of the specified command button + * @param[in] position The position of the command button + * @remarks This method is supported when the input style is @c INPUT_STYLE_OVERLAY. + */ + Tizen::Base::String GetOverlayKeypadCommandButtonText(CommandButtonPosition position) const; + + /** + * Gets the action ID of the specified command button. + * + * @since 2.0 + * + * @return The action ID of the specified command button + * @param[in] position The position of the command button + * @remarks This method is supported when the input style is @c INPUT_STYLE_OVERLAY. + */ + int GetOverlayKeypadCommandButtonActionId(CommandButtonPosition position) const; + + /** + * Sets the input language. + * + * @since 2.0 + * + * @return An error code + * @param[in] languageCode The language to be set + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The application can set the language of the current keypad that is associated with the current %EditArea. @n + * This method only works if the language to set is supported by the current preloaded keypad. + */ + result SetCurrentLanguage(Tizen::Locales::LanguageCode languageCode); + + /** + * Gets the current input language. + * + * @since 2.0 + * + * @return An error code + * @param[out] language The current input language + * @exception E_SUCCESS The method is successful. + * @remarks The application can get the current language of the keypad that is associated with the current %EditArea. + */ + result GetCurrentLanguage(Tizen::Locales::LanguageCode& language) const; + +protected: + friend class _EditAreaImpl; + +private: + EditArea(const EditArea&); + EditArea& operator =(const EditArea&); +}; // EditArea + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_EDIT_AREA_H_ diff --git a/inc/FUiCtrlEditDate.h b/inc/FUiCtrlEditDate.h new file mode 100644 index 0000000..827aede --- /dev/null +++ b/inc/FUiCtrlEditDate.h @@ -0,0 +1,337 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlEditDate.h + * @brief This is the header file for the %EditDate class. + * + * This header file contains the declarations of the %EditDate class. + */ +#ifndef _FUI_CTRL_EDITDATE_H_ +#define _FUI_CTRL_EDITDATE_H_ + +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @class EditDate + * @brief This class defines the common behavior of an %EditDate control. + * + * @since 2.0 + * + * The %EditDate class displays a small, fixed-size selector that allows the user to select a date. Unlike the DatePicker, %EditDate can be placed in a container. + * + * For more information on the class features, see EditDate and EditTime. + * + * The following example demonstrates how to use the %EditDate class. + * + * @code +// Sample code for EditDateSample.h +#include + +class EditDateSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IDateChangeEventListener +{ +public: + EditDateSample(void) + : __pEditDate(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + + // IDateChangeEventListener + virtual void OnDateChanged(const Tizen::Ui::Control& source, int year, int month, int day); + virtual void OnDateChangeCanceled(const Tizen::Ui::Control& source); + +private: + Tizen::Ui::Controls::EditDate* __pEditDate; +}; + + * @endcode + * + * @code +// Sample code for EditDateSample.cpp +#include + +#include "EditDateSample.h" + +using namespace Tizen::Graphics; +using namespace Tizen::Ui::Controls; + +bool +EditDateSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +EditDateSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of EditDate + __pEditDate = new EditDate(); + __pEditDate->Construct(Point(100, 100)); + __pEditDate->AddDateChangeEventListener(*this); + + // Adds an instace of IDateChangeEventListener + AddControl(*__pEditDate); + + return r; +} + +// IDateChangeEventListener implementation +void +EditDateSample::OnDateChanged(const Tizen::Ui::Control& source, int year, int month, int day) +{ + // .... +} + +void +EditDateSample::OnDateChangeCanceled(const Tizen::Ui::Control& source) +{ + // .... +} + * @endcode + */ +class _OSP_EXPORT_ EditDate + : public Tizen::Ui::Control +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + EditDate(void); + + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~EditDate(void); + + /** + * Adds a data change event listener instance. + * Added listener is called when the date of the DatePicker is changed either through user manipulation or by calling one of its setters. + * + * @since 2.0 + * + * @param[in] listener The listener to be added + * @see IDateChangeEventListener::OnDateChanged() + * @see IDateChangeEventListener::OnDateChangeCanceled() + * @see RemoveDateChangeEventListener() + */ + void AddDateChangeEventListener(Tizen::Ui::IDateChangeEventListener& listener); + + /** + * Removes a date changed event listener instance. @n + * Removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to be removed + * @see IDateChangeEventListener::OnDateChanged() + * @see IDateChangeEventListener::OnDateChangeCanceled() + * @see AddDateChangeEventListener() + */ + void RemoveDateChangeEventListener(Tizen::Ui::IDateChangeEventListener& listener); + + /** + * Initializes this instance of %EditDate with the specified parameter. + * + * @since 2.0 + * + * @return An error code + * @param[in] point The position of the %EditDate in the container + * @param[in] title The title + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks A control is fully usable only after it has been added to a container, therefore, some methods may fail if used earlier. + */ + result Construct(const Tizen::Graphics::Point& point, const Tizen::Base::String& title = L""); + + /** + * Gets the current date value of the %EditDate control. + * + * @since 2.0 + * + * @return The date value + */ + Tizen::Base::DateTime GetDate(void) const; + + /** + * Gets the current day value of the %EditDate control. + * + * @since 2.0 + * + * @return The current day value as an integer, @n + * else @c -1 if the %EditDate instance is not constructed + */ + int GetDay(void) const; + + /** + * Gets the current month value of the %EditDate control. + * + * @since 2.0 + * + * @return The current month value as an integer, @n + * else @c -1 if the %EditDate instance is not constructed + */ + int GetMonth(void) const; + + /** + * Gets the current year value of the %EditDate control. + * + * @since 2.0 + * + * @return The current year value, @n + * else @c -1 if the %EditDate instance is not constructed + */ + int GetYear(void) const; + + /** + * Sets the designated time value of the %EditDate control. + * + * @since 2.0 + * + * @param[in] date The date to be set + */ + void SetDate(const Tizen::Base::DateTime& date); + + /** + * Sets the value of the %EditDate control using the current system date. + * + * @since 2.0 + */ + void SetCurrentDate(void); + + /** + * Sets the year value. + * The year value should be between @c 1 and @c 9999. + * + * @since 2.0 + * + * @return An error code + * @param[in] year The year to be set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The given year value is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result SetYear(int year); + + /** + * Sets the month value of the %EditDate control. + * The month value should be between @c 1 and @c 12. + * + * @since 2.0 + * + * @return An error code + * @param[in] month The month to be set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The given month value is invalid. + * @exception E_SYSTEM A system error has occurred. + * + */ + result SetMonth(int month); + + /** + * Sets the day value of the %EditDate control. + * The day value should be between @c 1 and @c 31. + * + * @since 2.0 + * + * @return An error code + * @param[in] day The day to be set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The given day value is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result SetDay(int day); + + /** + * Enables the %DatePicker control. + * + * @since 2.0 + * + * @param[in] enable Set to @c true to enable the DatePicker control, @n + * else @c false + */ + void SetDatePickerEnabled(bool enable); + + /** + * Checks whether the DatePicker control is enabled. + * + * @since 2.0 + * + * @return @c true if the DatePicker control is enabled, @n + * else @c false + */ + bool IsDatePickerEnabled(void) const; + + /** + * Sets the valid year range. @n + * The range should be set in between @c 1 and @c 9999. + * + * @since 2.0 + * + * @return An error code + * @param[in] minYear The minimum year for the valid range + * @param[in] maxYear The maximum year for the valid range + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The given year range is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result SetYearRange(int minYear, int maxYear); + + /** + * Gets the valid year range. + * + * @since 2.0 + * + * @return An error code + * @param[out] minYear The minimum year for the valid range + * @param[out] maxYear The maximum year for the valid range + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result GetYearRange(int& minYear, int& maxYear) const; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + EditDate(const EditDate& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + EditDate& operator =(const EditDate& rhs); + + friend class _EditDateImpl; +}; // EditDate + +}}} //Tizen::Ui::Controls + +#endif // _FUI_CTRL_EDITDATE_H_ diff --git a/inc/FUiCtrlEditField.h b/inc/FUiCtrlEditField.h new file mode 100644 index 0000000..4eb2d6b --- /dev/null +++ b/inc/FUiCtrlEditField.h @@ -0,0 +1,1307 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlEditField.h + * @brief This is the header file for the %EditField class. + * + * This header file contains the declarations of the %EditField class and its helper classes. + */ + +#ifndef _FUI_CTRL_EDIT_FIELD_H_ +#define _FUI_CTRL_EDIT_FIELD_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Locales +{ +class Locale; +}} + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @class EditField + * @brief This class defines a common behavior for an %EditField control. + * + * @since 2.0 + * + * The %EditField class displays a single-line text editor. + * + * For more information on the class features, see EditArea and EditField. + * + * The following example demonstrates how to use the %EditField class. + * + * @code +// Sample code for EditFieldSample.h +#include + +class EditFieldSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::ITextEventListener +{ +public: + EditFieldSample(void) + : __pEditField(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + + // ITextEventListener + virtual void OnTextValueChanged(const Tizen::Ui::Control& source); + virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source); + +private: + Tizen::Ui::Controls::EditField* __pEditField; +}; + * @endcode + * + * @code +// Sample code for EditFieldSample.cpp +#include + +#include "EditFieldSample.h" + +using namespace Tizen::Graphics; +using namespace Tizen::Ui::Controls; + +bool +EditFieldSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +EditFieldSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of EditField + __pEditField = new EditField(); + __pEditField->Construct(Rectangle(50, 100, 400, 150)); + __pEditField->AddTextEventListener(*this); + + //Adds the edit field to the Form + AddControl(*__pEditField); + + return r; +} + +// ITextEventListener implementation +void +EditFieldSample::OnTextValueChanged(const Tizen::Ui::Control& source) +{ + // .... +} + +void +EditFieldSample::OnTextValueChangeCanceled(const Tizen::Ui::Control& source) +{ + // .... +} + * @endcode + * + */ + +class _OSP_EXPORT_ EditField + : public Tizen::Ui::Control +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + EditField(void); + + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~EditField(void); + + /** + * Initializes this instance of the %EditField control with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect An instance of the Graphics::Rectangle class @n + * This instance represents the x and y coordinates of the top-left corner of the created window along with + * the width and height of the control. + * @param[in] style The style of the %EditField control + * @param[in] inputStyle The input style of the %EditField control + * @param[in] showTitle Set to @c true to display the title, @n + * else @c false + * @param[in] limitLength The limit for the length of the text in the %EditField control + * @param[in] groupStyle The table view style of the %EditField control + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c limitLength is less than or equal to @c 0, or @n + * either the @c rect.width or the @c rect.height is less than @c 0. + * @exception E_UNSUPPORTED_OPTION The specified option is not supported. @n + * The title is not supported by small style %EditField. + * @exception E_SYSTEM A system error has occurred. + * @remarks A control is fully usable only after it has been added to a container. Therefore, some methods may fail if the control has been used + * earlier. The %EditField style of SMALL property cannot be used together with group styles. @n + * If the specified size is less than the minimum size, %EditField is constructed with the minimum size. + * @remarks Following are the input styles used for creating the different orientations of a keypad: @n + * - INPUT_STYLE_FULLSCREEN: The orientation is decided by the G-sensor value. @n + * - INPUT_STYLE_OVERLAY: The orientation is the same as that of a parent form. + */ + result Construct(const Tizen::Graphics::Rectangle& rect, EditFieldStyle style = EDIT_FIELD_STYLE_NORMAL, InputStyle inputStyle = INPUT_STYLE_FULLSCREEN, bool showTitle = false, int limitLength = 100, GroupStyle groupStyle = GROUP_STYLE_NONE); + + /** + * Initializes this instance of the %EditField control. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect The bounds of %EditField + * @param[in] style The style of the %EditField control + * @param[in] inputStyle The input style of the %EditField control + * @param[in] titleStyle The title style + * @param[in] enableClear Set to @c true to enable the clear button, @n + * else @c false + * @param[in] limitLength The limit of the length of text in the %EditField control + * @param[in] groupStyle The table view style of the %EditField control + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The specified @c limitLength is less than or equal to @c 0. @n + * The specified @c rect.width or the @c rect.height is less than @c 0. + * @exception E_UNSUPPORTED_OPTION The specified option is not supported. @n + * Title is not supported in small style %EditField. + * @exception E_SYSTEM A system error has occurred. + * @remarks A control is fully usable only after it has been added to a container. Therefore, some methods may fail if the control is used earlier. + * The %EditField style of SMALL property cannot be used together with group styles. @n + * If the specified size is less than the minimum size, EditFied() is constructed with the minimum size. + * @remarks Following are the input styles used for creating different orientations of a keypad: @n + * - INPUT_STYLE_FULLSCREEN: The orientation is decided by the G-sensor value.@n + * - INPUT_STYLE_OVERLAY: The orientation is similar to the parent Form. + */ + result Construct(const Tizen::Graphics::Rectangle& rect, EditFieldStyle style, InputStyle inputStyle, EditFieldTitleStyle titleStyle, bool enableClear = false, int limitLength = 100, GroupStyle groupStyle = GROUP_STYLE_NONE); + +public: + /** + * Gets the horizontal text alignment of the %EditField control. + * + * @since 2.0 + * + * @return The horizontal text alignment + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetTextAlignment() + */ + HorizontalAlignment GetTextAlignment(void) const; + + /** + * Sets the horizontal text alignment of the %EditField control. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetTextAlignment() + */ + result SetTextAlignment(HorizontalAlignment alignment); + + /** + * Checks whether the view mode is enabled. + * + * @since 2.0 + * + * @return @c true if the view mode is enabled, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. @n + * In the view mode, the auto-detected links are displayed as linked text. + * @see SetViewModeEnabled() + */ + bool IsViewModeEnabled(void) const; + + /** + * Enables or disables the view mode. + * + * @since 2.0 + * + * @return An error code + * @param[in] enable Set to @c true to enable the view mode, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks In the view mode, the auto-detected links are displayed as linked text. + * @see IsViewModeEnabled() + */ + result SetViewModeEnabled(bool enable); + + /** + * Sets the auto-link mask. + * + * @since 2.0 + * + * @return An error code + * @param[in] autoLinks The auto-link mask @n + * Multiple link types can be combined using bitwise OR operator (see Tizen::Base::Utility::LinkType). @n + * For more information, see AutoLink Detection. + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation @n + * The input style is not @c INPUT_STYLE_OVERLAY. + * @exception E_SYSTEM A system error has occurred. + * @remarks When @c autoLinks is set to @c 0, the auto-link detection is disabled. + * @see Tizen::Base::Utility::LinkType + * @see GetAutoLinkMask() + * @see IsViewModeEnabled() + * @see SetViewModeEnabled() + */ + result SetAutoLinkMask(unsigned long autoLinks); + + /** + * Gets the auto-link mask. + * + * @since 2.0 + * + * @return The auto-link mask + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation @n + * The input style is not @c INPUT_STYLE_OVERLAY. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetAutoLinkMask() + */ + unsigned long GetAutoLinkMask(void) const; + + /** + * Adds a link event listener. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @remarks This method is supported when the input style is @c INPUT_STYLE_OVERLAY. @n + * The added listener is notified when the links are selected by the user. + * @see RemoveUiLinkEventListener() + */ + void AddUiLinkEventListener(Tizen::Ui::IUiLinkEventListener& listener); + + /** + * Removes the specified link event listener. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @remarks This method is supported when the input style is @c INPUT_STYLE_OVERLAY. + * @see AddUiLinkEventListener() + */ + void RemoveUiLinkEventListener(Tizen::Ui::IUiLinkEventListener& listener); + + /** + * Gets the margin value of the specified margin type. + * + * @since 2.0 + * + * @return The margin value of the specified margin type, @n + * else @c -1 if an error occurs + * @param[in] marginType The margin type + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetMargin() + */ + int GetMargin(EditMarginType marginType) const; + + /** + * Sets the margin for the specified margin type. + * + * @since 2.0 + * + * @return An error code + * @param[in] marginType The margin type + * @param[in] margin The margin to set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The specified @c margin cannot be a negative integer. + * @exception E_SYSTEM A system error has occurred. + * @see GetMargin() + */ + result SetMargin(EditMarginType marginType, int margin); + + /** + * Enables or disables the keypad action. + * + * @since 2.0 + * @return An error code + * @param[in] enable Set to @c true to enable the keypad action, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The underlying input method does not support this operation. + * @remarks Depending on the value of input param, the enter key have a enable or disable look accordingly. + */ + result SetKeypadActionEnabled(bool enable); + + /** + * Checks whether the keypad action is enabled. + * + * @since 2.0 + * @return @c true if the keypad action is enabled, @n + * else @c false + */ + bool IsKeypadActionEnabled(void) const; + + /** + * Gets the keypad action type. + * + * @since 2.0 + * + * @return The keypad action + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The input style is not @c INPUT_STYLE_OVERLAY. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetKeypadAction() + */ + Tizen::Ui::KeypadAction GetKeypadAction(void) const; + + /** + * Sets the keypad action type. + * + * @since 2.0 + * + * @return An error code + * @param[in] keypadAction The keypad action + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The input style is not @c INPUT_STYLE_OVERLAY. + * @exception E_SYSTEM A system error has occurred. + * @remarks Based on the specified value of @c keypadAction, the enter key label of the keypad changes accordingly. + * @see GetKeypadAction() + */ + result SetKeypadAction(Tizen::Ui::KeypadAction keypadAction); + + /** + * Sets the visibility of the command buttons of the overlay style keypad. + * + * @since 2.0 + * + * @return An error code + * @param[in] visible Set to @c true to set the visibility of the overlay keypad command buttons, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The input style is not @c INPUT_STYLE_OVERLAY. + * @exception E_SYSTEM A system error has occurred. + */ + result SetOverlayKeypadCommandButtonVisible(bool visible); + + /** + * Checks whether the command buttons of the overlay style keypad are visible. + * + * @since 2.0 + * + * @return @c true if the overlay command buttons are visible, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The input style is not @c INPUT_STYLE_OVERLAY. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + bool IsOverlayCommandButtonVisible(void) const; + + /** + * Hides the keypad. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The input style is not @c INPUT_STYLE_OVERLAY. + * @exception E_SYSTEM A system error has occurred. + * @see ShowKeypad() + */ + result HideKeypad(void); + + /** + * Gets the position of the ellipsis. + * + * @since 2.0 + * + * @return The ellipsis position + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetEllipsisPosition() + */ + EllipsisPosition GetEllipsisPosition(void) const; + + /** + * Sets the position of the ellipsis. + * + * @since 2.0 + * + * @return An error code + * @param[in] position The ellipsis position + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetEllipsisPosition() + */ + result SetEllipsisPosition(EllipsisPosition position); + + /** + * Gets the text size. + * + * @since 2.0 + * + * @return The size of the text, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetTextSize() + */ + int GetTextSize(void) const; + + /** + * Sets the text size. + * + * @since 2.0 + * + * @return An error code + * @param[in] size The text size + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The @c size cannot be a negative integer. + * @exception E_SYSTEM A system error has occurred. + * @see GetTextSize() + */ + result SetTextSize(int size); + + /** + * Gets the color of the %EditField control for the specified status. + * + * @since 2.0 + * + * @return The color, @n + * else RGBA(0,0,0,0) if an error occurs + * @param[in] status The status + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetColor(EditStatus status) const; + + /** + * Gets the text color of the specified text color type. + * + * @since 2.0 + * + * @return The color, @n + * else RGBA(0,0,0,0) if an error occurs + * @param[in] type The text color type + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetTextColor() + */ + Tizen::Graphics::Color GetTextColor(EditTextColor type) const; + + /** + * Sets the background bitmap of the %EditField control for the specified status. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The status + * @param[in] bitmap The background bitmap + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetBackgroundBitmap(EditStatus status, const Tizen::Graphics::Bitmap& bitmap); + + /** + * Sets the color of the %EditField control for the specified status. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The status + * @param[in] color The color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetColor() + */ + result SetColor(EditStatus status, const Tizen::Graphics::Color& color); + + /** + * Sets the text color of the %EditField control for the specified text color type. + * + * @since 2.0 + * + * @return An error code + * @param[in] type The text color type + * @param[in] color The text color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetTextColor() + */ + result SetTextColor(EditTextColor type, const Tizen::Graphics::Color& color); + + /** + * Gets a portion of text that is displayed by the %EditField control. + * + * @since 2.0 + * + * @return The specified portion of the text, @n + * else an empty string if an error occurs + * @param[in] start The starting index of the range + * @param[in] end The last index of the range + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified index is outside the bounds of the data structure, or @n + * the index is greater than the number of elements or less than @c 0. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetText() + */ + Tizen::Base::String GetText(int start, int end) const; + + /** + * Adds a keypad event listener. @n + * The added listener is notified when the keypad associated with the %EditField control is opened or closed. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @see RemoveKeypadEventListener() + */ + void AddKeypadEventListener(IKeypadEventListener& listener); + + /** + * Removes the specified keypad event listener. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @see AddKeypadEventListener() + */ + void RemoveKeypadEventListener(IKeypadEventListener& listener); + + /** + * Adds a text block event listener. @n + * The added listener is notified when the text block is selected. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @remarks Programmatically modifying the text block does not cause the text block selection event to fire. + * @see RemoveTextBlockEventListener() + */ + void AddTextBlockEventListener(Tizen::Ui::ITextBlockEventListener& listener); + + /** + * Removes the specified text block event listener. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @see AddTextBlockEventListener() + */ + void RemoveTextBlockEventListener(Tizen::Ui::ITextBlockEventListener& listener); + + /** + * Adds the ITextEventListener instance. @n + * The added listener listens to events on the context of the specified event dispatcher when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to be added + */ + void AddTextEventListener(Tizen::Ui::ITextEventListener& listener); + + /** + * Removes the ITextEventListener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to be removed + */ + void RemoveTextEventListener(Tizen::Ui::ITextEventListener& listener); + + /** + * Adds the specified listener instance to listen to the scroll panel events. + * + * @since 2.0 + * + * @param[in] listener The listener to be added + * @remarks To listen to the scroll panel events, the parent of EditArea must be an instance of ScrollPanel. @n + * When OnOverlayControlCreated() or OnOvelayControlClosed() is called, the application resets the bounds of the controls placed + * within the ScrollPanel control. ScrollPanel is automatically drawn again after this method is called. + * @see RemoveScrollPanelEventListener() + */ + void AddScrollPanelEventListener(Tizen::Ui::IScrollPanelEventListener& listener); + + /** + * Removes the specified scroll panel event listener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to be removed + */ + void RemoveScrollPanelEventListener(Tizen::Ui::IScrollPanelEventListener& listener); + + /** + * Adds the specified listener instance. @n + * The added listener can listen to events on the context of the given event dispatcher when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + */ + void AddActionEventListener(Tizen::Ui::IActionEventListener& listener); + + /** + * Removes a listener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to remove + */ + void RemoveActionEventListener(Tizen::Ui::IActionEventListener& listener); + + /** + * Adds the specified listener instance for language events. @n + * The added listener is notified when the input language is changed. + * + * @since 2.0 + * + * @param[in] listener The listener to be added + * @remarks The application can recognize when the language is changed from the keypad by adding Tizen::Ui::ILanguageEventListener. + * @see RemoveLanguageEventListener() + */ + void AddLanguageEventListener(Tizen::Ui::ILanguageEventListener& listener); + + /** + * Removes the specified listener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to be removed + * @see AddLanguageEventListener() + */ + void RemoveLanguageEventListener(Tizen::Ui::ILanguageEventListener& listener); + + /** + * Gets the remaining length of the %EditField control. + * + * @since 2.0 + * + * @return The remaining length of the %EditField control, @n + * else @c -1 if an error occurs + */ + int GetRemainingLength(void) const; + + /** + * Enables or disables the lowercase mode. + * + * @since 2.0 + * + * @param[in] enable Set to @c true to enable the lowercase mode, @n + * else @c false + */ + void SetLowerCaseModeEnabled(bool enable); + + /** + * Checks whether the lowercase mode is enabled. + * + * @since 2.0 + * + * @return @c true if the lowercase mode is enabled, @n + * else @c false + */ + bool IsLowerCaseModeEnabled(void) const; + + /** + * @if OSPDEPREC + * Sets the input mode category. + * + * @brief [Deprecated] + * @deprecated We no longer provide a method to specify the list of styles which the user can set the keypad to, @n + * or the current mode to initially set the keypad to, from this list. It is recommended to use EditFieldStyle in the Construct() method instead. + * @since 2.0 + * + * @return An error code + * @param[in] categories The categories to be set @n + * Multiple input categories can be combined using bitwise OR operator (see Tizen::Ui::Controls::EditInputModeCategory). + * @param[in] enable The category value to set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input mode category is invalid. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation @n + * The specified @c categories cannot be supported with the current keypad style. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetInputModeCategory(unsigned long categories, bool enable); + + /** + * @if OSPDEPREC + * Sets the current input mode category. + * + * @brief [Deprecated] + * @deprecated We no longer provide a method to specify the list of styles which the user can set the keypad to, @n + * or the current mode to initially set the keypad to, from this list. It is recommended to use EditFieldStyle in the Construct() method instead. + * @since 2.0 + * + * @return An error code + * @param[in] inputModeCategory An item of input category + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetCurrentInputModeCategory(EditInputModeCategory inputModeCategory); + + /** + * @if OSPDEPREC + * Gets the input mode category. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because we no longer provide a method to specify the list of styles which the user can set the keypad to. + * @since 2.0 + * + * @return A bitwise combination of Tizen::Ui::Controls::EditInputModeCategory, @n + * else EDIT_INPUTMODE_ALPHA if an error occurs + * @endif + */ + unsigned long GetInputModeCategory(void) const; + + /** + * @if OSPDEPREC + * Gets the current input mode category. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because we no longer provide a method to specify the list of styles which the user can set the keypad to. + * @since 2.0 + * + * @return The current input mode category + * @endif + */ + EditInputModeCategory GetCurrentInputModeCategory(void) const; + + /** + * Sets the cursor in the %EditField control at the specified position. + * + * @since 2.0 + * + * @return An error code + * @param[in] position The cursor position that is to be set + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c position is less than @c 0 or greater than the maximum length. + * @exception E_SYSTEM A system error has occurred. + */ + result SetCursorPosition(int position); + + /** + * Gets the cursor position. + * + * @since 2.0 + * + * @return The current cursor position, @n + * else @c -1 if an error occurs + */ + int GetCursorPosition(void) const; + + /** + * Gets the text that is displayed by the %EditField control. + * + * @since 2.0 + * + * @return The text of the %EditField control, @n + * else an empty string if an error occurs + */ + Tizen::Base::String GetText(void) const; + + /** + * Gets the length of the text that is displayed by the %EditField control. + * + * @since 2.0 + * + * @return The length of the text, @n + * else @c -1 if an error occurs + */ + int GetTextLength(void) const; + + /** + * Sets the text of the %EditField control. + * + * @since 2.0 + * + * @param[in] text The text to be displayed by the %EditField control + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The length of the specified @c text exceeds the system limitation or the limit length. + * @exception E_SYSTEM A system error has occurred. + * @remarks Use @htmlonly '\n' @endhtmlonly to denote the end of the line. + */ + result SetText(const Tizen::Base::String& text); + + /** + * Inserts the specified text at the current cursor position. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text to be inserted + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks Use @htmlonly '\n' @endhtmlonly to denote the end of the line. + */ + result InsertTextAtCursorPosition(const Tizen::Base::String& text); + + /** + * Appends the specified text at the end of the existing text. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text to be appended + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks Use @htmlonly '\n' @endhtmlonly to denote the end of the line. + */ + result AppendText(const Tizen::Base::String& text); + + /** + * Appends the specified character at the end of the existing text. + * + * @since 2.0 + * + * @return An error code + * @param[in] character The character to be appended + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The method modifies the text buffer that is managed by the %EditField control. To display the + * changes, the control must be drawn again. + */ + result AppendCharacter(const Tizen::Base::Character& character); + + /** + * Clears the text that is displayed by the %EditField control. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The method modifies the text buffer that is managed by the %EditField control. To display the + * changes, the control must be drawn again. + */ + result Clear(void); + + /** + * Deletes a character at the current cursor position. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The method modifies the text buffer that is managed by the %EditField control. To display the + * changes, the control must be drawn again. + */ + result DeleteCharacterAtCursorPosition(void); + + /** + * Gets the range of the current text block. + * + * @since 2.0 + * + * @param[out] start The first index of the current text block + * @param[out] end The last index of the current text block + */ + void GetCurrentTextRange(int& start, int& end) const; + + /** + * Sets the guide text. + * + * @since 2.0 + * + * @param[in] guideText The guide text + * @remarks This is the default text that is displayed in the %EditField + * control when the focus is given to it and no text is entered. + */ + void SetGuideText(const Tizen::Base::String& guideText); + + /** + * Gets the guide text. + * + * @since 2.0 + * + * @return The guide text, @n + * else an empty string if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetGuideText() + */ + Tizen::Base::String GetGuideText(void) const; + + /** + * Gets the text color of the guide text. + * + * @since 2.0 + * + * @return The guide text color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetGuideTextColor() + */ + Tizen::Graphics::Color GetGuideTextColor(void) const; + + /** + * Sets the text color of the guide text. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The guide text color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetGuideTextColor() + */ + result SetGuideTextColor(const Tizen::Graphics::Color& color); + + /** + * Gets the text color of the title for the specified status. + * + * @since 2.0 + * + * @return The title text color, @n + * else RGBA(0,0,0,0) if an error occurs + * @param[in] status The state of the %EditField control + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetTitleTextColor() + */ + Tizen::Graphics::Color GetTitleTextColor(EditStatus status) const; + + /** + * Sets the text color of the title for the specified status. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The state of the %EditField control + * @param[in] color The title text color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetTitleTextColor() + */ + result SetTitleTextColor(EditStatus status, const Tizen::Graphics::Color& color); + + /** + * Enables or disables the keypad. + * + * @since 2.0 + * + * @param[in] enable Set to @c true to enable the keypad, + * else @c false + */ + void SetKeypadEnabled(bool enable); + + /** + * Checks whether the keypad is enabled. + * + * @since 2.0 + * + * @return @c true if the keypad is enabled, @n + * else @c false + */ + bool IsKeypadEnabled(void) const; + + /** + * Checks whether the text prediction is enabled. + * + * @since 2.0 + * @return @c true if the text prediction is enabled, @n + * else @c false + * @see SetTextPredictionEnabled() + */ + bool IsTextPredictionEnabled(void) const; + + /** + * Enables or disables the text prediction. + * + * @since 2.0 + * @param[in] enable Set to @c true to enable the text prediction, @n + * else @c false + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. + * @see IsTextPredictionEnabled() + */ + result SetTextPredictionEnabled(bool enable); + + /** + * Displays the keypad. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method is supported only when the input style is INPUT_STYLE_OVERLAY. + */ + result ShowKeypad(void); + + /** + * Gets the range of the current text block that is selected. + * + * @since 2.0 + * + * @param[out] start The starting index of the current block + * @param[out] end The end index of the current block + */ + void GetBlockRange(int& start, int& end) const; + + /** + * Begins the text block from the current cursor position. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks Move the cursor position to the end of the text block. + * @see SetCursorPosition() + * @see ReleaseBlock() + * @see IsBlocked() + */ + result BeginBlock(void); + + /** + * Releases the selection of the current text block. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see BeginBlock() + * @see IsBlocked() + */ + result ReleaseBlock(void); + + /** + * Checks whether a portion of the text is blocked. + * + * @since 2.0 + * + * @return @c true if the text is blocked, @n + * else @c false + * @see BeginBlock() + * @see ReleaseBlock() + */ + bool IsBlocked(void) const; + + /** + * Copies the text block to the clipboard. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see Cut(), Paste(), Remove() + */ + result Copy(void); + + /** + * Cuts the text block and copies it to the clipboard. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see Copy(), Remove(), Paste() + */ + result Cut(void); + + /** + * Pastes the copied text at the cursor position. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see Copy(), Cut(), Remove() + */ + result Paste(void); + + /** + * Removes the text that is marked by the text block. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see Copy(), Cut(), Paste() + */ + result Remove(void); + + /** + * Checks whether the text in the %EditField control is clipped. + * + * @since 2.0 + * + * @return @c true if the text is clipped, @n + * else @c false + * @remarks 'clipped' means that the text is copied to the clipboard. + * @see Copy(), Cut(), Paste(), Remove() + */ + bool IsClipped(void) const; + + /** + * Sets the title of the %EditField control. + * + * @since 2.0 + * + * @return An error code + * @param[in] title The title to be set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetTitleText(const Tizen::Base::String& title); + + /** + * Gets the title text of the %EditField control. + * + * @since 2.0 + * + * @return The title text, @n + * else an empty string if an error occurs + */ + Tizen::Base::String GetTitleText(void) const; + + /** + * Sets the command button properties of the keypad. + * + * @since 2.0 + * + * @return An error code + * @param[in] position The position of the command button + * @param[in] text The label of the command button + * @param[in] actionId The action ID + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method is supported only when the input style is INPUT_STYLE_OVERLAY. + */ + result SetOverlayKeypadCommandButton(CommandButtonPosition position, const Tizen::Base::String& text, int actionId); + + /** + * Gets the text of the specified command button. + * + * @since 2.0 + * + * @return The text of the specified command button + * @param[in] position The position of the command button + * @remarks This method is supported only when the input style is INPUT_STYLE_OVERLAY. + */ + Tizen::Base::String GetOverlayKeypadCommandButtonText(CommandButtonPosition position) const; + + /** + * Gets the action ID of the specified command button. + * + * @since 2.0 + * + * @return The action ID of the specified command button + * @param[in] position The position of the command button + * @remarks This method is supported only when the input style is INPUT_STYLE_OVERLAY. + */ + int GetOverlayKeypadCommandButtonActionId(CommandButtonPosition position) const; + + /** + * Sets the input language. + * + * @since 2.0 + * + * @return An error code + * @param[in] languageCode The language to be set + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The application can set the language of the current keypad that is associated with the current %EditField. @n + * This method only works if the language to set is supported by the current preloaded keypad. + */ + result SetCurrentLanguage(Tizen::Locales::LanguageCode languageCode); + + /** + * Gets the current input language. + * + * @since 2.0 + * + * @return An error code + * @param[out] language The current input language + * @exception E_SUCCESS The method is successful. + * @remarks The application can get the current language of the keypad that is associated with the current %EditField. + */ + result GetCurrentLanguage(Tizen::Locales::LanguageCode& language) const; + +protected: + friend class _EditFieldImpl; + +private: + EditField(const EditField&); + EditField& operator =(const EditField&); + +}; // EditField + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_EDIT_FIELD_H_ diff --git a/inc/FUiCtrlEditTime.h b/inc/FUiCtrlEditTime.h new file mode 100644 index 0000000..178efa6 --- /dev/null +++ b/inc/FUiCtrlEditTime.h @@ -0,0 +1,292 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlEditTime.h + * @brief This is the header file for the %EditTime class. + * + * This header file contains the declarations of the %EditTime class. + */ +#ifndef _FUI_CTRL_EDIT_TIME_H_ +#define _FUI_CTRL_EDIT_TIME_H_ + +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @class EditTime + * @brief This class defines the common behavior of an %EditTime control. + * + * @since 2.0 + * + * The %EditTime class displays a small, fixed-size selector that allows the user to select a time. + * Unlike TimePicker, %EditTime can be placed in a container. + * + * For more information on the class features, see EditDate and EditTime. + * + * The following example demonstrates how to use the %EditTime class. + * + * @code +// Sample code for EditTimeSample.h +#include + +class EditTimeSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::ITimeChangeEventListener +{ +public: + EditTimeSample(void) + : __pEditTime(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + + // ITimeChangeEventListener + virtual void OnTimeChanged(const Tizen::Ui::Control& source, int hour, int minute); + virtual void OnTimeChangeCanceled(const Tizen::Ui::Control& source); + +private: + Tizen::Ui::Controls::EditTime* __pEditTime; +}; + * @endcode + * + * @code +// Sample code for EditTimeSample.cpp +#include + +#include "EditTimeSample.h" + +using namespace Tizen::Graphics; +using namespace Tizen::Ui::Controls; + +bool +EditTimeSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +EditTimeSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of EditTime + __pEditTime = new EditTime(); + __pEditTime->Construct(Point(100, 100)); + __pEditTime->AddTimeChangeEventListener(*this); + + //Adds the edit time to the form + AddControl(*__pEditTime); + + return r; +} + +// ITimeChangeEventListener implementation +void +EditTimeSample::OnTimeChanged(const Control& source, int hour, int minute) +{ + // .... +} + +void +EditTimeSample::OnTimeChangeCanceled(const Control& source) +{ + // .... +} + * @endcode + */ +class _OSP_EXPORT_ EditTime + : public Tizen::Ui::Control +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + EditTime(void); + + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~EditTime(void); + + /** + * Adds a time changed event listener instance. + * + * @since 2.0 + * + * @param[in] listener The listener to be added + * @see ITimeChangeEventListener::OnTimeChanged() + * @see ITimeChangeEventListener::OnTimeChangeCanceled() + * @see RemoveTimeChangeEventListener() + */ + void AddTimeChangeEventListener(Tizen::Ui::ITimeChangeEventListener& listener); + + /** + * Removes a listener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to be removed + * @see AddTimeChangeEventListener() + */ + void RemoveTimeChangeEventListener(Tizen::Ui::ITimeChangeEventListener& listener); + + /** + * Initializes this instance of %EditTime with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] point The position of %EditTime in container + * @param[in] title The title + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(const Tizen::Graphics::Point& point, const Tizen::Base::String& title = L""); + + /** + * Gets the current hour value of the %EditTime control. + * + * @since 2.0 + * + * @return The current hour value, @n + * else @c -1 if the %EditTime instance is not constructed @n + * The hour value is between @c 0 to @c 23. + */ + int GetHour(void) const; + + /** + * Gets the current minute value of the %EditTime control. + * + * @since 2.0 + * + * @return The current minute value, @n + * else @c -1 if this %EditTime instance is not constructed + */ + int GetMinute(void) const; + + /** + * Gets the current time value of the %EditTime control. + * + * @since 2.0 + * + * @return The time value + */ + Tizen::Base::DateTime GetTime(void) const; + + /** + * Sets the 12-hour or 24-hour display type of the %EditTime. @n + * This can be 12-hour or 24-hour type. + * + * @since 2.0 + * + * @param[in] enable Set to @c true to set the 24-hour notation, @n + * else @c false to set the 12-hour notation + */ + void Set24HourNotationEnabled(bool enable); + + /** + * Sets the hour value of the %EditTime control. @n + * The hour value should be between @c 0 and @c 23. + * + * @since 2.0 + * + * @param[in] hour The hour value to be set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified hour value is invalid. + * @exception E_SYSTEM A system error has occurred. + * + */ + result SetHour(int hour); + + /** + * Sets the minute value of the %EditTime control. @n + * The minute value should be between @c 0 and @c 59. + * + * @since 2.0 + * + * @param[in] minute The minute value to be set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified minute value is invalid. + * @exception E_SYSTEM A system error has occurred. + * + */ + result SetMinute(int minute); + + /** + * Sets the designated time value of the %EditTime control. + * + * @since 2.0 + * + * @param[in] time The time to be set + */ + void SetTime(const Tizen::Base::DateTime& time); + + /** + * Sets the value of the %EditTime control using the current system time. + * + * @since 2.0 + */ + void SetCurrentTime(void); + + /** + * Enables TimePicker. + * + * @since 2.0 + * + * @param[in] enable Set to @c true to enable %TimePicker, @n + * else @c false + */ + void SetTimePickerEnabled(bool enable); + + /** + * Checks whether TimePicker is enabled. + * + * @since 2.0 + * + * @return @c true if TimePicker is enabled, @n + * else @c false + */ + bool IsTimePickerEnabled(void) const; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + EditTime(const EditTime& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + EditTime& operator =(const EditTime& rhs); + + friend class _EditTimeImpl; +}; // EditTime + +}}} //Tizen::Ui::Controls + +#endif // _FUI_CTRL_EDIT_TIME_H_ diff --git a/inc/FUiCtrlEditTypes.h b/inc/FUiCtrlEditTypes.h new file mode 100644 index 0000000..16e9c92 --- /dev/null +++ b/inc/FUiCtrlEditTypes.h @@ -0,0 +1,180 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlEditTypes.h + * @brief This is the header file for the Ui::Controls edit control enumerations. + * + * This header file contains the declarations of the Ui::Controls edit control enumerations. + */ +#ifndef _FUI_CTRL_EDIT_ENUM_H_ +#define _FUI_CTRL_EDIT_ENUM_H_ + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @if OSPDEPREC + * @enum EditInputModeCategory + * + * Defines the input modes. + * + * @brief [Deprecated] + * @deprecated We no longer provide a method to specify the list of styles which the user can set the keypad to, or the current mode to initially set the keypad to, @n + * from this list. It is recommended to use the styles offered in EditFieldStyle or KeypadStyle enumerations instead. + * @since 2.0 + * @endif + */ +enum EditInputModeCategory +{ + EDIT_INPUTMODE_ALPHA = 0x0001, /**< @if OSPDEPREC The alphabetic input mode @endif */ + EDIT_INPUTMODE_PREDICTIVE = 0x0002, /**< @if OSPDEPREC The predictive input mode @endif */ + EDIT_INPUTMODE_NUMERIC = 0x0004, /**< @if OSPDEPREC The numeric input mode @endif */ + EDIT_INPUTMODE_SYMBOL = 0x0008 /**< @if OSPDEPREC The symbolic input mode @endif */ +}; + +/** + * @enum EditFieldStyle + * + * Defines the EditField style. + * + * @since 2.0 + */ +enum EditFieldStyle +{ + EDIT_FIELD_STYLE_NORMAL, /**< The normal style */ + EDIT_FIELD_STYLE_PASSWORD, /**< The password style '****' */ + EDIT_FIELD_STYLE_NORMAL_SMALL, /**< The small normal style */ + EDIT_FIELD_STYLE_PASSWORD_SMALL, /**< The small password style '****' */ + EDIT_FIELD_STYLE_EMAIL, /**< The email style */ + EDIT_FIELD_STYLE_URL, /**< The URL style */ + EDIT_FIELD_STYLE_EMAIL_SMALL, /**< The small email style */ + EDIT_FIELD_STYLE_URL_SMALL, /**< The small URL style */ + EDIT_FIELD_STYLE_NUMBER, /**< The number style */ + EDIT_FIELD_STYLE_NUMBER_SMALL, /**< The small number style */ + EDIT_FIELD_STYLE_PHONE_NUMBER, /**< The phone number style */ + EDIT_FIELD_STYLE_PHONE_NUMBER_SMALL, /**< The small phone number style */ + EDIT_FIELD_STYLE_PASSWORD_NUMBER, /**< The number password style */ + EDIT_FIELD_STYLE_PASSWORD_NUMBER_SMALL, /**< The small number password style */ + EDIT_FIELD_STYLE_IP_V4, /**< The IP V4 style */ + EDIT_FIELD_STYLE_IP_V4_SMALL, /**< The small IP V4 style */ +}; + +/** + * @enum CommandButtonPosition + * + * Defines the command button position. + * + * @since 2.0 + */ +enum CommandButtonPosition +{ + COMMAND_BUTTON_POSITION_LEFT, /**< The position is to the left */ + COMMAND_BUTTON_POSITION_RIGHT /**< The position is to the right */ +}; + +/** + * @enum EditMarginType + * + * Defines the possible margin types of EditField and EditArea. + * + * @since 2.0 + */ +enum EditMarginType +{ + EDIT_MARGIN_TYPE_VERTICAL, /**< The margin for top and bottom */ + EDIT_MARGIN_TYPE_HORIZONTAL /**< The margin for left and right */ +}; + +/** + * @enum EditTextColor + * + * Defines the possible Edit's text colors. + * + * @since 2.0 + */ +enum EditTextColor +{ + EDIT_TEXT_COLOR_NORMAL, /**< The normal text color */ + EDIT_TEXT_COLOR_DISABLED, /**< The disabled text color */ + EDIT_TEXT_COLOR_HIGHLIGHTED, /**< The selected text color */ + EDIT_TEXT_COLOR_LINK /**< The highlighted text color */ +}; + +/** + * @enum EditStatus + * + * Defines the possible Edit's states. + * + * @since 2.0 + */ +enum EditStatus +{ + EDIT_STATUS_NORMAL, /**< The normal state */ + EDIT_STATUS_DISABLED, /**< The disabled state */ + EDIT_STATUS_HIGHLIGHTED, /**< The highlighted state */ + EDIT_STATUS_PRESSED /**< The pressed state */ +}; + +/** + * @enum EditFieldTitleStyle + * + * Defines the possible styles of title. + * + * @since 2.0 + */ +enum EditFieldTitleStyle +{ + EDIT_FIELD_TITLE_STYLE_NONE = 0, /**< No title */ + EDIT_FIELD_TITLE_STYLE_INNER, /**< The title appears inside of the EditField's input field */ + EDIT_FIELD_TITLE_STYLE_TOP /**< The title appears at the top input field */ +}; + +/** + * @enum EllipsisPosition + * + * Defines the possible positions of ellipsis. + * + * @since 2.0 + */ +enum EllipsisPosition +{ + ELLIPSIS_POSITION_START = 0, /**< The ellipsis appears at the start of text block */ + ELLIPSIS_POSITION_MIDDLE, /**< The ellipsis appears at the middle of text block */ + ELLIPSIS_POSITION_END, /**< The ellipsis appears at the end of text block */ +}; + +/** + * @enum KeypadStyle + * + * Defines the initial keypad style. + * + * @since 2.0 + */ +enum KeypadStyle +{ + KEYPAD_STYLE_NORMAL = 0, /**< The normal style */ + KEYPAD_STYLE_PASSWORD, /**< The password style '****' */ + KEYPAD_STYLE_EMAIL, /**< The email style */ + KEYPAD_STYLE_URL, /**< The URL style */ + KEYPAD_STYLE_NUMBER, /**< The number style */ + KEYPAD_STYLE_PHONE_NUMBER, /**< The phone number style */ + KEYPAD_STYLE_IP_V4, /**< The IP V4 style */ +}; + +}}} // Tizen::Ui::Controls +#endif // _FUI_CTRL_EDIT_ENUM_H_ diff --git a/inc/FUiCtrlExpandableEditArea.h b/inc/FUiCtrlExpandableEditArea.h new file mode 100644 index 0000000..4f2fd73 --- /dev/null +++ b/inc/FUiCtrlExpandableEditArea.h @@ -0,0 +1,1543 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlExpandableEditArea.h + * @brief This is the header file for the %ExpandableEditArea class. + * + * This header file contains the declarations of the %ExpandableEditArea class. + */ + +#ifndef _FUI_CTRL_EXPANDABLE_EDIT_AREA_H_ +#define _FUI_CTRL_EXPANDABLE_EDIT_AREA_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// Forward declaration +namespace Tizen { namespace Graphics +{ +class Rectangle; +}} // Tizen::Graphics + +namespace Tizen { namespace Ui { namespace Controls +{ + +class IExpandableEditAreaEventListener; + +/** + * @enum ExpandableEditAreaStyle + * + * Defines the possible styles of the expandable edit area. + * + * @since 2.0 + */ +enum ExpandableEditAreaStyle +{ + EXPANDABLE_EDIT_AREA_STYLE_NORMAL, /**< The normal expandable edit area */ + EXPANDABLE_EDIT_AREA_STYLE_TOKEN /**< The token expandable edit area */ +}; + + +/** + * @enum ExpandableEditAreaTitleStyle + * + * Defines the possible styles of the expandable edit area title. + * + * @since 2.0 + */ +enum ExpandableEditAreaTitleStyle +{ + EXPANDABLE_EDIT_AREA_TITLE_STYLE_NONE = 0, /**< The style with no title */ + EXPANDABLE_EDIT_AREA_TITLE_STYLE_INNER, /**< The title appears as a right aligned text inside the edit text field */ + EXPANDABLE_EDIT_AREA_TITLE_STYLE_TOP /**< The title appears at the top of the edit text field */ +}; + + +/** + * @enum ExpandableEditAreaTokenStatus + * + * Defines the possible status of the expandable edit area tokens. + * + * @since 2.0 + */ +enum ExpandableEditAreaTokenStatus +{ + EXPANDABLE_EDIT_AREA_TOKEN_STATUS_NORMAL = 0, /**< The normal status */ + EXPANDABLE_EDIT_AREA_TOKEN_STATUS_SELECTED /**< The selected status */ +}; + + +/** + * @class ExpandableEditArea + * @brief This class is an implementation of %ExpandableEditArea. + * + * @since 2.0 + * + * The %ExpandableEditArea class displays a multi-line text editor the height of that is automatically adjusted according to the number of lines currently visible in the text box. + * + * For more information on the class features, see ExpandableEditArea. + * + * The following sample code demonstrates how to use the %ExpandableEditArea class. + * + * @code +// Sample code for ExpandableEditAreaSample.h +#include + +class ExpandableEditAreaSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IKeypadEventListener + , public Tizen::Ui::Controls::IExpandableEditAreaEventListener +{ +public: + ExpandableEditAreaSample(void) + : __pExpandableEdit(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + + //IKeypadEventListener + virtual void OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction); + virtual void OnKeypadClosed(Tizen::Ui::Control& source); + virtual void OnKeypadOpened(Tizen::Ui::Control& source); + virtual void OnKeypadWillOpen(Tizen::Ui::Control& source); + + //IExpandableEditAreaEventListener + virtual void OnExpandableEditAreaLineAdded(Tizen::Ui::Controls::ExpandableEditArea& source, int newLineCount); + virtual void OnExpandableEditAreaLineRemoved(Tizen::Ui::Controls::ExpandableEditArea& source, int newLineCount); + +private: + Tizen::Ui::Controls::ExpandableEditArea* __pExpandableEdit; +}; + +// Sample code for ExpandableEditAreaSample.cpp +#include + +#include "ExpandableEditAreaSample.h" + +using namespace Tizen::Graphics;; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; + +bool +ExpandableEditAreaSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +ExpandableEditAreaSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + __pExpandableEdit = new ExpandableEditArea(); + __pExpandableEdit->Construct(Rectangle(25, 100, GetClientAreaBounds().width - 50, 150), + EXPANDABLE_EDIT_AREA_STYLE_NORMAL, EXPANDABLE_EDIT_AREA_TITLE_STYLE_NONE, 5); + + // Adds an instace of IKeypadEventListenerevent and an instance of IExpandableEditAreaEventListener + __pExpandableEdit->AddKeypadEventListener(*this); + __pExpandableEdit->AddExpandableEditAreaEventListener(*this); + + AddControl(*__pExpandableEdit); + + // Sets a focus to the expandable edit area + __pExpandableEdit->SetFocus(); + + return r; +} + +// IKeypadEventListener implementation +void +ExpandableEditAreaSample::OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction) +{ + // .... +} + +void +ExpandableEditAreaSample::OnKeypadClosed(Tizen::Ui::Control& source) +{ + // .... +} + +void +ExpandableEditAreaSample::OnKeypadOpened(Tizen::Ui::Control& source) +{ + // .... +} + +void +ExpandableEditAreaSample::OnKeypadWillOpen(Tizen::Ui::Control& source) +{ + // .... +} + +// IExpandableEditAreaEventListener implementation +void +ExpandableEditAreaSample::OnExpandableEditAreaLineAdded(Tizen::Ui::Controls::ExpandableEditArea& source, int newLineCount) +{ + // .... +} + +void +ExpandableEditAreaSample::OnExpandableEditAreaLineRemoved(Tizen::Ui::Controls::ExpandableEditArea& source, int newLineCount) +{ + // .... +} + * @endcode + */ +class _OSP_EXPORT_ ExpandableEditArea + : public Tizen::Ui::Control +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + ExpandableEditArea(void); + + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~ExpandableEditArea(void); + + /** + * Initializes this instance of %ExpandableEditArea with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect An instance of the Graphics::Rectangle class @n + * This instance represents the x and y coordinates of the top-left corner of the expandable edit area along with + * the width and height. + * @param[in] style The style of the expandable edit area + * @param[in] titleStyle The title style + * @param[in] maxExpandableLines The maximum number of lines to which the control can be expanded. + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPTION The specified option is not supported. @n + * The token style %ExpandabledEditArea does not support EXPANDABLE_EDIT_AREA_TITLE_STYLE_TOP. + * @exception E_MAX_EXCEEDED The number of lines has exceeded the maximum limit. + * @exception E_INVALID_ARG A specified input parameter is invalid, or @n + * the specified @c maxLines is either negative or @c 0. + * @exception E_SYSTEM A system error has occurred. + * @remarks By default, the line count is @c 1. + */ + result Construct(const Tizen::Graphics::Rectangle& rect, ExpandableEditAreaStyle style, ExpandableEditAreaTitleStyle titleStyle, int maxExpandableLines = 10); + +// TEXT MANAGEMENT + /** + * Appends the specified character at the end of the existing text. + * + * @since 2.0 + * + * @return An error code + * @param[in] character The character to be appended + * @exception E_SUCCESS The method is successful. + * @exception E_MAX_EXCEEDED The number of items has exceeded the maximum limit. @n + * The number of characters has exceeded the maximum limit. + * @exception E_SYSTEM A system error has occurred. + * @remarks The method modifies the text buffer that is managed by the %ExpandableEditArea control. @n + * To display the changes, the control must be drawn again. + */ + result AppendCharacter(const Tizen::Base::Character& character); + + /** + * Appends the specified text at the end of the existing text. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text to be appended + * @exception E_SUCCESS The method is successful. + * @exception E_MAX_EXCEEDED The number of items has exceeded the maximum limit @n + * The number of characters has exceeded the maximum limit. + * @exception E_SYSTEM A system error has occurred. + * @remarks The method modifies the text buffer that is managed by the %ExpandableEditArea control. @n + * To display the changes, the control must be drawn again. + */ + result AppendText(const Tizen::Base::String& text); + + /** + * Appends the text that will be displayed by bitmap at the end of the existing text. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text to be appended @n + * It will be displayed by the @c textImage + * @param[in] textImage The alternate bitmap to be displayed + * @exception E_SUCCESS The method is successful. + * @exception E_MAX_EXCEEDED The length of the specified @c text exceeds the maximum length of the text that can be displayed by % ExpanableEditArea. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The operation is not supported if the style is EXPANDABLE_EDIT_AREA_STYLE_TOKEN. + * @remarks The method modifies the text buffer that is managed by the %ExpanableEditArea control. @n + * To display the changes, the control must be drawn again. The text to be appended will be displayed by the @c textImage. + */ + result AppendText(const Tizen::Base::String& text, const Tizen::Graphics::Bitmap& textImage); + + /** + * Deletes the character present at the current cursor position. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The specified @c index is negative. + * @exception E_OUT_OF_RANGE The specified @c index is outside the bounds of the data structure. @n + * Either the specified @c index is greater than the number of elements or less than @c 0. + * @exception E_SYSTEM A system error has occurred. + * @remarks The method modifies the text buffer that is managed by the %ExpandableEditArea control. @n + * To display the changes, the control must be drawn again. + */ + result DeleteCharacterAt(int index); + + /** + * Inserts a character at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The position to insert the character + * @param[in] character The character to be inserted + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is outside the bounds of the data structure. @n + * Either the specified @c index is greater than the number of elements or less than @c 0. + * @exception E_MAX_EXCEEDED The length of the specified @c text exceeds system limitations. + * @exception E_SYSTEM A system error has occurred. + * @remarks The method modifies the text buffer that is managed by the %ExpandableEditArea control. @n + * To display the changes, the control must be drawn again. + */ + result InsertCharacterAt(int index, const Tizen::Base::Character& character); + + /** + * Inserts the text at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The position to insert the text + * @param[in] text The text to be inserted + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is outside the bounds of the data structure. @n + * Either the specified @c index is greater than the number of elements or less than @c 0. + * @exception E_MAX_EXCEEDED The length of the specified @c text exceeds system limitations. + * @exception E_SYSTEM A system error has occurred. + */ + result InsertTextAt(int index, const Tizen::Base::String& text); + + /** + * Inserts the text that will be displayed by bitmap at the specified text position. + * + * @since 2.0 + * + * @return An error code + * @param[in] position The position to insert the text + * @param[in] text The text to be inserted @n + * It will be displayed by the @c textImage + * @param[in] textImage The alternate bitmap to be displayed + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c position is outside the valid range. @n + * Either the specified @c position is greater than the number of existing text in the % ExpanableEditArea or less than @c 0. + * @exception E_MAX_EXCEEDED The length of the specified @c text exceeds the maximum length of the text that can be displayed by % ExpanableEditArea. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The operation is not supported if the style is EXPANDABLE_EDIT_AREA_STYLE_TOKEN. + * @remarks The method modifies the text buffer that is managed by the %ExpanableEditArea control. @n + * To display the changes, the control must be drawn again. The text to be inserted will be displayed by the @c textImage. + */ + result InsertTextAt(int position, const Tizen::Base::String& text, const Tizen::Graphics::Bitmap& textImage); + + /** + * Gets the portion of the text that is displayed by the %ExpandableEditArea control. + * + * @since 2.0 + * + * @return The specified portion of the text, @n + * else an empty string if an error occurs + * @param[in] start The starting index of the range + * @param[in] end The last index of the range + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified index is outside the bounds of the data structure. @n + * The specified @c start or @c end is greater than the number of elements or less than @c 0. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see GetText() + * @see SetText() + */ + Tizen::Base::String GetText(int start, int end) const; + + /** + * Gets the text of the %ExpandableEditArea control. + * + * @since 2.0 + * + * @return The text of the %ExpandableEditArea control, @n + * else an empty string if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Base::String GetText(void) const; + + /** + * Gets the text length. + * + * @since 2.0 + * + * @return The length of the text, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + int GetTextLength(void) const; + + /** + * Sets the text to be displayed by the %ExpandableEditArea control. + * + * @since 2.0 + * + * @param[in] text The text to be set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid, @n + * or the length of the specified @c text exceeds system limitations. + * @exception E_SYSTEM A system error has occurred. + * @remarks To denote the end of a line use '\\n'. + * The method modifies the text buffer that is managed by the %ExpandableEditArea control. + * To display the changes, the control must be drawn again. + */ + result SetText(const Tizen::Base::String& text); + + /** + * Clears the text that is displayed by the %ExpandableEditArea control. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The method modifies the text buffer that is managed by the %ExpandableEditArea control. + * To display the changes, the control must be drawn again. + */ + result Clear(void); + + /** + * Sets the title of the %ExpandableEditArea control. + * + * @since 2.0 + * + * @return An error code + * @param[in] title The title to be set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetTitleText(const Tizen::Base::String& title); + + /** + * Gets the title of the %ExpandableEditArea control. + * + * @since 2.0 + * + * @return The title text of the entered string, @n + * else empty string if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Base::String GetTitleText(void) const; + +// GUIDE TEXT + /** + * Gets the guide text. + * + * @since 2.0 + * + * @return The guide text, @n + * else an empty string if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetGuideText() + */ + Tizen::Base::String GetGuideText(void) const; + + /** + * Sets the guide text to be displayed, when there is no data in the search field. + * + * @since 2.0 + * + * @return An error code + * @param[in] guideText The guide text + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetGuideText() + */ + result SetGuideText(const Tizen::Base::String& guideText); + +// LINE MANAGEMENT + /** + * Gets the maximum line count supported by the flexible text edit. + * + * @since 2.0 + * + * @return The maximum line count, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + int GetMaxLineCount(void) const; + + /** + * Gets the line spacing. + * + * @since 2.0 + * @return The line spacing, @n + * else @c -1 if an error occurs + * @see SetLineSpacing () + */ + int GetLineSpacing (void) const; + + /** + * Sets the line spacing. @n + * The line spacing is determined by multiplying @c multiplier to the default line spacing and adding @c extra. + * + * @code + * The line spacing = (default line spacing) * multiplier + extra + * @endcode + * + * @since 2.0 + * @return An error code + * @param[in] multiplier The line spacing multiplier + * @param[in] extra The extra line spacing + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG This exception is returned when @c multiplier or @c extra is less than 0. + * @see GetLineSpacing () + */ + result SetLineSpacing (int multiplier, int extra); + + /** + * Gets the current line count. + * + * @since 2.0 + * + * @return The line count of the text + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + int GetTextLineCount(void) const; + +// TEXT SIZE + /** + * Gets the text size. + * + * @since 2.0 + * + * @return The size of the text, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetTextSize() + */ + int GetTextSize(void) const; + + /** + * Sets the text size. + * + * @since 2.0 + * + * @return An error code + * @param[in] size The text size + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c size is invalid, @n + * or the specified @c size is a negative integer. + * @exception E_SYSTEM A system error has occurred. + * @see GetTextSize() + */ + result SetTextSize(int size); + +// MARGINS + /** + * Gets the margin of the specified margin type. + * + * @since 2.0 + * + * @return The margin value of the specified margin type, @n + * else @c -1 if an error occurs + * @param[in] marginType The margin type + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetMargin() + */ + int GetMargin(EditMarginType marginType) const; + + /** + * Sets the margin for the specified margin type. + * + * @if OSPCOMPAT + * @brief [Compatibility] + * @endif + * @since 2.0 + * @if OSPCOMPAT + * @compatibility This method has compatibility issues with OSP compatible applications. @n + * For more information, see @ref CompSetMarginPage "here". + * @endif + * @return An error code + * @param[in] marginType The margin type + * @param[in] margin The margin to be set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The specified @c margin cannot be negative integer. + * @exception E_SYSTEM A system error has occurred. + * @see GetMargin() + */ + result SetMargin(EditMarginType marginType, int margin); + /** + * @if OSPCOMPAT + * @page CompSetMarginPage Compatibility for SetMargin() + * @section CompSetMarginPageIssueSection Issues + * Implementing this method in OSP compatible applications has the following issues: @n + * -# The SetMargin() method sets the margin value for ExpandableEditArea with only EXPANDABLE_EDIT_AREA_STYLE_NORMAL in API version 2.0. @n + * + * @section CompSetMarginPageSolutionSection Resolutions + * This issue has been resolved in Tizen. @n + * @endif + */ + +// LOWER CASE + /** + * Enables or disables the lowercase mode. + * + * @since 2.0 + * + * @return An error code + * @param[in] enable Set to @c true to enable the lowercase mode, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks When the lowercase mode is enabled, the text input starts with a lowercase character. + * @see IsLowerCaseModeEnabled() + */ + result SetLowerCaseModeEnabled(bool enable); + + /** + * Checks whether the lowercase mode is enabled. + * + * @since 2.0 + * + * @return @c true if the lowercase mode is enabled, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetLowerCaseModeEnabled() + */ + bool IsLowerCaseModeEnabled(void) const; + +// CURSOR MANAGEMENT + /** + * Gets the cursor position. + * + * @since 2.0 + * + * @return The current cursor position, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + int GetCursorPosition(void) const; + + /** + * Sets the cursor at the specified position. + * + * @since 2.0 + * + * @return An error code + * @param[in] position The cursor position to be set + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c position is less than @c 0 or greater than the maximum length. + * @exception E_SYSTEM A system error has occurred. + */ + result SetCursorPosition(int position); + +// TEXT BLOCKING + /** + * Gets the start and end indexes of the currently selected text block. + * + * @since 2.0 + * + * @return An error code + * @param[out] start The start index of the text block + * @param[out] end The end index of the text block + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The method returns the start and end indexes as @c 0 if no text block is selected. + * @see ReleaseBlock() + * @see SetBlockRange() + */ + result GetBlockRange(int& start, int& end) const; + + /** + * Releases the selection of the current text block. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetBlockRange() + * @see SetBlockRange() + */ + result ReleaseBlock(void); + + /** + * Removes the text content of the current text block. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND The specified instance is not found, @n + * or the text block is not selected. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveTextBlock(void); + + /** + * Sets the block range for the text. + * + * @since 2.0 + * + * @return An error code + * @param[in] start The start index of the text block + * @param[in] end The end index of the text block + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified index is outside the bounds of the data structure. @n + * Either the index is greater than the number of elements or less than @c 0. + * @exception E_SYSTEM A system error has occurred. + * @see ReleaseBlock() + * @see GetBlockRange() + */ + result SetBlockRange(int start, int end); + +// KEYPAD MANAGEMENT + /** + * Gets the keypad action type. + * + * @since 2.0 + * + * @return The keypad action + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetKeypadAction() + */ + Tizen::Ui::KeypadAction GetKeypadAction(void) const; + + /** + * Gets the keypad style. + * + * @since 2.0 + * + * @return The keypad style + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetKeypadStyle() + */ + KeypadStyle GetKeypadStyle(void) const; + + /** + * Hides the keypad associated with the %ExpandableEditArea control. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see ShowKeypad() + */ + result HideKeypad(void); + + /** + * Checks whether the keypad is enabled. + * + * @since 2.0 + * + * @return @c true if the keypad is enabled, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetKeypadEnabled() + */ + bool IsKeypadEnabled(void) const; + + /** + * Sets the keypad action type. + * + * @since 2.0 + * + * @return An error code + * @param[in] keypadAction The keypad action + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks Depending on the value of @c keypadAction, the enter key label of the keypad will change accordingly. + * @see GetKeypadAction() + */ + result SetKeypadAction(Tizen::Ui::KeypadAction keypadAction); + + /** + * Sets the keypad style. + * + * @since 2.0 + * + * @return An error code + * @param[in] keypadStyle The keypad style + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The specified @c keypadStyle is KEYPAD_STYLE_PASSWORD. + * @exception E_SYSTEM A system error has occurred. + * @remarks Depending on the value of the keypad style, the layout of the keypad will change accordingly. + * @see GetKeypadStyle() + */ + result SetKeypadStyle(KeypadStyle keypadStyle); + + /** + * Checks whether the text prediction is enabled. + * + * @since 2.0 + * @return @c true if the text prediction is enabled, @n + * else @c false + * @see SetTextPredictionEnabled() + */ + bool IsTextPredictionEnabled(void) const; + + /** + * Enables or disables the text prediction. + * + * @since 2.0 + * @param[in] enable Set to @c true to enable the text prediction, @n + * else @c false + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. + * @see IsTextPredictionEnabled() + */ + result SetTextPredictionEnabled(bool enable); + + /** + * Enables or disables the keypad. + * + * @since 2.0 + * + * @return An error code + * @param[in] enable Set to @c true to enable the virtual keypad, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see IsKeypadEnabled() + */ + result SetKeypadEnabled(bool enable); + + /** + * Shows the keypad. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see HideKeypad() + */ + result ShowKeypad(void); + +// TOKEN FILTER + /** + * Sets the text token filter. + * + * @since 2.0 + * + * @return An error code + * @param[in] pFilter The filter + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The operation is not supported if the style is not EXPANDABLE_EDIT_AREA_STYLE_TOKEN. + * @exception E_SYSTEM A system error has occurred. + * @remarks The %ExpandableEditArea control checks with the registered filter to decide whether the user-entered text should be replaced. + */ + result SetTokenFilter(const ITokenFilter* pFilter); + + /** + * Gets the text token filter. + * + * @since 2.0 + * + * @return The filter, @n + * else @c null if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The operation is not supported if the style is not EXPANDABLE_EDIT_AREA_STYLE_TOKEN. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + ITokenFilter* GetTokenFilter(void) const; + + /** + * Appends the specified token. + * + * @since 2.0 + * + * @return An error code + * @param[in] token The token to be appended + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The operation is not supported if the style is not EXPANDABLE_EDIT_AREA_STYLE_TOKEN. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The length of the specified @c token is @c 0. + * @exception E_SYSTEM A system error has occurred. + */ + result AppendToken(const Tizen::Base::String& token); + + /** + * Inserts the token at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The position to insert the token + * @param[in] token The token to be added + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The operation is not supported if the style is not EXPANDABLE_EDIT_AREA_STYLE_TOKEN. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The length of the specified @c token is @c 0. + * @exception E_SYSTEM A system error has occurred. + */ + result InsertTokenAt(int index, const Tizen::Base::String& token); + + /** + * Gets the token text at the specified index. + * + * @since 2.0 + * + * @return The token text at the specified index, @n + * else an empty string if an error occurs + * @param[in] index The position to get the token + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The operation is not supported if the style is not EXPANDABLE_EDIT_AREA_STYLE_TOKEN. + * @exception E_OUT_OF_RANGE The specified index parameter is outside the bounds of the data structure. @n + * Either the index is greater than the number of elements or less than @c 0. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Base::String GetTokenAt(int index) const; + + /** + * Gets the total token count. + * + * @since 2.0 + * + * @return The total token count, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The operation is not supported if the style is not EXPANDABLE_EDIT_AREA_STYLE_TOKEN. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + int GetTokenCount(void) const; + + /** + * Gets the index of the token that is selected. + * + * @since 2.0 + * + * @return The index of the selected token, @n + * else @c -1 if no token is selected or if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The operation is not supported if the style is not EXPANDABLE_EDIT_AREA_STYLE_TOKEN. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + int GetSelectedTokenIndex(void) const; + + /** + * Checks whether the token editing mode is enabled. + * + * @since 2.0 + * + * @return @c true if the editing mode is enabled, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The operation is not supported if the style is not EXPANDABLE_EDIT_AREA_STYLE_TOKEN. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + bool IsTokenEditModeEnabled(void) const; + + /** + * Removes the token at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the token to be removed + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The operation is not supported if the style is not EXPANDABLE_EDIT_AREA_STYLE_TOKEN. + * @exception E_OUT_OF_RANGE The specified index is outside the bounds of the data structure. @n + * Either the index is greater than the number of elements or less than @c 0. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveTokenAt(int index); + + /** + * Sets the selected state of the specified token. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the token to select + * @param[in] selected Set to @c true to select the specified token, @n + * else @c false to unselect + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The operation is not supported if the style is not EXPANDABLE_EDIT_AREA_STYLE_TOKEN. + * @exception E_OUT_OF_RANGE The specified index is outside the bounds of the data structure. @n + * Either the index is greater than the number of elements or less than @c 0. + * @exception E_SYSTEM A system error has occurred. + * @remarks The currently selected token gets unselected automatically. + */ + result SetTokenSelected(int index, bool selected); + + /** + * Enables or disables the token edit mode. + * + * @since 2.0 + * + * @return An error code + * @param[in] enable Set to @c true to enable the token editing mode, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The operation is not supported if the style is not EXPANDABLE_EDIT_AREA_STYLE_TOKEN. + * @exception E_SYSTEM A system error has occurred. + */ + result SetTokenEditModeEnabled(bool enable); + +// LIMIT LENGTH + /** + * Gets the limit length. + * + * @since 2.0 + * + * @return The limit length, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. @n + * The default limit length is @c 2048. + * @see SetLimitLength() + */ + int GetLimitLength(void) const; + + /** + * Sets the limit length. + * + * @since 2.0 + * + * @return An error code + * @param[in] limitLength The limit text length to be set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid, @n + * or the specified limit length is @c 0 or negative. + * @exception E_SYSTEM A system error has occurred. + * @remarks The method modifies the text buffer that is managed by the %ExpandableEditArea control. @n + * To display the changes, the control must be drawn again. + * @see GetLimitLength() + */ + result SetLimitLength(int limitLength); + +// APPEARANCES + /** + * Gets the color of the %ExpandableEditArea control for the specified status. + * + * @since 2.0 + * + * @return The color, @n + * else RGBA (0,0,0,0) if an error occurs + * @param[in] status The status + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetColor(EditStatus status) const; + + /** + * Gets the text color of the specified text type. + * + * @since 2.0 + * + * @return The text color, @n + * else RGBA (0,0,0,0) if an error occurs + * @param[in] type The text type + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified type is not supported, or @n + * the specified @c type is EDIT_TEXT_COLOR_LINK. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetTextColor() + */ + Tizen::Graphics::Color GetTextColor(EditTextColor type) const; + + /** + * Gets the text color of the guide text. + * + * @since 2.0 + * + * @return The guide text color, @n + * else RGBA (0,0,0,0) if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetGuideTextColor() + */ + Tizen::Graphics::Color GetGuideTextColor(void) const; + + /** + * Gets the text color of the title for the specified status. + * + * @since 2.0 + * + * @return The title text color, @n + * else RGBA (0,0,0,0) if an error occurs + * @param[in] status The state of the %ExpandableEditArea control + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetTitleTextColor() + */ + Tizen::Graphics::Color GetTitleTextColor(EditStatus status) const; + + /** + * Gets the color of the tokens for the specified status. + * + * @since 2.0 + * + * @return The token color, @n + * else RGBA (0,0,0,0) if an error occurs + * @param[in] status The status + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The operation is not supported if the style is not EXPANDABLE_EDIT_AREA_STYLE_TOKEN. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetTokenColor + */ + Tizen::Graphics::Color GetTokenColor(ExpandableEditAreaTokenStatus status) const; + + /** + * Gets the text color of tokens. + * + * @since 2.0 + * + * @return The text color, @n + * else RGBA (0,0,0,0) if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The operation is not supported if the style is not EXPANDABLE_EDIT_AREA_STYLE_TOKEN. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetTokenTextColor() + */ + Tizen::Graphics::Color GetTokenTextColor(void) const; + + /** + * Gets the text color of tokens at the specified index. + * + * @since 2.0 + * + * @return The text color, @n + * else RGBA (0,0,0,0) if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The operation is not supported if the style is not EXPANDABLE_EDIT_AREA_STYLE_TOKEN. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetSelectedTokenTextColor() + */ + Tizen::Graphics::Color GetSelectedTokenTextColor(void) const; + + /** + * Sets the background bitmap of the %ExpandableEditArea control. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The status + * @param[in] bitmap The background bitmap + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetBackgroundBitmap(EditStatus status, const Tizen::Graphics::Bitmap& bitmap); + + /** + * Sets the color of the %ExpandableEditArea control. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The status of the %ExpandableEditArea control + * @param[in] color The color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetColor() + */ + result SetColor(EditStatus status, const Tizen::Graphics::Color& color); + + /** + * Sets the text color of the guide text. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The guide text color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetGuideTextColor() + */ + result SetGuideTextColor(const Tizen::Graphics::Color& color); + + /** + * Sets the text color of the title for the specified status. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The status of the %ExpandableEditArea control + * @param[in] color The title text color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetTitleTextColor() + */ + result SetTitleTextColor(EditStatus status, const Tizen::Graphics::Color& color); + + /** + * Sets the text color of the %ExpandableEditArea control. + * + * @since 2.0 + * + * @return An error code + * @param[in] type The text type + * @param[in] color The text color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetTextColor() + */ + result SetTextColor(EditTextColor type, const Tizen::Graphics::Color& color); + + /** + * Sets the text color of the tokens at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The token text color + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The operation is not supported if the style is not EXPANDABLE_EDIT_AREA_STYLE_TOKEN. + * @exception E_SYSTEM A system error has occurred. + * @see GetSelectedTokenTextColor() + */ + result SetSelectedTokenTextColor(const Tizen::Graphics::Color& color); + + /** + * Sets the color of the tokens for the specified status. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The status + * @param[in] color The token color + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The operation is not supported if the style is not EXPANDABLE_EDIT_AREA_STYLE_TOKEN. + * @exception E_SYSTEM A system error has occurred. + * @see GetTokenColor() + */ + result SetTokenColor(ExpandableEditAreaTokenStatus status, const Tizen::Graphics::Color& color); + + /** + * Sets the text color of the tokens. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The token text color + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The operation is not supported if the style is not EXPANDABLE_EDIT_AREA_STYLE_TOKEN. + * @exception E_SYSTEM A system error has occurred. + * @see GetTokenTextColor() + */ + result SetTokenTextColor(const Tizen::Graphics::Color& color); + + /** + * @if OSPDEPREC + * Enables or disables the auto resizing if the candidate word list appears. + * + * @brief [Deprecated] + * @deprecated This API is deprecated because it is no longer necessary to handle the resizing of expandable edit area. + * @since 2.0 + * + * @return An error code + * @param[in] enable Set to @c true to enable the auto resizing, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The current style of the %ExpandableEditArea does not support the operation. + * @remarks Note that when this option is enabled, the normal style %ExpandableEditArea is auto resized and the line added and removed events are + * generated if the candidate word list pop-up appears during the predictive texting. @n + * The operation is not supported by the token style %ExpandableEditArea. + * @see IsAutoResizingEnabled() + * @see Tizen::Ui::Controls::IExpandableEditAreaEventListener + * @endif + */ + result SetAutoResizingEnabled(bool enable); + + /** + * @if OSPDEPREC + * Checks whether the auto-resizing is enabled. + * + * @brief [Deprecated] + * @deprecated This API is deprecated because it is no longer necessary to handle the resizing of expandable edit area. + * @since 2.0 + * + * @return @c true if the auto-resizing is enabled, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The current style of the %ExpandableEditArea control does not support the operation. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetAutoResizingEnabled() + * @endif + */ + bool IsAutoResizingEnabled(void) const; + + /** + * Sets the input language. + * + * @since 2.0 + * + * @return An error code + * @param[in] languageCode The language to set + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The application can set the language of the current keypad that is associated with the current %ExpandableEditArea. @n + * This method only works if the language to set is supported by the current preloaded keypad. + */ + result SetCurrentLanguage(Tizen::Locales::LanguageCode languageCode); + + /** + * Gets the current input language. + * + * @since 2.0 + * + * @return An error code + * @param[out] language The current input language + * @exception E_SUCCESS The method is successful. + * @remarks The application can get the current language of the keypad that is associated with the current %ExpandableEditArea. + */ + result GetCurrentLanguage(Tizen::Locales::LanguageCode& language) const; + +// EVENT LISTENER MANAGEMENT + /** + * Adds the specified IExpandableEditAreaEventListener instance. @n + * The added listener can listen to events when a line is added or removed or when a button is pressed. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @see RemoveExpandableEditAreaEventListener() + */ + void AddExpandableEditAreaEventListener(IExpandableEditAreaEventListener& listener); + + /** + * Adds the specified IKeypadEventListener instance. @n + * The added listener is notified if the keypad associated with the edit area is opened or closed. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @see RemoveKeypadEventListener() + */ + void AddKeypadEventListener(Tizen::Ui::IKeypadEventListener& listener); + + /** + * Adds the specified ITextBlockEventListener instance. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @remarks Programmatically modifying the text block does not cause the text block selection event to fire. + * @see RemoveTextBlockEventListener() + */ + void AddTextBlockEventListener(Tizen::Ui::ITextBlockEventListener& listener); + + /** + * Adds the specified ITextEventListener instance. @n + * The added listener can listen to the text-changed event. + * + * @since 2.0 + * + * @param[in] listener The listener to be added + * @see RemoveTextEventListener() + */ + void AddTextEventListener(Tizen::Ui::ITextEventListener& listener); + + /** + * Removes the specified IExpandableEditAreaEventListener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @see AddActionEventListener() + */ + void RemoveExpandableEditAreaEventListener(IExpandableEditAreaEventListener& listener); + + /** + * Removes the specified IKeypadEventListener listener. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @see AddKeypadEventListener() + */ + void RemoveKeypadEventListener(Tizen::Ui::IKeypadEventListener& listener); + + /** + * Removes the specified ITextBlockEventListener listener. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @see AddTextBlockEventListener() + */ + void RemoveTextBlockEventListener(Tizen::Ui::ITextBlockEventListener& listener); + + /** + * Removes the specified ITextEventListener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to be removed + * @see AddTextEventListener() + */ + void RemoveTextEventListener(Tizen::Ui::ITextEventListener& listener); + + /** + * Adds a listener instance for language events. @n + * The added listener is notified when the input language is changed. + * + * @since 2.0 + * + * @param[in] listener The listener to add + * @remarks The application can recognize when the language is changed from the keypad by adding Tizen::Ui::ILanguageEventListener. + * @see RemoveLanguageEventListener() + */ + + void AddLanguageEventListener(Tizen::Ui::ILanguageEventListener& listener); + + /** + * Removes the specified listener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to remove + * @see AddLanguageEventListener() + */ + + void RemoveLanguageEventListener(Tizen::Ui::ILanguageEventListener& listener); + + /** + * Enables or disables the auto shrinking if the focus is lost. + * + * @since 2.0 + * + * @param[in] enable Set to @c true to enable the auto shrinking, @n + * else @c false + * @remarks Note that when this option is enabled, the %ExpandableEditArea is auto shrinked + * if the %ExpandableEditArea lost its focus. @n + * @see IsAutoShrinkModeEnabled() + */ + void SetAutoShrinkModeEnabled(bool enable); + + /** + * Checks whether the auto-shrinking is enabled. + * + * @since 2.0 + * + * @return @c true if the auto-shrinking is enabled, @n + * else @c false + * @see SetAutoShrinkModeEnabled() + */ + bool IsAutoShrinkModeEnabled(void) const; + + +protected: + friend class _ExpandableEditAreaImpl; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + ExpandableEditArea(const ExpandableEditArea& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + ExpandableEditArea& operator =(const ExpandableEditArea& rhs); +}; // ExpandableEditArea + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_EXPANDABLE_EDIT_AREA_H_ diff --git a/inc/FUiCtrlExpandableList.h b/inc/FUiCtrlExpandableList.h new file mode 100644 index 0000000..5a08381 --- /dev/null +++ b/inc/FUiCtrlExpandableList.h @@ -0,0 +1,1228 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlExpandableList.h + * @brief This is the header file for the %ExpandableList class. + * + * This header file contains the declarations of the %ExpandableList class and its helper classes. + */ + +#ifndef _FUI_CTRL_EXPANDABLE_LIST_H_ +#define _FUI_CTRL_EXPANDABLE_LIST_H_ + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @if OSPDEPREC + * @class ExpandableList + * @brief [Deprecated] This class defines the common behavior of an %ExpandableList control. + * + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. @n + * @since 2.0 + * + * The %ExpandableList class defines the common behavior of an %ExpandableList control. + * An expandable list is a list with a hierarchy of depth 2. List items of %ExpandableList + * consist of main items and sub-items which are CustomListItem. Main items are inserted + * into the first level as items are inserted into List class. Sub-items are inserted under + * related main items. So, sub-items are uniquely identified with two indices: main item + * index and sub-item index. + * + * If an application wants to perform tasks when the state of a list item is changed, + * it must implement IExpandableItemEventListener and register it to the expandable list, + * It will then receive related events from %ExpandableList. + * + * Unlike GroupedList which is also a list with the hierarch of depth 2, main items of + * %ExpandableList can be expanded or closed. + * + * Note that CustomListItem and CustomListItemFormat need to be created on a heap. CustomListItems will be deleted automatically + * when the %ExpandableList itself is destroyed. If you want to remove certain list items, you must use RemoveItemAt(). CustomListItemFormat + * must be deleted by the application. + * + * Refer to CustomListItem and CustomListItemFormat. + * + * Example: + * + * @image html ui_controls_expandablelist.png + * + * This is the simple UI application which uses an %ExpandableList control. + * + * @code +//Sample code for ExpandableListSample.h +#include + +class ExpandableListSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IExpandableItemEventListener +{ +public: + ExpandableListSample(void) + : __pMainItemFormat(null) + , __pSubItemFormat(null){} + + bool Initialize(void); + result AddListMainItem(Tizen::Ui::Controls::ExpandableList& expandableList, Tizen::Base::String itemText, + Tizen::Graphics::Bitmap* pBitmapNormal, Tizen::Graphics::Bitmap* pBitmapFocused); + result AddListSubItem(Tizen::Ui::Controls::ExpandableList& expandableList, int itemId, Tizen::Base::String itemText); + + virtual result OnInitializing(void); + virtual result OnTerminating(void); + + // IExpandableItemEventListener + virtual void OnItemStateChanged(const Control& source, int mainIndex, int subIndex, int itemId, Tizen::Ui::ItemStatus status); + virtual void OnItemStateChanged(const Control& source, int mainIndex, int subIndex, int itemId, int elementId, Tizen::Ui::ItemStatus status); + + + +private: + static const int ID_LIST_MAINITEM = 101; + static const int ID_LIST_SUBITEM = 102; + static const int ID_LIST_TEXT = 103; + static const int ID_LIST_BITMAP = 104; + + Tizen::Ui::Controls::CustomListItemFormat* __pMainItemFormat; + Tizen::Ui::Controls::CustomListItemFormat* __pSubItemFormat; +}; + * @endcode + * + * @code +//Sample code for ExpandableListSample.cpp +#include +#include + +#include "ExpandableListSample.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; +using namespace Tizen::Graphics; + +bool +ExpandableListSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +ExpandableListSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of ExpandableList + ExpandableList* pExpandableList = new ExpandableList(); + pExpandableList->Construct(Rectangle(0, 0, 480, 500), CUSTOM_LIST_STYLE_NORMAL); + pExpandableList->AddExpandableItemEventListener(*this); + + // Creates an instance of CustomListItemFormat of the main item + __pMainItemFormat = new CustomListItemFormat(); + __pMainItemFormat->Construct(); + __pMainItemFormat->AddElement(ID_LIST_TEXT, Rectangle(10, 25, 200, 80)); + __pMainItemFormat->AddElement(ID_LIST_BITMAP, Rectangle(220, 10, 70, 80)); + + // Creates an instance of CustomListItemFormat of the sub item + __pSubItemFormat = new CustomListItemFormat(); + __pSubItemFormat->Construct(); + __pSubItemFormat->AddElement(ID_LIST_TEXT, Rectangle(20, 25, 450, 50)); + + // Gets instances of Bitmap + AppResource *pAppResource = Application::GetInstance()->GetAppResource(); + Bitmap *pBitmapNormal = pAppResource->GetBitmapN(L"tizen.png"); + Bitmap *pBitmapFocused = pAppResource->GetBitmapN(L"tizen.png"); + + // Adds the main item + AddListMainItem(*pExpandableList, L"MainItem", pBitmapNormal, pBitmapFocused); + + // Adds the sub item + AddListSubItem(*pExpandableList, ID_LIST_MAINITEM, L"SubItem"); + + // Adds the expandable list to the form + AddControl(*pExpandableList); + + // Deallocates bitmaps + delete pBitmapNormal; + delete pBitmapFocused; + + return r; +} + +result +ExpandableListSample::OnTerminating(void) +{ + result r = E_SUCCESS; + + // Deallocates item formats + delete __pMainItemFormat; + delete __pSubItemFormat; + + return r; +} + +result +ExpandableListSample::AddListMainItem(ExpandableList& expandableList, String itemText, Bitmap* pBitmapNormal, Bitmap* pBitmapFocused) +{ + result r = E_SUCCESS; + + // Creates a main instance of CustomListItem of the expandable list + CustomListItem* pMainItem = new CustomListItem(); + pMainItem->Construct(100); + pMainItem->SetItemFormat(*__pMainItemFormat); + pMainItem->SetElement(ID_LIST_TEXT, itemText); + pMainItem->SetElement(ID_LIST_BITMAP, *pBitmapNormal, pBitmapFocused); + + // Adds the item to the expandable list + expandableList.AddItem(*pMainItem, ID_LIST_MAINITEM); + + return r; +} + +result +ExpandableListSample::AddListSubItem(ExpandableList& expandableList, int itemId, String itemText) +{ + result r = E_SUCCESS; + + // Creates a sub instance of CustomListItem of the expandable list + CustomListItem* pSubItem = new CustomListItem(); + pSubItem->Construct(100); + pSubItem->SetItemFormat(*__pSubItemFormat); + pSubItem->SetElement(ID_LIST_TEXT, itemText); + + // Adds the item to the expandable list + expandableList.AddSubItem(expandableList.GetItemIndexFromItemId(ID_LIST_MAINITEM), *pSubItem, ID_LIST_SUBITEM); + + return r; +} + +// IExpandableItemEventListener implementation +void +ExpandableListSample::OnItemStateChanged(const Control& source, int mainIndex, int subIndex, int itemId, ItemStatus status) +{ + switch (itemId) + { + case ID_LIST_MAINITEM: + { + // .... + } + break; + case ID_LIST_SUBITEM: + { + // .... + } + break; + default: + break; + } +} + +void +ExpandableListSample::OnItemStateChanged(const Control& source, int mainIndex, int subIndex, int itemId, int elementId, ItemStatus status) +{ + switch (itemId) + { + case ID_LIST_MAINITEM: + { + switch (elementId) + { + case ID_LIST_TEXT: + { + // .... + } + break; + case ID_LIST_BITMAP: + { + // .... + } + break; + default: + break; + } + } + break; + case ID_LIST_SUBITEM: + { + switch (elementId) + { + case ID_LIST_TEXT: + { + // .... + } + break; + case ID_LIST_BITMAP: + { + // .... + } + break; + default: + break; + } + } + break; + default: + break; + } +} + * @endcode + * @endif + */ +class _OSP_EXPORT_ ExpandableList + : public Tizen::Ui::Control +{ +public: + /** + * @if OSPDEPREC + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * @endif + */ + ExpandableList(void); + + /** + * @if OSPDEPREC + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * @endif + */ + virtual ~ExpandableList(void); + + /** + * @if OSPDEPREC + * Initializes this instance of %ExpandableList with the specified parameters. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return An error code + * @param[in] rect The x, y position of the top-left corner of the %ExpandableList along with the width and the height of the control + * @param[in] style The style set + * @param[in] itemDivider Set to @c true to display the divider, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks The size of the control must be within the range defined by the minimum size and the maximum size. + * The minimum size of this control is 92 x 72 on a WVGA screen, 60 x 48 on a HVGA screen and 46 x 36 on a WQVGA screen. + * @endif + */ + result Construct(const Tizen::Graphics::Rectangle& rect, CustomListStyle style, bool itemDivider = true); + + /** + * @if OSPDEPREC + * Adds the ExpandableItemEventListener instance. @n + * The added listener gets notified when the state of an item is changed. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @endif + */ + void AddExpandableItemEventListener(Tizen::Ui::IExpandableItemEventListener& listener); + + /** + * @if OSPDEPREC + * Removes the ExpandableItemEventListener instance. @n + * The removed listener is not notified even when the expandable item events are fired. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @endif + */ + void RemoveExpandableItemEventListener(Tizen::Ui::IExpandableItemEventListener& listener); + + /** + * @if OSPDEPREC + * Adds the specified item to the %ExpandableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return An error code + * @param[in] item The CustomListItem to be added + * @param[in] itemId The item ID for the item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The item ID can be used to identify the specific %CustomListItem instance or to associate the user-allocated resources. @n + * Note that %ExpandableList does not throw an exception, if the same item ID is given to multiple items. @n + * The added item is deleted automatically when the list is destroyed. @n + * Do not add, insert, or set an item which already belongs to the %ExpandableList. + * @endif + */ + result AddItem(const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Inserts the specified item to the %ExpandableList control at the specified index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return An error code + * @param[in] mainIndex The index at which to insert the item + * @param[in] item The CustomListItem to be inserted + * @param[in] itemId The item ID for the item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c index is less than @c 0 or greater than the item count. + * @exception E_SYSTEM A system error has occurred. + * @remarks The inserted item is deleted automatically when the list is destroyed. + * Do not add, insert, or set an item that already belongs to the %ExpandableList control. + * @endif + */ + result InsertItemAt(int mainIndex, const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Changes the contents of the item at the specified index in the %ExpandableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return An error code + * @param[in] mainIndex The index at which to set the contents of the item + * @param[in] item The CustomListItem to be set + * @param[in] itemId The item ID for the item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c index is less than @c 0 or greater than the item count. + * @exception E_SYSTEM A system error has occurred. + * @remarks Do not add, insert, or set an item that already belongs to the %ExpandableList control. + * @endif + */ + result SetItemAt(int mainIndex, const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Removes the item at the specified index in the %ExpandableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return An error code + * @param[in] mainIndex The index of the item to be deleted + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c index is less than @c 0 or greater than the item count. + * @exception E_SYSTEM A system error has occurred. + * @remarks The removed list item is deleted from the memory. + * @endif + */ + result RemoveItemAt(int mainIndex); + + /** + * @if OSPDEPREC + * Removes all the items from the %ExpandableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The removed list items are deleted from the memory. + * @endif + */ + result RemoveAllItems(void); + + /** + * @if OSPDEPREC + * Gets the item at the specified index in the %ExpandableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return A CustomListItem instance, @n + * else @c null if the specified index is out of range + * @param[in] mainIndex The index of the item + * @endif + */ + const CustomListItem* GetItemAt(int mainIndex) const; + + /** + * @if OSPDEPREC + * Adds the specified sub-item to the main item in the %ExpandableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return An error code + * @param[in] mainIndex The index of the main item to which the sub-item is added + * @param[in] item The CustomListItem instance to be added + * @param[in] itemId The item ID for the sub-item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified index is less than @c 0, or greater than the item count. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result AddSubItem(int mainIndex, const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Inserts the specified sub-item at the specified index to the main item in the %ExpandableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return An error code + * @param[in] mainIndex The index of the main item to which the sub-item is added + * @param[in] subIndex The index of the sub-item at which to insert the item + * @param[in] item The CustomListItem instance to be inserted + * @param[in] itemId The item ID + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified index is less than @c 0, or greater than the item count. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result InsertSubItemAt(int mainIndex, int subIndex, const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Changes the contents of the sub-item at the specified index in the %ExpandableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return An error code + * @param[in] mainIndex The main index of the sub-item at which to set the contents of the item + * @param[in] subIndex The sub-index of the sub-item at which to set the contents of the item + * @param[in] item The CustomListItem instance to be set + * @param[in] itemId The item ID + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified index is less than @c 0, or greater than the item count. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetSubItemAt(int mainIndex, int subIndex, const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Removes the sub-item at the specified index in the %ExpandableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return An error code + * @param[in] mainIndex The index of the main item which the sub-item belongs to + * @param[in] subIndex The index of the sub-item to be deleted in the main item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified index is less than @c 0, or greater than the item count. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result RemoveSubItemAt(int mainIndex, int subIndex); + + /** + * @if OSPDEPREC + * Removes all sub-items of the specified main item in the %ExpandableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return An error code + * @param[in] mainIndex The index of the main item of the %ExpandableList control + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified index is less than @c 0, or greater than or equal to the item count. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result RemoveAllSubItemsAt(int mainIndex); + + /** + * @if OSPDEPREC + * Gets the number of items in the %ExpandableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return The number of items in %ExpandableList, @n + * else @c -1 if an error occurs + * @endif + */ + int GetItemCount(void) const; + + /** + * @if OSPDEPREC + * Gets the number of sub-items in the main item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return The number of sub-items in the main item, @n + * else @c -1 if an error occurs + * @param[in] mainIndex The index of the main item + * @endif + */ + int GetSubItemCount(int mainIndex) const; + + /** + * @if OSPDEPREC + * Gets the sub-item at the specified index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return A pointer to the CustomListItem instance at the specified index, @n + * else @c null if the specified index does not exist in the %ExpandableList control + * @param[in] mainIndex The index of the main item which the sub-item belongs to + * @param[in] subIndex The index of the sub-item to get in the main index + * @endif + */ + const CustomListItem* GetSubItemAt(int mainIndex, int subIndex) const; + + /** + * @if OSPDEPREC + * Gets the first item of all the checked main items in the %ExpandableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return The index of the first checked item, @n + * else @c -1 if no main item is checked + * @endif + */ + int GetFirstCheckedItemIndex(void) const; + + /** + * @if OSPDEPREC + * Gets the item ID of the specified main item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return The item ID of the main item, @n + * else @c -1 if the specified @c mainIndex is less than @c 0 or greater than the main item count + * @param[in] mainIndex The index of the main item + * @endif + */ + int GetItemIdAt(int mainIndex) const; + + /** + * @if OSPDEPREC + * Gets the index of the specified main item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return The index of the main item, @n + * else @c -1 if no main item has the specified item ID + * @param[in] itemId The item ID + * @remarks A main item can have the same item ID and this method returns the first main item among such items. + * @endif + */ + int GetItemIndexFromItemId(int itemId) const; + + /** + * @if OSPDEPREC + * Gets the item ID of the specified sub-item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return The item ID of the specified sub-item, @n + * else @c -1 if the specified sub-item does not exist + * @param[in] mainIndex The index of the main item, which the sub-item belongs to + * @param[in] subIndex The index of the sub-item + * @endif + */ + int GetSubItemIdAt(int mainIndex, int subIndex) const; + + /** + * @if OSPDEPREC + * Expands or shrinks the specified main item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return An error code + * @param[in] mainIndex The index of the main item + * @param[in] expand Set to @c true to expand the specified main item, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c mainIndex is less than @c 0, or greater than the main item count. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetItemExpanded(int mainIndex, bool expand); + + /** + * @if OSPDEPREC + * Checks whether the main item is expanded. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return @c true if the main item is expanded, @n + * else @c false + * @param[in] mainIndex The index of the main item + * @endif + */ + bool IsItemExpanded(int mainIndex) const; + + /** + * @if OSPDEPREC + * Enables or disables the status of the main item at the specified index of the %ExpandableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return An error code + * @param[in] mainIndex The index of the main item, for which the status is to be set + * @param[in] enable Set to @c true to enable the main item, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c mainIndex is less than @c 0, or no less than the main item count. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetItemEnabled(int mainIndex, bool enable); + + /** + * @if OSPDEPREC + * Checks whether the main item at the specified index in the %ExpandableList control is enabled. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return @c true if the main item is enabled, @n + * else @c false + * @param[in] mainIndex The index of the main item to be checked + * @endif + */ + bool IsItemEnabled(int mainIndex) const; + + /** + * @if OSPDEPREC + * Sets the enabled status of the specific sub-item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return An error code + * @param[in] mainIndex The index of the main item which the sub-item belongs to + * @param[in] subIndex The index of the sub-item in the main item + * @param[in] enable Set to @c true to enable the sub-item, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The sub-item at the specified index does not exist. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetSubItemEnabled(int mainIndex, int subIndex, bool enable); + + /** + * @if OSPDEPREC + * Checks whether the specified sub-item is enabled. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return @c true if the specified sub-item is enabled, @n + * else @c false + * @param[in] mainIndex The index of the main item which the sub-item belongs to + * @param[in] subIndex The index of the sub-item in the main item + * @endif + */ + bool IsSubItemEnabled(int mainIndex, int subIndex) const; + + /** + * @if OSPDEPREC + * Sets the check status of the main item at the specified index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return An error code + * @param[in] mainIndex The index of the main item + * @param[in] check Set to @c true to check the main item, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c mainIndex is less than @c 0, or no less than the main item count. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method can only be used when the style of the list allows selection. + * @endif + */ + result SetItemChecked(int mainIndex, bool check); + + /** + * @if OSPDEPREC + * Checks whether the status of the main item at the specified index is checked. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return @c true if the main item is checked, @n + * else @c false + * @param[in] mainIndex The index of the main item + * @remarks This method can only be used when the style of the list allows selection. + * @endif + */ + bool IsItemChecked(int mainIndex) const; + + + /** + * @if OSPDEPREC + * Sets the check status of the specified sub-item of the %ExpandableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return An error code + * @param[in] mainIndex The index of the main item which the sub-item belongs to + * @param[in] subIndex The index of the sub-item in the main index + * @param[in] check Set to @c true to check the sub-item, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The sub-item at the specified index does not exist. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method can only be used when the style of the list allows selection. + * @endif + */ + result SetSubItemChecked(int mainIndex, int subIndex, bool check); + + /** + * @if OSPDEPREC + * Checks whether the specified sub-item is checked. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return @c true if the sub-item is checked, @n + * else @c false + * @param[in] mainIndex The index of the main item which the sub-item belongs to + * @param[in] subIndex The index of the sub-item in the main item + * @remarks This method can only be used when the style of the list allows selection. + * @endif + */ + bool IsSubItemChecked(int mainIndex, int subIndex) const; + + /** + * @if OSPDEPREC + * Sets the check status of all sub-items of the specified main item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return An error code + * @param[in] mainIndex The index of the main item + * @param[in] check Set to @c true to check the items, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c mainIndex is less than @c 0, or greater than the main item count. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method can only be used when the style of the list allows multiple selections. + * @endif + */ + result SetAllSubItemsChecked(int mainIndex, bool check); + + /** + * @if OSPDEPREC + * Removes all the checked sub-items of the specified main item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return An error code + * @param[in] mainIndex The index of the main item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c mainIndex is less than @c 0, or not less than the main item count. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method can only be used when the style of the list allows multiple selections. + * @endif + */ + result RemoveAllCheckedSubItemsAt(int mainIndex); + + /** + * @if OSPDEPREC + * Gets the first sub-item of all the checked sub-items in the main item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return The index of the first checked sub-item, @n + * else @c -1 if no sub-item is checked, or the specified main item does not exist + * @endif + */ + int GetFirstCheckedSubItemIndex(int mainIndex) const; + + /** + * @if OSPDEPREC + * Gets the last item of all the checked main items in the %ExpandableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return The index of the last checked item, @n + * else @c -1 if no main item is checked + * @endif + */ + int GetLastCheckedItemIndex(void) const; + + /** + * @if OSPDEPREC + * Gets the last sub-item of all the checked sub-items in the main item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return The index of the last checked sub-item, @n + * else @c -1 if no sub-item is checked or the specified main item does not exist + * @endif + */ + int GetLastCheckedSubItemIndex(int mainIndex) const; + + /** + * @if OSPDEPREC + * Gets the next checked main item from the specified index in the %ExpandableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return The index of the next checked main item, @n + * else @c -1 if no more main item after the specified index is checked, or the specified main item does not exist + * @param[in] mainIndex The index of the main item + * @endif + */ + int GetNextCheckedItemIndexAfter(int mainIndex) const; + + /** + * Gets the next checked sub-item from the specified index in the main item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return The index of the next checked sub-item, @n + * else @c -1 if no more sub-item after the specified index is checked, or the specified sub-item does not exist + * @param[in] mainIndex The index of the main item, that the sub-item belongs to + * @param[in] subIndex The index of the sub-item in the main item + * @endif + */ + int GetNextCheckedSubItemIndexAfter(int mainIndex, int subIndex) const; + + /** + * @if OSPDEPREC + * Gets the index of the sub-item with the specified @c itemId. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return An error code + * @param[in] itemId The item ID + * @param[out] mainIndex The index of the main item which the sub-item belongs to + * @param[out] subIndex The index of the sub-item + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND The specified item is not found. + * @remarks Note that one or more sub-items can have the same item ID. This method returns the first sub-item among such sub-items. + * @endif + */ + result GetSubItemIndexFromItemId(int itemId, int& mainIndex, int& subIndex) const; + + /** + * @if OSPDEPREC + * Gets the index of the item at the specified position. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return An error code + * @param[in] x The x position of the point + * @param[in] y The y position of the point + * @param[out] mainIndex The index of the main item which the sub-item belongs to + * @param[out] subIndex The index of the sub-item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result GetItemIndexFromPosition(int x, int y, int& mainIndex, int& subIndex) const; + + /** + * @if OSPDEPREC + * Gets the index of the item at the specified position. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return An error code + * @param[in] position The position of the point + * @param[out] mainIndex The index of the main item which the sub-item belongs to + * @param[out] subIndex The index of the sub-item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result GetItemIndexFromPosition(const Tizen::Graphics::Point& position, int& mainIndex, int& subIndex) const; + + /** + * @if OSPDEPREC + * Gets the index of the first item of the visible items in the %ExpandableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return An error code + * @param[out] mainIndex The main index of the top drawn item + * @param[out] subIndex The sub-index of the top drawn item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks @c mainIndex is @c -1 if no item is visible. @n + * @c subIndex is @c -1 if the top item drawn is a main item. + * @endif + */ + result GetTopDrawnItemIndex(int& mainIndex, int& subIndex) const; + + + /** + * @if OSPDEPREC + * Gets the index of the last of the visible items in the %ExpandableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return An error code + * @param[out] mainIndex The main index of the bottom drawn item + * @param[out] subIndex The sub-index of the bottom drawn item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks @c mainIndex is @c -1 if no item is visible. @n + * @c subIndex is @c -1 if the bottom item drawn is a main item. + * @endif + */ + result GetBottomDrawnItemIndex(int& mainIndex, int& subIndex) const; + + + /** + * @if OSPDEPREC + * Sets the background color of this control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @param[in] color The background color + * @endif + */ + void SetBackgroundColor(const Tizen::Graphics::Color& color); + + /** + * @if OSPDEPREC + * Sets the text to display when there is no item in the %ExpandableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @param[in] text The text message to be displayed + * @endif + */ + void SetTextOfEmptyList(const Tizen::Base::String& text); + + /** + * @if OSPDEPREC + * Sets the color of the text to be displayed when there is no item in the %ExpandableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @param[in] color The color of the text to be displayed + * @endif + */ + void SetTextColorOfEmptyList(const Tizen::Graphics::Color& color); + + /** + * @if OSPDEPREC + * Gets the color of the text to be displayed when there is no item in the %ExpandableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return The color of the text to be displayed + * @endif + */ + Tizen::Graphics::Color GetTextColorOfEmptyList(void) const; + + + /** + * @if OSPDEPREC + * Scrolls to the bottom of the %ExpandableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * @endif + */ + void ScrollToBottom(void); + + /** + * @if OSPDEPREC + * Scrolls to the top of the %ExpandableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * @endif + */ + void ScrollToTop(void); + + /** + * @if OSPDEPREC + * Scrolls to the item at the specified index. @n + * The specified item is drawn at the top of the %ExpandableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return An error code + * @param[in] mainIndex The index of the main item + * @param[in] subIndex The index of the sub-item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @exception E_INVALID_ARG The specified item does not exist. + * @endif + */ + result ScrollToTop(int mainIndex, int subIndex); + + /** + * @if OSPDEPREC + * Scrolls to the main item at the specified index. @n + * The specified main item is drawn at the top of the %ExpandableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return An error code + * @param[in] mainIndex The index of the main item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @exception E_INVALID_ARG The specified @c mainIndex is less than @c 0, or not less than the main item count. + * @endif + */ + result ScrollToTop(int mainIndex); + + /** + * @if OSPDEPREC + * Draws and shows the item at the specified index in the %ExpandableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return An error code + * @param[in] mainIndex The index of the main item + * @param[in] subIndex The index of the sub-item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @exception E_INVALID_OPERATION The item has never been drawn before calling this method. + * @exception E_INVALID_ARG The specified item does not exist. + * @endif + */ + result RefreshSubItem(int mainIndex, int subIndex); + + /** + * @if OSPDEPREC + * Draws and shows the main item at the specified index in the %ExpandableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedTableView class. + * @since 2.0 + * + * @return An error code + * @param[in] mainIndex The index of the main item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @exception E_INVALID_OPERATION The item has never been drawn before calling this method. + * @exception E_INVALID_ARG The specified @c mainIndex is invalid. + * @endif + */ + result RefreshItem(int mainIndex); + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + ExpandableList(const ExpandableList& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + ExpandableList& operator =(const ExpandableList& rhs); + + friend class _ExpandableListImpl; +}; //ExpandableList + +}}} // Tizen::Ui::Controls +#endif // _FUI_CTRL_EXPANDABLE_LIST_H_ diff --git a/inc/FUiCtrlFooter.h b/inc/FUiCtrlFooter.h new file mode 100644 index 0000000..b2eeea3 --- /dev/null +++ b/inc/FUiCtrlFooter.h @@ -0,0 +1,846 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlFooter.h + * @brief This is the header file for the %Footer class. + * + * This header file contains the declarations of the %Footer class. + */ + +#ifndef _FUI_CTRL_FOOTER_H_ +#define _FUI_CTRL_FOOTER_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +namespace Tizen { namespace Ui { namespace Controls +{ +class _FooterImpl; +/** + * @enum FooterStyle + * + * Defines the possible styles of a %Footer control. + * + * @since 2.0 + */ +enum FooterStyle +{ + FOOTER_STYLE_BUTTON_TEXT, /**< The text button style */ + FOOTER_STYLE_BUTTON_ICON, /**< The icon button style */ + FOOTER_STYLE_BUTTON_ICON_TEXT, /**< The icon and text button style */ + FOOTER_STYLE_SEGMENTED_TEXT, /**< The text segmented style */ + FOOTER_STYLE_SEGMENTED_ICON, /**< The icon segmented style */ + FOOTER_STYLE_SEGMENTED_ICON_TEXT, /**< The icon and text segmented style */ + FOOTER_STYLE_TAB /**< The tab style */ +}; + +/** + * @class Footer + * @brief This class is an implementation of a %Footer control. + * + * @since 2.0 + * + * The %Footer class displays a multi-purpose area at the bottom of the screen. It is used to switch between different application + * "views", or to host buttons for performing user-defined actions. + * + * For more information on the class features, see Footer. + * + * The following examples demonstrate how to use the %Footer class. + * - Constructing a footer + * When creating a %Form, specify the FORM_STYLE_FOOTER parameter in the Form::Construct() method. + * + * @code + * // Initializes + * bool + * TestForm::Initialize(void) + * { + * Construct(FORM_STYLE_NORMAL | FORM_STYLE_INDICATOR | FORM_STYLE_FOOTER); + * } + * @endcode + * + * - Using the footer + * Gets the footer with the GetFooter() method, and sets the footer style + * + * @code + * bool + * TestForm::Initialize(void) + * { + * Footer* pFooter = GetFooter(); + * pFooter->SetStyle(FOOTER_STYLE_SEGMENTED_TEXT); + * } + * @endcode + * + * - Adding items to the footer: + * Adds FooterItems or ButtonItems according to the footer style. The action ID registered in the Construct() method is notified + * when items are touched. + * + * @code + * bool + * TestForm::Initialize(void) + * { + * FooterItem footerItem; + * footerItem.Construct(ID_FOOTER_ITEM); + * footerItem.SetText("FooterItem"); + * + * pFooter->AddItem(footerItem); + * + * ButtonItem buttonItem; + * buttonItem.Construct(BUTTON_ITEM_STYLE_ICON, ID_HEADER_BUTTON); + * buttonItem.SetIcon(BUTTON_ITEM_STATUS_NORMAL, __pBitmap); + * + * pFooter->SetButton(BUTTON_POSITION_LEFT, buttonItem); + * + * } + * @endcode + * + * -Using the back button + * The image of back button is internally set by UI framework. + * + * @code + * bool + * TestForm::Initialize(void) + * { + * pFooter->SetBackButton(); + * } + * @endcode + */ +class _OSP_EXPORT_ Footer + : public Tizen::Ui::Control +{ +public: + /** + * Adds the specified footer item. + * + * @since 2.0 + * + * @return An error code + * @param[in] item The footer item to be added + * @exception E_SUCCESS The method is successful. + * @exception E_MAX_EXCEEDED The number of items has exceeded the maximum limit. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The specified item is not constructed. + * @exception E_SYSTEM A system error has occurred. + * @remarks The %Footer control does not throw any exception even though the same action ID is assigned to multiple items. @n + * However, the content of the specified item is copied to the %Footer control. @n + * Depending on the style of the %Footer control, several types of items can be added or inserted. + */ + result AddItem(const FooterItem& item); + + + /** + * Inserts the footer item at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemIndex The index where the item must be inserted + * @param[in] item The footer item object to be inserted + * @exception E_SUCCESS The method is successful. + * @exception E_MAX_EXCEEDED The number of items has exceeded the maximum limit. + * @exception E_OUT_OF_RANGE The specified index is outside the bounds of the data structure. @n + * The index is greater than or equal to the number of elements or less than @c 0. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The specified item is not constructed. + * @exception E_SYSTEM A system error has occurred. + * @remarks The %Footer control does not throw any exception even though the same action ID is assigned to multiple items. @n + * However, the content of the specified item is copied to the %Footer control. @n + * Depending on the style of the %Footer control, several types of items can be added or inserted. + */ + result InsertItemAt(int itemIndex, const FooterItem& item); + + + /** + * Checks whether a button item is set at the specified position. + * + * @since 2.0 + * + * @return @c true if the button item is set at the specified position, @n + * else @c false + * @param[in] position The position of the button item + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + bool IsButtonSet(ButtonPosition position) const; + + + /** + * Checks whether the back button item is set. + * + * @since 2.0 + * + * @return @c true if the back button item is set, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + bool IsBackButtonSet(void) const; + + + /** + * Checks whether the tab edit mode is enabled. + * + * @since 2.0 + * + * @return @c true if the tab edit mode is set, @n + * else @c false + * @exception E_SUCCESS The method is successful. + */ + bool IsTabEditModeEnabled(void) const; + + + /** + * Gets the color of the button item for the specified state. + * + * @since 2.0 + * + * @return The color of the button item, @n + * else RGBA (0,0,0,0) if an error occurs + * @param[in] status The status of the button item + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetButtonColor() + */ + Tizen::Graphics::Color GetButtonColor(ButtonItemStatus status) const; + + + /** + * Gets the text color of the button item for the specified state. + * + * @since 2.0 + * + * @return The text color of the button item, @n + * else RGBA (0,0,0,0) if an error occurs + * @param[in] status The status of the button item + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetButtonTextColor() + */ + Tizen::Graphics::Color GetButtonTextColor(ButtonItemStatus status) const; + + + /** + * Gets the state of the specified button item. + * + * @since 2.0 + * + * @return The state of the button item at the specified position + * @param[in] position The position of the button item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * There is no button set at the specified position. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + ButtonItemStatus GetButtonStatus(ButtonPosition position) const; + + + /** + * Gets the state of the back button. + * + * @since 2.0 + * + * @return The state of the back button, @n + * else @c BUTTON_ITEM_STATUS_NORMAL if an error occurs. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The back button is not set. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + ButtonItemStatus GetBackButtonStatus(void) const; + + + /** + * Gets the color of the footer item for the specified item state. + * + * @since 2.0 + * + * @return The color of the item, @n + * else RGBA (0,0,0,0) if an error occurs + * @param[in] status The item status + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetItemColor() + */ + Tizen::Graphics::Color GetItemColor(FooterItemStatus status) const; + + + /** + * Gets the number of footer items. + * + * @since 2.0 + * + * @return The number of footer items, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + int GetItemCount(void) const; + + + /** + * Gets the state of the specified footer item. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemIndex The index of the item + * @param[out] status The state of the item at the specified index + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified index is outside the bounds of the data structure. @n + * The index is greater than or equal to the number of elements or less than zero. + */ + result GetItemStatus(int itemIndex, FooterItemStatus& status) const; + + + /** + * Gets the text color of the footer item for the specified item state. + * + * @since 2.0 + * + * @return The text color of the item, @n + * else RGBA (0,0,0,0) if an error occurs + * @param[in] status The item status + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetItemTextColor(FooterItemStatus status) const; + + + /** + * Gets the style of the %Footer control. + * + * @since 2.0 + * + * @return The footer style, @n + * else @c FOOTER_STYLE_BUTTON_TEXT if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + FooterStyle GetStyle(void) const; + + + /** + * Gets the index of the currently selected item. + * + * @since 2.0 + * + * @return The selected item index,@n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. @n + * The operation is supported only when the style of the %Footer control is either segmented or tab. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + int GetSelectedItemIndex(void) const; + + + /** + * Gets the color of the footer. + * + * @since 2.0 + * + * @return The color, @n + * else RGBA (0,0,0,0) if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetColor(void) const; + + + /** + * Removes all the button items. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The back button will be also removed. + */ + result RemoveAllButtons(void); + + + /** + * Removes the button item at the specified position. + * + * @since 2.0 + * + * @return An error code + * @param[in] position The position of the button item to be removed + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks If no button item is set at the specified position, the method will return @c E_SUCCESS. + */ + result RemoveButtonAt(ButtonPosition position); + + + /** + * Removes the back button item. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks If the back button item is not set, the method will return @c E_SUCCESS. + */ + result RemoveBackButton(void); + + + /** + * Removes all the footer items. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The left, right, and back button items are not removed. + */ + result RemoveAllItems(void); + + + /** + * Removes the item at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemIndex The index of the item to be removed + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified index is outside the bounds of the data structure. @n + * The index is greater than or equal to the number of elements or less than @c 0. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveItemAt(int itemIndex); + + + /** + * Sets the background bitmap image. + * + * @since 2.0 + * + * @return An error code + * @param[in] pBitmap The background image + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetBackgroundBitmap(const Tizen::Graphics::Bitmap* pBitmap); + + + /** + * Sets the button item at the specified position. + * + * @since 2.0 + * + * @return An error code + * @param[in] position The position at which to set the specified button item. + * @param[in] button The button item to be set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The specified item is not constructed. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation.@n + * There are more than 2 footer items. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. @n + * The operation is supported when the style of the %Footer control is either + * @c FOOTER_STYLE_SEGMENTED_TEXT or @c FOOTER_STYLE_SEGMENTED_ICON. + * @exception E_SYSTEM A system error has occurred. + * @remarks If there is an existing button item at the specified position, it is replaced with the new item.@n + * However, the contents of the specified item are copied to the %Footer control. + */ + result SetButton(ButtonPosition position, const ButtonItem& button); + + + /** + * Sets the button item color for the specified state. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The status of the button item + * @param[in] color The button item color to be set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetButtonColor() + */ + result SetButtonColor(ButtonItemStatus status, const Tizen::Graphics::Color& color); + + + /** + * Enables or disables the button item at the specified position. + * + * @since 2.0 + * + * @return An error code + * @param[in] position The button item position + * @param[in] enable Set to @c true to enable the specified button item, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * There is no button set at the specified position. + * @exception E_SYSTEM A system error has occurred. + */ + result SetButtonEnabled(ButtonPosition position, bool enable); + + + /** + * Enables or disables the back button. + * + * @since 2.0 + * + * @return An error code + * @param[in] enable Set to @c true to enable the back button, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The back button item is not set. + * @exception E_SYSTEM A system error has occurred. + */ + result SetBackButtonEnabled(bool enable); + + + /** + * Sets the button item text color for the specified state. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The status of the button item + * @param[in] color The button item text color to be set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetButtonTextColor() + */ + result SetButtonTextColor(ButtonItemStatus status, const Tizen::Graphics::Color& color); + + /** + * Sets the badge icon of the specified ButtonItem. + * + * @since 2.0 + * + * @return An error code + * @param[in] position The button item position + * @param[in] pBadgeIcon The bitmap for the icon + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. @n + * The operation is not supported when the style of the %Footer control is @c FOOTER_STYLE_TAB. + */ + result SetButtonBadgeIcon(ButtonPosition position, const Tizen::Graphics::Bitmap* pBadgeIcon); + + + /** + * Sets the numbered badge icon of the specified ButtonItem. + * + * @since 2.0 + * + * @return An error code + * @param[in] position The button item position + * @param[in] number The number value that should be displayed as the badge icon + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c number must be in the range defined by @c 0 and @c 99999. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. @n + * The operation is not supported when the style of the %Footer control is @c FOOTER_STYLE_TAB. + * @remarks To remove the numbered badge icon from an item, pass @c 0 as the value of @c number. + */ + result SetButtonNumberedBadgeIcon(ButtonPosition position, int number); + + + /** + * Sets the back button. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * There are more than 2 footer items. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. @n + * The operation is not supported when the style of the %Footer control is @c FOOTER_STYLE_TAB. @n + * This device does not support the software back button. + * @exception E_SYSTEM A system error has occurred. + * @remarks When the back button is pressed, OnFormBackRequested() of IFormBackEventListener is called. @n + * If the right button is already set, then the button is replaced with the back button. + * @see Tizen::Ui::Controls::IFormBackEventListener + */ + result SetBackButton(void); + + + /** + * Sets the content of the footer item at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemIndex The index at which to set the specified item + * @param[in] item The item + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified index is outside the bounds of the data structure. @n + * The index is greater than or equal to the number of elements or less than @c 0. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The specified item is not constructed. + * @exception E_SYSTEM A system error has occurred. + * @remarks The %Footer control does not throw any exception even though the same action ID is assigned to multiple items. @n + * However, the content of the specified item is copied to the %Footer control. + */ + result SetItemAt(int itemIndex, const FooterItem& item); + + + /** + * Sets the item color for the specified state. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The item status + * @param[in] color The item color to be set + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. @n + * The current style of the %Footer control does not support the operation. + * @exception E_SYSTEM A system error has occurred. + * @remarks It is not possible to set the item colors for the normal and disabled status of the @c FOOTER_STYLE_TAB style %Footer control. @n + Furthermore, @c FOOTER_STYLE_BUTTON_ICON style %Footer control does not support this operation. + * @see GetItemColor() + */ + result SetItemColor(FooterItemStatus status, const Tizen::Graphics::Color& color); + + + /** + * Sets the item state at the specified index in the footer. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemIndex The index of the item + * @param[in] enable Set to @c true to enable the item state, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified index is outside the bounds of the data structure. @n + * The index is greater than or equal to the number of elements or less than zero. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The specified item is currently selected. + * @exception E_SYSTEM A system error has occurred. + */ + result SetItemEnabled(int itemIndex, bool enable); + + + /** + * Sets the badge icon of the specified tab style footer item. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemIndex The index of the item to set the badge icon + * @param[in] pBadgeIcon The bitmap for the icon + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified index is outside the bounds of the data structure. @n + * The index is greater than or equal to the number of elements or less than @c 0. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. @n + * The operation is not supported when the style of the %Footer control is @c FOOTER_STYLE_BUTTON_ICON. + * @exception E_SYSTEM A system error has occurred. + */ + result SetItemBadgeIcon(int itemIndex, const Tizen::Graphics::Bitmap* pBadgeIcon); + + + /** + * Sets the numbered badge icon of the specified footer item. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemIndex The item index + * @param[in] number The number value that must be displayed as the badge icon + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c number must be in the range defined by @c 0 and @c 99999. + * @exception E_OUT_OF_RANGE The specified index is outside the bounds of the data structure. @n + * The index is greater than or equal to the number of elements or less than @c 0. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. @n + * The operation is not supported when the style of the %Footer control is @c FOOTER_STYLE_BUTTON_ICON. + * @exception E_SYSTEM A system error has occurred. + * @remarks To remove the numbered badge icon from an item, pass @c 0 as the value of @c number. + */ + result SetItemNumberedBadgeIcon(int itemIndex, int number); + + + /** + * Sets the item text color for the specified state. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The item status + * @param[in] color The item text color to be set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetItemTextColor(FooterItemStatus status, const Tizen::Graphics::Color& color); + + + /** + * Selects the item at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemIndex The index of the item to be selected + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified index is out of the range of the data structure. @n + * The specified index is either greater than or equal to the number of items or is less than zero. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The item at the specified index is disabled. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. @n + * The operation is not supported if the %Footer control style is either @c FOOTER_STYLE_BUTTON_TEXT or @c FOOTER_STYLE_BUTTON_ICON. + * @exception E_SYSTEM A system error has occurred. + */ + result SetItemSelected(int itemIndex); + + + /** + * Sets the color of the footer. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The footer color to be set + * @exception E_SUCCESS The method is successful. + */ + result SetColor(const Tizen::Graphics::Color& color); + + + /** + * Sets the style of the footer. + * + * @since 2.0 + * + * @return An error code + * @param[in] style The footer style to set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks All items and buttons will be removed if the style is changed. + */ + result SetStyle(FooterStyle style); + + + /** + * Enables or disables the tab edit mode. + * + * @since 2.0 + * + * @return An error code + * @param[in] enable Set to @c true to enable the edit mode, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. @n + * The operation is not supported when the style of the %Footer control style is not @c FOOTER_STYLE_TAB. + */ + result SetTabEditModeEnabled(bool enable); + + + /** + * Adds an action event listener instance. + * OnActionPerformed() of the added listener is called when the user selects an item. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @remarks When the user collapses the tab style %Footer control which is in the expanded mode by pressing the more button, OnActionPerformed() is called for the currently selected tab item. + */ + void AddActionEventListener(Tizen::Ui::IActionEventListener& listener); + + + /** + * Removes an action event listener instance. + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + */ + void RemoveActionEventListener(Tizen::Ui::IActionEventListener& listener); + + + /** + * Gets the position and size of the specified button item. + * + * @since 2.0 + * + * @return The position and size of the button item at the specified position. + * @param[in] position The position of the button item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * There is no button set at the specified position. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Rectangle GetButtonBounds(ButtonPosition position) const; + + +protected: + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + // This is the default constructor for this class. + // @since 2.0 + // + Footer(void); + + + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + // This is the destructor for this class. + // @since 2.0 + // + virtual ~Footer(void); + + +private: + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + // Initializes this instance of Footer with the specified parameter. + // + // @since 2.0 + // @return An error code + // @exception E_SUCCESS The method is successful. + // @exception E_SYSTEM A system error has occurred. + // + result Construct(void); + + Footer(const Footer& rhs); + Footer& operator =(const Footer& rhs); + +private: + friend class _FormImpl; + friend class _FooterImpl; + +}; + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_FOOTER_H_ diff --git a/inc/FUiCtrlFooterItem.h b/inc/FUiCtrlFooterItem.h new file mode 100644 index 0000000..2df4503 --- /dev/null +++ b/inc/FUiCtrlFooterItem.h @@ -0,0 +1,195 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlFooterItem.h + * @brief This is the header file for the %FooterItem class. + * + * This header file contains the declarations of the %FooterItem class. + */ +#ifndef _FUI_CTRL_FOOTER_ITEM_H_ +#define _FUI_CTRL_FOOTER_ITEM_H_ + +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +/** + * @enum FooterItemStatus + * + * Defines the possible status of %FooterItem. + * + * @since 2.0 + */ +enum FooterItemStatus +{ + FOOTER_ITEM_STATUS_NORMAL, /**< The normal state */ + FOOTER_ITEM_STATUS_PRESSED, /**< The pressed state */ + FOOTER_ITEM_STATUS_SELECTED, /**< The selected state */ + FOOTER_ITEM_STATUS_HIGHLIGHTED, /**< The highlighted state */ + FOOTER_ITEM_STATUS_DISABLED /**< The disabled state */ +}; + +/** + * @class FooterItem + * @brief This class is an implementation of %FooterItem. + * + * @since 2.0 + * + * The %FooterItem class is a helper class that specifies the contents of the footer item. + * + *For more information on the class features, see Footer. + */ +class _OSP_EXPORT_ FooterItem + : public Tizen::Base::Object +{ +public: + /** + * This is the default constructor for this class. + * + * @since 2.0 + */ + FooterItem(void); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~FooterItem(void); + + + /** + * Initializes this instance of %FooterItem with the specified parameter. + * + * @since 2.0 + * + * @return An error code + * @param[in] actionId The action ID of this item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The specified @c actionId of the specified item must be a positive integer. + */ + result Construct(int actionId); + + + /** + * Gets the action ID of the item. + * + * @since 2.0 + * + * @return The action ID, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + int GetActionId(void) const; + + + /** + * Gets the text of the footer item. + * + * @since 2.0 + * + * @return The item text, @n + * else an empty string if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Base::String GetText(void) const; + + + /** + * Sets the action ID of the footer item. + * + * @since 2.0 + * + * @return An error code + * @param[in] actionId The specified action ID of the footer item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The specified @c actionId of the specified item must be a positive integer. + */ + result SetActionId(int actionId); + + + /** + * Sets the background bitmap of the footer item. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The status of the footer item + * @param[in] pBitmap The background bitmap to set, @n + * else @c null if no bitmap is displayed. + * @exception E_SUCCESS The method is successful. + * @remarks If the size of the bitmap is greater than the size of the item, the bitmap is scaled down. + */ + result SetBackgroundBitmap(FooterItemStatus status, const Tizen::Graphics::Bitmap* pBitmap); + + + /** + * Sets the icon of the footer item. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The status of the footer item + * @param[in] pIcon The icon to set, @n + * else @c null if no bitmap is displayed + * @exception E_SUCCESS The method is successful. + * @remarks If the size of the bitmap is greater than the default icon size, the bitmap is scaled down. @n + * The bitmap specified for the @c FOOTER_ITEM_STATUS_NORMAL will be applied for all other statues unless different bitmaps are explicitly + * set for those by using this method. @n + * Furthermore, the icon button does not support @c FOOTER_ITEM_STATUS_SELECTED status and the bitmap for the status is also ignored. + */ + result SetIcon(FooterItemStatus status, const Tizen::Graphics::Bitmap* pIcon); + + + /** + * Sets the text of the footer item. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text to be set + * @exception E_SUCCESS The method is successful. + * @remarks If the text cannot be displayed in a line, then the text is automatically displayed in two lines and the ellipsis is applied if the text + * is longer than two lines. @n + * Use @htmlonly '\n' @endhtmlonly to denote the end of the first line. + */ + result SetText(const Tizen::Base::String& text); + + +private: + FooterItem(const FooterItem& footerItem); + FooterItem& operator =(const FooterItem& footerItem); + +private: + friend class _FooterImpl; + friend class _FooterItemImpl; + + class _FooterItemImpl* __pImpl; +}; + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_FOOTER_ITEM_H_ diff --git a/inc/FUiCtrlForm.h b/inc/FUiCtrlForm.h new file mode 100644 index 0000000..5c5ee9a --- /dev/null +++ b/inc/FUiCtrlForm.h @@ -0,0 +1,1024 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlForm.h + * @brief This is the header file for the %Form class. + * + * This header file contains the declarations of the %Form class. + */ +#ifndef _FUI_CTRL_FORM_H_ +#define _FUI_CTRL_FORM_H_ + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Ui +{ +class DataBindingContext; +} } // Tizen::Ui + +namespace Tizen { namespace Ui { namespace Controls +{ +class Header; +class Footer; +class Tab; +class IFormBackEventListener; + +/** + * @enum FormStyle + * + * Defines the %Form control style. + * + * @since 2.0 + */ +enum FormStyle +{ + FORM_STYLE_NORMAL = 0x00000000, /**< The basic form style */ + FORM_STYLE_TITLE = 0x00000001, /**<@if OSPDEPREC @deprecated This enumeration field is deprecated because the use of the Title control is no longer recommended.@endif */ + FORM_STYLE_INDICATOR = 0x00000002, /**< The form with the indicator area */ + FORM_STYLE_SOFTKEY_0 = 0x00000010, /**<@if OSPDEPREC @deprecated This enumeration field is deprecated because the use of the Softkey control is no longer recommended.@endif */ + FORM_STYLE_SOFTKEY_1 = 0x00000020, /**<@if OSPDEPREC @deprecated This enumeration field is deprecated because the use of the Softkey control is no longer recommended.@endif */ + FORM_STYLE_OPTIONKEY = 0x00000040, /**<@if OSPDEPREC @deprecated This enumeration field is deprecated because the use of the Optionkey control is no longer recommended.@endif */ + FORM_STYLE_TEXT_TAB = 0x00000100, /**<@if OSPDEPREC @deprecated This enumeration field is deprecated because the use of the Tab control is no longer recommended. @endif */ + FORM_STYLE_ICON_TAB = 0x00000200, /**<@if OSPDEPREC @deprecated This enumeration field is deprecated because the use of the Tab control is no longer recommended. @endif */ + FORM_STYLE_HEADER = 0x00001000, /**< The form with a header */ + FORM_STYLE_FOOTER = 0x00002000 /**< The form with a footer */ +}; + + +/** + * @if OSPDEPREC + * @enum Softkey + * + * Defines the softkey. + * + * @brief [Deprecated] + * @deprecated This enumeration type is deprecated because the use of the Softkey control is no longer recommended. + * @since 2.0 + * @endif + */ +enum Softkey +{ + SOFTKEY_0, /**< @if OSPDEPREC The left softkey @endif */ + SOFTKEY_1, /**< @if OSPDEPREC The right softkey @endif */ + SOFTKEY_COUNT // This enum value is for internal use only. Using this enum value can cause behavioral, security-related, and consistency-related issues in the application. +}; + + +/** + * @enum FormActionBar + * + * Defines the action bars that can be attached to the %Form control. + * + * @since 2.0 + */ +enum FormActionBar +{ + FORM_ACTION_BAR_INDICATOR = 0x0001, /**< The indicator */ + FORM_ACTION_BAR_HEADER = 0x0002, /**< The header */ + FORM_ACTION_BAR_FOOTER = 0x0004, /**< The footer */ + FORM_ACTION_BAR_TAB = 0x0008 /**< The tab */ // Ki-Dong,Hong.Temp +}; + + +/** + * @class Form + * @brief This class provides a container with general controls. + * + * @since 2.0 + * + * The %Form class displays a full screen container. It can contain user-created controls and system UI components, such + * as an indicator area, header, and footer. The application can have multiple forms that are all added to a single Frame. + * + * For more information on the class features, see Form. + * + * The following example demonstrates how to use the %Form class. + * + * Example: + * + *@image html ui_controls_form.png + *@n + * + * This is a simple UI application that uses a %Form. + * + * + * @code + // Creates an instance of Form + Form* pForm = new Form(); + pForm->Construct(FORM_STYLE_NORMAL| FORM_STYLE_HEADER| FORM_STYLE_FOOTER); + + // Gets a pointer of the frame + Frame *pFrame = UiApp::GetInstance()->GetAppFrame()->GetFrame(); + pFrame->AddControl(*pForm); + pFrame->SetCurrentForm(*pForm); + + // Implements MyActionEventListener + IActionEventListener* pListener = new MyActionEventListener(); + + // Adds a header + Header * pHeader = GetHeader(); + pHeader->SetTitleText(L"FormSample"); + + // Adds a footer + Footer * pFooter = GetFooter(); + pFooter->SetStyle(FOOTER_STYLE_TAB); + pFooter->AddActionEventListener(*this); + + // Calls Invalidate() to display the form + pForm->Invalidate(true) + * @endcode + * + */ +class _OSP_EXPORT_ Form + : public Tizen::Ui::Container +{ +public: +// Lifecycle + /** + * This is the default constructor for this class. + * @since 2.0 + */ + Form(void); + + /** + * This is the destructor for this class. + * @since 2.0 + */ + virtual ~Form(void); + + /** + * Initializes this instance of %Form with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] formStyle The form style @n + * Multiple form styles can be combined using bitwise OR (see Tizen::Ui::Controls::FormStyle). + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid @if OSPCOMPAT @b Since: @b 2.0 @endif. @n + * - FORM_STYLE_HEADER and FORM_STYLE_TITLE are specified at the same time. @n + * - FORM_STYLE_FOOTER and FORM_STYLE_SOFTKEY_0 are specified at the same time. @n + * - FORM_STYLE_FOOTER and FORM_STYLE_SOFTKEY_1 are specified at the same time. @n + * - FORM_STYLE_FOOTER and FORM_STYLE_OPTIONKEY are specified at the same time. + * @exception E_MAX_EXCEEDED The total number of Frames and Forms exceeds the system limitation. + * @exception E_SYSTEM A system error has occurred. + * @remarks The maximum number of Forms that an application can construct is limited by available memory. + * @see FormStyle + */ + result Construct(unsigned long formStyle); + + + /** + * Initializes this instance of %Form with the specified resource ID. @n + * This method first attempts to find the resource file in the folder that corresponds to the current screen resolution. If it fails to find the + * appropriate resource file, the method tries searching in other folders. When AutoScaling is enabled, the method first searches the folder that + * corresponds to the current screen size category and then searches the "res/screen-size-normal/" folder. + * + * @since 2.0 + * + * @return An error code + * @param[in] resourceId The resource ID describing the %Form control + * @exception E_SUCCESS The method is successful. + * @exception E_FILE_NOT_FOUND The specified file cannot be found. + * @exception E_INVALID_FORMAT The specified XML format is invalid. + * @exception E_OPERATION_FAILED The operation has failed. + */ + result Construct(const Tizen::Base::String& resourceId); + + /** + * Initializes this instance of %Form with the form style and layout. + * + * @since 2.0 + * + * @return An error code + * @param[in] layout The layout for both the portrait and landscape mode + * @param[in] formStyle The form style @n + * Multiple form styles can be combined using bitwise OR (see Tizen::Ui::Controls::FormStyle). + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid, or + * the specified layout is already bound to another container. + * @exception E_MAX_EXCEEDED The total number of Frames and Forms exceeds the system limitation. + * @exception E_SYSTEM A system error has occurred. + * @remarks The maximum number of Forms that an application can construct is limited by available memory. @n + * The children are arranged within the client area bounds of the form area by @c layout. + * @see FormStyle + */ + result Construct(const Tizen::Ui::Layout& layout, unsigned long formStyle); + + /** + * Initializes this instance of %Form with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] portraitLayout The layout for the portrait mode + * @param[in] landscapeLayout The layout for the landscape mode + * @param[in] formStyle The form style @n + * Multiple form styles can be combined using bitwise OR (see Tizen::Ui::Controls::FormStyle). + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid, or + * the specified layout is already bound to another container. + * @exception E_MAX_EXCEEDED The total number of Frames and Forms exceeds the system limitation. + * @exception E_SYSTEM A system error has occurred. + * @remarks The maximum number of Forms that an application can construct is limited by available memory. @n + * The children are arranged within the bounds of the form area by @c layout. + * @see FormStyle + */ + result Construct(const Tizen::Ui::Layout& portraitLayout, const Tizen::Ui::Layout& landscapeLayout, unsigned long formStyle); + +// Operation + + /** + * Adds an IOrientationEventListener instance. @n + * The added listener can listen to the orientation changed events that are fired when the orientation mode of the screen is changed. + * + * @since 2.0 + * + * @param[in] listener The listener to be added + * @remarks The %Form control can only listen to those changes to the orientation mode that are enabled by calling SetOrientation(). + * @see RemoveOrientationEventListener() + */ + void AddOrientationEventListener(Tizen::Ui::IOrientationEventListener& listener); + + + /** + * @if OSPDEPREC + * Adds an IActionEventListener instance. @n + * The added listener can listen to the action events that are fired when an option key is selected. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the use of the Optionkey control is no longer recommended. + * @since 2.0 + * + * @param[in] listener The listener to be added + * @see RemoveOptionkeyActionListener() + * @endif + */ + void AddOptionkeyActionListener(Tizen::Ui::IActionEventListener& listener); + + + /** + * @if OSPDEPREC + * Adds an IActionEventListener instance. @n + * The added listener can listen to the action events that are fired when a softkey is selected. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the use of the Softkey control is no longer recommended. + * @since 2.0 + * + * @param[in] softkey The style of the softkey + * @param[in] listener The listener to be added + * @see RemoveSoftkeyActionListener() + * @endif + */ + void AddSoftkeyActionListener(Softkey softkey, Tizen::Ui::IActionEventListener& listener); + + + /** + * @if OSPDEPREC + * Removes an IActionEventListener instance. @n + * The removed listener cannot listen to the events when they are fired. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the use of the Optionkey control is no longer recommended. + * @since 2.0 + * + * @param[in] listener The listener to be removed + * @see AddOptionkeyActionListener() + * @endif + */ + void RemoveOptionkeyActionListener(Tizen::Ui::IActionEventListener& listener); + + + /** + * Removes an IOrientationEventListener instance. @n + * The removed listener cannot listen to the events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to be removed + * + * @see AddOrientationEventListener() + */ + void RemoveOrientationEventListener(Tizen::Ui::IOrientationEventListener& listener); + + + /** + * @if OSPDEPREC + * Removes an IActionEventListener instance. @n + * The removed listener cannot listen to the events when they are fired. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the use of the Softkey control is no longer recommended. + * @since 2.0 + * + * @param[in] softkey The style of the softkey + * @param[in] listener The listener to be removed + * @see AddSoftkeyActionListener() + * @endif + */ + void RemoveSoftkeyActionListener(Softkey softkey, Tizen::Ui::IActionEventListener& listener); + + +// Accessor + /** + * Gets the background color of the %Form control. + * + * @since 2.0 + * + * @return The background color of the %Form control + */ + Tizen::Graphics::Color GetBackgroundColor(void) const; + + + /** + * Gets the bounds of the client area. + * + * @since 2.0 + * + * @return The bounds of the client area + * @remarks The client area of the %Form control does not include the title, indicator, header and footer areas. + * header and footer areas. + * + */ + Tizen::Graphics::Rectangle GetClientAreaBounds(void) const; + + + /** + * Gets the style of the %Form control. + * + * @since 2.0 + * + * @return An @c unsigned @c long value representing the style of the %Form control + */ + unsigned long GetFormStyle(void) const; + + + /** + * Gets the orientation mode of the %Form control. + * + * @since 2.0 + * + * @return The orientation of the %Form control + */ + Tizen::Ui::Orientation GetOrientation(void) const; + + + /** + * Gets the current orientation status of the %Form control. + * + * @since 2.0 + * + * @return The orientation status of the %Form control, @n + * else ORIENTATION_NONE if the %Form control is not the current form of the Frame control + */ + Tizen::Ui::OrientationStatus GetOrientationStatus(void) const; + + + /** + * @if OSPDEPREC + * Gets the action ID of the specified softkey. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the use of the Softkey control is no longer recommended. + * @since 2.0 + * + * @return An integer value representing the action ID + * @param[in] softkey The softkey + * @endif + */ + int GetSoftkeyActionId(Softkey softkey) const; + + + /** + * @if OSPDEPREC + * Gets the text of the specified softkey. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the use of the Softkey control is no longer recommended. + * @since 2.0 + * + * @return The text of the softkey + * @param[in] softkey The softkey + * @endif + */ + Tizen::Base::String GetSoftkeyText(Softkey softkey) const; + + + /** + * @if OSPDEPREC + * Gets the pointer of the Tab control if it exists. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the use of the Tab control is no longer recommended. + * @since 2.0 + * + * @return A pointer to the Tab control, @n + * else @c null if there is no tab + * @remarks The retrieved pointer may be temporary. Therefore, it should not be stored after immediate use. + * @endif + */ + Tab* GetTab(void) const; + + + /** + * @if OSPDEPREC + * Gets the title of the %Form control. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the use of the Title control is no longer recommended. Instead of the %Title control, + * use the Header control. + * @since 2.0 + * + * @return The title of the %Form control + * @endif + */ + Tizen::Base::String GetTitleText(void) const; + + + /** + * @if OSPDEPREC + * Gets the horizontal alignment of the title text. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the use of the Title control is no longer recommended. Instead of the %Title control, + * use the Header control. + * @since 2.0 + * + * @return The horizontal alignment of the title text + * @remarks By default, the horizontal alignment is center aligned. + * @endif + */ + HorizontalAlignment GetTitleTextHorizontalAlignment(void) const; + + /** + * Checks whether the %Form control has an Indicator. + * + * @since 2.0 + * + * @return @c true if the %Form control has a title, @n + * else @c false + */ + bool HasIndicator(void) const; + + + /** + * @if OSPDEPREC + * Checks whether the %Form control has an optionkey. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the use of the Optionkey control is no longer recommended. + * @since 2.0 + * + * @return @c true if the %Form control has an optionkey, @n + * else @c false + * @endif + */ + bool HasOptionkey(void) const; + + + /** + * @if OSPDEPREC + * Checks whether the %Form control has the specified softkey. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the use of the Softkey control is no longer recommended. + * @since 2.0 + * + * @return @c true if the %Form control has the specified softkey, @n + * else @c false + * @param[in] softkey The required softkey + * @endif + */ + bool HasSoftkey(Softkey softkey) const; + + + /** + * @if OSPDEPREC + * Checks whether the %Form control has a tab. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the use of the Tab control is no longer recommended. + * @since 2.0 + * + * @return @c true if the %Form control has a tab, @n + * else @c false + * @endif + */ + bool HasTab(void) const; + + + /** + * @if OSPDEPREC + * Checks whether the %Form control has a title. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the use of the Title control is no longer recommended. Instead of the %Title control, + * use the Header control. + * @since 2.0 + * + * @return @c true if the %Form control has a title, @n + * else @c false + * @endif + */ + bool HasTitle(void) const; + + + /** + * @if OSPDEPREC + * Checks whether the softkey is enabled. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the use of the Softkey control is no longer recommended. + * @since 2.0 + * + * @return @c true if the softkey is enabled, @n + * else @c false + * @param[in] softkey The softkey + * @endif + */ + bool IsSoftkeyEnabled(Softkey softkey) const; + + + /** + * Sets the background color of the %Form control. + * + * @since 2.0 + * + * @param[in] color The background color to set + */ + void SetBackgroundColor(const Tizen::Graphics::Color& color); + + + /** + * Sets the style of the %Form control. + * + * @since 2.0 + * + * @param[in] formStyle The form style to set @n + * This parameter can be a combination of Tizen::Ui::Controls::FormStyle. + * @exception E_SUCCESS The method is successful @if OSPCOMPAT @b Since: @b 2.0 @endif. + * @exception E_INVALID_ARG A specified input parameter is invalid @if OSPCOMPAT @b Since: @b 2.0 @endif. @n + * - FORM_STYLE_HEADER and FORM_STYLE_TITLE are specified at the same time. @n + * - FORM_STYLE_FOOTER and FORM_STYLE_SOFTKEY_0 are specified at the same time. @n + * - FORM_STYLE_FOOTER and FORM_STYLE_SOFTKEY_1 are specified at the same time. @n + * - FORM_STYLE_FOOTER and FORM_STYLE_OPTIONKEY are specified at the same time. @n + * @remarks The specific error code can be accessed using the GetLastResult() method. @n + * Note that you must not change the style of %Form control that is constructed with FORM_STYLE_TEXT_TAB or FORM_STYLE_ICON_TAB style. + * A Form which is added to a container except Frame cannot have the style of @c FORM_STYLE_INDICATOR. + */ + void SetFormStyle(unsigned long formStyle); + + + /** + * @if OSPDEPREC + * Sets an action ID of the optionkey. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the use of the Optionkey control is no longer recommended. + * @since 2.0 + * + * @param[in] actionId The action ID of this button instance + * @endif + */ + void SetOptionkeyActionId(int actionId); + + + /** + * Sets the orientation of the %Form control. + * + * @since 2.0 + * + * @param[in] orientation The orientation of the %Form control + */ + void SetOrientation(Orientation orientation); + + + /** + * @if OSPDEPREC + * Sets an action ID of each softkey. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the use of the Softkey control is no longer recommended. + * @since 2.0 + * + * @param[in] softkey The softkey + * @param[in] actionId The action ID to be set + * @endif + */ + void SetSoftkeyActionId(Softkey softkey, int actionId); + + + /** + * @if OSPDEPREC + * Enables or disables the specified softkey. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the use of the Softkey control is no longer recommended. + * @since 2.0 + * + * @param[in] softkey The softkey + * @param[in] enable Set to @c true to enable this softkey @n + * else @c false + * @endif + */ + void SetSoftkeyEnabled(Softkey softkey, bool enable); + + + /** + * @if OSPDEPREC + * Sets the title icon of the %Form control. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the use of the Title control is no longer recommended. Instead of the %Title control, + * use the %Header control. + * @since 2.0 + * + * @return An error code + * @param[in] pTitleBitmap The title icon to be set, @n + * else @c null if the title icon is removed + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of a specified operation (that is, this control cannot be displayed). + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetTitleIcon(const Tizen::Graphics::Bitmap* pTitleBitmap); + + + /** + * @if OSPDEPREC + * Sets the title of this %Form control. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the use of the Title control is no longer recommended. Instead of the %Title control, + * use the Header control. + * @since 2.0 + * + * @return An error code + * @param[in] title The title to be set + * @param[in] alignment The horizontal alignment + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of a specified operation (that is, this control cannot be displayed). + * @exception E_SYSTEM A system error has occurred. + * @remarks If the size of the text exceeds the displayable area, the text slides automatically. @n + * Note that when the title icon is set along with the title text, the title retains the left alignment. + * @endif + */ + result SetTitleText(const Tizen::Base::String& title, HorizontalAlignment alignment = ALIGNMENT_CENTER); + + + /** + * @if OSPDEPREC + * Sets the icon of the softkey. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the use of the Softkey control is no longer recommended. + * @since 2.0 + * + * @param[in] softkey The softkey + * @param[in] normalBitmap The Bitmap of the normal icon + * @param[in] pPressedBitmap The Bitmap of the pressed icon + * @remarks If both the icon and text are set for a softkey at the same time, the text takes precedence over the icon. + * @endif + */ + void SetSoftkeyIcon(Softkey softkey, const Tizen::Graphics::Bitmap& normalBitmap, const Tizen::Graphics::Bitmap* pPressedBitmap); + + /** + * @if OSPDEPREC + * Sets the text of the specified softkey. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the use of the Softkey control is no longer recommended. + * @since 2.0 + * + * @param[in] softkey The softkey + * @param[in] text The text to be set + * @remarks If both the icon and text are set for a softkey at the same time, the text takes precedence over the icon. @n + * To display text in multi-lines or to denote the end of line, use '\\n'. + * @endif + */ + void SetSoftkeyText(Softkey softkey, const Tizen::Base::String& text); + + /** + * Gets the pointer to the Footer control if it exists. + * + * @since 2.0 + * + * @return A pointer to the Footer control, @n + * else @c null if there is no %Footer + * @remarks The retrieved pointer may be temporary. Therefore, it should not be stored after immediate use. + */ + Footer* GetFooter(void) const; + + + /** + * Gets the pointer to the Header control if it exists. + * + * @since 2.0 + * + * @return A pointer to the Header control, @n + * else @c null if there is no %Header + * @remarks The retrieved pointer may be temporary. Therefore, it should not be + * stored after immediate use. + */ + Header* GetHeader(void) const; + + + /** + * Checks whether the %Form control has a Footer. + * + * @since 2.0 + * + * @return @c true if the %Form control has a Footer, @n + * else @c false + */ + bool HasFooter(void) const; + + + /** + * Checks whether the %Form control has a Header. + * + * @since 2.0 + * + * @return @c true if the %Form control has a Header, @n + * else @c false + */ + bool HasHeader(void) const; + + + /** + * Checks whether the Indicator control is visible. + * + * @since 2.0 + * + * @return @c true if the Indicator control is visible, @n + * else @c false + */ + bool IsIndicatorVisible(void) const; + + + /** + * Checks whether the Header control is visible. + * + * @since 2.0 + * + * @return @c true if the Header control is visible, @n + * else @c false + */ + bool IsHeaderVisible(void) const; + + + /** + * Checks whether the Footer control is visible. + * + * @since 2.0 + * + * @return @c true if the Footer control is visible, @n + * else @c false + */ + bool IsFooterVisible(void) const; + + + /** + * Checks whether the Indicator control is translucent. + * + * @since 2.0 + * + * @return @c true if the Indicator control is translucent, @n + * else @c false + */ + bool IsIndicatorTranslucent(void) const; + + + /** + * Checks whether the Header control is translucent. + * + * @since 2.0 + * + * @return @c true if the Header control is translucent, @n + * else @c false + */ + bool IsHeaderTranslucent(void) const; + + + /** + * Checks whether the Footer control is translucent. + * + * @since 2.0 + * + * @return @c true if the Footer control is translucent, @n + * else @c false + */ + bool IsFooterTranslucent(void) const; + + + /** + * Sets the translucency of the action bars. + * + * @since 2.0 + * + * @return An error code + * @param[in] actionBars The action bars @n + * Multiple action bars can be combined using bitwise OR (see Tizen::Ui::Controls::FormActionBar). + * @param[in] translucent Set to @c to make the action bars translucent, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of a specified operation, or + * the specified action bars do not exist. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. + * @exception E_SYSTEM A system error has occurred. + * @remarks Modifying the translucency of the action bars causes the client area of the %Form to change. @n + * The translucency of multiple action bars can be modified at the same time by using logical OR for several values of FormActionBar. + * @remarks The method is not supported in 16-bit devices. + * @see FormActionBar + */ + result SetActionBarsTranslucent(unsigned long actionBars, bool translucent); + + + /** + * Sets the visibility state of the action bars. + * + * @since 2.0 + * + * @return An error code + * @param[in] actionBars The action bars @n + * Multiple action bars can be combined using bitwise OR (see Tizen::Ui::Controls::FormActionBar). + * @param[in] visible Set to @c true to make the action bars visible, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation, or + * the specified action bars does not exist. + * @exception E_SYSTEM A system error has occurred. + * @remarks Modifying the translucency of action bars causes the client area of the %Form to change. @n + * The visibility of multiple action bars can be modified at the same time by using logical OR for several values of FormActionBar. + * @see FormActionBar + */ + result SetActionBarsVisible(unsigned long actionBars, bool visible); + + + /** + * Creates and returns an overlay region of the specified position and size. @n + * Due to the hardware accelerated rendering, there are limitations for an overlay region. @n + * The hardware capability for an overlay region is checked by using OverlayRegion::GetWidthUnit(), OverlayRegion::GetHeightUnit() and + * OverlayRegion::GetMaxCount(). + * If the specified condition is not satisfied, E_INVALID_ARG exception is returned. + * + * @since 2.0 + * + * @return An overlay region instance + * @param[in] rect The x and y coordinates relative to the top-left corner of the form along with the width and height + * @param[in] regionType The type of the overlay region + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_MAX_EXCEEDED The number of overlay regions has reached the maximum limit. + * @exception E_UNSUPPORTED_OPTION The specified option of the overlay region type is not supported. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. @n + * If the application runs on multi-screen resolutions, the specified bounds may not meet the hardware limitations of the overlay region. @n + * In such cases, GetOverlayRegionN() returns the E_INVALID_ARG exception. To prevent this problem, the application should use the + * OverlayRegion::EvaluateBounds() method to get the validated bounds that can be used as the input bounds of the GetOverlayRegionN() method. + * @remarks Do not use OverlayRegion with OverlayPanel. If used, the E_SYSTEM exception is thrown. + */ + OverlayRegion* GetOverlayRegionN(const Tizen::Graphics::Rectangle& rect, OverlayRegionType regionType); + + + /** + * Creates and returns a graphics canvas whose bounds (position and size) are equal to the bounds of the client area of the %Form. + * + * @since 2.0 + * + * @return The graphic canvas of the %Form control, @n + * else @c null if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_RESOURCE_UNAVAILABLE The required resource is currently unavailable. + * @remarks The method allocates Tizen::Graphics::Canvas whose bounds are equal to that of the client area of the %Form. @n + * It is the responsibility of the developers to deallocate the canvas after use. + * @remarks The canvas is valid only if the properties of the parent control of the canvas remain unchanged. @n + * Therefore, delete the previously allocated canvas and create a new canvas using the GetCanvasN() method @n + * if the size or position of the control is changed. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks The Frame and %Form instances share a single frame-buffer. @n + * Therefore, the custom drawing on the graphic canvas of the Frame and %Form controls appears on the screen regardless of whether the + * control is currently visible on the screen. + */ + Tizen::Graphics::Canvas* GetClientAreaCanvasN(void) const; + + /** + * Translates the specified position to the client coordinate. + * + * @since 2.0 + * + * @return The position relative to the top-left corner of the client area, @n + * else @c (-1,-1) if the instance is invalid + * @param[in] position The position relative to the top-left corner of the %Form control + * @see TranslateFromClientAreaPosition() + */ + Tizen::Graphics::Point TranslateToClientAreaPosition(const Tizen::Graphics::Point& position) const; + + /** + * Translates the specified client position to the control coordinate. + * + * @since 2.0 + * + * @return The position relative to the top-left corner of the %Form control, @n + * else @c (-1,-1) if the instance is invalid + * @param[in] clientPosition The position relative to the top-left corner of the client area + * @see TranslateToClientAreaPosition() + */ + Tizen::Graphics::Point TranslateFromClientAreaPosition(const Tizen::Graphics::Point& clientPosition) const; + + + /** + * Sets the %Form back event listener. + * + * @since 2.0 + * + * @param[in] pFormBackEventListener The %Form back event listener to set + * @see Tizen::Ui::Controls::IFormBackEventListener. + */ + void SetFormBackEventListener(IFormBackEventListener* pFormBackEventListener); + + + /** + * Gets the data binding context. + * + * @since 2.0 + * + * @return DataBindingContext the data binding context + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + DataBindingContext* GetDataBindingContextN(void) const; + +protected: + friend class _FormImpl; + + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void Form_Reserved1(void) { } + + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void Form_Reserved2(void) { } + + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void Form_Reserved3(void) { } + +// Friend Class Declaration +private: + friend class UiBuilder; + friend class Frame; + +private: + Form(const Form&); + Form& operator =(const Form&); + +}; // Form + +} } } // Tizen::Ui::Controls + +#endif // _FUI_CTRL_FORM_H_ diff --git a/inc/FUiCtrlFrame.h b/inc/FUiCtrlFrame.h new file mode 100644 index 0000000..b09eacc --- /dev/null +++ b/inc/FUiCtrlFrame.h @@ -0,0 +1,356 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlFrame.h + * @brief This is the header file for the %Frame class. + * + * This header file contains the declarations of the %Frame class. + */ +#ifndef _FUI_CTRL_FRAME_H_ +#define _FUI_CTRL_FRAME_H_ + +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Animations { +class FrameAnimator; +} } } // Tizen::Ui::Animations + +namespace Tizen { namespace App { +class _AppFrame; +} } // Tizen::App + +namespace Tizen { namespace Ui { namespace Controls +{ + +class Form; +class IFrameEventListener; + +/** + * @class Frame + * @brief This class provides the main frame window for an application. + * + * @since 2.0 + * + * The %Frame class provides the main frame window for an application. + * A frame is the main top-level window of an application. It is the ultimate parent + * of all application controls. + * + * For more information on the class features, see Frame. + * + * The following example demonstrates how to use the %Frame class + * + * @code + // Gets a pointer of the frame + Frame *pFrame = UiApp::GetInstance()->GetAppFrame()->GetFrame(); + + // Creates an instance of canvas + Canvas* pCanvas = new Canvas(); + pCanvas->Construct(); + pCanvas->DrawText(Point(30, 30), L"FrameSample"); + + // Calls Invalidate(); + pFrame->Invalidate(true); + * @endcode + * + */ +class _OSP_EXPORT_ Frame + : public Tizen::Ui::Window +{ +public: +// Lifecycle + /** + * This is the default constructor for this class. + * + * @since 2.0 + */ + Frame(void); + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~Frame(void); + + /** + * Initializes this instance of %Frame with the specified parameter. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation (that + * is, the method is called on an instance that is constructed). + * @exception E_MAX_EXCEEDED The number of Frames and Forms exceeds the system limitation. + * @exception E_SYSTEM A system error has occurred. + * @remarks The maximum number of Forms that an application can construct is limited by available memory. + */ + result Construct(void); + + /** + * Initializes this instance of %Frame with the specified position and size. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect An instance of the Rectangle class @n + * This instance represents the x and y coordinates of the top-left corner @n + * of the created window along with its width and height. @n + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation (that + * is, the method is called on an instance that is constructed). + * @exception E_MAX_EXCEEDED The number of Frames and Forms exceeds the system limitation. + * @exception E_SYSTEM A system error has occurred. + * @remarks The maximum number of Forms that an application can construct is limited by available memory. + * @remarks The specified position and size are only applied when the show mode is not #FRAME_SHOW_MODE_FULL_SCREEN. + */ + result Construct(const Tizen::Graphics::Rectangle& rect); + +// Operation +public: + /** + * Adds an IOrientationEventListener instance. @n + * The added listener can listen to events on the given event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to be added + * @remarks When OnOrientationChanged() event is fired, re-position and draw the child controls, but do not explicitly call + * the Show() method. + * @see RemoveOrientationEventListener() + */ + void AddOrientationEventListener(Tizen::Ui::IOrientationEventListener& listener); + + /** + * Adds an IFrameEventListener instance. @n + * The added listener can listen to events on the given event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to be added + * @see RemoveFrameEventListener() + */ + void AddFrameEventListener(Tizen::Ui::Controls::IFrameEventListener& listener); + + /** + * Removes an IOrientationEventListener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to be removed + * @see AddOrientationEventListener() + */ + void RemoveOrientationEventListener(Tizen::Ui::IOrientationEventListener& listener); + + /** + * Removes an IFrameEventListener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to be removed + * @see AddFrameEventListener() + */ + void RemoveFrameEventListener(Tizen::Ui::Controls::IFrameEventListener& listener); + +// Accessor +public: + /** + * Gets the current %Form control of the %Frame control. + * + * @since 2.0 + * + * @return The current Form, @n + * else @c null if there is no %Form + * @see SetCurrentForm() + */ + Form* GetCurrentForm(void) const; + + /** + * Sets the specified Form control as the current %Form of the %Frame control. + * + * @since 2.0 + * + * @return An error code + * @param[in] form The form to be set as the current form of the %Frame control + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * The specified @c form is not a child control of the %Frame control. + * @exception E_SYSTEM A system error has occurred. + * @remarks If a form is set as the current form, it becomes the topmost form amongst its siblings. @n + * SetCurrentForm() does not call Invalidate() internally, so if the current form needs to be drawn + * immediately, Invalidate() should be called after SetCurrentForm(). + * Only Frame whose show mode is @c FRAME_SHOW_MODE_FULL_SCREEN can set a Form which has the style of @c FORM_STYLE_INDICATOR as the current form. + */ + result SetCurrentForm(const Form& form); + + /** + * Gets the background color of the %Frame control. + * + * @since 2.0 + * + * @return The background color of the %Frame control + */ + Tizen::Graphics::Color GetBackgroundColor(void) const; + + /** + * Sets the background color of the %Frame control. + * + * @since 2.0 + * + * @param[in] color The background color + */ + void SetBackgroundColor(const Tizen::Graphics::Color& color); + + /** + * Sets the orientation mode of a frame. + * + * @since 2.0 + * + * @param[in] orientation The orientation mode of the %Frame control + * @remarks To see the change in the orientation mode, the corresponding frame must be the topmost frame in the z-order hierarchy. + * hierarchy. + */ + void SetOrientation(Tizen::Ui::Orientation orientation); + + /** + * Gets the orientation mode of the frame. + * + * @since 2.0 + * + * @return The orientation mode of the frame + */ + Tizen::Ui::Orientation GetOrientation(void) const; + + /** + * Gets the current orientation status of the frame. + * + * @since 2.0 + * + * @return The orientation status + * @remarks The method returns ORIENTATION_STATUS_NONE if the %Frame control is not drawn. + * Once it is drawn, the orientation of the %Frame control is set to portrait and the method + * returns ORIENTATION_STATUS_PORTRAIT if the application has not specified its orientation. + */ + Tizen::Ui::OrientationStatus GetOrientationStatus(void) const; + + /** + * Gets the FrameAnimator of %Frame. + * + * @since 2.0 + * + * @return %FrameAnimator, @n + * else @c null if this instance is not constructed as yet + */ + Tizen::Ui::Animations::FrameAnimator* GetFrameAnimator(void) const; + + /** + * Sets the mode to show the %Frame control. + * + * @since 2.0 + * + * @return An error code + * @param[in] mode The mode to show the %Frame control + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM The method cannot proceed due to a severe system error. + * @remarks The default mode is #FRAME_SHOW_MODE_FULL_SCREEN. + */ + result SetShowMode(FrameShowMode mode); + + /** + * Gets the mode to show the %Frame control. + * + * @since 2.0 + * + * @return The mode to show the %Frame control + * @remarks The default mode is #FRAME_SHOW_MODE_FULL_SCREEN. + */ + FrameShowMode GetShowMode(void) const; + +protected: + friend class _FrameImpl; + + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void Frame_Reserved1(void) { } + + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void Frame_Reserved2(void) { } + + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void Frame_Reserved3(void) { } + + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void Frame_Reserved4(void) { } + + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void Frame_Reserved5(void) { } + +private: + Frame(const Frame&); + Frame& operator =(const Frame&); +}; // Frame + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_FRAME_H_ diff --git a/inc/FUiCtrlFrameTypes.h b/inc/FUiCtrlFrameTypes.h new file mode 100644 index 0000000..fee88bb --- /dev/null +++ b/inc/FUiCtrlFrameTypes.h @@ -0,0 +1,47 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlFrameTypes.h + * @brief This is the header file for the Frame type. + * + * This header file contains the declarations of the Frame type. + * + */ +#ifndef _FUI_CTRL_FRAME_TYPES_H_ +#define _FUI_CTRL_FRAME_TYPES_H_ + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @enum FrameShowMode + * + * Defines the mode to show the Frame control. + * + * @since 2.0 + */ +enum FrameShowMode +{ + FRAME_SHOW_MODE_FULL_SCREEN, /**< The full screen mode */ + FRAME_SHOW_MODE_PARTIAL_SCREEN, /**< The partial screen mode */ + FRAME_SHOW_MODE_PARTIAL_SCREEN_FLOATING, /**< The partial screen mode which is always on top of other Frames */ +}; + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_FRAME_TYPES_H_ diff --git a/inc/FUiCtrlGallery.h b/inc/FUiCtrlGallery.h new file mode 100644 index 0000000..208c6ed --- /dev/null +++ b/inc/FUiCtrlGallery.h @@ -0,0 +1,539 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlGallery.h + * @brief This is the header file for the %Gallery class. + * + * This header file contains the declarations of the %Gallery class and its helper classes. + */ + +#ifndef _FUI_CTRL_GALLERY_H_ +#define _FUI_CTRL_GALLERY_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +/** + * @class Gallery + * @brief This class defines the common behavior of a %Gallery control. + * + * @since 2.0 + * + * The %Gallery class displays an image viewer that contains a collection of images (1 + * image at a time) in a horizontally scrolling list. It also supports a slide + * show that automatically displays all the images consecutively. + * + * For more information on the class features, see Gallery. + * + * The following example demonstrates how to use the %Gallery class. + * + * @code +// Sample code for GallerySample.h +#include + +class GallerySample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::Controls::IGalleryItemProvider + , public Tizen::Ui::Controls::IGalleryEventListener +{ +public: + GallerySample(void) + : __pGallery(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + + //IGalleryItemProvider + virtual Tizen::Ui::Controls::GalleryItem* CreateItem (int index); + virtual bool DeleteItem (int index, Tizen::Ui::Controls::GalleryItem *pItem); + virtual int GetItemCount(void); + + // IGalleryEventListener + virtual void OnGalleryCurrentItemChanged(Tizen::Ui::Controls::Gallery &gallery, int index); + virtual void OnGalleryItemClicked(Tizen::Ui::Controls::Gallery &gallery, int index); + virtual void OnGallerySlideShowStarted(Tizen::Ui::Controls::Gallery& gallery); + virtual void OnGallerySlideShowStopped(Tizen::Ui::Controls::Gallery& gallery); + +private: + Tizen::Ui::Controls::Gallery* __pGallery; +}; + * @endcode + * + * @code +// Sample code for GallerySample.cpp +#include +#include + +#include "GallerySample.h" + +using namespace Tizen::App; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; +using namespace Tizen::Graphics; + +bool +GallerySample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +GallerySample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of Gallery + __pGallery = new Gallery(); + __pGallery->Construct(GetBounds()); + __pGallery->SetItemProvider(*this); + __pGallery->AddGalleryEventListener(*this); + + AddControl(*__pGallery); + + return r; +} + +// IGalleryItemProvider implementation +GalleryItem* +GallerySample::CreateItem(int index) +{ + // Gets an instance of Bitmap + AppResource* pAppResource = Application::GetInstance()->GetAppResource(); + Bitmap* pImageTemp = pAppResource->GetBitmapN(L"Image.jpg"); + + // Creates an instance of GalleryItem and registers the bitmap to the gallery item + GalleryItem* pGallery = new GalleryItem(); + pGallery->Construct(*pImageTemp); + + // Deallocates the bitmap + delete pImageTemp; + + return pGallery; +} + +bool +GallerySample::DeleteItem(int index, GalleryItem *pItem) +{ + delete pItem; + return true; +} + +int +GallerySample::GetItemCount(void) +{ + return 1; +} + +// IGalleryEventListener implementation +void + GallerySample::OnGalleryCurrentItemChanged(Gallery &gallery, int index) +{ + // .... +} + +void +GallerySample::OnGalleryItemClicked(Gallery &gallery, int index) +{ + // .... +} + +void +GallerySample::OnGallerySlideShowStarted(Gallery& gallery) +{ + // .... +} + +void +GallerySample::OnGallerySlideShowStopped(Gallery& gallery) +{ + // .... +} + * @endcode + */ + +class _OSP_EXPORT_ Gallery + : public Tizen::Ui::Control +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + Gallery(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~Gallery(void); + +public: + /** + * Initializes this instance of %Gallery with the specified parameter. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect An instance of the Graphics::Rectangle class @n + * This instance represents the x and y coordinates of the top-left corner of the created %Gallery control along with the + * width and height. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(const Tizen::Graphics::Rectangle& rect); + + /** + * Sets the item provider that creates and deletes the items from the %Gallery control. + * + * @since 2.0 + * + * @return An error code + * @param[in] provider The item provider to create and delete items + * @exception E_SUCCESS The method is successful. + * @remark If an item provider is not set for the %Gallery control, the method does not work. @n + * The item provider should be allocated on a heap memory. + */ + result SetItemProvider(IGalleryItemProvider& provider); + + /** + * Adds an IGalleryEventListener instance. @n + * The added listener can listen to the item events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to be added + */ + void AddGalleryEventListener(IGalleryEventListener& listener); + + /** + * Removes an IGalleryEventListener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to be removed + */ + void RemoveGalleryEventListener(IGalleryEventListener& listener); + + /** + * Gets the index of the current item. + * + * @since 2.0 + * + * @return The current item index of the %Gallery control + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + int GetCurrentItemIndex(void) const; + + /** + * Sets the index of the current item. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the item + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is out of range. + * @exception E_SYSTEM A system error has occurred. + * + */ + result SetCurrentItemIndex(int index); + + /** + * Gets the total number of items. + * + * @since 2.0 + * + * @return The total number of items, @n + * else @c -1 if an error occurs + */ + int GetItemCount(void) const; + + /** + * Refreshes the item at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemIndex The index of the item to be refreshed + * @param[in] type The type of change for an item + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is out of range. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_SYSTEM A system error has occurred. + */ + result RefreshGallery(int itemIndex, GalleryRefreshType type); + + /** + * Updates all the items of a list. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method clears items in the list and reinvokes methods of the item provider to fill the list. + */ + result UpdateGallery(void); + + /** + * Sets the text of the empty %Gallery control. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text of the empty %Gallery control + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetTextOfEmptyGallery(const Tizen::Base::String& text); + + /** + * Gets the text of the empty %Gallery control. + * + * @since 2.0 + * + * @return The text of the empty %Gallery control + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Base::String GetTextOfEmptyGallery(void) const; + + /** + * Sets the background bitmap of the %Gallery control. + * + * @since 2.0 + * + * @param[in] pBitmap The bitmap of the empty %Gallery control + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks When @c pBitmap is @c null, the %Gallery control does not have a background bitmap. The default value for the background bitmap is @c null. + * @remarks The background bitmap has a priority over the background color. When both the background bitmap and the background color are specified, + * only the bitmap is displayed. + */ + result SetBitmapOfEmptyGallery(const Tizen::Graphics::Bitmap* pBitmap); + + /** + * Sets the slide show transition animation type. + * + * @since 2.0 + * + * @param[in] animation The animation type of the %Gallery control + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. + * @exception E_SYSTEM A system error has occurred. + * @remarks The method is not supported in 16-bit devices. + */ + result SetSlideShowAnimation(GalleryAnimation animation); + + /** + * Gets the transition animation type of the slide show. + * + * @since 2.0 + * + * @return The animation type of a %Gallery control + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks The method is not supported in 16-bit devices. + */ + GalleryAnimation GetSlideShowAnimation(void) const; + + /** + * Sets the duration of the slide show transition animation. + * + * @since 2.0 + * + * @param[in] duration The animation duration + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c duration is out of the possible duration range. @n + * The specified duration should be greater than or equal to 300 or less than or equals to 20000. + * @exception E_SYSTEM A system error has occurred. + * @remarks The unit of the duration is in milliseconds.@n + * The default animation duration is different for each slide show animation type. + */ + result SetSlideShowAnimationDuration(int duration); + + /** + * Gets the transition animation duration of the %Gallery control. + * + * @since 2.0 + * + * @return The animation duration, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + int GetSlideShowAnimationDuration(void) const; + + /** + * Sets the duration of the slide-show item view. + * + * @since 2.0 + * + * @param[in] duration The item view duration + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c duration is out of possible duration range. @n + * - The specified @c duration should be greater than 10. + * @exception E_SYSTEM A system error has occurred. + * @remarks The unit of the duration is in milliseconds.@n + * The default animation duration is different for each slide show animation type. + */ + result SetSlideShowViewDuration(int duration); + + /** + * Gets the duration of the slide-show item view. + * + * @since 2.0 + * + * @return The item view duration, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using @c GetLastResult() method. + */ + int GetSlideShowViewDuration(void) const; + + /** + * Starts the slide show. + * + * @since 2.0 + * + * @return An error code + * @param[in] repeat The repeat status + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_SYSTEM A system error has occurred. + */ + result StartSlideShow(bool repeat = false); + + /** + * Stops the slide show. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_SYSTEM A system error has occurred. + */ + result StopSlideShow(void) const; + + /** + * Checks whether the slide show has started. + * + * @since 2.0 + * + * @return @c true if the slide show is running, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + bool IsSlideShowStarted(void) const; + + /** + * Enables or disables the image zooming. + * + * @since 2.0 + * + * @return An error code + * @param[in] enable Set to @c true to enable zooming, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks When enabled, the user can enter the zoom mode by double-clicking or pinching the current image. + */ + result SetZoomingEnabled(bool enable); + + /** + * Checks whether zooming is enabled. + * + * @since 2.0 + * + * @return @c true if zooming is enabled, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + bool IsZoomingEnabled(void) const; + + /** + * Sets the background color of the %Gallery control. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The background color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The method ignores the alpha value of the @c color parameter and sets the alpha value to 255. + */ + result SetBackgroundColor(const Tizen::Graphics::Color& color); + + /** + * Gets the background color of the %Gallery control. + * + * @since 2.0 + * + * @return The background color, @n + * else RGBA(0, 0, 0, 0) if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetBackgroundColor(void) const; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + Gallery(const Gallery& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + Gallery& operator =(const Gallery& rhs); + +protected: + friend class _GalleryImpl; +}; // Gallery + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_GALLERY_H_ diff --git a/inc/FUiCtrlGalleryItem.h b/inc/FUiCtrlGalleryItem.h new file mode 100644 index 0000000..80cd492 --- /dev/null +++ b/inc/FUiCtrlGalleryItem.h @@ -0,0 +1,125 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlGalleryItem.h + * @brief This is the header file for the %GalleryItem class. + * + * This header file contains the declarations of the %GalleryItem class and its helper classes. + */ + +#ifndef _FUI_CTRL_GALLERY_ITEM_H_ +#define _FUI_CTRL_GALLERY_ITEM_H_ + +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +class _GalleryItemImpl; + +/** + * @class GalleryItem + * @brief This class defines the common behavior for a %GalleryItem control. + * + * @since 2.0 + * + * The %GalleryItem class represents an item of the Gallery control. An instance of the %GalleryItem class + * comprises of a bitmap image and its image rotation. @n @n + * + * For more information on the class features, see Gallery. + */ +class _OSP_EXPORT_ GalleryItem + : public Tizen::Base::Object +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + GalleryItem(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~GalleryItem(void); + +public: + /** + * Initializes this instance of %GalleryItem with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] bitmap The default bitmap image + * @param[in] rotation The rotation of the bitmap image + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(const Tizen::Graphics::Bitmap& bitmap, GalleryImageRotation rotation = GALLERY_IMAGE_ROTATION_0); + + /** + * Initializes this instance of %GalleryItem with the specified parameters. + * @if OSPCOMPAT + * @brief [Compatibility] + * @endif + * @since 2.0 + * @if OSPCOMPAT + * @compatibility This method has compatibility issues with OSP compatible applications. @n + * For more information, see @ref CompIoPathPage "here". + * @endif + * @return An error code + * @param[in] bitmap The default bitmap image + * @param[in] filePath The bitmap file path + * @param[in] rotation The rotation of the bitmap image + * @exception E_SUCCESS The method is successful. + * @exception E_OVERFLOW The image specified by @c filePath has caused an overflow. + * @exception E_UNSUPPORTED_FORMAT The image specified by @c filePath is not supported. + * @exception E_FILE_NOT_FOUND The specified file cannot be found or accessed. + * @exception E_INTERRUPTED The requested operation cannot be performed due to an interruption from another thread. @n + * @exception E_ILLEGAL_ACCESS The image specified by @c filePath parameter, is protected with DRM. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specified file path is used to decode the original bitmap to show a more higher quality image when the corresponding item is zoomed. + */ + result Construct(const Tizen::Graphics::Bitmap& bitmap, const Tizen::Base::String& filePath, GalleryImageRotation rotation = GALLERY_IMAGE_ROTATION_0); + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + GalleryItem(const GalleryItem& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + GalleryItem& operator =(const GalleryItem& rhs); + +private: + _GalleryItemImpl* __pImpl; + + friend class _GalleryItemImpl; +}; // GalleryItem + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_GALLERY_ITEM_H_ diff --git a/inc/FUiCtrlGalleryTypes.h b/inc/FUiCtrlGalleryTypes.h new file mode 100644 index 0000000..0d22c36 --- /dev/null +++ b/inc/FUiCtrlGalleryTypes.h @@ -0,0 +1,80 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlGalleryTypes.h + * @brief This is the header file for the Gallery enumerations. + * + * This header file contains the declarations of the Gallery enumerations. + * + * These enumerations define the various properties of a %Gallery control. + */ +#ifndef _FUI_CTRL_GALLERY_ENUM_H_ +#define _FUI_CTRL_GALLERY_ENUM_H_ + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @enum GalleryImageRotation + * + * Defines the rotation of an image of a Gallery control. + * + * @since 2.0 + * + */ +enum GalleryImageRotation +{ + GALLERY_IMAGE_ROTATION_0 = 0, /**< The no rotation */ + GALLERY_IMAGE_ROTATION_90, /**< The 90 degree clockwise rotation */ + GALLERY_IMAGE_ROTATION_180, /**< The clockwise rotation */ + GALLERY_IMAGE_ROTATION_270 /**< The anticlockwise rotation */ +}; + +/** + * @enum GalleryAnimation + * + * Defines the animation type of a Gallery control. + * + * @since 2.0 + * + */ +enum GalleryAnimation +{ + GALLERY_ANIMATION_PAGE, /**< The page turn animation */ + GALLERY_ANIMATION_DISSOLVE, /**< The dissolve animation */ + GALLERY_ANIMATION_ZOOM /**< The zoom animation */ +}; + +/** + * @enum GalleryRefreshType + * + * Defines the update type of a Gallery control. + * + * @since 2.0 + * + */ +enum GalleryRefreshType +{ + GALLERY_REFRESH_TYPE_ITEM_ADD = 0, /**< The refresh type is add */ + GALLERY_REFRESH_TYPE_ITEM_REMOVE, /**< The refresh type is remove */ + GALLERY_REFRESH_TYPE_ITEM_MODIFY /**< The refresh type is modify */ +}; + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_GALLERY_ENUM_H_ diff --git a/inc/FUiCtrlGroupItem.h b/inc/FUiCtrlGroupItem.h new file mode 100644 index 0000000..0b079c2 --- /dev/null +++ b/inc/FUiCtrlGroupItem.h @@ -0,0 +1,209 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlGroupItem.h + * @brief This is the header file for the %GroupItem class. + * + * This header file contains the declarations of the %GroupItem class and its helper classes. + */ + +#ifndef _FUI_CTRL_GROUP_ITEM_H_ +#define _FUI_CTRL_GROUP_ITEM_H_ + +#include +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +class _GroupItemImpl; + +/** + * @class GroupItem + * @brief This class defines common behavior of %GroupItem. + * + * @since 2.0 + * + * The %GroupItem class displays a group item. The basic layout of the %GroupItem instance is text and a bitmap arranged horizontally in one line. The bitmap can be omitted while text must be given. + * @n + * For more information on the class features, see ListViews. + */ + +class _OSP_EXPORT_ GroupItem + : public Tizen::Base::Object +{ +public: + /** + * The object is not fully constructed after this constructor is + * called. For full construction, the Construct() method must be + * called right after calling this constructor. + * + * @since 2.0 + */ + GroupItem(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~GroupItem(void); + + /** + * Initializes this instance of %GroupItem with the specified parameter. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemSize The size of the item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(const Tizen::Graphics::Dimension& itemSize); + + /** + * Sets the background image of the item. + * + * @since 2.0 + * + * @return An error code + * @param[in] pBitmap The background bitmap image + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The background bitmap has priority over the background color. When both the background bitmap and background color are specified, only + * the bitmap is displayed. + */ + result SetBackgroundBitmap(const Tizen::Graphics::Bitmap* pBitmap); + + /** + * Sets the background color of the item. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The background color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The background bitmap has priority over the background color. When both the background bitmap and the background color are specified, only the bitmap is displayed. @n + * The background color of the item is not applied when the item is inserted into the GroupedListView of section style. + */ + result SetBackgroundColor(const Tizen::Graphics::Color& color); + + /** + * Gets the background color of the item. + * + * @since 2.0 + * + * @return The background color of the item, @n + * else RGBA(0, 0, 0, 0) if an error occurs + * @see SetBackgroundColor() + */ + Tizen::Graphics::Color GetBackgroundColor(void) const; + + /** + * Sets the color of the text. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The text color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetTextColor() + */ + result SetTextColor(const Tizen::Graphics::Color& color); + + /** + * Gets the color of the text. + * + * @since 2.0 + * + * @return The text color, @n + * else RGBA(0, 0, 0, 0) if an error occurs + * @see SetTextColor() + */ + Tizen::Graphics::Color GetTextColor(void) const; + + /** + * Sets the size of the text. + * + * @since 2.0 + * + * @return An error code + * @param[in] size The size of the text + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @see GetTextSize() + */ + result SetTextSize(int size); + + /** + * Gets the size of the text. + * + * @since 2.0 + * + * @return The size of the text, + * else @c -1 if an error occurs + * + * @see SetTextSize() + */ + int GetTextSize(void) const; + + /** + * Sets the text and bitmap of the element for %GroupItem. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text string to be added + * @param[in] pBitmap The bitmap to be displayed + * + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The behavior of %GroupItem is different according to the style of GroupedListView. @n + * When the style is GROUPED_LIST_VIEW_INDEXED, the text and bitmap of %GroupItem are displayed, if they are given. However, when the style + * is GROUPED_LIST_VIEW_STYLE_SECTION, the bitmap is not displayed in any case and setting an empty text to %GroupItem does not show + * %GroupItem. + */ + result SetElement(const Tizen::Base::String& text, const Tizen::Graphics::Bitmap* pBitmap = null); + +protected: + friend class _GroupItemImpl; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + GroupItem(const GroupItem& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + GroupItem& operator =(const GroupItem& rhs); + +protected: + _GroupItemImpl* _pImpl; +}; // GroupItem + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_GROUP_ITEM_H_ diff --git a/inc/FUiCtrlGroupTypes.h b/inc/FUiCtrlGroupTypes.h new file mode 100644 index 0000000..48b605b --- /dev/null +++ b/inc/FUiCtrlGroupTypes.h @@ -0,0 +1,47 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlGroupTypes.h + * @brief This is the header file for the table view style enumeration. + * + * This header file contains the declarations of the table view style enumeration. + */ +#ifndef _FUI_CTRL_GROUP_TYPES_H_ +#define _FUI_CTRL_GROUP_TYPES_H_ + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @enum GroupStyle + * + * Defines the table view style of a control's border. + * + * @since 2.0 + */ +enum GroupStyle +{ + GROUP_STYLE_NONE, /**< A rectangle with no outline */ + GROUP_STYLE_SINGLE, /**< A rectangle with all corners rounded */ + GROUP_STYLE_TOP, /**< A rectangle with the two top corners rounded */ + GROUP_STYLE_MIDDLE, /**< A rectangle positioned at the center of a group */ + GROUP_STYLE_BOTTOM /**< A rectangle with the two bottom corners rounded */ +}; + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_GROUP_TYPES_H_ diff --git a/inc/FUiCtrlGroupedList.h b/inc/FUiCtrlGroupedList.h new file mode 100644 index 0000000..8be75e8 --- /dev/null +++ b/inc/FUiCtrlGroupedList.h @@ -0,0 +1,1134 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlGroupedList.h + * @brief This is the header file for the %GroupedList class. + * + * This header file contains the declarations of the %GroupedList class and its helper classes. + */ + +#ifndef _FUI_CTRL_GROUPED_LIST_H_ +#define _FUI_CTRL_GROUPED_LIST_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls { + +/** + * @if OSPDEPREC + * @class GroupedList + * @brief [Deprecated] This class defines the common behavior of a %GroupedList control. + * + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * The %GroupedList class represents grouped items in a list. List items of + * %GroupedList consist of groups and items. A group represents grouped items and is + * inserted into the first level as items are inserted into List. Items which are + * CustomListItem are inserted under related groups. So, items are uniquely identified + * with two indices: group index and item index. + * + * If an application wants to perform tasks when the state of a list item is changed, + * it must implement IGroupedItemEventListener and register it to the grouped list, + * It will then receive related events from %GroupedList. + * + * Unlike ExpandableList which is also a list with a hierarchy of depth 2, group + * item itself does not have many functions. + * + * A typical use case of %GroupedList would be a list which groups all items alphabetically. + * + * Note that CustomListItem and CustomListItemFormat need to be created on a heap. CustomListItems will be deleted automatically + * when the %GroupedList itself is destroyed. If you want to remove certain list items, you must use RemoveItemAt(). CustomListItemFormat + * must be deleted by the application. + * + * Refer to CustomListItem and CustomListItemFormat. + * + * Example: + * + * @image html ui_controls_groupedlist.png + * + * This is the simple UI application that uses a %GroupedList control. + * + * @code +// Sample code for GroupedListSample.h +#include +#include + +class GroupedListSample + :public Tizen::Ui::Controls::Form + , public Tizen::Ui::ICustomItemEventListener +{ +public: + GroupedListSample(void) + : __pGroupedList(null) + , __pCustomListItemFormat(null){} + + bool Initialize(void); + result AddListItem(Tizen::Ui::Controls::GroupedList& groupedList, int groupId, Tizen::Base::String itemText, + Tizen::Graphics::Bitmap* pBitmapNormal, Tizen::Graphics::Bitmap* pBitmapFocused); + + virtual result OnInitializing(void); + virtual result OnTerminating(void); + + // ICustomItemEventListener + virtual void OnItemStateChanged(const Tizen::Ui::Control& source, int index, int itemId, Tizen::Ui::ItemStatus status); + virtual void OnItemStateChanged(const Tizen::Ui::Control& source, int index, int itemId, int elementId, Tizen::Ui::ItemStatus status); + +private: + static const int ID_LIST_ = 101; + static const int ID_LIST_TEXT = 102; + static const int ID_LIST_BITMAP = 103; + + Tizen::Ui::Controls::GroupedList* __pGroupedList; + Tizen::Ui::Controls::CustomListItemFormat* __pCustomListItemFormat; +}; + * @endcode + * + * @code +// Sample code for CutomListSample.cpp +#include +#include + +#include "GroupedListSample.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::Graphics; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; + +bool +GroupedListSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +GroupedListSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of GroupedList + __pGroupedList = new GroupedList(); + __pGroupedList->Construct(Rectangle(0,0,GetClientAreaBounds().width,GetClientAreaBounds().height), CUSTOM_LIST_STYLE_NORMAL); + + // Creates an instance of CustomListItemFormat of the grouped list + __pCustomListItemFormat = new CustomListItemFormat(); + __pCustomListItemFormat->Construct(); + __pCustomListItemFormat->AddElement(ID_LIST_TEXT, Rectangle(10, 25, 200, 80)); + __pCustomListItemFormat->AddElement(ID_LIST_BITMAP, Rectangle(220, 10, 70, 80)); + + // Adds the groups to the grouped list + __pGroupedList->AddGroup(L"Group_1", null); + __pGroupedList->AddGroup(L"Group_2", null); + __pGroupedList->AddGroup(L"Group_3", null); + + // Gets instances of Bitmap + AppResource *pAppResource = Application::GetInstance()->GetAppResource(); + Bitmap *pBitmapNormal = pAppResource->GetBitmapN(L"tizen.png"); + Bitmap *pBitmapFocused = pAppResource->GetBitmapN(L"tizen.png"); + + // Adds the items to the grouped list + for (int i = 0; i < __pGroupedList->GetGroupCount(); i++ ) + { + AddListItem(*__pGroupedList, i, L"SubItem1", pBitmapNormal, pBitmapFocused); + AddListItem(*__pGroupedList, i, L"SubItem2", pBitmapNormal, pBitmapFocused); + AddListItem(*__pGroupedList, i, L"SubItem3", pBitmapNormal, pBitmapFocused); + AddListItem(*__pGroupedList, i, L"SubItem4", pBitmapNormal, pBitmapFocused); + } + + // Adds the grouped list to the form + AddControl(*__pGroupedList); + + // Deallocates bitmaps + delete pBitmapNormal; + delete pBitmapFocused; + + return r; +} + +result +GroupedListSample::OnTerminating(void) +{ + result r = E_SUCCESS; + + // Deallocates the item format + delete __pCustomListItemFormat; + + return r; +} + +result +GroupedListSample::AddListItem(GroupedList& groupedList, int groupId, String itemText, Bitmap* pBitmapNormal, Bitmap* pBitmapFocused) +{ + result r = E_SUCCESS; + + // Creates an instance of CustomListItem of the grouped list + CustomListItem* pItem = new CustomListItem(); + pItem->Construct(100); + pItem->SetItemFormat(*__pCustomListItemFormat); + pItem->SetElement(ID_LIST_TEXT, itemText); + pItem->SetElement(ID_LIST_BITMAP, *pBitmapNormal, pBitmapFocused); + + // Adds the item to the grouped list + groupedList.AddItem(groupId, *pItem, ID_LIST_); + + return r; +} + +// ICustomItemEventListener implementation +void +GroupedListSample::OnItemStateChanged(const Control& source, int index, int itemId, ItemStatus status) +{ + switch (itemId) + { + case ID_LIST_: + { + // .... + } + break; + default: + break; + } +} + +void +GroupedListSample::OnItemStateChanged(const Control& source, int index, int itemId, int elementId, ItemStatus status) +{ + switch (itemId) + { + case ID_LIST_: + { + switch (elementId) + { + case ID_LIST_TEXT: + { + // .... + } + break; + case ID_LIST_BITMAP: + { + // .... + } + break; + default: + break; + } + } + break; + default: + break; + } +} + * @endcode + * @endif + */ +class _OSP_EXPORT_ GroupedList + : public Tizen::Ui::Control +{ +public: + /** + * @if OSPDEPREC + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * @endif + */ + GroupedList(void); + + /** + * @if OSPDEPREC + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * @endif + */ + virtual ~GroupedList(void); + + /** + * @if OSPDEPREC + * Initializes this instance of %GroupedList with the specified parameters. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] rect An instance of the Graphics::Rectangle class @n + * This instance represents the X, Y coordinates of the top-left corner of the created %GroupedList along with the width and + * height. + * @param[in] style The style of the %GroupedList control + * @param[in] itemDivider Set to @c true to display an item divider, @n + * else @c false + * @param[in] fastScroll Set to @c true if to use a fast scroll, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks The size of the control must be within the range as defined by the minimum and maximum size. + * @remarks The minimum size of this control is 274 x 148 on a WVGA screen, 180 x 96 on a HVGA screen and 137 x 74 on a WQVGA screen. + * @endif + */ + result Construct(const Tizen::Graphics::Rectangle& rect, CustomListStyle style, bool itemDivider = true, bool fastScroll = false); + + /** + * @if OSPDEPREC + * Adds the group to the %GroupedList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] text The string of the group to be appended + * @param[in] pBackgroundBitmap The background bitmap of the group + * @param[in] groupId The ID of the group + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result AddGroup(const Tizen::Base::String& text, const Tizen::Graphics::Bitmap* pBackgroundBitmap, int groupId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Inserts the group of the %GroupedList control at the specified index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @param[in] text The name of the group item + * @param[in] pBackgroundBitmap The background bitmap of the group item + * @param[in] groupId The ID of the group item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The @c groupIndex is out of bounds. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result InsertGroupAt(int groupIndex, const Tizen::Base::String& text, const Tizen::Graphics::Bitmap* pBackgroundBitmap, int groupId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Sets the contents of the group of the %GroupedList control at the index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @param[in] text The string of the group to be appended + * @param[in] pBackgroundBitmap The bitmap of the group + * @param[in] groupId The ID of the group + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c groupIndex is invalid. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetGroupAt(int groupIndex, const Tizen::Base::String& text, const Tizen::Graphics::Bitmap* pBackgroundBitmap, int groupId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Removes the group of the %GroupedList control at the index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c groupIndex is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks When the specified group is removed, all the items in the group are also removed. @n + * The removed list items are deleted from the memory. + * @endif + */ + result RemoveGroupAt(int groupIndex); + + /** + * @if OSPDEPREC + * Removes all the groups of the %GroupedList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks When the specified group is removed, all the items in the group are also removed. @n + * The removed list items are deleted from the memory. + * @endif + */ + result RemoveAllGroups(void); + + /** + * @if OSPDEPREC + * Counts all the groups of the %GroupedList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return The count of all the groups + * @endif + */ + int GetGroupCount(void) const; + + /** + * @if OSPDEPREC + * Adds the item to the specified group. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @param[in] item The custom list item object to be added + * @param[in] itemId The specified item ID for this item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c groupIndex or @c itemId is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks The added item is deleted automatically when the list is destroyed. @n + * Do not add, insert, or set an item that already belongs to a %GroupedList control. + * @endif + */ + result AddItem(int groupIndex, const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Inserts the item to the specified group. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index in the specified group + * @param[in] item The custom list item to be inserted + * @param[in] itemId The item ID for this item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c groupIndex or @c itemId is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks The inserted item is deleted automatically when the list is destroyed. + * Do not add, insert, or set an item that already belongs to a %GroupedList control. + * @endif + */ + result InsertItemAt(int groupIndex, int itemIndex, const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Sets the contents of the item in the specified group. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index in the specified group + * @param[in] item The custom list item to be set + * @param[in] itemId The item ID for this item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c groupIndex or @c itemId is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks Do not add, insert, or set an item that already belongs to a %GroupedList control. + * @endif + */ + result SetItemAt(int groupIndex, int itemIndex, const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Sets the checked status for the specified item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index of the item + * @param[in] itemIndex The item index + * @param[in] check Set to @c true to check the item, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c groupIndex or @c itemIndex is invalid. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetItemChecked(int groupIndex, int itemIndex, bool check); + + /** + * @if OSPDEPREC + * Enables or disables the item at the specified index of the %GroupedList. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index of the item + * @param[in] itemIndex The item index + * @param[in] enable Set to @c true to enable the item, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c groupIndex or @c itemIndex is invalid. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetItemEnabled(int groupIndex, int itemIndex, bool enable); + + /** + * @if OSPDEPREC + * Sets the background color of this control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @param[in] color The background color + * @endif + */ + void SetBackgroundColor(const Tizen::Graphics::Color& color); + + /** + * @if OSPDEPREC + * Sets the text that is displayed when %GroupedList is empty. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @param[in] text The empty list test + * @endif + */ + void SetTextOfEmptyList(const Tizen::Base::String& text); + + /** + * @if OSPDEPREC + * Sets the color of the text that is displayed when %GroupedList is empty. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @param[in] color The color of the text to be displayed + * @endif + */ + void SetTextColorOfEmptyList(const Tizen::Graphics::Color& color); + + /** + * @if OSPDEPREC + * Gets the color of the text that is displayed when %GroupedList is empty. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return The color of the text to be displayed + * @endif + */ + Tizen::Graphics::Color GetTextColorOfEmptyList(void) const; + + /** + * @if OSPDEPREC + * Checks whether the item at the specified index of this grouped list is checked. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return @c true if the item is checked, @n + * else @c false + * @param[in] groupIndex The group index of the item + * @param[in] itemIndex The item index + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c groupIndex or @c itemIndex is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method can only be used when the style of the list allows selection. + * @endif + */ + bool IsItemChecked(int groupIndex, int itemIndex) const; + + /** + * @if OSPDEPREC + * Checks whether the item at the specified index is enabled. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return @c true if the item is enabled, @n + * else @c false + * @param[in] groupIndex The group index of the item + * @param[in] itemIndex The item index + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c groupIndex or @c itemIndex is invalid. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + bool IsItemEnabled(int groupIndex, int itemIndex) const; + + /** + * @if OSPDEPREC + * Removes an item in the specified group. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c groupIndex or @c itemIndex is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks The removed list item is deleted from the memory. + * @endif + */ + result RemoveItemAt(int groupIndex, int itemIndex); + + /** + * @if OSPDEPREC + * Removes all the items in the specified group. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c groupIndex is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks The removed list items are deleted from the memory. + * @endif + */ + result RemoveAllItemsAt(int groupIndex); + + /** + * @if OSPDEPREC + * Removes all the checked items in the specified group. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c groupIndex is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks The removed list items are deleted from the memory. + * @endif + */ + result RemoveAllCheckedItemsAt(int groupIndex); + + /** + * @if OSPDEPREC + * Counts all items of the %GroupedList instance. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return The item count of the specified group + * @param[in] groupIndex The group index + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c groupIndex is invalid. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + int GetItemCountAt(int groupIndex) const; + + /** + * @if OSPDEPREC + * Gets the item ID of the item at the specified index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return The item ID + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index in the specified group + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c groupIndex or @c itemIndex is invalid. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + int GetItemIdAt(int groupIndex, int itemIndex) const; + + /** + * @if OSPDEPREC + * Gets the item index by the specified item ID. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] itemId The item ID + * @param[out] groupIndex The group index + * @param[out] itemIndex The item index in the specified group + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result GetItemIndexFromItemId(int itemId, int& groupIndex, int& itemIndex) const; + + /** + * @if OSPDEPREC + * Gets the group ID at the specified index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return The group ID + * @param[in] groupIndex The group index + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c groupIndex is invalid. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + int GetGroupIdAt(int groupIndex) const; + + /** + * @if OSPDEPREC + * Gets the group index from the specified group ID. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return The group index + * @param[in] groupId The ID of the group + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + int GetGroupIndexFromGroupId(int groupId) const; + + /** + * @if OSPDEPREC + * Gets the index of the last item checked. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[out] groupIndex The group index + * @param[out] itemIndex The item index in the specified group + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result GetLastCheckedItemIndex(int& groupIndex, int& itemIndex) const; + + /** + * @if OSPDEPREC + * Gets the index of the next checked item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in,out] groupIndex The group index + * @param[in,out] itemIndex The item index in the specified group + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result GetNextCheckedItemIndexAfter(int& groupIndex, int& itemIndex) const; + + /** + * @if OSPDEPREC + * Gets the index of the item at the specified item position. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] x The x position of the point + * @param[in] y The y position of the point + * @param[out] groupIndex The index of the group which the item belongs to + * @param[out] itemIndex The index of the item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. @n + * There is no item at the specified position. + * @endif + */ + result GetItemIndexFromPosition(int x, int y, int& groupIndex, int& itemIndex) const; + + /** + * @if OSPDEPREC + * Gets the index of the item at the specified item position. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] position The position of the point + * @param[out] groupIndex The index of the group which the item belongs to + * @param[out] itemIndex The index of the item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. @n + * There is no item at the specified position. + * @endif + */ + result GetItemIndexFromPosition(const Tizen::Graphics::Point& position, int& groupIndex, int& itemIndex) const; + + /** + * @if OSPDEPREC + * Gets the index of the current top drawn list item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[out] groupIndex The group index of the item + * @param[out] itemIndex The item index of the item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result GetTopDrawnItemIndex(int& groupIndex, int& itemIndex) const; + + /** + * @if OSPDEPREC + * Removes all the items of the %GroupedList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The removed list items are deleted from the memory. + * @endif + */ + result RemoveAllItems(void); + + /** + * @if OSPDEPREC + * Removes all the checked items of the %GroupedList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The removed list items are deleted from the memory. + * @endif + */ + result RemoveAllCheckedItems(void); + + /** + * @if OSPDEPREC + * Gets the specified item of the %GroupedList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return A custom list item + * @param[in] groupIndex The index of the group which the item belongs to + * @param[in] itemIndex The index of the item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c groupIndex or @c itemIndex is invalid. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + const CustomListItem* GetItemAt(int groupIndex, int itemIndex) const; + + /** + * @if OSPDEPREC + * Scrolls to the bottom of the %GroupedList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * @endif + */ + void ScrollToBottom(void); + + /** + * @if OSPDEPREC + * Scrolls to the top of the %GroupedList. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * @endif + */ + void ScrollToTop(void); + + /** + * @if OSPDEPREC + * Scrolls to the item at the specified index. @n + * The specified item is drawn at the top of the %GroupedList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c groupIndex or @c itemIndex is invalid. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result ScrollToTop(int groupIndex, int itemIndex); + + /** + * @if OSPDEPREC + * Scrolls to the group at the specified index. @n + * The specified group is drawn at the top of the %GroupedList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c groupIndex is invalid. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result ScrollToTop(int groupIndex); + + /** + * @if OSPDEPREC + * Sets the first index list of scroll by text. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] text The text of the first index + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetFastScrollMainIndex(const Tizen::Base::String& text); + + /** + * @if OSPDEPREC + * Sets the second index list of scroll by text. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] text The text of the second index @n + * Separate each second index of the first index by ',';. + * @param[in] indexDigit The index digit count + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetFastScrollSubIndex(const Tizen::Base::String& text, FastScrollIndexDigit indexDigit = SCROLL_INDEX_DIGIT_NUM_1); + + /** + * @if OSPDEPREC + * Adds the fast scroll event listener. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @param[in] listener The listener to be added + * @endif + */ + void AddFastScrollEventListener(Tizen::Ui::IFastScrollEventListener& listener); + + /** + * @if OSPDEPREC + * Removes the fast scroll event listener. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @param[in] listener The listener to be removed + * @endif + */ + void RemoveFastScrollEventListener(Tizen::Ui::IFastScrollEventListener& listener); + + /** + * @if OSPDEPREC + * Adds the grouped list item event listener. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @param[in] listener The listener to be added + * @endif + */ + void AddGroupedItemEventListener(Tizen::Ui::IGroupedItemEventListener& listener); + + /** + * @if OSPDEPREC + * Removes the grouped list item event listener. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @param[in] listener The listener to be removed + * @endif + */ + void RemoveGroupedItemEventListener(Tizen::Ui::IGroupedItemEventListener& listener); + + /** + * @if OSPDEPREC + * Gets the index of the first checked list item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[out] groupIndex The group index of the item + * @param[out] itemIndex The item index of the item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result GetFirstCheckedItemIndex(int& groupIndex, int& itemIndex) const; + + /** + * @if OSPDEPREC + * Sets the checked status of all the items of the specified group with the given value. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index of the item + * @param[in] check Set to @c true to check all the items, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c groupIndex is invalid. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetAllItemsChecked(int groupIndex, bool check); + + /** + * @if OSPDEPREC + * Gets the index of the current bottom drawn list item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[out] groupIndex The group index of the item + * @param[out] itemIndex The item index of the item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result GetBottomDrawnItemIndex(int& groupIndex, int& itemIndex) const; + + /** + * @if OSPDEPREC + * Draws and shows the item of %GroupedList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c groupIndex or @c itemIndex is invalid. + * @exception E_INVALID_OPERATION The item has never been drawn before calling this method. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result RefreshItem(int groupIndex, int itemIndex); + + /** + * @if OSPDEPREC + * Draws and shows the group of %GroupedList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c groupIndex is invalid. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result RefreshGroup(int groupIndex); + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + GroupedList(const GroupedList& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + GroupedList& operator =(const GroupedList& rhs); + + friend class _GroupedListImpl; +}; //GroupedList +}}} // Tizen::Ui::Controls +#endif // _FUI_CTRL_GROUPED_LIST_H_ diff --git a/inc/FUiCtrlGroupedListView.h b/inc/FUiCtrlGroupedListView.h new file mode 100644 index 0000000..e0b0cf1 --- /dev/null +++ b/inc/FUiCtrlGroupedListView.h @@ -0,0 +1,1083 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlGroupedListView.h + * @brief This is the header file for the %GroupedListView class. + * + * This header file contains the declarations of the %GroupedListView class and its helper classes. + */ + +#ifndef _FUI_CTRL_GROUPED_LIST_VIEW_H_ +#define _FUI_CTRL_GROUPED_LIST_VIEW_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +class _GroupedListViewImpl; + +/** + * @class GroupedListView + * @brief This class defines the common behavior of a %GroupedListView control. + * + * @since 2.0 + * + * The %GroupedListView class displays a list of grouped items in a list. The items in a GroupedList control consist of groups and + * items. A group represents the grouped items and is placed at the first level. Each group consists of simple or custom items. + * Therefore, items are uniquely identified with two indexes: group index and item index. + * + * For more information on the class features, see ListViews. + * + * The following example demonstrates how to use the %GroupedListView class. + * + * + * @code +//Sample code for GroupedListViewSample.h + +#include + +class CustomGroupedListElement; + +class GroupedListViewSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::Controls::IGroupedListViewItemEventListener + , public Tizen::Ui::Controls::IGroupedListViewItemProvider +{ +public: + GroupedListViewSample(void) + : __pGroupedListView(null) + , __pCustomGroupedListElement(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + virtual result OnTerminating(void); + + // IGroupedListViewItemEventListener + virtual void OnGroupedListViewContextItemStateChanged(Tizen::Ui::Controls::GroupedListView &listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListContextItemStatus state); + virtual void OnGroupedListViewItemStateChanged(Tizen::Ui::Controls::GroupedListView &listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListItemStatus state); + virtual void OnGroupedListViewItemSwept(Tizen::Ui::Controls::GroupedListView &listView, int groupIndex, int itemIndex, Tizen::Ui::Controls::SweepDirection direction); + + // IGroupedListViewItemProvider + virtual int GetGroupCount(void); + virtual int GetItemCount(int groupIndex); + virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int groupIndex, int itemIndex, int itemWidth); + virtual Tizen::Ui::Controls::GroupItem* CreateGroupItem(int groupIndex, int itemWidth); + virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth); + virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth); + +private: + static const int ID_FORMAT_STRING = 100; + static const int ID_FORMAT_BITMAP = 101; + static const int ID_FORMAT_CUSTOM = 102; + static const int ID_CONTEXT_ITEM_1 = 103; + static const int ID_CONTEXT_ITEM_2 = 104; + + Tizen::Graphics::Bitmap* __pHome; + Tizen::Graphics::Bitmap* __pMsg; + Tizen::Graphics::Bitmap* __pAlarm; + Tizen::Graphics::Bitmap* __pCall; + + Tizen::Ui::Controls::GroupedListView* __pGroupedListView; + Tizen::Ui::Controls::ListContextItem* __pItemContext; + CustomGroupedListElement* __pCustomGroupedListElement; +}; + * @endcode + * + * @code +//Sample code for GroupedListViewSample.cpp +#include +#include + +#include "GroupedListViewSample.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::Graphics; +using namespace Tizen::Ui::Controls; + +class CustomGroupedListElement + : public ICustomElement +{ +public: + bool + OnDraw(Canvas& canvas, const Rectangle& rect, ListItemDrawingStatus itemStatus) + { + Tizen::Graphics::Font font; + font.Construct(FONT_STYLE_PLAIN, 15); + canvas.SetFont(font); + canvas.SetLineWidth(3); + canvas.SetForegroundColor(Color::GetColor(COLOR_ID_GREEN)); + + if (canvas.DrawRectangle(rect) != E_SUCCESS) + { + return false; + } + + if (canvas.DrawText(Point(rect.x+10, rect.y+15), L"Custom") != E_SUCCESS) + { + return false; + } + + return true; + } +}; + +bool +GroupedListViewSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +GroupedListViewSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of IconListView + __pGroupedListView = new GroupedListView(); + __pGroupedListView->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height), GROUPED_LIST_VIEW_STYLE_INDEXED, true, true); + __pGroupedListView->SetItemProvider(*this); + __pGroupedListView->AddGroupedListViewItemEventListener(*this); + + // Adds the icon list view to the form + AddControl(*__pGroupedListView); + + // Creates an instance of ListContextItem + __pItemContext = new ListContextItem(); + __pItemContext->Construct(); + __pItemContext->AddElement(ID_CONTEXT_ITEM_1, "Test1"); + __pItemContext->AddElement(ID_CONTEXT_ITEM_2, "Test2"); + + // Gets instances of Bitmap + AppResource* pAppResource = Application::GetInstance()->GetAppResource(); + __pHome = pAppResource->GetBitmapN(L"tizen.png"); + __pMsg = pAppResource->GetBitmapN(L"tizen.png"); + __pAlarm = pAppResource->GetBitmapN(L"tizen.png"); + __pCall = pAppResource->GetBitmapN(L"tizen.png"); + + // Creates an instance of CustomGroupedListElement + __pCustomGroupedListElement = new CustomGroupedListElement(); + + return r; +} + +result +GroupedListViewSample::OnTerminating(void) +{ + result r = E_SUCCESS; + + // Deallocates bitmaps + delete __pHome; + delete __pMsg; + delete __pAlarm; + delete __pCall; + + // Deallocates the item context + delete __pItemContext; + + return r; +} + +void +GroupedListViewSample::OnGroupedListViewItemStateChanged(GroupedListView &listView, int groupIndex, int itemIndex, int elementId, ListItemStatus state) +{ + switch (elementId) + { + case ID_FORMAT_STRING: + { + // .... + } + break; + case ID_FORMAT_BITMAP: + { + // .... + } + break; + default: + break; + } +} + +void +GroupedListViewSample::OnGroupedListViewContextItemStateChanged(GroupedListView &listView, int groupIndex, int itemIndex, int elementId, ListContextItemStatus state) +{ + switch (elementId) + { + case ID_CONTEXT_ITEM_1: + { + // .... + } + break; + case ID_CONTEXT_ITEM_2: + { + // .... + } + break; + default: + break; + } +} + +// IGroupedListViewItemEventListener +void +GroupedListViewSample::OnGroupedListViewItemSwept(GroupedListView &listView, int groupIndex, int itemIndex, SweepDirection direction) +{ + // .... +} + +int +GroupedListViewSample::GetGroupCount(void) +{ + return 3; +} + +int +GroupedListViewSample::GetItemCount(int groupIndex) +{ + int itemCount = 0; + switch (groupIndex) + { + case 0: + { + itemCount = 7; + } + break; + case 1: + { + itemCount = 5; + } + break; + case 2: + { + itemCount = 3; + } + break; + default: + break; + } + + return itemCount; +} + +// IGroupedListViewItemProvider +GroupItem* +GroupedListViewSample::CreateGroupItem(int groupIndex, int itemWidth) +{ + String text("Group "); + text.Append(groupIndex+1); + + GroupItem* pItem = new GroupItem(); + pItem->Construct(Dimension(itemWidth, 40)); + pItem->SetElement(text, null); + + return pItem; +} + +ListItemBase* +GroupedListViewSample::CreateItem(int groupIndex, int itemIndex, int itemWidth) +{ + // Creates an instance of CustomItem + CustomItem* pItem = new CustomItem(); + ListAnnexStyle style = LIST_ANNEX_STYLE_NORMAL; + pItem->Construct(Dimension(itemWidth, 100), style); + + switch (itemIndex % 4) + { + case 0: + { + style = LIST_ANNEX_STYLE_NORMAL; + pItem->AddElement(Rectangle(10, 20, 60, 60), ID_FORMAT_BITMAP, *__pHome, null, null); + pItem->AddElement(Rectangle(150, 25, 150, 50), ID_FORMAT_STRING, L"Home", true); + } + break; + case 1: + { + style = LIST_ANNEX_STYLE_MARK; + pItem->AddElement(Rectangle(10, 20, 60, 60), ID_FORMAT_BITMAP, *__pMsg, null, null); + pItem->AddElement(Rectangle(150, 25, 150, 50), ID_FORMAT_STRING, L"Msg", true); + } + break; + case 2: + { + style = LIST_ANNEX_STYLE_ONOFF_SLIDING; + pItem->AddElement(Rectangle(10, 20, 60, 60), ID_FORMAT_BITMAP, *__pAlarm, null, null); + pItem->AddElement(Rectangle(150, 25, 150, 50), ID_FORMAT_STRING, L"Alarm", true); + } + break; + case 3: + { + style = LIST_ANNEX_STYLE_DETAILED; + pItem->AddElement(Rectangle(10, 20, 60, 60), ID_FORMAT_BITMAP, *__pCall, null, null); + pItem->AddElement(Rectangle(150, 25, 150, 50), ID_FORMAT_STRING, L"Call", true); + } + break; + default: + break; + } + pItem->AddElement(Rectangle(360, 10, 180, 80), ID_FORMAT_CUSTOM, *(static_cast(__pCustomGroupedListElement))); + pItem->SetContextItem(__pItemContext); + + return pItem; +} + +bool +GroupedListViewSample::DeleteItem(int groupIndex, int itemIndex, ListItemBase* pItem, int itemWidth) +{ + delete pItem; + pItem = null; + return true; +} + +bool +GroupedListViewSample::DeleteGroupItem(int groupIndex, GroupItem* pItem, int itemWidth) +{ + delete pItem; + pItem = null; + return true; +} + * @endcode + * + */ + + +class _OSP_EXPORT_ GroupedListView + : public Tizen::Ui::Control +{ +public: + /** + * The object is not fully constructed after this constructor is + * called. For full construction, the Construct() method must be + * called right after calling this constructor. + * + * @since 2.0 + */ + GroupedListView(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~GroupedListView(void); + + /** + * @if OSPDEPREC + * Initializes this instance of %GroupedListView with the specified parameters. + * + * @brief [Deprecated] + * @deprecated This method is deprecated. + * @since 2.0 + * + * @return An error code + * @param[in] rect An instance of the Graphics::Rectangle class + * This instance represents the x and y coordinates of the top-left corner of the created + * %GroupedListView control along with the width and height. + * @param[in] style The style of the %GroupedListView control + * @param[in] itemDivider Set to @c true to display an item divider, @n + * else @c false + * @param[in] fastScroll Set to @c true to use the fast scroll, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * Either the @c rect.width or @c rect.height parameter has a negative value. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result Construct(const Tizen::Graphics::Rectangle& rect, GroupedListViewStyle style, bool itemDivider = true, bool fastScroll = false); + + /** + * Initializes this instance of %GroupedListView with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect An instance of the Graphics::Rectangle class + * This instance represents the x and y coordinates of the top-left corner of the created + * %GroupedListView control along with the width and height. + * @param[in] style The style of the %GroupedListView control + * @param[in] itemDivider Set to @c true to display an item divider, @n + * else @c false + * @param[in] scrollStyle Set to scroll style + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * Either the @c rect.width or @c rect.height parameter has a negative value. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(const Tizen::Graphics::Rectangle& rect, GroupedListViewStyle style, bool itemDivider, ListScrollStyle scrollStyle); + + /** + * Sets the item provider that creates and deletes items from the list. + * + * @since 2.0 + * + * @return An error code + * @param[in] provider The item provider to create and delete items + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks If an item provider is not set for the list, the list does not work. @n + * A provider should be allocated on a heap memory. + */ + result SetItemProvider(IGroupedListViewItemProvider& provider); + + /** + * Adds an IGroupedListViewItemEventListener instance that listens to the state changes of the list view items. @n + * The added listener can listen to events on the specified event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + */ + void AddGroupedListViewItemEventListener(IGroupedListViewItemEventListener& listener); + + /** + * Removes an IGroupedListViewItemEventListener instance that listens to the state changes of the list view items. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + */ + void RemoveGroupedListViewItemEventListener(IGroupedListViewItemEventListener& listener); + + /** + * Adds an IFastScrollListener instance that listens to the state changes of a fast scroll. @n + * The added listener can listen to events on the specified event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + */ + void AddFastScrollListener(IFastScrollListener& listener); + + /** + * Removes an IFastScrollListener instance that listens to the state changes of a fast scroll. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + */ + void RemoveFastScrollListener(IFastScrollListener& listener); + + /** + * Adds an IScrollEventListener instance that listens to the state changes of a scroll event. @n + * The added listener can listen to events on the specified event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @see IScrollEventListener::OnScrollEndReached() + * @see RemoveScrollEventListener() + */ + void AddScrollEventListener(IScrollEventListener& listener); + + /** + * Removes an IScrollEventListener instance that listens to the state changes of a scroll event. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @see IScrollEventListener::OnScrollEndReached() + * @see AddScrollEventListener() + */ + void RemoveScrollEventListener(IScrollEventListener& listener); + + /** + * Adds a link event listener. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @remarks The added listener is notified when a link is selected by the user. + * + * @see RemoveUiLinkEventListener() + */ + void AddUiLinkEventListener(Tizen::Ui::IUiLinkEventListener& listener); + + /** + * Removes the specified link event listener. + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @see AddUiLinkEventListener() + */ + void RemoveUiLinkEventListener(Tizen::Ui::IUiLinkEventListener& listener); + + /** + * Enables or disables the sweep event. + * + * @since 2.0 + * + * @return An error code + * @param[in] enable Set to @c true to enable the item sweep, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetSweepEnabled(bool enable); + + /** + * Sets the index list of the fast scroll. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text of the index + * @param[in] useSearchIcon Set to @c true to display the magnifying icon, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @exception E_SYSTEM A system error has occurred. + */ + result SetFastScrollIndex(const Tizen::Base::String& text, bool useSearchIcon); + + /** + * Gets the group and item indexes of the top item. + * + * @since 2.0 + * + * @return An error code + * @param[out] groupIndex The group index + * @param[out] itemIndex The item index + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result GetTopDrawnItemIndex(int& groupIndex, int& itemIndex) const; + + /** + * Gets the group and item indexes of the bottom item. + * + * @since 2.0 + * + * @return An error code + * @param[out] groupIndex The group index + * @param[out] itemIndex The item index + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result GetBottomDrawnItemIndex(int& groupIndex, int& itemIndex) const; + + + /** + * Scrolls to the item at the specified index. @n + * The specified item is drawn at the top of the %GroupedListView control. + * + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result ScrollToItem(int groupIndex, int itemIndex); + + /** + * Scrolls to the item at the specified index. @n + * The specified item is drawn at the position specified by the item alignment. + * + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @param[in] itemAlignment The item alignment + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result ScrollToItem(int groupIndex, int itemIndex, ListScrollItemAlignment itemAlignment); + + /** + * Checks or unchecks the item at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index of the item to check + * @param[in] itemIndex The index of the item to check + * @param[in] check Set to @c true to select the item, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @exception E_INVALID_OPERATION The item is disabled. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method works only when the annex style of the item allows selection. + */ + result SetItemChecked(int groupIndex, int itemIndex, bool check); + + /** + * Checks whether the item at the specified index is selected. + * + * @since 2.0 + * + * @return @c true if the item is selected, @n + * else @c false + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @remarks This method returns @c false, if the annex style of the item does not allow selection. + */ + bool IsItemChecked(int groupIndex, int itemIndex) const; + + /** + * Enables or disables the item at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @param[in] enable Set to @c true to enable the specified item, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method can only be used when the annex style of the list allows selection. + */ + result SetItemEnabled(int groupIndex, int itemIndex, bool enable); + + /** + * Checks whether the item at the specified index is enabled or disabled. + * + * @since 2.0 + * + * @return @c true if the item is enabled, @n + * else @c false + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + */ + bool IsItemEnabled(int groupIndex, int itemIndex) const; + + /** + * Counts the total number of groups. + * + * @since 2.0 + * + * @return The total number of groups + */ + int GetGroupCount(void) const; + + /** + * Counts all the items of the specified group. + * + * @since 2.0 + * + * @return The total number of items in the specified group + * @param[in] groupIndex The group index + */ + int GetItemCountAt(int groupIndex) const; + + /** + * Shows the description text of the specified item. + * + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index of the item + * @param[in] itemIndex The index of the item + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks If no description text is set for the item at the specified index, it is not displayed. + * + */ + result ShowItemDescriptionText(int groupIndex, int itemIndex); + + /** + * Hides the description text of the specified item. + * + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index of the item + * @param[in] itemIndex The index of the item + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result HideItemDescriptionText(int groupIndex, int itemIndex); + + /** + * Updates the specified item. @n + * For instance, LIST_REFRESH_TYPE_ITEM_ADD is used when a new item needs to be added and LIST_REFRESH_TYPE_ITEM_REMOVE is used when an item is deleted from the + * list. Moreover, LIST_REFRESH_TYPE_ITEM_MODIFY is used when the content of an existing item has changed and it needs to be updated. @n + * Note that calling this method with LIST_REFRESH_TYPE_ITEM_MODIFY invokes item provider's DeleteItem() and CreateItem() for the given index in sequence. + * + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @param[in] type The item to be added, removed, or modified + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_SYSTEM A system error has occurred. + * @remarks If the specified itemIndex is -1, then the method is applied to the group item with the given index. @n + * Note that if LIST_REFRESH_TYPE_ITEM_REMOVE option is used to a group item, all the items in the group (including the group item itself) are + * removed from the list. + * @remarks This method internally calls Invalidate(), so you do not need to call them to update the screen. + */ + result RefreshList(int groupIndex, int itemIndex, ListRefreshType type); + + /** + * Refreshes the specified item's element. + * + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @param[in] elementId The item element ID + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method internally calls Invalidate(), so you do not need to call them to update the screen. + */ + result RefreshList(int groupIndex, int itemIndex, int elementId); + + /** + * Updates all the items of a list. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method clears all the items in the list and invokes the methods of the item provider again to update the list. + */ + result UpdateList(void); + + /** + * Gets the index of the item at the specified position. + * + * @since 2.0 + * + * @return An error code + * @param[in] x The X position of the item + * @param[in] y The Y position of the item + * @param[out] groupIndex The index of the group that the item belongs to + * @param[out] itemIndex The index of the item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred, or @n + * there is no item at the specified position. + */ + result GetItemIndexFromPosition(int x, int y, int& groupIndex, int& itemIndex) const; + + /** + * Gets the index of the item at the specified position. + * + * @since 2.0 + * + * @return An error code + * @param[in] position The position of the item + * @param[out] groupIndex The index of the group that the item belongs to + * @param[out] itemIndex The index of the item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred, or @n + * there is no item at the specified position. + */ + result GetItemIndexFromPosition(const Tizen::Graphics::Point& position, int& groupIndex, int& itemIndex) const; + + /** + * Gets the index of the item and ID of the element at the specified position. + * + * @since 2.0 + * + * @return An error code + * @param[in] x The X position of the item + * @param[in] y The Y position of the item + * @param[out] groupIndex The index of the group that the item belongs to + * @param[out] itemIndex The index of the item + * @param[out] elementId The ID of the element + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred, or + * there is no item at the specified position. + * @remarks @c groupIndex and @c itemIndex are -1 when there is no list item at the specified position. + * @remarks @c elementId is -1 when there is no element at the specified position + */ + result GetItemIndexFromPosition(int x, int y, int& groupIndex, int& itemIndex, int& elementId) const; + + /** + * Gets the index of the item and ID of the element at the specified position. + * + * @since 2.0 + * + * @return An error code + * @param[in] position The position of the point + * @param[out] groupIndex The index of the group that the item belongs to + * @param[out] itemIndex The index of the item + * @param[out] elementId The ID of the element + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred, or + * there is no item at the specified position. + * @remarks @c groupIndex and @c itemIndex are -1 when there is no list item at the specified position. + * @remarks @c elementId is -1 when there is no element at the specified position + */ + result GetItemIndexFromPosition(const Tizen::Graphics::Point& position, int& groupIndex, int& itemIndex, int& elementId) const; + + /** + * Sets the color of a section. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The section color + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation (this control cannot be displayed). + * @exception E_SYSTEM A system error has occurred. + * @remarks This method works only when the style of the %GroupedListView control is GROUPED_LIST_VIEW_STYLE_SECTION. @n + * If the device does not support the 32-bit color space, the method sets the alpha value of the specified color to @c 255. + */ + result SetSectionColor(const Tizen::Graphics::Color& color); + + /** + * Gets the color of a section. + * + * @since 2.0 + * + * @return The section color, @n + * else RGBA(0, 0, 0, 0) if the instance is invalid + */ + Tizen::Graphics::Color GetSectionColor(void) const; + + /** + * Sets the color of a division line between items. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The division line color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetItemDividerColor(const Tizen::Graphics::Color& color); + + /** + * Gets the color of a division line between items. + * + * @since 2.0 + * + * @return The color of a division line, @n + * else RGBA(0, 0, 0, 0) if the instance is invalid + */ + Tizen::Graphics::Color GetItemDividerColor(void) const; + + /** + * Sets the background color of this control. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The background color + * @exception E_SUCCESS The method is successful. + * @remarks If the device does not support the 32-bit color space, the method sets the alpha value of the specified color to @c 255. @n + * The background bitmap has priority over the background color. When both the background bitmap and the background color are specified, + * only the bitmap image is displayed. + */ + result SetBackgroundColor(const Tizen::Graphics::Color& color); + + /** + * Gets the background color of this control. + * + * @since 2.0 + * + * @return The background color, @n + * else RGBA(0, 0, 0, 0) if the instance is invalid + */ + Tizen::Graphics::Color GetBackgroundColor(void) const; + + /** + * Sets the bitmap of this control. + * + * @since 2.0 + * + * @return An error code + * @param[in] pBitmap The bitmap for the list + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetBackgroundBitmap(const Tizen::Graphics::Bitmap* pBitmap); + + /** + * Sets the bitmap of the empty list. + * + * @since 2.0 + * + * @return An error code + * @param[in] pBitmap The bitmap for the empty list + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetBitmapOfEmptyList(const Tizen::Graphics::Bitmap* pBitmap); + + /** + * Sets the text of the empty list. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text for the empty list + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetTextOfEmptyList(const Tizen::Base::String& text); + + /** + * Gets the text to display when there is no item in a list. + * + * @since 2.0 + * + * @return The text to be displayed, @n + * else an empty string when the instance is invalid + */ + Tizen::Base::String GetTextOfEmptyList(void) const; + + /** + * Sets the color of the text to be displayed when there is no item in a list. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The color of the text to be displayed + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetTextColorOfEmptyList(const Tizen::Graphics::Color& color); + + /** + * Gets the color of the text to be displayed when there is no item in a list. + * + * @since 2.0 + * + * @return The color of the text to be displayed, @n + * else RGBA(0, 0, 0, 0) if the instance is invalid + */ + Tizen::Graphics::Color GetTextColorOfEmptyList(void) const; + + /** + * Expands the group's items. + * + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The index of the group + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result ExpandGroup(int groupIndex); + + /** + * Collapses the group's items. + * + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The index of the group + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result CollapseGroup(int groupIndex); + + /** + * Checks whether the group is expanded. + * + * @since 2.0 + * + * @return @c true if the group is expanded, @n + * @c else false + * + * @param[in] groupIndex The index of the group + */ + bool IsGroupExpanded(int groupIndex) const; + + /** + * Begins the reordering mode. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The reordering mode is only supported when %GroupedListView% is constructed with GroupedListViewStyle::GROUPED_LIST_VIEW_STYLE_INDEXED style. + * @see GroupedListView::Construct() + * @see IGroupedListViewItemEventListener::OnGroupedListViewItemReordered() + */ + result BeginReorderingMode(void); + + /** + * Ends the reordering mode. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The reordering mode is only supported when %GroupedListView% is constructed with GroupedListViewStyle::GROUPED_LIST_VIEW_STYLE_INDEXED style. + * @see GroupedListView::Construct() + * @see IGroupedListViewItemEventListener::OnGroupedListViewItemReordered() + */ + result EndReorderingMode(void); + + /** + * Checks whether the %GroupedListView control is in reordering mode. + * + * @since 2.0 + * + * @return @c true if the %GroupedListView is in reordering mode, + * else @c false + */ + bool IsInReorderingMode(void) const; + +protected: + friend class _GroupedListViewImpl; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + GroupedListView(const GroupedListView& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + GroupedListView& operator =(const GroupedListView& rhs); + +}; // GroupedListView + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_GROUPED_LIST_VIEW_H_ diff --git a/inc/FUiCtrlGroupedListViewTypes.h b/inc/FUiCtrlGroupedListViewTypes.h new file mode 100644 index 0000000..569837f --- /dev/null +++ b/inc/FUiCtrlGroupedListViewTypes.h @@ -0,0 +1,44 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlGroupedListViewTypes.h + * @brief This is the header file for the GroupedListView enumerations. + * + * This header file contains the declarations of the GroupedListView enumerations. + */ +#ifndef _FUI_CTRL_GROUPED_LIST_VIEW_TYPES_H_ +#define _FUI_CTRL_GROUPED_LIST_VIEW_TYPES_H_ + +namespace Tizen { namespace Ui { namespace Controls +{ +/** + * @enum GroupedListViewStyle + * + * Defines the style of %GroupedListView. + * + * @since 2.0 + */ +enum GroupedListViewStyle +{ + GROUPED_LIST_VIEW_STYLE_INDEXED = 0, /**< The group and the item are displayed in a rectangular area */ + GROUPED_LIST_VIEW_STYLE_SECTION /**< All the items in the group are displayed in a rounded rectangle */ +}; // GroupedListViewStyle + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_GROUPED_LIST_VIEW_TYPES_H_ diff --git a/inc/FUiCtrlGroupedTableView.h b/inc/FUiCtrlGroupedTableView.h new file mode 100644 index 0000000..1dc8933 --- /dev/null +++ b/inc/FUiCtrlGroupedTableView.h @@ -0,0 +1,813 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlGroupedTableView.h + * @brief This is the header file for the %GroupedTableView class. + * + * This header file contains the declarations of the %GroupedTableView class and its helper classes. + */ + +#ifndef _FUI_CTRL_GROUPED_TABLE_VIEW_H_ +#define _FUI_CTRL_GROUPED_TABLE_VIEW_H_ + +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +class IGroupedTableViewItemProvider; +class IGroupedTableViewItemEventListener; +class IFastScrollListener; +class IScrollEventListener; + +/** + * @class GroupedTableView + * @brief This class defines common behavior for a %GroupedTableView control. + * + * @since 2.0 + * + * The %GroupedTableView class defines common behavior for a %GroupedTableView control. + * @code +//Sample code for GroupedTableViewSample.h +#include + +class GroupedTableViewSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::Controls::IGroupedTableViewItemProvider + , public Tizen::Ui::Controls::IGroupedTableViewItemEventListener + , public Tizen::Ui::Controls::IFastScrollListener +{ +public: + GroupedTableViewSample(void) + : __pGroupedTableView(null) + , __pContextItem(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + virtual result OnTerminating(void); + + // IGroupedTableViewItemEventListener + virtual void OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status); + virtual void OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status); + virtual void OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated); + + // IGroupedTableViewItemProvider + virtual int GetGroupCount(void); + virtual int GetItemCount(int groupIndex); + virtual Tizen::Ui::Controls::TableViewGroupItem* CreateGroupItem(int groupIndex, int itemWidth); + virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem); + virtual void UpdateGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem); + virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int groupIndex, int itemIndex, int itemWidth); + virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem); + virtual void UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem); + virtual int GetDefaultItemHeight(void); + virtual int GetDefaultGroupItemHeight(void); + + // IFastScrollListener + virtual void OnFastScrollIndexSelected(Tizen::Ui::Control& source, Tizen::Base::String& index); + +private: + Tizen::Ui::Controls::GroupedTableView* __pGroupedTableView; + Tizen::Ui::Controls::TableViewContextItem* __pContextItem; +}; + * @endcode + * + * @code + +//Sample code for GroupedTableViewSample.cpp +#include +#include + +#include "GroupedTableViewSample.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::Graphics; +using namespace Tizen::Media; +using namespace Tizen::Ui::Controls; + +bool +GroupedTableViewSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +GroupedTableViewSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of TableView + __pGroupedTableView = new GroupedTableView(); + __pGroupedTableView->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height), true, TABLE_VIEW_SCROLL_BAR_STYLE_FAST_SCROLL); + __pGroupedTableView->SetItemProvider(*this); + __pGroupedTableView->AddTableViewItemEventListener(*this); + + __pGroupedTableView->AddFastScrollListener(*this); + __pGroupedTableView->SetFastScrollIndex(L"ABCDEFGHIJKLMNOPQRSTUVWXYZ", true); + + // Adds the TableView to the form + AddControl(*__pGroupedTableView); + + // Creates an instance of TableViewContextItem + __pContextItem = new TableViewContextItem(); + __pContextItem->Construct(Dimension(720, 100)); + + Button* pButton = new Button(); + pButton->Construct(Rectangle(10, 10, 200, 80), L"Context1"); + + Button* pButton2 = new Button(); + pButton2->Construct(Rectangle(250, 10, 200, 80), L"Context2"); + + __pContextItem->AddControl(*pButton); + __pContextItem->AddControl(*pButton2); + + return r; +} + +result +GroupedTableViewSample::OnTerminating(void) +{ + result r = E_SUCCESS; + + // Deallocates the item context + delete __pItemContext; + __pItemContext = null; + + return r; +} + +// IGroupedTableViewItemEventListener implementation +void +GroupedTableViewSample::OnGroupedTableViewGroupItemStateChanged(GroupedTableView& tableView, int groupIndex, TableViewGroupItem* pItem, TableViewItemStatus status) +{ + if (tableView.IsGroupExpanded(groupIndex)) + { + tableView.CollapseGroup(groupIndex); + } + else + { + tableView.ExpandGroup(groupIndex); + } +} + +void +GroupedTableViewSample::OnGroupedTableViewItemStateChanged(GroupedTableView& tableView, int groupIndex, int itemIndex, TableViewItem* pItem, TableViewItemStatus status) +{ + // .... +} + +void +GroupedTableViewSample::OnGroupedTableViewContextItemActivationStateChanged(GroupedTableView& tableView, int groupIndex, int itemIndex, TableViewContextItem* pContextItem, bool activated) +{ + // .... +} + +// IFastScrollListener implementation +void +GroupedTableViewSample::OnFastScrollIndexSelected(Tizen::Ui::Control& source, Tizen::Base::String& index) +{ + // .... +} + +// IGroupedTableViewItemProvider implementation +int +GroupedTableViewSample::GetGroupCount(void) +{ + return 26; +} + +int +GroupedTableViewSample::GetItemCount(int groupIndex) +{ + return 10; +} + +int +GroupedTableViewSample::GetDefaultItemHeight(void) +{ + return 100; +} + +int +GroupedTableViewSample::GetDefaultGroupItemHeight(void) +{ + return 80; +} + +TableViewGroupItem* +GroupedTableViewSample::CreateGroupItem(int groupIndex, int itemWidth) +{ + TableViewGroupItem* pItem = new TableViewGroupItem(); + pItem->Construct(Dimension(itemWidth, GetDefaultGroupItemHeight())); + + String text; + text.Format(30, L"Group title %d", itemIndex); + + Label* pLabel = new Label(); + pLabel->Construct(Rectangle(0, 0, itemWidth, GetDefaultGroupItemHeight(), text); + + pItem->AddControl(*pLable); + + return pItem; +} + +bool +GroupedTableViewSample::DeleteGroupItem(int groupIndex, TableViewGroupItem* pItem) +{ + delete pItem; + + return true; +} + +void +GroupedTableViewSample::UpdateGroupItem(int groupIndex, TableViewGroupItem* pItem) +{ + // .... +} + +TableViewItem* +GroupedTableViewSample::CreateItem(int groupIndex, int itemIndex, int itemWidth) +{ + TableViewAnnexStyle style = TABLE_VIEW_ANNEX_STYLE_NORMAL; + TableViewItem* pItem = new TableViewItem(); + + switch (itemIndex % 5) + { + case 0: + style = TABLE_VIEW_ANNEX_STYLE_NORMAL; + break; + case 1: + style = TABLE_VIEW_ANNEX_STYLE_MARK; + break; + case 2: + style = TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING; + break; + case 3: + style = TABLE_VIEW_ANNEX_STYLE_DETAILED; + break; + case 4: + style = TABLE_VIEW_ANNEX_STYLE_RADIO; + break; + default: + break; + } + + pItem->Construct(Dimension(itemWidth, GetDefaultItemHeight()), style); + + String text; + text.Format(30, L"TableViewItem %d", itemIndex); + + Label* pLabel = new Label(); + pLabel->Construct(Rectangle(0, 0, itemWidth, GetDefaultItemHeight(), text); + + pItem->AddControl(*pLabel); + pItem->SetContextItem(__pContextItem); + + return pItem; +} + +bool +GroupedTableViewSample::DeleteItem(int groupIndex, int itemIndex, Controls::TableViewItem* pItem) +{ + delete pItem; + + return true; +} + +void +GroupedTableViewSample::UpdateItem(int groupIndex, int itemIndex, Controls::TableViewItem* pItem) +{ + // .... +} + * @endcode + * + */ + +class _OSP_EXPORT_ GroupedTableView + : public Tizen::Ui::Container +{ +public: + /** + * The object is not fully constructed after this constructor is called. Hence, the Construct() method must be called after calling this constructor. + * + * @since 2.0 + */ + GroupedTableView(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~GroupedTableView(void); + + /** + * Initializes this instance of %GroupedTableView with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect An instance of the Graphics::Rectangle class + * This instance represents the x and y coordinates of the left top corner of the created %GroupedTableView along with the width and height. + * @param[in] itemDivider Set to @c true to display an item divider, @n + * else @c false + * @param[in] scrollStyle The style of %GroupedTableView scroll bar style + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid, or either the rect.width or rect.height parameter has a negative value. + * + */ + result Construct(const Tizen::Graphics::Rectangle& rect, bool itemDivider, TableViewScrollBarStyle scrollStyle); + + /** + * Sets the item provider that creates and deletes items for the grouped style table view. + * + * @since 2.0 + * + * @param[in] pProvider The item provider to create and delete items + * @remarks If an item provider is not set for the table view, the table view does not work. The specified provider should be allocated in heap memory. + * To reset the item provider, pass @c null to @c pProvider. + */ + void SetItemProvider(IGroupedTableViewItemProvider* pProvider); + + /** + * Expands the group's items. + * + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The index of the group + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + */ + result ExpandGroup(int groupIndex); + + /** + * Collapses the group's items. + * + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The index of the group + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + */ + result CollapseGroup(int groupIndex); + + /** + * Expands all groups of table view. + * + * @since 2.0 + * + */ + void ExpandAllGroup(void); + + /** + * Collapses all groups of table view. + * + * @since 2.0 + * + */ + void CollapseAllGroup(void); + + /** + * Returns whether the group is expanded or not. + * + * @since 2.0 + * + * @return @c true if the group is expanded, else @c false + * @param[in] groupIndex The index of the group + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + */ + bool IsGroupExpanded(int groupIndex) const; + + /** + * Sets the grouped look is enabled. + * + * @since 2.0 + * + * @param[in] enable The enabled/disabled status + */ + void SetGroupedLookEnabled(bool enable); + + /** + * Returns whether the grouped look is enabled or not. + * + * @since 2.0 + * + * @return @c true if the grouped look is enabled, else @c false + */ + bool IsGroupedLookEnabled(void) const; + + /** + * Adds a listener instance that listens to state changes of table view items. @n + * The added listener can listen to events on the specified event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The event listener to add + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_ALREADY_EXIST The listener is already added. + * @remarks The specified listener should be allocated in heap memory. + */ + result AddGroupedTableViewItemEventListener(IGroupedTableViewItemEventListener& listener); + + /** + * Removes a listener instance that listens to state changes of table view items. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The event listener to remove + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND The listener is not found. + */ + result RemoveGroupedTableViewItemEventListener(IGroupedTableViewItemEventListener& listener); + + /** + * Adds a listener instance that listens to state changes of a fast scroll. @n + * The added listener can listen to events on the specified event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The event listener to add + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_OBJ_ALREADY_EXIST The listener is already added. + * @remarks The specified listener should be allocated in heap memory. + */ + result AddFastScrollListener(IFastScrollListener& listener); + + /** + * Removes a listener instance that listens to state changes of a fast scroll. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The event listener to remove + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_OBJ_NOT_FOUND The listener is not found. + */ + result RemoveFastScrollListener(IFastScrollListener& listener); + + /** + * Adds a listener instance that listens to state changes of a scroll event. @n + * The added listener can listen to events on the specified event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The event listener to add + * @see IScrollEventListener::OnScrollEndReached() + * @see RemoveScrollEventListener() + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_OBJ_ALREADY_EXIST The listener is already added. + * @remarks The specified listener should be allocated in heap memory. + */ + result AddScrollEventListener(IScrollEventListener& listener); + + /** + * Removes a listener instance that listens to state changes of a scroll event. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The event listener to remove + * @see IScrollEventListener::OnScrollEndReached() + * @see AddScrollEventListener() + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_OBJ_NOT_FOUND The listener is not found. + */ + result RemoveScrollEventListener(IScrollEventListener& listener); + + /** + * Enables or disables the collapse by pinch gesture. + * + * @since 2.0 + * + * @param[in] enable Set to @c true to enable the collapse by pinch gesture, else @c false + */ + void SetCollapseByPinchGestureEnabled(bool enable); + + /** + * Returns whether the collapse by pinch gesture is enabled or not. + * + * @since 2.0 + * + * @return @c true if the collapse by pinch gesture is enabled, else @c false + */ + bool IsCollapseByPinchGestureEnabled(void) const; + + /** + * Sets the text index of the fast scroll. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text of the index + * @param[in] useSearchIcon Set to @c true to show the magnifying icon, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + */ + result SetFastScrollIndex(const Tizen::Base::String& text, bool useSearchIcon); + + /** + * Gets the group and item indexes of the top item. + * + * @since 2.0 + * + * @return An error code + * @param[out] groupIndex The group index + * @param[out] itemIndex The item index + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND Top drawn item is not found. + */ + result GetTopDrawnItemIndex(int& groupIndex, int& itemIndex) const; + + /** + * Gets the group and item indexes of the bottom item. + * + * @since 2.0 + * + * @return An error code + * @param[out] groupIndex The group index + * @param[out] itemIndex The item index + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND Bottom drawn item is not found. + */ + result GetBottomDrawnItemIndex(int& groupIndex, int& itemIndex) const; + + /** + * Scrolls to the item at the specified index. + * The specified item is drawn at the position specified by the item alignment. + * + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @param[in] itemAlignment The item alignment + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @remarks If the specified item. itemIndex is -1, then the method is applied to the group item with the given index. + */ + result ScrollToItem(int groupIndex, int itemIndex, TableViewScrollItemAlignment itemAlignment = TABLE_VIEW_SCROLL_ITEM_ALIGNMENT_TOP); + + /** + * Checks or unchecks the item at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @param[in] check Set to @c true to select the item, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @exception E_INVALID_OPERATION The item is disabled. + * @remarks This method works only when the annex style of the item allows selection. + */ + result SetItemChecked(int groupIndex, int itemIndex, bool check); + + /** + * Returns whether the item at the specified index is selected or not. + * + * @since 2.0 + * + * @return @c true if the item is selected, @n + * else @c false + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @remarks This method returns @c false, if the annex style of the item does not allow selection. + */ + bool IsItemChecked(int groupIndex, int itemIndex) const; + + /** + * Enables or disables the item at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @param[in] enable Set to @c true to enable the specified item, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + */ + result SetItemEnabled(int groupIndex, int itemIndex, bool enable); + + /** + * Returns whether the item at the specified index is enabled or disabled. + * + * @since 2.0 + * + * @return @c true if the item is enabled, @n + * else @c false + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + */ + bool IsItemEnabled(int groupIndex, int itemIndex) const; + + /** + * Counts the total number of groups. + * + * @since 2.0 + * + * @return The total number of groups + */ + int GetGroupCount(void) const; + + /** + * Counts all the items of the specified group. + * + * @since 2.0 + * + * @return The total number of items in the specified group + * @param[in] groupIndex The group index + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + */ + int GetItemCountAt(int groupIndex) const; + + /** + * Updates the specified item. @n + * For instance, TABLE_VIEW_REFRESH_TYPE_ITEM_ADD is used when a new item needs to be added and TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE is used when an item is deleted from the + * table view. Moreover, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY is used when the content of an existing item has changed and it needs to be updated. + * Note that calling this method with TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY invokes item provider's UpdateItem() for the given index in sequence. + * + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @param[in] type The item to be added, removed, or modified + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @remarks If the specified item. itemIndex is -1, then the method is applied to the group item with the given index. + * Note that if TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE option is used to a group item, all the items in the group (including the group item itself) are + * removed from the table view. + */ + result RefreshItem(int groupIndex, int itemIndex, TableViewRefreshType type); + + /** + * Updates all the items of a table view. + * + * @since 2.0 + * + * @remarks This method clears all the items in the table view and invokes the methods of the item provider again to update the table view. + */ + void UpdateTableView(void); + + /** + * Gets the index of the item at the specified position. + * + * @since 2.0 + * + * @param[in] position The position of the item + * @param[out] groupIndex The group index of the item on specified position + * @param[out] itemIndex The item index of the item on specified position + * @remarks This method sets both of groupIndex and itemIndex to -1 if no item is found at the given position. + */ + void GetItemIndexFromPosition(const Tizen::Graphics::Point& position, int& groupIndex, int& itemIndex) const; + + /** + * Sets the color of a division line between items. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The division line color + */ + void SetItemDividerColor(const Tizen::Graphics::Color& color); + + /** + * Gets the color of a division line between items. + * + * @since 2.0 + * + * @return The color of a division line + */ + Tizen::Graphics::Color GetItemDividerColor(void) const; + + /** + * Sets the background color of this control. + * + * @since 2.0 + * + * @param[in] color The background color + * @remarks The background bitmap has priority over the background color. When both the background bitmap and the background color are specified, + * only the bitmap image is displayed. + */ + void SetBackgroundColor(const Tizen::Graphics::Color& color); + + /** + * Sets the scroll input handling mode. + * + * @since 2.0 + * + * @param[in] mode The scroll input handling mode + * @see GetScrollInputMode() + */ + void SetScrollInputMode(ScrollInputMode mode); + + /** + * Gets the scroll input handling mode. + * + * @since 2.0 + * + * @return The scroll input handling mode + * @see SetScrollInputMode() + */ + ScrollInputMode GetScrollInputMode(void) const; + + /** + * Gets the background color of this control. + * + * @since 2.0 + * + * @return The background color + */ + Tizen::Graphics::Color GetBackgroundColor(void) const; + + /* + * Scrolls the list contents with the amount of pixels. + * + * @since 2.0 + * + * @return An error code + * @param[in] pixel The amount of pixels to scroll + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c pixel is out of range. + * @remarks If you call ScrollByPixel() with negative @c pixel when position of scroll is already top of contents then it will return E_OUT_OF_RANGE. + * Likewise, in case of positive @c pixel on the bottom position of scroll it will also return E_OUT_OF_RANGE. + */ + result ScrollByPixel(int pixel); + + /* + * Gets the current scroll position + * + * @since 2.0 + */ + int GetCurrentScrollPosition(void) const; + + /* + * Enables or disables the scroll of GroupedTableView items. + * + * @since 2.0 + */ + void SetScrollEnabled(bool enable); + + /* + * Checks whether the scroll is enabled or disabled. + * + * @since 2.0 + */ + bool IsScrollEnabled(void) const; + +private: + friend class _TableViewImpl; + + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + GroupedTableView(const GroupedTableView& rhs); + + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + GroupedTableView& operator =(const GroupedTableView& rhs); +}; // GroupedTableView + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_GROUPED_TABLE_VIEW_H_ diff --git a/inc/FUiCtrlHeader.h b/inc/FUiCtrlHeader.h new file mode 100644 index 0000000..cf8c5fd --- /dev/null +++ b/inc/FUiCtrlHeader.h @@ -0,0 +1,1041 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlHeader.h + * @brief This is the header file for the %Header class. + * + * This header file contains the declarations of the %Header class. + */ +#ifndef _FUI_CTRL_HEADER_H_ +#define _FUI_CTRL_HEADER_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +class _HeaderImpl; + +/** + * @enum HeaderStyle + * + * Defines the possible styles of a %Header control. + * + * @since 2.0 + */ +enum HeaderStyle +{ + HEADER_STYLE_TITLE, /**< The title style */ + HEADER_STYLE_TITLE_BUTTON, /**< The title button style */ + HEADER_STYLE_SEGMENTED, /**< The segmented style */ + HEADER_STYLE_SEGMENTED_WITH_TITLE, /**< The segmented style with title */ + HEADER_STYLE_TAB, /**< The tab style */ + HEADER_STYLE_TAB_WITH_TITLE, /**< The tab with title style */ + HEADER_STYLE_BUTTON /**< The button style */ +}; + +/** + * @enum HeaderAnimationPosition + * + * Defines the possible positions of the waiting animation of a header. + * + * @since 2.0 + */ +enum HeaderAnimationPosition +{ + HEADER_ANIMATION_POSITION_TITLE, /**< The title animation */ + HEADER_ANIMATION_POSITION_BUTTON_LEFT, /**< The left button animation */ + HEADER_ANIMATION_POSITION_BUTTON_RIGHT /**< The right button animation */ +}; + +/** + * @class Header + * @brief This class is an implementation of a %Header control. + * + * @since 2.0 + * + * The %Header class displays a multi-purpose area at the top of the screen that usually acts as a placeholder for descriptive + * contents, such as a title of the current screen. It can also contain buttons for performing various user-defined tasks. + * + * For more information on the class features, see Header. + * + * The following examples demonstrate how to use the %Header class. + * + * - Constructing a header: @n + * When creating a Form, specify the FORM_STYLE_HEADER parameter in the Form::Construct() method. + * + * @code + * // Initializes + * bool + * TestForm::Initialize(void) + * { + * Construct(FORM_STYLE_NORMAL | FORM_STYLE_INDICATOR | FORM_STYLE_HEADER ); + * } + * @endcode + * + * - Using the header: @n + * Gets the header with the GetHeader() method, and sets the header style. + * + * @code + * bool + * TestForm::Initialize(void) + * { + * Header* pHeader = GetHeader(); + * pHeader->SetStyle(HEADER_STYLE_SEGMENTED); + * } + * @endcode + * + * - Adding items to the header: @n + * Adds HeaderItems or ButtonItems according to the header style. The action ID registered in the Construct() method is notified + * when items are touched. + * + * @code + * bool + * TestForm::Initialize(void) + * { + * HeaderItem headerItem; + * headerItem.Construct(ID_HEADER_ITEM); + * headerItem.SetText("HeaderItem"); + * + * pHeader->AddItem(headerItem); + * + * ButtonItem buttonItem; + * buttonItem.Construct(BUTTON_ITEM_STYLE_ICON, ID_HEADER_BUTTON); + * buttonItem.SetIcon(BUTTON_ITEM_STATUS_NORMAL, __pBitmap); + * + * pHeader->SetButton(BUTTON_POSITION_LEFT, buttonItem); + * + * } + * @endcode + * + * - Setting the header title and description: + * + * @code + * bool + * TestForm::Initialize(void) + * { + * pHeader->SetTitleText(L"Header Title"); + * pHeader->SetDescriptionText(L"Description Text"); + * } + * @endcode + */ +class _OSP_EXPORT_ Header + : public Tizen::Ui::Control +{ + +public: + /** + * Adds the specified header item. + * + * @since 2.0 + * + * @return An error code + * @param[in] item The HeaderItem object to be added + * @exception E_SUCCESS The method is successful. + * @exception E_MAX_EXCEEDED The number of items has exceeded the maximum limit. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The specified item is not constructed. + * @exception E_SYSTEM A system error has occurred. + * @remarks The %Header control does not throw any exception even though the same action ID is assigned to multiple items. @n + * However, the content of the specified item is copied to the %Header control. + */ + result AddItem(const HeaderItem& item); + + + /** + * Inserts the header item at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemIndex The index where the item should be inserted + * @param[in] item The HeaderItem object to be inserted + * @exception E_SUCCESS The method is successful. + * @exception E_MAX_EXCEEDED The number of items has exceeded the maximum limit. + * @exception E_OUT_OF_RANGE The specified index is outside the bounds of the data structure, or the index is greater than or equal to the number of elements or less than @c 0. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The specified @c item is not constructed. + * @exception E_SYSTEM A system error has occurred. + * @remarks The %Header control does not throw any exception even though the same action ID is assigned to multiple items. @n + * However, the content of the specified item is copied to the %Header control. + */ + result InsertItemAt(int itemIndex, const HeaderItem& item); + + + /** + * Checks whether a button item is set at the specified position. + * + * @since 2.0 + * + * @return @c true if the button item is set at the specified position, @n + * else @c false + * @param[in] position The position of the button item + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + bool IsButtonSet(ButtonPosition position) const; + + + /** + * Gets the state of the specified button item. + * + * @since 2.0 + * + * @return The state of the button item at the specified position, @n + * else @c BUTTON_ITEM_STATUS_NORMAL if an error occurs + * @param[in] position The position of the button item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * There is no button set at the specified position. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + ButtonItemStatus GetButtonStatus(ButtonPosition position) const; + + + /** + * Gets the color of the button item for the specified state. + * + * @since 2.0 + * + * @return The color of the button item, @n + * else RGBA (0,0,0,0) if an error occurs + * @param[in] status The status of the button item + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetButtonColor() + */ + Tizen::Graphics::Color GetButtonColor(ButtonItemStatus status) const; + + + /** + * Gets the text color of the button item for the specified state. + * + * @since 2.0 + * + * @return The text color of the button item, @n + * else RGBA (0,0,0,0) if an error occurs + * @param[in] status The status of the button item + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetButtonTextColor(ButtonItemStatus status) const; + + + /** + * Gets the description text of the %Header control that has the title style. + * + * @since 2.0 + * + * @return The description text, @n + * else an empty string if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Base::String GetDescriptionText(void) const; + + + /** + * Gets the description text color of the %Header control that has the title style. + * + * @since 2.0 + * + * @return The description text color, @n + * else RGBA (0,0,0,0) if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetDescriptionTextColor(void) const; + + + /** + * Gets the color of the header item for the specified item state. + * + * @since 2.0 + * + * @return The color of the item, @n + * else RGBA (0,0,0,0) if an error occurs + * @param[in] status The item status + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetItemColor() + */ + Tizen::Graphics::Color GetItemColor(HeaderItemStatus status) const; + + + /** + * Gets the total number of header items. + * + * @since 2.0 + * + * @return The total number of header items, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + int GetItemCount(void) const; + + + /** + * Gets the state of the specified header item. + * + * @since 2.0 + * + * @return The item status + * @param[in] itemIndex The index of the item + * @param[out] status The item status + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified index is outside the bounds of the data structure. @n + * The index is greater than or equal to the number of elements or less than @c 0. + */ + result GetItemStatus(int itemIndex, HeaderItemStatus& status) const; + + + /** + * Gets the text color of the header item for the specified item state. + * + * @since 2.0 + * + * @return The item's text color, @n + * else RGBA (0,0,0,0) if an error occurs + * @param[in] status The item status + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetItemTextColor(HeaderItemStatus status) const; + + + /** + * Gets the style of the %Header control. + * + * @since 2.0 + * + * @return The %Header control style, @n + * else @c HEADER_STYLE_TITLE if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + HeaderStyle GetStyle(void) const; + + + /** + * Gets the index of the currently selected item. + * + * @since 2.0 + * + * @return The selected item index, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported when the style of the %Header control is not @c HEADER_STYLE_SEGMENTED. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + int GetSelectedItemIndex(void) const; + + + /** + * Gets the title text of the %Header control that has the title style. + * + * @since 2.0 + * + * @return The title text, @n + * else an empty string if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Base::String GetTitleText(void) const; + + + /** + * Gets the title text color of the %Header control that has the title style. + * + * @since 2.0 + * + * @return The title text color, @n + * else RGBA (0,0,0,0) if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetTitleTextColor(void) const; + + + /** + * Gets the color of the %Header control. + * + * @since 2.0 + * + * @return The header color, @n + * else RGBA (0,0,0,0) if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetColor(void) const; + + + /** + * Gets the status of the waiting animation at the specified position. + * + * @since 2.0 + * + * @return The animation status + * @param[in] animationPos The waiting animation position + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. @n + * This method returns @c ANIMATION_STOPPED, if no animation is in progress at the specified position. + * @see PauseWaitingAnimation() + * @see PlayWaitingAnimation() + * @see StopWaitingAnimation() + */ + AnimationStatus GetWaitingAnimationStatus(HeaderAnimationPosition animationPos) const; + + + /** + * Pauses the waiting animation at the specified position. + * + * @since 2.0 + * + * @return An error code + * @param[in] animationPos The waiting animation position + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * No waiting animation is in progress at the specified position. + * @exception E_SYSTEM A system error has occurred. + * @see PlayWaitingAnimation() + * @see StopWaitingAnimation() + */ + result PauseWaitingAnimation(HeaderAnimationPosition animationPos); + + + /** + * Starts the waiting animation at the specified position. + * + * @since 2.0 + * + * @return An error code + * @param[in] animationPos The waiting animation position + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * There is no button set at the specified position (except for @c HEADER_ANIMATION_POSITION_TITLE). + * @exception E_SYSTEM A system error has occurred. + * @see SetButton() + * @see IsButtonSet() + * @see GetWaitingAnimationStatus() + * @see PauseWaitingAnimation() + * @see StopWaitingAnimation() + */ + result PlayWaitingAnimation(HeaderAnimationPosition animationPos); + + + /** + * Removes all the button items. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveAllButtons(void); + + + /** + * Removes all the %Header control items. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The left button, right button, and back button items are not removed. + */ + result RemoveAllItems(void); + + + /** + * Removes the item at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemIndex The index of the item to be removed + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified index is outside the bounds of the data structure. @n + * The index is greater than or equal to the number of elements or less than @c 0. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveItemAt(int itemIndex); + + + /** + * Removes the button item at the specified position. + * + * @since 2.0 + * + * @return An error code + * @param[in] position The position of the button item to remove + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks If no button item is set at the specified position, the method returns @c E_SUCCESS. + */ + result RemoveButtonAt(ButtonPosition position); + + + /** + * Sets the background bitmap image. + * + * @since 2.0 + * + * @return An error code + * @param[in] pBitmap The background image + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetBackgroundBitmap(const Tizen::Graphics::Bitmap* pBitmap); + + + /** + * Sets the button item at the specified position. + * + * @since 2.0 + * + * @return An error code + * @param[in] position The position at which to set the specified button item + * @param[in] button The button item to be set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The specified item is not constructed. + * @exception E_SYSTEM A system error has occurred. + * @remarks If there is an existing button item at the specified position, it is replaced with a new item. @n + * The contents of the specified item are copied. + */ + result SetButton(ButtonPosition position, const ButtonItem& button); + + + /** + * Sets the button item color for the specified state. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The status of the button item + * @param[in] color The button item color to be set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetButtonColor() + */ + result SetButtonColor(ButtonItemStatus status, const Tizen::Graphics::Color& color); + + + /** + * Enables or disables the button item at the specified position. + * + * @since 2.0 + * + * @return An error code + * @param[in] position The button item position + * @param[in] enable Set to @c true to enable the specified button item, @n + * else @c false to disable + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * There is no button set at the specified position. + * @exception E_SYSTEM A system error has occurred. + */ + result SetButtonEnabled(ButtonPosition position, bool enable); + + + /** + * Sets the text color of the button item for the specified state. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The status of the button item + * @param[in] color The button item text color to be set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetButtonTextColor(ButtonItemStatus status, const Tizen::Graphics::Color& color); + + + /** + * Sets the badge icon of the specified ButtonItem. + * + * @since 2.0 + * + * @return An error code + * @param[in] position The button item position + * @param[in] pBadgeIcon The bitmap for the icon + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. @n + * The operation is not supported when the style of the %Header control is @c HEADER_STYLE_TAB or @c HEADER_STYLE_TAB_WITH_TITLE. + */ + result SetButtonBadgeIcon(ButtonPosition position, const Tizen::Graphics::Bitmap* pBadgeIcon); + + + /** + * Sets the numbered badge icon of the specified ButtonItem. + * + * @since 2.0 + * + * @return An error code + * @param[in] position The button item position + * @param[in] number The number value that should be displayed as the badge icon + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c number must be in the range defined by @c 0 and @c 99999. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. @n + * The operation is not supported when the style of the %Header control is @c HEADER_STYLE_TAB or @c HEADER_STYLE_TAB_WITH_TITLE. + * @remarks To remove the numbered badge icon from an item, pass @c 0 as the value of @c number. + */ + result SetButtonNumberedBadgeIcon(ButtonPosition position, int number); + + + /** + * Sets the contents of the %Header control item at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemIndex The index at which to set the specified item + * @param[in] item The item to be set + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified index is outside the bounds of the data structure. @n + * The index is greater than or equal to the number of elements or less than @c 0. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks The contents of the specified item are copied. + */ + result SetItemAt(int itemIndex, const HeaderItem& item); + + + /** + * Sets the badge icon of the specified segmented style header item. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemIndex The item index + * @param[in] pBadgeIcon The bitmap for the icon + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified index is outside the bounds of the data structure. @n + * The index is greater than or equal to the number of elements or less than @c 0. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. @n + * The operation is not supported when the style of the %Header control is not @c HEADER_STYLE_SEGMENTED. + * @exception E_SYSTEM A system error has occurred. + */ + result SetItemBadgeIcon(int itemIndex, const Tizen::Graphics::Bitmap* pBadgeIcon); + + + /** + * Sets the numbered badge icon of the specified segmented style header item. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemIndex The item index + * @param[in] number The number value that should be displayed as the badge icon + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c number must be in the range defined by @c 0 and @c 99999. + * @exception E_OUT_OF_RANGE The specified index is outside the bounds of the data structure. @n + * The index is greater than or equal to the number of elements or less than @c 0. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. @n + * The operation is not supported when the style of the %Header control is not @c HEADER_STYLE_SEGMENTED. + * @exception E_SYSTEM A system error has occurred. + * @remarks To remove the numbered badge icon from an item, pass @c 0 as the value of @c number. + */ + result SetItemNumberedBadgeIcon(int itemIndex, int number); + + + /** + * Sets the item color for the specified state. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The item status + * @param[in] color The item color to be set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetItemColor() + */ + result SetItemColor(HeaderItemStatus status, const Tizen::Graphics::Color& color); + + + /** + * Sets the item state at the specified index in the %Header control. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemIndex The index of the item to be set + * @param[in] enable Set to @c true to enable the item state, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified index is outside the bounds of the data structure. @n + * The index is greater than or equal to the number of elements or less than @c 0. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The specified item is currently selected. + * @exception E_SYSTEM A system error has occurred. + */ + result SetItemEnabled(int itemIndex, bool enable); + + + /** + * Sets the item text color for the specified state. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The item status + * @param[in] color The item text color to be set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetItemTextColor(HeaderItemStatus status, const Tizen::Graphics::Color& color); + + + /** + * Sets the selected item at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemIndex The index of the item to be selected + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified index is outside the bounds of the data structure. @n + * The index is greater than or equal to the number of elements or less than @c 0. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The item at the specified index is disabled. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. @n + * The operation is not supported when the %Header control style is @c HEADER_STYLE_TITLE. + * @exception E_SYSTEM A system error has occurred. + */ + result SetItemSelected(int itemIndex); + + + /** + * Sets the color of the %Header control. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The header color + * @exception E_SUCCESS The method is successful. + */ + result SetColor(const Tizen::Graphics::Color& color); + + + /** + * Sets the style of the %Header control. + * + * @since 2.0 + * + * @return An error code + * @param[in] style The header style to be set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks All items and buttons will be removed if the style is changed. + */ + result SetStyle(HeaderStyle style); + + + /** + * Sets the title icon of the %Header control that has the title style. + * + * @since 2.0 + * + * @return An error code + * @param[in] pIcon The title icon to be set @n + * Set to @c null to remove the title icon. + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance does not support the execution of the specified operation @n + * The style of the %Header control is not @c HEADER_STYLE_TITLE. + * @exception E_SYSTEM A system error has occurred. + */ + result SetTitleIcon(const Tizen::Graphics::Bitmap* pIcon); + + + /** + * Sets the title text of the %Header control. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text to be set + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance does not support the execution of the specified operation. @n + * The style of the %Header control is not @c HEADER_STYLE_TITLE. + * @exception E_SYSTEM A system error has occurred. + * @remarks If the text cannot be displayed in a line, then the ellipsis is applied at the end. @n + * When the title icon is set along with the title text, the title retains the left alignment. + */ + result SetTitleText(const Tizen::Base::String& text); + + + /** + * Sets the title text color. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The title text color to be set + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance does not support the execution of the specified operation. @n + * The style of the %Header control is not @c HEADER_STYLE_TITLE. + * @exception E_SYSTEM A system error has occurred. + */ + result SetTitleTextColor(const Tizen::Graphics::Color& color); + + + /** + * Sets the description text. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text to be set + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance does not support the execution of the specified operation. @n + * The style of the %Header control is not @c HEADER_STYLE_TITLE. + * @exception E_SYSTEM A system error has occurred. + * @remarks If the text cannot be displayed in a line, then the ellipsis is applied at the end. @n + * When the title icon is set along with the title text, the title retains the left alignment. + */ + result SetDescriptionText(const Tizen::Base::String& text); + + + /** + * Sets the description text color. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The description text color to be set + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance does not support the execution of the specified operation. @n + * The style of the %Header control is not @c HEADER_STYLE_TITLE. + * @exception E_SYSTEM A system error has occurred. + */ + result SetDescriptionTextColor(const Tizen::Graphics::Color& color); + + + /** + * Stops the waiting animation in progress at the specified position. + * + * @since 2.0 + * + * @return An error code + * @param[in] animationPos The waiting animation position + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method returns @c E_INVALID_OPERATION if no waiting animation is in progress at the specified position. + * @see GetWaitingAnimationStatus() + * @see PauseWaitingAnimation() + * @see PlayWaitingAnimation() + */ + result StopWaitingAnimation(HeaderAnimationPosition animationPos); + + + /** + * Adds an IActionEventListener instance. @n + * OnActionPerformed() of the added listener is called when the user selects an item. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + */ + void AddActionEventListener(Tizen::Ui::IActionEventListener& listener); + + + /** + * Removes an IActionEventListener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + */ + void RemoveActionEventListener(Tizen::Ui::IActionEventListener& listener); + + + /** + * Checks whether the tab edit mode is enabled. + * + * @since 2.0 + * + * @return @c true if the tab edit mode is set, @n + * else @c false + */ + bool IsTabEditModeEnabled(void) const; + + + /** + * Enables or disables the tab edit mode. + * + * @since 2.0 + * + * @return An error code + * @param[in] enable Set to @c true to enable the edit mode, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. @n + * The operation is not supported when the style of the %Header control style is not @c Header_STYLE_TAB. + */ + result SetTabEditModeEnabled(bool enable); + + + /** + * Sets the back button. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * There are more than 2 header items. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. @n + * The operation is not supported when the style of the %Header control is @c HEADER_STYLE_BUTTON. @n + * This device does not support the software back button. + * @remarks When the back button is pressed, OnFormBackRequested() of IFormBackEventListener is called. @n + * If the right button is already set, then the button is replaced with the back button. + */ + result SetBackButton(void); + + + /** + * Checks whether the back button item is set. + * + * @since 2.0 + * + * @return @c true if the back button item is set, @n + * else @c false + */ + bool IsBackButtonSet(void) const; + + + /** + * Removes the back button item. + * + * @since 2.0 + * + */ + void RemoveBackButton(void); + + + /** + * Enables or disables the back button. + * + * @since 2.0 + * + * @return An error code + * @param[in] enable Set to @c true to enable the back button, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The back button item is not set. + */ + result SetBackButtonEnabled(bool enable); + + + /** + * Gets the state of the back button. + * + * @since 2.0 + * + * @return The state of the back button, @n + * else @c BUTTON_ITEM_STATUS_NORMAL if an error occurs. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The back button is not set. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + ButtonItemStatus GetBackButtonStatus(void) const; + + + /** + * Gets the position and size of the specified button item. + * + * @since 2.0 + * + * @return The position and size of the button item at the specified position. + * @param[in] position The position of the button item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * There is no button set at the specified position. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Rectangle GetButtonBounds(ButtonPosition position) const; + + +protected: + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + // This is the default constructor for this class. + // + // @since 2.0 + // + Header(void); + + + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + // This is the destructor for this class. + // + // @since 2.0 + // + virtual ~Header(void); + + +private: + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + // Initializes this instance of %Header with the specified parameter. + // + // @since 2.0 + // @return An error code + // @exception E_SUCCESS The method is successful. + // @exception E_SYSTEM A system error has occurred. + // + result Construct(void); + + Header(const Header& rhs); + Header& operator =(const Header& rhs); + +private: + friend class _FormImpl; + friend class _HeaderImpl; + +}; + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_HEADER_H_ diff --git a/inc/FUiCtrlHeaderItem.h b/inc/FUiCtrlHeaderItem.h new file mode 100644 index 0000000..5d2b625 --- /dev/null +++ b/inc/FUiCtrlHeaderItem.h @@ -0,0 +1,199 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlHeaderItem.h + * @brief This is the header file for the %HeaderItem class. + * + * This header file contains the declarations of the %HeaderItem class. + */ +#ifndef _FUI_CTRL_HEADER_ITEM_H_ +#define _FUI_CTRL_HEADER_ITEM_H_ + +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +/** + * @enum HeaderItemStatus + * + * Defines the possible statuses of a %HeaderItem control. + * + * @since 2.0 + */ +enum HeaderItemStatus +{ + HEADER_ITEM_STATUS_NORMAL, /**< The normal status */ + HEADER_ITEM_STATUS_PRESSED, /**< The pressed status */ + HEADER_ITEM_STATUS_SELECTED, /**< The selected status */ + HEADER_ITEM_STATUS_HIGHLIGHTED, /**< The highlighted status */ + HEADER_ITEM_STATUS_DISABLED /**< The disabled status */ +}; + +/** + * @class HeaderItem + * @brief This class is an implementation of a %HeaderItem control. + * + * @since 2.0 + * + * The %HeaderItem class is a helper class that specifies the properties of the Header item. + * + * For more information on the class features, see Header. + */ +class _OSP_EXPORT_ HeaderItem + : public Tizen::Base::Object +{ +public: + + /** + * This is the default constructor for this class. + * + * @since 2.0 + */ + HeaderItem(void); + + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~HeaderItem(void); + + + /** + * Initializes this instance of %HeaderItem with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] actionId The action ID of this item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The action ID of the specified item must be a positive integer. + */ + result Construct(int actionId); + + + /** + * Gets the action ID of the %HeaderItem control. + * + * @since 2.0 + * + * @return The action ID, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + int GetActionId(void) const; + + + /** + * Gets the text of the %HeaderItem control. + * + * @since 2.0 + * + * @return The item text, @n + * else an empty string if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Base::String GetText(void) const; + + + /** + * Sets the action ID of the %HeaderItem control. + * + * @since 2.0 + * + * @return An error code + * @param[in] actionId The specified action ID for this item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The action ID of the specified item must be a positive integer. + */ + result SetActionId(int actionId); + + + /** + * Sets the background bitmap of the %HeaderItem control. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The item status + * @param[in] pBitmap The background bitmap to set, @n + * else @c null if no bitmap is to be displayed + * @exception E_SUCCESS The method is successful. + * @remarks If the size of the bitmap is greater than the size of the item, the bitmap is scaled down. + */ + result SetBackgroundBitmap(HeaderItemStatus status, const Tizen::Graphics::Bitmap* pBitmap); + + + /** + * Sets the icon of the header item. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The status of the header item + * @param[in] pIcon The icon to be set, @n + * else @c null if no icon is to be set + * @exception E_SUCCESS The method is successful. + * @remarks If the size of the bitmap is greater than the default size, the bitmap is scaled down. @n + * The bitmap specified for the @c HEADER_ITEM_STATUS_NORMAL will be applied for all other statuses unless different bitmaps are explicitly + * set for those by using this method. @n + * Note that the specified bitmaps are ignored if the style of the Header control is not @c HEADER_STYLE_TITLE_BUTTON. @n + * Furthermore, the title button does not support @c HEADER_ITEM_STATUS_SELECTED status and the bitmap for the status is also ignored. + */ + result SetIcon(HeaderItemStatus status, const Tizen::Graphics::Bitmap* pIcon); + + + /** + * Sets the text of the %HeaderItem control. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text to be set + * @exception E_SUCCESS The method is successful. + * @remarks If the text cannot be displayed in a line, then the text is automatically displayed in two lines and the ellipsis is applied if the text + * is longer than two lines. @n + * Use @htmlonly '\n' @endhtmlonly to denote the end of the line. + */ + result SetText(const Tizen::Base::String& text); + + +private: + HeaderItem(const HeaderItem& headerItem); + HeaderItem& operator =(const HeaderItem& headerItem); + + +private: + friend class _HeaderImpl; + friend class _HeaderItemImpl; + + class _HeaderItemImpl * __pImpl; + +}; + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_HEADER_ITEM_H_ diff --git a/inc/FUiCtrlICustomElement.h b/inc/FUiCtrlICustomElement.h new file mode 100644 index 0000000..acab342 --- /dev/null +++ b/inc/FUiCtrlICustomElement.h @@ -0,0 +1,88 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + + +/** + * @file FUiCtrlICustomElement.h + * @brief This is the header file for the %ICustomElement class. + * + * This header file contains the declarations of %ICustomElement and its helper classes. + */ + +#ifndef _FUI_CTRL_ICUSTOM_ELEMENT_H_ +#define _FUI_CTRL_ICUSTOM_ELEMENT_H_ + +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @interface ICustomElement + * @brief This interface represents the common behaviors of a custom element. + * + * @since 2.0 + * + * The %ICustomElement interface is the listener interface for custom drawing in a list item. + * The class that processes a custom drawing event implements this interface. The list items are added by calling the + * AddElement(int elementId, const %ICustomElement &element) method. When the custom drawing event occurs and the list item must be + * redrawn, the OnDraw() method is invoked. + * + * For more information on the class features, see ListViews. + * + */ +class _OSP_EXPORT_ ICustomElement +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~ICustomElement(void) {} + +// Operation +public: + /** + * Called when a custom element of the item is drawn. + * + * @since 2.0 + * + * @return @c true if the drawing is successful, @n + * else @c false + * @param[in] canvas The graphic canvas of the list control + * @param[in] rect The position and size of the element + * @param[in] status The status of the element + * @remarks This method must return @c true if the drawing is successful, else @c false. + */ + virtual bool OnDraw(Tizen::Graphics::Canvas& canvas, const Tizen::Graphics::Rectangle& rect, Tizen::Ui::Controls::ListItemDrawingStatus status) = 0; + +protected: + // + // The following methods are reserved and may change its name at any time without prior notice. + // + virtual void ICustomElement_Reserved1(void) {} + virtual void ICustomElement_Reserved2(void) {} + virtual void ICustomElement_Reserved3(void) {} +}; // ICustomElement + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_ICUSTOM_ELEMENT_H_ + diff --git a/inc/FUiCtrlICustomListElement.h b/inc/FUiCtrlICustomListElement.h new file mode 100644 index 0000000..71e2fe5 --- /dev/null +++ b/inc/FUiCtrlICustomListElement.h @@ -0,0 +1,106 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlICustomListElement.h + * @brief This is the header file for the %ICustomListElement interface. + * + * This header files contains the declarations of %ICustomListElement interface. + * + */ + +#ifndef _FUI_CTRL_ICUSTOM_LIST_ELEMENT_H_ +#define _FUI_CTRL_ICUSTOM_LIST_ELEMENT_H_ + +//includes +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @if OSPDEPREC + * @enum CustomListItemStatus + * + * Defines the value of status of the CustomList item. + * + * @brief [Deprecated] + * @deprecated This enumeration is deprecated. Instead of using this enumeration, use the ListItemStatus enumeration. + * @since 2.0 + * @endif + */ +enum CustomListItemStatus +{ + CUSTOM_LIST_ITEM_STATUS_NORMAL = 0, /**< @if OSPDEPREC The status of the item is normal @endif */ + CUSTOM_LIST_ITEM_STATUS_SELECTED, /**< @if OSPDEPREC The status of the item is selected @endif */ + CUSTOM_LIST_ITEM_STATUS_FOCUSED /**< @if OSPDEPREC The status of the item is focused @endif */ +}; + +/** + * @if OSPDEPREC + * @interface ICustomListElement + * @brief [Deprecated] This interface represents the common behaviors for a CustomList element. + * + * @deprecated This class is deprecated. Instead of using this class, use the ICustomElement class. + * @since 2.0 + * + * + * The %ICustomListElement interface provides interfaces used for custom drawing + * in a custom list item. + * + * If an application wants to draw its own contents in a custom list item, it must + * implement %ICustomListElement and add elements by calling SetElement(int elementId, + * const %ICustomListElement &element). When the custom list item needs to be redrawn, + * DrawElement() is called by the framework. + * @endif + */ +class _OSP_EXPORT_ ICustomListElement + : public Tizen::Base::Object +{ +public: + /** + * @if OSPDEPREC + * This is the destructor for this class. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ICustomElement class. + * @since 2.0 + * @endif + */ + virtual ~ICustomListElement(void) {} + +// Operation +public: + /** + * @if OSPDEPREC + * Draws a custom element of the item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ICustomElement class. + * @since 2.0 + * + * @return An error code + * @param[in] canvas The graphic canvas of the list control + * @param[in] rect The location and size of the CustomList element + * @param[in] itemStatus The status of the item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + virtual result DrawElement(const Tizen::Graphics::Canvas& canvas, const Tizen::Graphics::Rectangle& rect, CustomListItemStatus itemStatus) = 0; +}; //ICustomListElement +}}} //Tizen::Ui::Controls +#endif // _FUI_CTRL_ICUSTOM_LIST_ELEMENT_H_ diff --git a/inc/FUiCtrlIExpandableEditAreaEventListener.h b/inc/FUiCtrlIExpandableEditAreaEventListener.h new file mode 100644 index 0000000..4825280 --- /dev/null +++ b/inc/FUiCtrlIExpandableEditAreaEventListener.h @@ -0,0 +1,121 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlIExpandableEditAreaEventListener.h + * @brief This is the header file for the %IExpandableEditAreaEventListener interface. + * + * This header file contains the declarations of the %IExpandableEditAreaEventListener interface. + */ +#ifndef _FUI_CTRL_IEXPANDABLE_EDIT_AREA_EVENT_LISTENER_H_ +#define _FUI_CTRL_IEXPANDABLE_EDIT_AREA_EVENT_LISTENER_H_ + +// includes +#include +#include + +namespace Tizen { namespace Ui +{ +class Control; +} } // Tizen::Ui + +// namespace declaration +namespace Tizen { namespace Ui { namespace Controls +{ + /** + * @interface IExpandableEditAreaEventListener + * @brief This interface defines a listener for the %ExpandableEditArea events. + * + * @since 2.0 + * + * The %IExpandableEditAreaEventListener interface is the listener interface for receiving %ExpandableEditArea events. @n + * + * For more information on the class features, see ExpandableEditArea. + * + */ +class _OSP_EXPORT_ IExpandableEditAreaEventListener + : public Tizen::Base::Runtime::IEventListener +{ + +// Lifecycle +public: + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~IExpandableEditAreaEventListener(void) {} + + +// Operations +public: + /** + * Called when a new line is added to ExpandableEditArea. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] newLineCount The new line count + */ + virtual void OnExpandableEditAreaLineAdded(Tizen::Ui::Controls::ExpandableEditArea& source, int newLineCount) = 0; + + /** + * Called when a line is removed from ExpandableEditArea. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] newLineCount The new line count + */ + virtual void OnExpandableEditAreaLineRemoved(Tizen::Ui::Controls::ExpandableEditArea& source, int newLineCount) = 0; + + +// Reserves +protected: + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IExpandableEditAreaEventListener_Reserved1(void) { } + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IExpandableEditAreaEventListener_Reserved2(void) { } + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IExpandableEditAreaEventListener_Reserved3(void) { } +}; // IExpandableEditAreaEventListener + +}}} // Tizen::Ui::Controls + +#endif //_FUI_CTRL_IEXPANDABLE_EDIT_AREA_EVENT_LISTENER_H_ diff --git a/inc/FUiCtrlIFastScrollListener.h b/inc/FUiCtrlIFastScrollListener.h new file mode 100644 index 0000000..0890518 --- /dev/null +++ b/inc/FUiCtrlIFastScrollListener.h @@ -0,0 +1,131 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlIFastScrollListener.h + * @brief This is the header file for the %IFastScrollListener interface. + * + * This header file contains the declarations of the %IFastScrollListener interface. @n + * If item event is generated, a method of this class will be called. @n + * Applications that perform tasks related to the item event call methods of this class. + * + */ +#ifndef _FUI_CTRL_IFAST_SCROLL_LISTENER_H_ +#define _FUI_CTRL_IFAST_SCROLL_LISTENER_H_ + +#include +#include + +namespace Tizen { namespace Ui +{ +class Control; +} } + +namespace Tizen { namespace Ui { namespace Controls +{ + +// constants +/** + * @if OSPDEPREC + * The string constant representing the index of the magnifying icon in a fast scroll. + * + * @brief [Deprecated] + * @deprecated This object is provided only for backward compatibility and will be deleted in a future release. + * Instead of using this object, it is recommended to use FAST_SCROLL_SEARCH_ICON_INDEX_STRING. + * @since 2.0 + * @endif + */ +_OSP_EXPORT_ extern const Tizen::Base::String FAST_SCROLL_SEARCH_ICON_INDEX; + +// constants +/** + * The string constant representing the index of the magnifying icon in a fast scroll. + * + * @since 2.0 + */ +_OSP_EXPORT_ extern const wchar_t* const FAST_SCROLL_SEARCH_ICON_INDEX_STRING; + +/** + * @interface IFastScrollListener + * @brief This interface implements the listener for the fast scroll event. + * + * @since 2.0 + * + * The %IFastScrollListener interface is the listener interface for receiving fast scroll events. + * The class that processes a fast scroll event implements this interface, and the instance created with that class is registered + * with a UI control, using the control's AddFastScrollListener() method. When the fast scroll event occurs, the + * OnFastScrollIndexChanged() method of that instance is invoked. + * + * For more information on the class features, see ListViews. + * + */ +class _OSP_EXPORT_ IFastScrollListener + : public Tizen::Base::Runtime::IEventListener +{ +// Operation +public: + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~IFastScrollListener(void) {} + + /** + * Called when an index is selected. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] index The index + * @remarks When the search icon index is enabled, you can check whether the search icon index is touched by comparing @c index with the string + * constant FAST_SCROLL_SEARCH_ICON_INDEX. + * + */ + virtual void OnFastScrollIndexSelected(Tizen::Ui::Control& source, Tizen::Base::String& index) = 0; + +protected: + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void IFastScrollListener_Reserved1(void) {} + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + // + virtual void IFastScrollListener_Reserved2(void) {} + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void IFastScrollListener_Reserved3(void) {} +}; // IFastScrollListener + +}; +}; +}; + +#endif diff --git a/inc/FUiCtrlIFormBackEventListener.h b/inc/FUiCtrlIFormBackEventListener.h new file mode 100644 index 0000000..1946b74 --- /dev/null +++ b/inc/FUiCtrlIFormBackEventListener.h @@ -0,0 +1,108 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlIFormBackEventListener.h + * @brief This is the header file for the %IFormBackEventListener interface. + * + * This header file contains the declarations of the %IFormBackEventListener interface. + */ +#ifndef _FUI_CTRL_IFORM_BACK_EVENT_LISTENER_H_ +#define _FUI_CTRL_IFORM_BACK_EVENT_LISTENER_H_ + +// includes +#include + +// namespace declaration +namespace Tizen { namespace Ui { namespace Controls +{ + +class Form; + +/** + * @interface IFormBackEventListener + * @brief This interface implements the listener for Form related events. + * + * @since 2.0 + * + * The %IFormBackEventListener interface is the listener interface for receiving Form-related back button events. + * + * For more information on the class features, see Form. + */ +class IFormBackEventListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +// Lifecycle +public: + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~IFormBackEventListener(void) {} + +// Operation +public: + /** + * Called when the current %Form control needs to be closed to revert back to the previous %Form control. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @remarks This event is fired when the user clicks on the software 'back' button on the Footer control, or the hardware back button on the + * device. + */ + virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source) = 0; + +// Reserves +protected: + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IFormBackEventListener_Reserved1(void) { } + + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IFormBackEventListener_Reserved2(void) { } + + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IFormBackEventListener_Reserved3(void) { } +}; // IFormBackEventListener + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_IFORM_BACK_EVENT_LISTENER_H_ diff --git a/inc/FUiCtrlIFrameEventListener.h b/inc/FUiCtrlIFrameEventListener.h new file mode 100644 index 0000000..7ab468a --- /dev/null +++ b/inc/FUiCtrlIFrameEventListener.h @@ -0,0 +1,153 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlIFrameEventListener.h + * @brief This is the header file for the %IFrameEventListener interface. + * + * This header file contains the declarations of the %IFrameEventListener interface. @n + * If a frame lifecycle event is generated, a method of this class is called. @n + * So, if an application needs to perform tasks related to the frame event, provide the implementation of the methods declared in this interface. + */ + +#ifndef _FUI_CTRL_IFRAME_EVENT_LISTENER_H_ +#define _FUI_CTRL_IFRAME_EVENT_LISTENER_H_ + +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +class Frame; + +/** + * @interface IFrameEventListener + * @brief This interface implements the listener for the frame lifecycle event. + * + * @since 2.0 + * + * The %IFrameEventListener interface is the listener interface for receiving %Frame lifecycle events. + * + * For more information on the class features, see Frame. + * + */ +class _OSP_EXPORT_ IFrameEventListener + : public Tizen::Base::Runtime::IEventListener +{ +// Lifecycle +public: + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + virtual ~IFrameEventListener(void) {} + +// Operations +public: + /** + * Called when a Frame instance is about to be destroyed. @n + * This method is called just before the system destroys the %Frame instance of an application during the application termination sequence. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @remarks This method releases any resources that need to be deallocated before the destruction of the Frame instance. + */ + virtual void OnFrameTerminating(const Tizen::Ui::Controls::Frame& source) = 0; + + /** + * Called when a Frame instance is about to be activated. @n + * This method is called just after the system activates the %Frame instance of an application. + * + * @since 2.0 + * + * @param[in] source The source of the event + */ + virtual void OnFrameActivated(const Tizen::Ui::Controls::Frame& source) { } + + /** + * Called when a Frame instance is about to be deactivated. @n + * This method is called just after the system deactivates the %Frame instance of an application. + * + * @since 2.0 + * + * @param[in] source The source of the event + */ + virtual void OnFrameDeactivated(const Tizen::Ui::Controls::Frame& source) { } + + + // Reserves +protected: + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IFrameEventListener_Reserved1(void) { } + + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IFrameEventListener_Reserved2(void) { } + + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IFrameEventListener_Reserved3(void) { } + + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IFrameEventListener_Reserved4(void) { } + + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IFrameEventListener_Reserved5(void) { } + +}; // IFrameEventListener + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_IFRAME_EVENT_LISTENER_H_ diff --git a/inc/FUiCtrlIGalleryEventListener.h b/inc/FUiCtrlIGalleryEventListener.h new file mode 100644 index 0000000..cee45e9 --- /dev/null +++ b/inc/FUiCtrlIGalleryEventListener.h @@ -0,0 +1,123 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlIGalleryEventListener.h + * @brief This is the header file for the %IGalleryEventListener interface. + * + * This header file contains the declarations of the %IGalleryEventListener interface. @n + * If an event is generated, a method of this interface is called. @n + * Therefore, when an application performs jobs related to the event, the methods of this interface are executed. + * + */ +#ifndef _FUI_CTRL_IGALLERY_EVENT_LISTENER_H_ +#define _FUI_CTRL_IGALLERY_EVENT_LISTENER_H_ + +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +class Gallery; +}}} + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @interface IGalleryEventListener + * @brief This interface defines the listener for the events generated by the Gallery control. + * + * @since 2.0 + * + * The %IGalleryEventListener interface is the listener interface for receiving Gallery events. + * The class that processes a gallery event implements this interface, and the instance created using the Gallery's + * AddGalleryEventListener() method. When the gallery event occurs, a method of that instance is invoked. + * + * For more information on the class features, see Gallery. + */ +class _OSP_EXPORT_ IGalleryEventListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~IGalleryEventListener(void) {} + + /** + * Called when the current item changes. + * + * @since 2.0 + * + * @param[in] gallery The source of the event + * @param[in] currentItemIndex The current item index + */ + virtual void OnGalleryCurrentItemChanged(Tizen::Ui::Controls::Gallery& gallery, int currentItemIndex) = 0; + + /** + * Called when the item is clicked. + * + * @since 2.0 + * + * @param[in] gallery The source of the event + * @param[in] itemIndex The index of the item + */ + virtual void OnGalleryItemClicked(Tizen::Ui::Controls::Gallery& gallery, int itemIndex) = 0; + + /** + * Called when the slide-show starts. + * + * @since 2.0 + * + * @param[in] gallery The source of the event + */ + virtual void OnGallerySlideShowStarted(Tizen::Ui::Controls::Gallery& gallery) = 0; + + /** + * Called when the slide-show stops. + * + * @since 2.0 + * + * @param[in] gallery The source of the event + */ + virtual void OnGallerySlideShowStopped(Tizen::Ui::Controls::Gallery& gallery) = 0; + + +protected: + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + virtual void GalleryEventListener_Reserved1(void) {} + + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + virtual void GalleryEventListener_Reserved2(void) {} + + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + virtual void GalleryEventListener_Reserved3(void) {} +}; // IGalleryEventListener + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_IGALLERY_EVENT_LISTENER_H_ diff --git a/inc/FUiCtrlIGalleryItemProvider.h b/inc/FUiCtrlIGalleryItemProvider.h new file mode 100644 index 0000000..e5d86d6 --- /dev/null +++ b/inc/FUiCtrlIGalleryItemProvider.h @@ -0,0 +1,117 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlIGalleryItemProvider.h + * @brief This is the header file for the %IGalleryItemProvider interface. + * + * This header file contains the declarations of the %IGalleryItemProvider interface. @n + * If an event is generated, a method of this interface is called. @n + * Therefore, if applications perform jobs related to the list events, use the methods of this interface. + * + */ +#ifndef _FUI_CTRL_IGALLERY_ITEM_PROVIDER_H_ +#define _FUI_CTRL_IGALLERY_ITEM_PROVIDER_H_ + +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @interface IGalleryItemProvider + * @brief This interface implements the provider for events on Gallery. + * + * @since 2.0 + * + * The %IGalleryItemProvider interface is the interface for handling Gallery items. The class that handles gallery items implements this + * interface, and the instance created using the Gallery's SetItemProvider() method. + * + * For more information on the class features, see Gallery. + */ +class _OSP_EXPORT_ IGalleryItemProvider +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~IGalleryItemProvider(void) {} + + /** + * Gets the total number of items. + * + * @since 2.0 + * + * @return The total number of the Gallery control items + * @remarks An application that uses the Gallery control must implement this method. + */ + virtual int GetItemCount(void) = 0; + + /** + * Gets the item at the specified index from the item provider. + * + * @since 2.0 + * + * @return An item of the Gallery control + * @param[in] index The index of the item + * @see DeleteItem() + * @remarks An application that uses the Gallery control must implement this method. This method is expected to return an item that is allocated on a + * heap memory. The returned item can be of type GalleryItem. Note that when the item is not required, the Gallery control calls the + * IGalleryItemProvider::DeleteItem() method. + */ + virtual Tizen::Ui::Controls::GalleryItem* CreateItem(int index) = 0; + + /** + * Deletes the specified item. + * + * @since 2.0 + * + * @return @c true if the item is deallocated by this method, @n + * else @c false + * @param[in] index The index of the item + * @param[in] pItem The pointer to GalleryItem that is to be deleted + * @see CreateItem() + * @remarks An application that uses the Gallery control must implement this method. Using this method, an application can deallocate the item. If an + * application deallocates the item, this method returns @c true. This notifies the Gallery control to not release the item. + * Otherwise, the item is deallocated by the Gallery control. + */ + virtual bool DeleteItem(int index, Tizen::Ui::Controls::GalleryItem* pItem) = 0; + +protected: + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + virtual void GalleryItemProvider_Reserved1(void) {} + + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + virtual void GalleryItemProvider_Reserved2(void) {} + + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + virtual void GalleryItemProvider_Reserved3(void) {} +}; // IGalleryItemProvider + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_IGALLERY_ITEM_PROVIDER_H_ diff --git a/inc/FUiCtrlIGroupedListViewItemEventListener.h b/inc/FUiCtrlIGroupedListViewItemEventListener.h new file mode 100644 index 0000000..fc71a4f --- /dev/null +++ b/inc/FUiCtrlIGroupedListViewItemEventListener.h @@ -0,0 +1,156 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlIGroupedListViewItemEventListener.h + * @brief This is the header file for the %IGroupedListViewItemEventListener interface. + * + * This header file contains the declarations of the %IGroupedListViewItemEventListener interface. + */ + +#ifndef _FUI_CTRL_IGROUPED_LIST_VIEW_ITEM_EVENT_LISTENER_H_ +#define _FUI_CTRL_IGROUPED_LIST_VIEW_ITEM_EVENT_LISTENER_H_ + +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +class GroupedListView; + +/** + * @interface IGroupedListViewItemEventListener + * @brief This interface implements the listener for the events generated by the items of the GroupedListView control. + * + * @since 2.0 + * + * The %IGroupedListViewItemEventListener interface is the listener interface for receiving GroupedListView item events. + * The class that processes a list item event implements this interface, and the instance created with that class is registered + * with a UI control, using the control's AddGroupedListViewItemEventListener() method. When the list item event occurs, a + * method of that instance is invoked. + * + * For more information on the class features, see ListViews. + */ +class _OSP_EXPORT_ IGroupedListViewItemEventListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. + * This way, the destructors of the derived classes are called + * when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~IGroupedListViewItemEventListener(void) {}; + + /** + * Called when the state of an element of a GroupedListView item is changed. + * + * @since 2.0 + * + * @param[in] listView The source of the event + * @param[in] groupIndex The index of the group item + * @param[in] itemIndex The index of the item in the group + * @param[in] elementId The element ID + * @param[in] status The status of the element + * + * @remarks This method is called when an element of the %CustomItem control in the %GroupedListView control is checked, unchecked, or selected. @n + * If the method is called to notify the state change of an item's annex or the item itself, the specified elementId is set to @c -1. + */ + virtual void OnGroupedListViewItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListItemStatus status) = 0; + + /** + * Called when ListItem is swept. + * + * @since 2.0 + * @param[in] listView The source of the event + * @param[in] groupIndex The index of the group item + * @param[in] itemIndex The index of the item in the group + * @param[in] direction The sweep direction + */ + virtual void OnGroupedListViewItemSwept(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, Tizen::Ui::Controls::SweepDirection direction) = 0; + + /** + * Called when the state of an element in the ListContextItem control is changed. + * + * @since 2.0 + * + * @param[in] listView The source of the event + * @param[in] groupIndex The index of the group item + * @param[in] itemIndex The index of the item in the group + * @param[in] elementId The element ID + * @param[in] status The status of the element + */ + virtual void OnGroupedListViewContextItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListContextItemStatus status) = 0; + + /** + * Called when the item or the element is long pressed. + * + * @since 2.0 + * + * @param[in] listView The source of the event + * @param[in] groupIndex The index of the group + * @param[in] itemIndex The index of the item in the group + * @param[in] elementId The element ID + * @param[in,out] invokeListViewItemCallback Indicates whether to invoke %GroupedListView item callback after this method returns + * @remarks This method is invoked when an item or an element is long pressed. @n + * When the event comes from the annex or the whole item, @c elementId is always -1. @n + * Setting @c invokeListViewItemCallback to @c true invokes GroupedListView item callbacks after this method returns. @n + * Set @c invokeListViewItemCallback to @c false to not invoke %GroupedListView item callbacks. The default value of + * @c invokeListViewItemCallback is @c true. @n + * Note that other %GroupedListView item callbacks are not called even though @c invokeListViewItemCallback is @c true, if + * %GroupedListView loses focus, for example, due to invoking a Popup or a ContextMenu in this method. + */ + virtual void OnGroupedListViewItemLongPressed(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, bool& invokeListViewItemCallback); + + /** + * Called when GroupItem is selected. + * + * @since 2.0 + * + * @param[in] listView The source of the event + * @param[in] groupIndex The index of the group item + */ + virtual void OnGroupedListViewGroupItemSelected(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex); + + /** + * Called when the item is reordered. + * + * @since 2.0 + * + * @param[in] listView The source of the event + * @param[in] groupIndexFrom The source group index of the item + * @param[in] itemIndexFrom The source item index of the item + * @param[in] groupIndexTo The target group index of the item + * @param[in] itemIndexTo The target item index of the item + */ + virtual void OnGroupedListViewItemReordered(Tizen::Ui::Controls::GroupedListView& listView, int groupIndexFrom, int itemIndexFrom, int groupIndexTo, int itemIndexTo); + +protected: + // + // Following methods are reserved and may change its name at any time without prior notice. + // + virtual void IGroupedListViewItemEventListener_Reserved1(void) {} + virtual void IGroupedListViewItemEventListener_Reserved2(void) {} + virtual void IGroupedListViewItemEventListener_Reserved3(void) {} +}; // IGroupedListViewItemEventListener + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_IGROUPED_LIST_VIEW_ITEM_EVENT_LISTENER_H_ diff --git a/inc/FUiCtrlIGroupedListViewItemProvider.h b/inc/FUiCtrlIGroupedListViewItemProvider.h new file mode 100644 index 0000000..f0a5375 --- /dev/null +++ b/inc/FUiCtrlIGroupedListViewItemProvider.h @@ -0,0 +1,176 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + + +/** + * @file FUiCtrlIGroupedListViewItemProvider.h + * @brief This is the header file for the %IGroupedListViewItemProvider interface. + * + * This header file contains the declarations of the %IGroupedListViewItemProvider interface. @n + * If an event is generated, a method of this class is called. @n + * Therefore, if an application performs jobs related to the item events, it uses the methods of this class. + * + */ +#ifndef _FUI_CTRL_IGROUPED_LIST_VIEW_ITEM_PROVIDER_H_ +#define _FUI_CTRL_IGROUPED_LIST_VIEW_ITEM_PROVIDER_H_ + +#include +#include + +namespace Tizen {namespace Ui { namespace Controls +{ + +/** + * @interface IGroupedListViewItemProvider + * @brief This interface implements the provider for the events generated by the GroupedListView control. + * + * @since 2.0 + * + * The %IGroupedListViewItemProvider interface is the interface for handling GroupedListView items. + * The class that handles list items implements this interface, and the instance created using the GroupedListView's Construct() + * method. + * + * For more information on the class features, see ListViews. + */ +class _OSP_EXPORT_ IGroupedListViewItemProvider +{ +// Operation +public: + /** + * This polymorphic destructor should be overridden if required. + * This way, the destructors of the derived classes are called + * when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~IGroupedListViewItemProvider(void) {} + + /** + * Gets the total number of groups. + * + * @since 2.0 + * + * @return The total number of groups + * @remarks This method must be implemented so that it returns the total number of groups in the GroupedListView control. + */ + virtual int GetGroupCount(void) = 0; + + /** + * Gets the total number of items in the specified group. + * + * @since 2.0 + * + * @return The total number of items in the specified group + * @param[in] groupIndex The index of the group + * @remarks This method must be implemented so that it returns the total number of items for the specified group in the GroupedListView control. + */ + virtual int GetItemCount(int groupIndex) = 0; + + /** + * Creates the group item for the specified index from the item provider. + * + * @since 2.0 + * + * @return A group item of the GroupedListView control + * @param[in] groupIndex The index of the group + * @param[in] itemWidth The width of the item + * @remarks An application that uses the GroupedListView control must implement this method. This method is expected to return a group item that is + * allocated on a heap memory. @n + * Note that when the item is not required, the GroupedListView control calls %IGroupedListViewItemProvider::DeleteGroupItem() and the + * application deallocates the item. + */ + virtual Tizen::Ui::Controls::GroupItem* CreateGroupItem(int groupIndex, int itemWidth) = 0; + + /** + * Deletes the specified group item. + * + * @since 2.0 + * + * @return @c true if the item is deallocated by this method, @n + * else @c false + * @param[in] groupIndex The index of the group + * @param[in] pItem The pointer to GroupItem that is to be deleted + * @param[in] itemWidth The width of the item + * @remarks An application that uses the %GroupedListView control must implement this method. @n + * Using this method, an application can deallocate the item. @n + * If an application deallocates the item, this method must return true. This notifies the GroupedListView control not to release the + * item. Otherwise, the item is deallocated by the GroupedListView control. + * @see CreateItem() + */ + virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth) = 0; + + /** + * Creates the specified item. + * + * @since 2.0 + * + * @return An item of the list + * @param[in] groupIndex The index of the group + * @param[in] itemIndex The index of the item + * @param[in] itemWidth The width of the item + * @remarks An application that uses the GroupedListView control must implement this method. @n + * This method is expected to return an item that is allocated on a heap memory. @n + * The returned item can be a simple or custom item. @n + * Note that when the item is not required, the GroupedListView control calls %IGroupedListViewItemProvider::DeleteItem() and the application + * deallocates the item. + * @see DeleteItem() + */ + virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int groupIndex, int itemIndex, int itemWidth) = 0; + + /** + * Deletes the specified item. + * + * @since 2.0 + * + * @return @c true if the item is deallocated by this method, @n + * else @c false + * @param[in] groupIndex The index of the group + * @param[in] itemIndex The index of the item + * @param[in] pItem The pointer to ListItemBase that is to be deleted + * @param[in] itemWidth The width of the item + * @remarks An application that uses the GroupedListView control must implement this method. @n + * Using this method, an application can deallocate the item. @n + * If the application deallocates the item, this method must return true. This notifies the %GroupedListView control not to release the + * item. Otherwise, the item is deallocated by the %GroupedListView control. + * @see CreateItem() + */ + virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth) = 0; + + + /** + * Checks whether the item can be reordered. + * + * @since 2.0 + * + * @return @c true if the item can be reordered, else @c false + * @param[in] groupIndexFrom The source group index of the item + * @param[in] groupIndexTo The target group index of the item + */ + virtual bool IsReorderable(int groupIndexFrom, int groupIndexTo); + +protected: + // + // Following methods are reserved and may change its name at any time without prior notice. + // + virtual void IGroupedListViewItemProvider_Reserved1(void) {} + virtual void IGroupedListViewItemProvider_Reserved2(void) {} + virtual void IGroupedListViewItemProvider_Reserved3(void) {} +}; // IGroupedListViewItemProvider + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_IGROUPED_LIST_VIEW_ITEM_PROVIDER_H_ diff --git a/inc/FUiCtrlIGroupedTableViewItemEventListener.h b/inc/FUiCtrlIGroupedTableViewItemEventListener.h new file mode 100644 index 0000000..f91fbf2 --- /dev/null +++ b/inc/FUiCtrlIGroupedTableViewItemEventListener.h @@ -0,0 +1,137 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlIGroupedTableViewItemEventListener.h + * @brief This is the header file for the %IGroupedTableViewItemEventListener interface. + * + * This header file contains the declarations of the %IGroupedTableViewItemEventListener interface. @n + * If an item event is generated, a method of this interface is called. + * So, if an application does some jobs related to the item event, use the methods of this interface. + * + */ +#ifndef _FUI_CTRL_IGROUPED_TABLE_VIEW_ITEM_EVENT_LISTENER_H_ +#define _FUI_CTRL_IGROUPED_TABLE_VIEW_ITEM_EVENT_LISTENER_H_ + +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +class GroupedTableView; +class TableViewItem; +class TableViewGroupItem; +class TableViewContextItem; + + +/** + * @interface IGroupedTableViewItemEventListener + * @brief This interface implements the listener for item event. + * + * @since 2.0 + * + * The %IGroupedTableViewItemEventListener interface implements a listener for receiving item change events. + * The class that is interested in processing an item event implements this interface, + * and the instance created with that class is registered with a UI control, using the control's + * AddGroupedTableViewItemEventListener() method. When the item event occurs, the OnItemStateChanged() method of that object is invoked. + */ +class _OSP_EXPORT_ IGroupedTableViewItemEventListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + + virtual ~IGroupedTableViewItemEventListener(void) {} + + /** + * Called when the state of a TableViewGroupItem is changed. + * + * @since 2.0 + * + * @param[in] tableView The source of the event + * @param[in] groupIndex The group index + * @param[in] pItem The target item + * @param[in] status The status of the item + * @remarks This method is called when the TableViewGroupItem in the GroupedTableView is checked, unchecked, or selected. + */ + virtual void OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status) = 0; + + /** + * Called when the state of a TableViewItem in the GroupedTableView is changed. + * + * @since 2.0 + * + * @param[in] tableView The source of the event + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @param[in] pItem The target item + * @param[in] status The status of the item + * @remarks This method is called when the TableViewItem in the GroupedTableView is checked, unchecked, or selected. + */ + virtual void OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status) = 0; + + /** + * Called when the TableViewContextItem is opened or closed. + * + * @since 2.0 + * + * @param[in] tableView The source of the event + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @param[in] pContextItem The context item which is opened or closed + * @param[in] activated @c true if a context item is opened,@n + * @c false, otherwise + */ + virtual void OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // The following method is reserved, and its name can be changed at any time without prior notice. + // + // @since 2.0 + // + virtual void IGroupedTableViewItemEventListener_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // The following method is reserved, and its name can be changed at any time without prior notice. + // + // @since 2.0 + // + virtual void IGroupedTableViewItemEventListener_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // The following method is reserved, and its name can be changed at any time without prior notice. + // + // @since 2.0 + // + virtual void IGroupedTableViewItemEventListener_Reserved3(void) {} +}; // IGroupedTableViewItemEventListener + +}}} //Tizen::Ui::Controls + +#endif // _FUI_CTRL_IGROUPED_TABLE_VIEW_ITEM_EVENT_LISTENER_H_ diff --git a/inc/FUiCtrlIGroupedTableViewItemProvider.h b/inc/FUiCtrlIGroupedTableViewItemProvider.h new file mode 100644 index 0000000..58e8a5d --- /dev/null +++ b/inc/FUiCtrlIGroupedTableViewItemProvider.h @@ -0,0 +1,226 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** +* @file FUiCtrlIGroupedTableViewItemProvider.h +* @brief This is the header file for the %IGroupedTableViewItemProvider interface. +* +* This header file contains the declarations of the %IGroupedTableViewItemProvider interface. +* If the event is generated, a method of this interface is called. +* So, if applications do jobs related to item events, use the methods of this interface. +* +*/ +#ifndef _FUI_CTRL_IGROUPED_TABLE_VIEW_ITEM_PROVIDER_H_ +#define _FUI_CTRL_IGROUPED_TABLE_VIEW_ITEM_PROVIDER_H_ + +namespace Tizen { namespace Ui { namespace Controls +{ +class TableViewItem; +class TableViewGroupItem; + +/** + * @interface IGroupedTableViewItemProvider + * @brief This interface implements the listener for events on GroupedTableView. + * + * @since 2.0 + * + * The %IGroupedTableViewItemProvider interface implements an item provider which generates items for GroupedTableView. %GroupedTableView calls the item provider + * to request an item which is about to be displayed on a screen. Applications which use %GroupedTableView must implement the item provider. + * The class is registered with a %GroupedTableView, using the GroupedTableView's SetGroupedStyleItemProvider() method. + */ +class _OSP_EXPORT_ IGroupedTableViewItemProvider +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~IGroupedTableViewItemProvider(void) {} + + /** + * Gets the total number of groups. + * + * @since 2.0 + * + * @return The total number of groups + * @remarks This method must be implemented so that it returns the total number of groups in the GroupedTableView control. + */ + virtual int GetGroupCount(void) = 0; + + /** + * Gets the total number of items in the specified group. + * + * @since 2.0 + * + * @return The total number of items in the specified group + * @param[in] groupIndex The index of the group + * @remarks This method must be implemented so that it returns the total number of items for the specified group in the GroupedTableView control. + */ + virtual int GetItemCount(int groupIndex) = 0; + + /** + * Gets the group item for the specified index from the item provider. + * + * @since 2.0 + * + * @return A group item of the GroupedTableView control + * @param[in] groupIndex The index of the group + * @param[in] itemWidth The width of the item + * @remarks An application that uses the GroupedTableView control must implement this method. This method is expected to return a group item that is + * allocated on a heap memory. + * Note that when the group item is not required, the %GroupedTableView control calls IGroupedTableViewItemProvider::DeleteGroupItem() and the + * application deallocates the item. + */ + virtual TableViewGroupItem* CreateGroupItem(int groupIndex, int itemWidth) = 0; + + /** + * Deletes the specified group item. + * + * @since 2.0 + * + * @return @c true if the group item is deallocated by this method, + * else @c false + * @param[in] groupIndex The index of the group + * @param[in] pItem The pointer to TableViewGroupItem that is to be deleted + * @remarks An application that uses the GroupedTableView control must implement this method. + * Using this method, an application can deallocate the item. + * If an application deallocates the item, this method must return @c true. This notifies the %GroupedTableView control not to release the + * item. Otherwise, the item is deallocated by the %GroupedTableView control. + * @see CreateGroupItem() + */ + virtual bool DeleteGroupItem(int groupIndex, TableViewGroupItem* pItem) = 0; + + /** + * Updates the specified group item. + * + * @since 2.0 + * + * @param[in] groupIndex The group index + * @param[in] pItem The pointer to TableViewGroupItem that is to be updated + * @remarks An application that uses the GroupedTableView control must implement this method. + * This method is called when the modification of an group item is requested. + * The application can change @c pItem in this method, but should not keep @c pItem for later use. + */ + virtual void UpdateGroupItem(int groupIndex, TableViewGroupItem* pItem) = 0; + + /** + * Creates the specified item. + * + * @since 2.0 + * + * @return An item of the GroupedTableView + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @param[in] itemWidth The width of the item + * @remarks An application that uses the GroupedTableView control must implement this method. + * This method is expected to return an item that is allocated on a heap memory. + * The returned item can be a simple or custom item. + * Note that when the item is not required, the %GroupedTableView control calls IGroupedTableViewItemProvider::DeleteItem() and the application + * deallocates the item. + * @see DeleteItem() + */ + virtual TableViewItem* CreateItem(int groupIndex, int itemIndex, int itemWidth) = 0; + + /** + * Deletes the specified item. + * + * @since 2.0 + * + * @return @c true if the item is deallocated by this method, @n + * else @c false + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @param[in] pItem The pointer to TableViewItem that is to be deleted + * @remarks An application that uses the GroupedTableView control must implement this method. + * Using this method, an application can deallocate the item. + * If the application deallocates the item, this method must return @c true. This notifies the %GroupedTableView control not to release the + * item. Otherwise, the item is deallocated by the %GroupedTableView control. + * @see CreateItem() + */ + virtual bool DeleteItem(int groupIndex, int itemIndex, TableViewItem* pItem) = 0; + + /** + * Updates the specified item. + * + * @since 2.0 + * + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @param[in] pItem The pointer to TableViewItem that is to be updated + * @remarks An application that uses the GroupedTableView control must implement this method. + * This method is calle when the modification of an item is requested. + * The application can change @c pItem in this method, but should not keep @c pItem for later use. + */ + virtual void UpdateItem(int groupIndex, int itemIndex, TableViewItem* pItem) = 0; + + /** + * Gets the default height of an group item. + * + * @since 2.0 + * + * @return The default height of an group item + * @remarks This method must be implemented so that it returns the default height of group items in the GroupedTableView control. + */ + virtual int GetDefaultGroupItemHeight(void) = 0; + + + /** + * Gets the default height of an item. + * + * @since 2.0 + * + * @return The default height of an item + * @remarks This method must be implemented so that it returns the default height of items in the GroupedTableView control. + */ + virtual int GetDefaultItemHeight(void) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // The following method is reserved, and its name can be changed at any time without prior notice. + // + // @since 2.0 + // + virtual void IGroupedTableViewItemProvider_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // The following method is reserved, and its name can be changed at any time without prior notice. + // + // @since 2.0 + // + virtual void IGroupedTableViewItemProvider_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // The following method is reserved, and its name can be changed at any time without prior notice. + // + // @since 2.0 + // + virtual void IGroupedTableViewItemProvider_Reserved3(void) {} +}; // IGroupedTableViewItemProvider + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_IGROUPED_TABLE_VIEW_ITEM_PROVIDER_H_ diff --git a/inc/FUiCtrlIIconListViewItemEventListener.h b/inc/FUiCtrlIIconListViewItemEventListener.h new file mode 100644 index 0000000..b3e9be8 --- /dev/null +++ b/inc/FUiCtrlIIconListViewItemEventListener.h @@ -0,0 +1,105 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlIIconListViewItemEventListener.h + * @brief This is the header file for the %IIconListViewItemEventListener interface. + * + * This header file contains the declarations of the %IIconListViewItemEventListener interface. @n + * If an item event is generated, a method of this interface is called. @n + * So, if an application does some jobs related to the item event, use the methods of this interface. + */ + +#ifndef _FUI_CTRL_IICON_LIST_VIEW_ITEM_EVENT_LISTENER_H_ +#define _FUI_CTRL_IICON_LIST_VIEW_ITEM_EVENT_LISTENER_H_ + +// Includes +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +class IconListView; + +/** + * @interface IIconListViewItemEventListener + * @brief This interface implements the listener for the item event. + * + * @since 2.0 + * + * The %IIconListViewItemEventListener interface is the listener interface for receiving IconListView item events. + * The class that processes a list item event implements this interface, and the instance created with that class is registered + * with a UI control, using the control's AddIIconListViewItemEventListener() method. When the list item event occurs, the + * OnIconListViewItemStateChanged() method of that instance is invoked. + * + * For more information on the class features, see ListViews. + */ +class _OSP_EXPORT_ IIconListViewItemEventListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~IIconListViewItemEventListener(void) {} + + /** + * Called when an item event occurs. + * + * @since 2.0 + * + * @param[in] iconListView The source of the event + * @param[in] index The index of the item + * @param[in] status The item status + */ + virtual void OnIconListViewItemStateChanged(Tizen::Ui::Controls::IconListView& iconListView, int index, Tizen::Ui::Controls::IconListViewItemStatus status) = 0; + + /** + * Called when the overlay bitmap is selected. + * + * @since 2.0 + * + * @param[in] iconListView The source of the event + * @param[in] index The index of the item + * @param[in] overlayBitmapId The overlay bitmap ID + */ + virtual void OnIconListViewOverlayBitmapSelected(Tizen::Ui::Controls::IconListView& iconListView, int index, int overlayBitmapId) {} + + /** + * Called when the item is reordered. + * + * @since 2.0 + * + * @param[in] iconListView The source of the event + * @param[in] indexFrom The start index of the item + * @param[in] indexTo The final index of the item + */ + virtual void OnIconListViewItemReordered(Tizen::Ui::Controls::IconListView& iconListView, int indexFrom, int indexTo) {} + +protected: + // Following methods are reserved and may change its name at any time without prior notice. + virtual void IconListViewItemEventListener_Reserved1(void) {} + virtual void IconListViewItemEventListener_Reserved2(void) {} + virtual void IconListViewItemEventListener_Reserved3(void) {} +}; // IIconListViewItemEventListener + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_IICON_LIST_VIEW_ITEM_EVENT_LISTENER_H_ diff --git a/inc/FUiCtrlIIconListViewItemProvider.h b/inc/FUiCtrlIIconListViewItemProvider.h new file mode 100644 index 0000000..1c7a343 --- /dev/null +++ b/inc/FUiCtrlIIconListViewItemProvider.h @@ -0,0 +1,114 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlIIconListViewItemProvider.h + * @brief This is the header file for the %IIconListViewItemProvider interface. + * + * This header file contains the declarations of the %IIconListViewItemProvider interface. @n + * If the event is generated, a method of this interface is called. @n + * So, if applications performs tasks related to list events, use the methods of this interface. + */ + +#ifndef _FUI_CTRL_IICON_LIST_VIEW_ITEM_PROVIDER_H_ +#define _FUI_CTRL_IICON_LIST_VIEW_ITEM_PROVIDER_H_ + +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +class IconListView; + +/** + * @interface IIconListViewItemProvider + * @brief This interface implements the provider for events on %IconListView. + * + * @since 2.0 + * + * The %IIconListViewItemProvider interface is the interface for handling IconListView items. + * The class that handles list items implements this interface, and the instance created using the IconListView's Construct() + * method. + * + * For more information on the class features, see ListViews. + */ +class _OSP_EXPORT_ IIconListViewItemProvider +{ +// Operation +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~IIconListViewItemProvider(void) {} + + /** + * Called when the IconListView is about to be drawn and requests the listener to set the number of total items. + * + * @since 2.0 + * + * @return The item count of the IconListView + * @remarks Applications which use IconListView must implement this method. This method is expected to return the number of total items in the + * %IconListView. + */ + virtual int GetItemCount(void) = 0; + + /** + * Called when items need to be loaded. + * + * @since 2.0 + * + * @return The item of the IconListView + * @param[in] index The index of the item + * @remarks Applications which use IconListView must implement this method. This method is expected to return an item which is allocated in a heap + * memory. The returned item can be IconListViewItem. Note that when the item becomes unnecessary, the %IconListView calls + * IIconListViewItemProvider::DeleteItem() and applications is in charge of deallocating the item. + * + * @see DeleteItem() + */ + virtual Tizen::Ui::Controls::IconListViewItem* CreateItem(int index) = 0; + + /** + * Called when an item becomes no longer used by the IconListView. + * + * @since 2.0 + * + * @return @c true if the item is deallocated by this method, @n + * else @c false + * + * @param[in] index The index of the item + * @param[in] pItem The pointer to the item to be deleted + * + * @remark Applications which use IconListView must implement this method. In this method, the applications have the chance of deallocating the + * item. If the application deallocates the item, this method must return @c true, notifying the %IconListView not to free the item. + * Otherwise, the item will be deallocated by the %IconListView. + * + * @see CreateItem() + */ + virtual bool DeleteItem(int index, Tizen::Ui::Controls::IconListViewItem* pItem) = 0; + +protected: + // Following methods are reserved and may change its name at any time without prior notice. + virtual void IconListViewItemProvider_Reserved1(void) {} + virtual void IconListViewItemProvider_Reserved2(void) {} + virtual void IconListViewItemProvider_Reserved3(void) {} +}; // IIconListViewItemProvider + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_IICON_LIST_VIEW_ITEM_PROVIDER_H_ diff --git a/inc/FUiCtrlIListViewItemEventListener.h b/inc/FUiCtrlIListViewItemEventListener.h new file mode 100644 index 0000000..f155a9e --- /dev/null +++ b/inc/FUiCtrlIListViewItemEventListener.h @@ -0,0 +1,144 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlIListViewItemEventListener.h + * @brief This is the header file for the %IListViewItemEventListener interface. + * + * This header file contains the declarations of the %IListViewItemEventListener interface. @n + * If an item event is generated, a method of this interface is called. @n + * So, if an application does some jobs related to the item event, use the methods of this interface. + * + */ +#ifndef _FUI_CTRL_ILIST_VIEW_ITEM_EVENT_LISTENER_H_ +#define _FUI_CTRL_ILIST_VIEW_ITEM_EVENT_LISTENER_H_ + +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +class ListView; + +/** + * @interface IListViewItemEventListener + * @brief This interface implements the listener for item event. + * + * @since 2.0 + * + * The %IListViewItemEventListener interface is the listener interface for receiving ListView item events. + * The class that processes a list item event implements this interface, and the instance created with that class is registered + * with a UI control, using the control's AddListViewItemEventListener() method. When the list item event occurs, a method of that + * instance is invoked. + * + * For more information on the class features, see ListViews. + */ +class _OSP_EXPORT_ IListViewItemEventListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +// Operation +public: + /** + * This polymorphic destructor should be overridden if required. + * This way, the destructors of the derived classes are called + * when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~IListViewItemEventListener(void) {} + + /** + * Called when the state of an element in the ListViewItem in the ListView or GroupedListView is changed. + * + * @since 2.0 + * + * @param[in] listView The source of the event + * @param[in] index The index of the list + * @param[in] elementId The element ID + * @param[in] status The status of the element + * + * @remarks This method is called when an element of the ListViewItem in the ListView is checked, unchecked, or selected. @n + * When the event comes from the annex or the whole item, @c elementId is always @c -1. + */ + virtual void OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status) = 0; + + /** + * Called when the ListItem is swept. + * + * @since 2.0 + * + * @param[in] listView The source of the event + * @param[in] index The index of the list + * @param[in] direction The sweep direction + */ + virtual void OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction) = 0; + + /** + * Called when the state of an element in the %ListContextItem is changed. + * + * @since 2.0 + * + * @param[in] listView The source of the event + * @param[in] index The index of the list + * @param[in] elementId The element ID + * @param[in] status The status of the element + */ + virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus status) = 0; + + /** + * Called when the item or the element is long pressed. + * + * @since 2.0 + * + * @param[in] listView The source of the event + * @param[in] index The index of the list + * @param[in] elementId The element ID + * @param[in,out] invokeListViewItemCallback Indicates whether to invoke ListView item callback after this method returns + * @remarks This method is invoked when an item or an element is long pressed. @n + * When the event comes from the annex or the whole item, @c elementId is always @c -1. + * Setting @c invokeListViewItemCallback to @c true invokes %ListView item callbacks after this method returns. + * Set @c invokeListViewItemCallback to @c false to not invoke %ListView item callbacks. The default value of + * @c invokeListViewItemCallback is @c true. + * Note that other %ListView item callbacks are not called even though @c invokeListViewItemCallback is @c true, in case that ListView + * loses the focus, for example, due to invoking a Popup or a ContextMenu in this method. + */ + virtual void OnListViewItemLongPressed(Tizen::Ui::Controls::ListView& listView, int index, int elementId, bool& invokeListViewItemCallback); + + /** + * Called when the item is reordered. + * + * @since 2.0 + * + * @param[in] listView The source of the event + * @param[in] indexFrom The start index of the item + * @param[in] indexTo The final index of the item + */ + virtual void OnListViewItemReordered(Tizen::Ui::Controls::ListView& listView, int indexFrom, int indexTo); + +protected: + // + // Following methods are reserved and may change its name at any time without prior notice. + // + virtual void IListViewItemEventListener_Reserved1(void) {} + virtual void IListViewItemEventListener_Reserved2(void) {} + virtual void IListViewItemEventListener_Reserved3(void) {} +}; // IListViewItemEventListener + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_ILIST_VIEW_ITEM_EVENT_LISTENER_H_ diff --git a/inc/FUiCtrlIListViewItemProvider.h b/inc/FUiCtrlIListViewItemProvider.h new file mode 100644 index 0000000..dc24f60 --- /dev/null +++ b/inc/FUiCtrlIListViewItemProvider.h @@ -0,0 +1,116 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlIListViewItemProvider.h + * @brief This is the header file for the %IListViewItemProvider interface. + * + * This header file contains the declarations of the %IListViewItemProvider interface. @n + * If the event is generated, a method of this interface is called. @n + * So, if applications do jobs related to item events, use the methods of this interface. + * + */ +#ifndef _FUI_CTRL_ILIST_VIEW_ITEM_PROVIDER_H_ +#define _FUI_CTRL_ILIST_VIEW_ITEM_PROVIDER_H_ + +#include + +namespace Tizen {namespace Ui { namespace Controls +{ + +/** + * @interface IListViewItemProvider + * @brief This interface implements the listener for events on %ListView. + * + * @since 2.0 + * + * The %IListViewItemProvider interface is the interface for handling ListView items. + * The class that handles list items implements this interface, and the instance created using the ListView's Construct() method. + * + * For more information on the class features, see ListViews. + */ +class _OSP_EXPORT_ IListViewItemProvider +{ +// Operation +public: + /** + * This polymorphic destructor should be overridden if required. + * This way, the destructors of the derived classes are called + * when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~IListViewItemProvider(void) {} + + /** + * Called when the ListView is about to be drawn and returns the number of total items. + * + * @since 2.0 + * + * @return The count of all items of the list + * @remarks This method must be implemented so that it returns the number of total items in the list. + * + */ + virtual int GetItemCount(void) = 0; + + /** + * Called when items need to be loaded. + * + * @since 2.0 + * + * @return An item of the ListView + * @param[in] index The index of the item + * @param[in] itemWidth The width of the item + * @remarks The applications that use ListView must implement this method. @n + * This method is expected to return an item which is allocated in a heap memory. @n + * The returned item can be a SimpleItem or CustomItem. @n + * Note that when the item becomes unnecessary, the ListView calls IListViewItemProvider::DeleteItem() and the application is in charge of + * deallocating the item. + * @see DeleteItem() + */ + virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int index, int itemWidth) = 0; + + /** + * Called when an item becomes no longer used by the %ListView. + * + * @since 2.0 + * + * @return @c true, if the item is deallocated by this method, @n + * else @c false + * @param[in] index The index of the item + * @param[in] pItem The pointer to the item to be deleted + * @param[in] itemWidth The width of the item + * @remarks Applications which use ListView must implement this method. @n + * In this method, the applications have the chance of deallocating the item. @n + * If the application deallocates the item, this method returns @c true, notifying the %ListView not to free the item. @n + * Otherwise, the item will be deallocated by %ListView. + * @see CreateItem() + */ + virtual bool DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth) = 0; + +protected: + // + // Following methods are reserved and may change its name at any time without prior notice. + // + virtual void IListViewItemProvider_Reserved1(void) {} + virtual void IListViewItemProvider_Reserved2(void) {} + virtual void IListViewItemProvider_Reserved3(void) {} +}; // IListViewItemProvider + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_ILIST_VIEW_ITEM_PROVIDER_H_ diff --git a/inc/FUiCtrlIProgressPopupEventListener.h b/inc/FUiCtrlIProgressPopupEventListener.h new file mode 100644 index 0000000..6fd376e --- /dev/null +++ b/inc/FUiCtrlIProgressPopupEventListener.h @@ -0,0 +1,87 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlIProgressPopupEventListener.h + * @brief This is the header file for the %IProgressPopupEventListener interface. + * + * This header file contains the declarations of the %IProgressPopupEventListener interface. @n + * If a ProgressPopup event is generated, a method of this interface is called. @n + * So, for tasks related to the ProgressPopup event, use the methods of this interface. + * + */ +#ifndef _FUI_CTRL_IPROGRESS_POPUP_EVENT_LISTENER_H_ +#define _FUI_CTRL_IPROGRESS_POPUP_EVENT_LISTENER_H_ + +#include "FBaseRtIEventListener.h" + + +namespace Tizen { namespace Ui +{ +class Control; +}} // Tizen::Ui + + +namespace Tizen { namespace Ui +{ +/** + * @interface IProgressPopupEventListener + * @brief This interface implements the listener for ProgressPopup event. + * @since 2.0 + * + * The %IProgressPopupEventListener interface is the listener interface for receiving an event for closing the ProgressPopup. + * The class that processes a ProgressPopup event + * implements this interface, and the instance created with that class is registered with a UI control, using the control's + * AddProgressPopupEventListener() method. When the ProgressPopup event occurs, the OnProgressPopupCanceled() method of that instance is invoked. + * + * For more information on the class features, see in individual control topics under UI Controls. + */ +class _OSP_EXPORT_ IProgressPopupEventListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~IProgressPopupEventListener(void) {} + + /** + * Called when a ProgressPopup event occurs. + * + * @since 2.0 + */ + virtual void OnProgressPopupCanceled(void) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // The following methods are reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IProgressPopupEventListener_Reserved1(void) {} + virtual void IProgressPopupEventListener_Reserved2(void) {} + virtual void IProgressPopupEventListener_Reserved3(void) {} +}; // IProgressPopupEventListener + +}} // Tizen::Ui + +#endif // _FUI_CTRL_IPROGRESS_POPUP_EVENT_LISTENER_H_ diff --git a/inc/FUiCtrlIScrollEventListener.h b/inc/FUiCtrlIScrollEventListener.h new file mode 100644 index 0000000..bcc3cd5 --- /dev/null +++ b/inc/FUiCtrlIScrollEventListener.h @@ -0,0 +1,125 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlIScrollEventListener.h + * @brief This is the header file for the %IScrollEventListener interface. + * + * This header file contains the declarations of the %IScrollEventListener interface. @n + * If a change event is generated, a method of this interface is called. @n + * The applications that perform tasks related to the change events, call the methods of this interface. + * + */ +#ifndef _FUI_CTRL_ISCROLL_EVENT_LISTENER_H_ +#define _FUI_CTRL_ISCROLL_EVENT_LISTENER_H_ + +#include +#include + +namespace Tizen { namespace Ui +{ +class Control; +}} // Tizen::Ui + +namespace Tizen {namespace Ui { namespace Controls +{ + +/** + * @interface IScrollEventListener + * @brief This interface implements a listener for ScrollPanel events. + * + * @since 2.0 + * + * The %IScrollEventListener interface is the listener interface for receiving scroll events. + * The class that processes a scroll event implements this interface, and the instance created with that class is registered with + * a UI control, using the control's AddScrollEventListener() method. When the scroll event occurs, the OnScrollEndReached() + * method of that instance is invoked. + * + * For more information on the class features, see Panels and ListViews. + */ +class _OSP_EXPORT_ IScrollEventListener + : public Tizen::Base::Runtime::IEventListener +{ +// Operation +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + * + */ + virtual ~IScrollEventListener(void) {} + + /** + * Called when the scroll reaches the top, bottom, left or right end. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] type The type of scroll end event + */ + virtual void OnScrollEndReached(Tizen::Ui::Control& source, Tizen::Ui::Controls::ScrollEndEvent type) = 0; + + /** + * Called continuously when the control is being scrolled. + * + * @since 2.0 + * + *@param[in] source The control being scrolled + *@param[in] scrollPos The scrolled position + */ + virtual void OnScrollPositionChanged(Tizen::Ui::Control& source, int scrollPos) {}; + + /** + * Called when the control's scroll movement has come to a stop. + * + * @since 2.0 + * + * @param[in] source The control being scrolled + */ + virtual void OnScrollStopped(Tizen::Ui::Control& source) {}; + +protected: + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void ScrollEventListener_Reserved1(void) {} + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void ScrollEventListener_Reserved2(void) {} + + // + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void ScrollEventListener_Reserved3(void) {} + +}; // IScrollEventListener + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_ISCROLL_EVENT_LISTENER_H_ diff --git a/inc/FUiCtrlISearchBarEventListener.h b/inc/FUiCtrlISearchBarEventListener.h new file mode 100644 index 0000000..cb3f3e3 --- /dev/null +++ b/inc/FUiCtrlISearchBarEventListener.h @@ -0,0 +1,144 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlISearchBarEventListener.h + * @brief This is the header file for the %ISearchBarEventListener interface. + * + * This header file contains the declarations of the %ISearchBarEventListener interface. + */ +#ifndef _FUI_CTRL_ISEARCH_BAR_EVENT_LISTENER_H_ +#define _FUI_CTRL_ISEARCH_BAR_EVENT_LISTENER_H_ + +// Includes +#include +#include + +// Namespace declaration +namespace Tizen { namespace Ui { namespace Controls +{ +/** + * @interface ISearchBarEventListener + * @brief This interface implements the listener for the SearchBar events. + * + * @since 2.0 + * + * The %ISearchBarEventListener interface is the listener interface for receiving SearchBar events. + * The class that processes a search bar event implements this interface, and the instance created with that class is registered + * with a UI control, using the control's AddSearchBarEventListener() method. When the search bar event occurs, the + * OnSearchBarModeChanged() method of that instance is invoked. + * + * For more information on the class features, see SearchBar. + */ +class _OSP_EXPORT_ ISearchBarEventListener + : public Tizen::Base::Runtime::IEventListener +{ +// Lifecycle +public: + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~ISearchBarEventListener(void) {} + + +// Operation +public: + /** + * Called when the mode of the SearchBar is changed. + * + * @if OSPCOMPAT + * @brief [Compatibility] + * @endif + * @since 2.0 + * @if OSPCOMPAT + * @compatibility This method has compatibility issues with OSP compatible applications. @n + * For more information, see @ref CompSearchModeChangedPage "here" + * @endif + * @param[in] source The source of the event + * @param[in] mode The current search bar mode. + */ + virtual void OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar& source, SearchBarMode mode) = 0; + /** + * @page CompSearchModeChangedPage Compatibility for OnSearchBarModeChanged() + * @section CompSearchModeChangedPage IssueSection Issues + * Implementing this method in OSP compatible applications has following issue: @n + * OnSearchBarModeChanged() method modifies the visibility of the current Form's Header in OSP, + * whereas current Form's header visibility is not modified in Tizen. + * + * @section CompSearchModeChangedPage SolutionSection Resolutions + * It is recommended to use Tizen API. @n + */ + +// Reserves +protected: + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + //This method is reserved and may change its name at any time without prior notice. + // + //@since 2.0 + // + virtual void ISearchBarEventListener_Reserved1(void) { } + + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + //This method is reserved and may change its name at any time without prior notice. + // + //@since 2.0 + // + virtual void ISearchBarEventListener_Reserved2(void) { } + + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + //This method is reserved and may change its name at any time without prior notice. + // + //@since 2.0 + // + virtual void ISearchBarEventListener_Reserved3(void) { } + + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + //This method is reserved and may change its name at any time without prior notice. + // + //@since 2.0 + // + virtual void ISearchBarEventListener_Reserved4(void) { } + + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + //This method is reserved and may change its name at any time without prior notice. + // + //@since 2.0 + // + virtual void ISearchBarEventListener_Reserved5(void) { } + +}; // ISearchBarEventListener + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_ISEARCH_BAR_EVENT_LISTENER_H_ diff --git a/inc/FUiCtrlISectionTableViewItemEventListener.h b/inc/FUiCtrlISectionTableViewItemEventListener.h new file mode 100644 index 0000000..46b41f7 --- /dev/null +++ b/inc/FUiCtrlISectionTableViewItemEventListener.h @@ -0,0 +1,122 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlISectionTableViewItemEventListener.h + * @brief This is the header file for the %ISectionTableViewItemEventListener interface. + * + * This header file contains the declarations of the %ISectionTableViewItemEventListener interface. @n + * If an item event is generated, a method of this interface is called. + * So, if an application does some jobs related to the item event, use the methods of this interface. + * + */ +#ifndef _FUI_CTRL_ISECTION_TABLE_VIEW_ITEM_EVENT_LISTENER_H_ +#define _FUI_CTRL_ISECTION_TABLE_VIEW_ITEM_EVENT_LISTENER_H_ + +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +class SectionTableView; +class TableViewItem; +class TableViewContextItem; + + +/** + * @interface ISectionTableViewItemEventListener + * @brief This interface implements the listener for item event. + * + * @since 2.0 + * + * The %ISectionTableViewItemEventListener interface implements a listener for receiving item change events. + * The class that is interested in processing an item event implements this interface, + * and the instance created with that class is registered with a UI control, using the control's + * AddSectionTableViewItemEventListener() method. When the item event occurs, the OnItemStateChanged() method of that object is invoked. + */ +class _OSP_EXPORT_ ISectionTableViewItemEventListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + + virtual ~ISectionTableViewItemEventListener(void) {} + /** + * Called when the state of a TableViewItem in the SectionTableView is changed. + * + * @since 2.0 + * + * @param[in] tableView The source of the event + * @param[in] sectionIndex The section index + * @param[in] itemIndex The item index + * @param[in] pItem The target item + * @param[in] status The status of the item + * @remarks This method is called when the TableViewItem in the SectionTableView is checked, unchecked, or selected. + */ + virtual void OnSectionTableViewItemStateChanged(Tizen::Ui::Controls::SectionTableView& tableView, int sectionIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status) = 0; + + /** + * Called when the TableViewContextItem is opened or closed. + * + * @since 2.0 + * + * @param[in] tableView The source of the event + * @param[in] sectionIndex The section index + * @param[in] itemIndex The item index + * @param[in] pContextItem The context item which is opened or closed + * @param[in] activated @c true if a context item is opened,@n + * @c false, otherwise + */ + virtual void OnSectionTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::SectionTableView& tableView, int sectionIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // The following method is reserved, and its name can be changed at any time without prior notice. + // + // @since 2.0 + // + virtual void ISectionTableViewItemEventListener_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // The following method is reserved, and its name can be changed at any time without prior notice. + // + // @since 2.0 + // + virtual void ISectionTableViewItemEventListener_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // The following method is reserved, and its name can be changed at any time without prior notice. + // + // @since 2.0 + // + virtual void ISectionTableViewItemEventListener_Reserved3(void) {} +}; // ISectionTableViewItemEventListener + +}}} //Tizen::Ui::Controls + +#endif // _FUI_CTRL_ISECTION_TABLE_VIEW_ITEM_EVENT_LISTENER_H_ diff --git a/inc/FUiCtrlISectionTableViewItemProvider.h b/inc/FUiCtrlISectionTableViewItemProvider.h new file mode 100644 index 0000000..29067b4 --- /dev/null +++ b/inc/FUiCtrlISectionTableViewItemProvider.h @@ -0,0 +1,217 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlISectionTableViewItemProvider.h + * @brief This is the header file for the %ISectionTableViewItemProvider interface. + * + * This header file contains the declarations of the %ISectionTableViewItemProvider interface. + * If the event is generated, a method of this interface is called. + * So, if applications do jobs related to item events, use the methods of this interface. + * + */ +#ifndef _FUI_CTRL_ISECTION_TABLE_VIEW_ITEM_PROVIDER_H_ +#define _FUI_CTRL_ISECTION_TABLE_VIEW_ITEM_PROVIDER_H_ + +namespace Tizen { namespace Ui { namespace Controls +{ +class TableViewItem; + +/** + * @interface ISectionTableViewItemProvider + * @brief This interface implements the listener for events on SectionTableView. + * + * @since 2.0 + * + * The %ISectionTableViewItemProvider interface implements an item provider which generates items for SectionTableView. %SectionTableView calls the item provider + * to request an item which is about to be displayed on a screen. Applications which use %SectionTableView must implement the item provider. + * The class is registered with a %SectionTableView, using the SectionTableView's SetSectionStyleItemProvider() method. + */ +class _OSP_EXPORT_ ISectionTableViewItemProvider +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~ISectionTableViewItemProvider(void) {} + + /** + * Gets the total number of groups. + * + * @since 2.0 + * + * @return The total number of groups + * @remarks This method must be implemented so that it returns the total number of groups in the SectionTableView control. + */ + virtual int GetSectionCount(void) = 0; + + /** + * Gets the total number of items in the specified group. + * + * @since 2.0 + * + * @return The total number of items in the specified group + * @param[in] sectionIndex The index of the section + * @remarks This method must be implemented so that it returns the total number of items for the specified section in the %SectionTableView control. + */ + virtual int GetItemCount(int sectionIndex) = 0; + + /** + * Creates the specified item. + * + * @since 2.0 + * + * @return An item of the SectionTableView + * @param[in] sectionIndex The section index + * @param[in] itemIndex The item index + * @param[in] itemWidth The width of the item + * @remarks An application that uses the SectionTableView control must implement this method. + * This method is expected to return an item that is allocated on a heap memory. + * The returned item can be a simple or custom item. + * Note that when the item is not required, the %SectionTableView control calls ISectionTableViewItemProvider::DeleteItem() and the application + * deallocates the item. + * @see DeleteItem() + */ + virtual TableViewItem* CreateItem(int sectionIndex, int itemIndex, int itemWidth) = 0; + + /** + * Deletes the specified item. + * + * @since 2.0 + * + * @return @c true if the item is deallocated by this method, @n + * else @c false + * @param[in] sectionIndex The section index + * @param[in] itemIndex The item index + * @param[in] pItem The pointer to TableViewItem to be deleted + * @remarks An application that uses the SectionTableView control must implement this method. + * Using this method, an application can deallocate the item. + * If the application deallocates the item, this method must return true. This notifies the %SectionTableView control not to release the + * item. Otherwise, the item is deallocated by the %SectionTableView control. + * @see CreateItem() + */ + virtual bool DeleteItem(int sectionIndex, int itemIndex, TableViewItem* pItem) = 0; + + /** + * Updates the specified item. + * + * @since 2.0 + * + * @param[in] sectionIndex The section index + * @param[in] itemIndex The item index + * @param[in] pItem The pointer to TableViewItem to be updated + * @remarks An application that uses the SectionTableView control must implement this method. + * This method is calle when the modification of an item is requested. + * The application can change @c pItem in this method, but should not keep @c pItem for later use. + */ + virtual void UpdateItem(int sectionIndex, int itemIndex, TableViewItem* pItem) = 0; + + /** + * Gets the header text of a specified section. + * + * @since 2.0 + * + * @return The section header text of specified section + * @param[in] sectionIndex The index of the group + * @remarks An application that uses the SectionTableView control must implement this method. @n + * The header text will be aligned left + */ + virtual Tizen::Base::String GetSectionHeader(int sectionIndex) = 0; + + /** + * Returns whether the group has the section header or not. + * + * @since 2.0 + * + * @return @c true, if the section has an header @n + * @c false, otherwise + * @param[in] sectionIndex The index of the section + * @remarks An application that uses the SectionTableView control must implement this method. + */ + virtual bool HasSectionHeader(int sectionIndex) = 0; + + /** + * Gets the footer text of a specified section. + * + * @since 2.0 + * + * @return The footer text of specified section + * @param[in] sectionIndex The index of the section + * @remarks An application that uses the SectionTableView control must implement this method. @n + * The footer text will be aligned right. + */ + virtual Tizen::Base::String GetSectionFooter(int sectionIndex) = 0; + + /** + * Returns whether the section has the footer or not. + * + * @since 2.0 + * + * @return @c true, if the section has the footer @n + * @c false, + * @param[in] sectionIndex The index of the section + * @remarks An application that uses the SectionTableView control must implement this method. + */ + virtual bool HasSectionFooter(int sectionIndex) = 0; + + /** + * Gets the default height of an item. + * + * @since 2.0 + * + * @return The default height of an item + * @remarks This method must be implemented so that it returns the default height of items in the SectionTableView control. + */ + virtual int GetDefaultItemHeight(void) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // The following method is reserved, and its name can be changed at any time without prior notice. + // + // @since 2.0 + // + virtual void ISectionTableViewItemProvider_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // The following method is reserved, and its name can be changed at any time without prior notice. + // + // @since 2.0 + // + virtual void ISectionTableViewItemProvider_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // The following method is reserved, and its name can be changed at any time without prior notice. + // + // @since 2.0 + // + virtual void ISectionTableViewItemProvider_Reserved3(void) {} +}; // ISectionTableViewItemProvider + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_ISECTION_TABLE_VIEW_ITEM_PROVIDER_H_ diff --git a/inc/FUiCtrlISliderEventListener.h b/inc/FUiCtrlISliderEventListener.h new file mode 100644 index 0000000..a343014 --- /dev/null +++ b/inc/FUiCtrlISliderEventListener.h @@ -0,0 +1,107 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlISliderEventListener.h + * @brief This is the header file for the %ISliderEventListener interface. + * + * This header file contains the declarations of the %ISliderEventListener interface. @n + * If a change event is generated, a method of this interface is called. @n + * So, if the applications perform tasks related to change events, use the methods of this interface. + * + */ +#ifndef _FUI_CTRL_ISLIDER_EVENT_LISTENER_H_ +#define _FUI_CTRL_ISLIDER_EVENT_LISTENER_H_ + +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +class Slider; + +/** + * @interface ISliderEventListener + * @brief This interface implements the listener for all slider events. + * + * @since 2.0 + * + * The %ISliderEventListener interface is the listener interface for receiving Slider events, which are fired when the slider knob moves. + * The class that processes a slider event implements this interface, and the instance created with that class is registered with + * a UI control, using the control's AddSliderEventListener() method. When the slider event occurs, the OnSliderBarMoved() + * method of that instance is invoked. + * + * For more information on the class features, see Slider. + */ +class ISliderEventListener + : public Tizen::Base::Runtime::IEventListener +{ +// Operation +public: + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~ISliderEventListener(void) {} + + /** + * Called when the Slider bar moves. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] value The current value indicated by the knob + * @remarks This event is fired when the knob is moved until the user releases the knob. + */ + virtual void OnSliderBarMoved(Tizen::Ui::Controls::Slider& source, int value) = 0; + +protected: + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void ISliderEventListener_Reserved1(void) {} + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void ISliderEventListener_Reserved2(void) {} + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void ISliderEventListener_Reserved3(void) {} + +}; // ISliderEventListener + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_ISLIDER_EVENT_LISTENER_H_ diff --git a/inc/FUiCtrlISplitPanelEventListener.h b/inc/FUiCtrlISplitPanelEventListener.h new file mode 100644 index 0000000..77b118c --- /dev/null +++ b/inc/FUiCtrlISplitPanelEventListener.h @@ -0,0 +1,115 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlISplitPanelEventListener.h + * @brief This is the header file for the %ISplitPanelEventListener interface. + * + * This header file contains the declarations of the %ISplitPanelEventListener interface. @n + * If a change event is generated, a method of this class is called. @n + * So, if the applications perform tasks related to change events, use the methods of this class. + * + */ +#ifndef _FUI_CTRL_ISPLIT_PANEL_EVENT_LISTENER_H_ +#define _FUI_CTRL_ISPLIT_PANEL_EVENT_LISTENER_H_ + +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @interface ISplitPanelEventListener + * @brief This interface implements the listener for all splitpanel events. + * + * @since 2.0 + * + * The %ISplitPanelEventListener interface is the listener interface for receiving splitpanel events. + * The class that processes a splitpanel event implements this interface, and the instance created with that class is registered with + * a UI control, using the control's AddSplitPanelEventListener() method. When the splitpanel event occurs, a method of that instance is invoked. + * + * For more information on the class features, see SplitPanel. + */ +class _OSP_EXPORT_ ISplitPanelEventListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called + * + * @since 2.0 + */ + virtual ~ISplitPanelEventListener(void) {} + + /** + * + * Called when the divider moves. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] position The position of the divider + */ + virtual void OnDividerPositionChanged(Tizen::Ui::Controls::SplitPanel& source, int position) = 0; + + /** + * Called when the divider is double pressed. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @remark This method is invoked when an divider is double pressed. + */ + virtual void OnDividerDoublePressed(Tizen::Ui::Controls::SplitPanel& source) = 0; + +protected: + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void ISplitPanelEventListener_Reserved1(void) {} + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void ISplitPanelEventListener_Reserved2(void) {} + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void ISplitPanelEventListener_Reserved3(void) {} + +}; // ISplitPanelEventListener + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_ISPLIT_PANEL_EVENT_LISTENER_H_ diff --git a/inc/FUiCtrlITableViewItemEventListener.h b/inc/FUiCtrlITableViewItemEventListener.h new file mode 100644 index 0000000..2f3a0d6 --- /dev/null +++ b/inc/FUiCtrlITableViewItemEventListener.h @@ -0,0 +1,132 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlITableViewItemEventListener.h + * @brief This is the header file for the %ITableViewItemEventListener interface. + * + * This header file contains the declarations of the %ITableViewItemEventListener interface. @n + * If an item event is generated, a method of this interface is called. + * So, if an application does some jobs related to the item event, use the methods of this interface. + * + */ +#ifndef _FUI_CTRL_ITABLE_VIEW_ITEM_EVENT_LISTENER_H_ +#define _FUI_CTRL_ITABLE_VIEW_ITEM_EVENT_LISTENER_H_ + +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +class TableView; +class TableViewItem; +class TableViewContextItem; + +/** + * @interface ITableViewItemEventListener + * @brief This interface implements the listener for item event. + * + * @since 2.0 + * + * The %ITableViewItemEventListener interface implements a listener for receiving item change events. + * The class that is interested in processing an item event implements this interface, + * and the instance created with that class is registered with a UI control, using the control's + * AddTableViewItemEventListener() method. When the item event occurs, the OnItemStateChanged() method of that object is invoked. + */ +class _OSP_EXPORT_ ITableViewItemEventListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~ITableViewItemEventListener(void) {} + + /** + * Called when the state of a TableViewItem in the TableView is changed. + * + * @since 2.0 + * + * @param[in] tableView The source of the event + * @param[in] itemIndex The item index + * @param[in] pItem The target item + * @param[in] status The status of the item + * @remarks This method is called when a TableViewItem in the TableView is checked, unchecked, or selected. + * The application can change @c pItem in this method, but should not keep @c pItem for later use. + */ + virtual void OnTableViewItemStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status) = 0; + + /** + * Called when the TableViewContextItem is opened or closed. + * + * @since 2.0 + * + * @param[in] tableView The source of the event + * @param[in] itemIndex The item index + * @param[in] pContextItem The context item which is opened or closed + * @param[in] activated @c true if a context item is opened,@n + * @c false, otherwise + */ + virtual void OnTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated) = 0; + + /** + * Called when the item is reordered. + * + * @since 2.0 + * + * @param[in] tableView The source of the event + * @param[in] itemIndexFrom The start item index of the item + * @param[in] itemIndexTo The final item index of the item + */ + virtual void OnTableViewItemReordered(Tizen::Ui::Controls::TableView& tableView, int itemIndexFrom, int itemIndexTo) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // The following method is reserved, and its name can be changed at any time without prior notice. + // + // @since 2.0 + // + virtual void ITableViewItemEventListener_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // The following method is reserved, and its name can be changed at any time without prior notice. + // + // @since 2.0 + // + virtual void ITableViewItemEventListener_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // The following method is reserved, and its name can be changed at any time without prior notice. + // + // @since 2.0 + // + virtual void ITableViewItemEventListener_Reserved3(void) {} +}; // ITableViewItemEventListener + +}}} //Tizen::Ui::Controls + +#endif // _FUI_CTRL_ITABLE_VIEW_ITEM_EVENT_LISTENER_H_ diff --git a/inc/FUiCtrlITableViewItemProvider.h b/inc/FUiCtrlITableViewItemProvider.h new file mode 100644 index 0000000..0bef40d --- /dev/null +++ b/inc/FUiCtrlITableViewItemProvider.h @@ -0,0 +1,155 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlITableViewItemProvider.h + * @brief This is the header file for the %ITableViewItemProvider interface. + * + * This header file contains the declarations of the %ITableViewItemProvider interface. + * If the event is generated, a method of this interface is called. + * So, if applications do jobs related to item events, use the methods of this interface. + * + */ + +#ifndef _FUI_CTRL_ITABLE_VIEW_ITEM_PROVIDER_H_ +#define _FUI_CTRL_ITABLE_VIEW_ITEM_PROVIDER_H_ + +namespace Tizen { namespace Ui { namespace Controls +{ +class TableViewItem; + +/** + * @interface ITableViewItemProvider + * @brief This interface implements the listener for events on TableView. + * + * @since 2.0 + * + * The %ITableViewItemProvider interface implements an item provider which generates items for TableView. %TableView calls the item provider + * to request an item which is about to be displayed on a screen. Applications which use %TableView must implement the item provider. + * The class is registered with a %TableView, using the TableView's SetSimpleStyleItemProvider() method. + */ +class _OSP_EXPORT_ ITableViewItemProvider +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~ITableViewItemProvider(void) {} + + /** + * Gets the total number of items in the specified group. + * + * @since 2.0 + * + * @return The total number of items + * @remarks This method must be implemented so that it returns the total number of items for the specified group in the TableView control. + */ + virtual int GetItemCount(void) = 0; + + /** + * Creates the specified item. + * + * @since 2.0 + * + * @return An item of the TableView + * @param[in] itemIndex The item index + * @param[in] itemWidth The width of the item + * @remarks An application that uses the TableView control must implement this method. + * This method is expected to return an item that is allocated on a heap memory. + * The returned item can be a %TableViewItem or a class derived from TableViewItem. + * Note that when the item is not required, the %TableView control calls ITableViewItemProvider::DeleteItem(), allowing the application to deallocate the item. + * @see DeleteItem() + */ + virtual TableViewItem* CreateItem(int itemIndex, int itemWidth) = 0; + + /** + * Deletes the specified item. + * + * @since 2.0 + * + * @return @c true if the item is deallocated by this method, @n + * else @c false + * @param[in] itemIndex The item index + * @param[in] pItem The pointer to TableViewItem that is to be deleted + * @remarks An application that uses the TableView control must implement this method. + * Using this method, an application can deallocate the item. + * If the application deallocates the item, this method must return @c true. This notifies the %TableView not to release the + * item. Otherwise, the item is deallocated by the %TableView. + * @see CreateItem() + */ + virtual bool DeleteItem(int itemIndex, TableViewItem* pItem) = 0; + + /** + * Updates the specified item. + * + * @since 2.0 + * + * @param[in] itemIndex The item index + * @param[in] pItem The pointer to TableViewItem that is to be updated + * @remarks An application that uses the TableView control must implement this method. + * This method is called when the modification of an item is requested. + * The application can change @c pItem in this method, but should not keep @c pItem for later use. + */ + virtual void UpdateItem(int itemIndex, TableViewItem* pItem) = 0; + + /** + * Gets the default height of an item. + * + * @since 2.0 + * + * @return The default height of an item + * @remarks This method must be implemented so that it returns the default height of items in the TableView control. + */ + virtual int GetDefaultItemHeight(void) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // The following method is reserved, and its name can be changed at any time without prior notice. + // + // @since 2.0 + // + virtual void ITableViewItemProvider_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // The following method is reserved, and its name can be changed at any time without prior notice. + // + // @since 2.0 + // + virtual void ITableViewItemProvider_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // The following method is reserved, and its name can be changed at any time without prior notice. + // + // @since 2.0 + // + virtual void ITableViewItemProvider_Reserved3(void) {} +}; // ITableViewItemProvider + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_ITABLE_VIEW_ITEM_PROVIDER_H_ diff --git a/inc/FUiCtrlITokenFilter.h b/inc/FUiCtrlITokenFilter.h new file mode 100644 index 0000000..69da6db --- /dev/null +++ b/inc/FUiCtrlITokenFilter.h @@ -0,0 +1,105 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlITokenFilter.h + * @brief This is the header file for the %ITokenFilter interface. + * + * This header file contains the declarations of the %ITokenFilter interface. + */ +#ifndef _FUI_CTRL_ITOKEN_FILTER_H_ +#define _FUI_CTRL_ITOKEN_FILTER_H_ + +// includes +#include + +// namespace declaration +namespace Tizen { namespace Ui { namespace Controls +{ +/** + * @interface ITokenFilter + * @brief This interface defines the token filter. + * + * @since 2.0 + * + * The %ITokenFilter interface is the listener interface for replacing tokenized input in the ExpandableEditArea. + * + * For more information on the class features, see ExpandableEditArea. + * + */ +class _OSP_EXPORT_ ITokenFilter +{ +// Lifecycle +public: + /** + * This is the destructor for this class. + * @since 2.0 + */ + virtual ~ITokenFilter(void) {} + +// Operation +public: + /** + * Checks whether the text tokenized by the ExpandableEditArea instance must be replaced. + * + * @since 2.0 + * + * @return @c true if the text of the current token needs to be replaced, @n + * else @c false + * @param[in] token The text of the current token + * @param[out] replacement The user-defined replacement text + */ + virtual bool ReplaceToken(const Tizen::Base::String& token, Tizen::Base::String& replacement) = 0; + + +// Reserves +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void ITokenFilter_Reserved1(void) { } + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void ITokenFilter_Reserved2(void) { } + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void ITokenFilter_Reserved3(void) { } +}; // ITokenFilter + +}}} //Tizen::Ui::Controls +#endif //_FUI_CTRL_ITOKEN_FILTER_H_ diff --git a/inc/FUiCtrlIconList.h b/inc/FUiCtrlIconList.h new file mode 100644 index 0000000..91abf7f --- /dev/null +++ b/inc/FUiCtrlIconList.h @@ -0,0 +1,906 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlIconList.h + * @brief This is the header file for the %IconList class. + * + * This header file contains the declarations of the %IconList class and its helper classes. + */ + +#ifndef _FUI_CTRL_ICON_LIST_H_ +#define _FUI_CTRL_ICON_LIST_H_ + +#include +#include +#include +#include +#include +#include +#include +#include + +// forward declarations +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @if OSPDEPREC + * @class IconList + * @brief [Deprecated] This class defines the common behavior of an %IconList control. + * + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @remarks %IconList can display a maximum of 64 items on the screen at once (for example, 8 x 8 grid). + * %IconList is not drawn properly when it is resized. + * + * The %IconList class can be used to display a list of bitmap images and icons. When + * a list item (or icon) is pressed by the user, an item event is generated and the + * item event listeners are called to notify the change in the + * item's state (ITEM_CHECKED, ITEM_UNCHECKED and ITEM_SELECTED). + * + * When %IconList's style is set as ICON_LIST_STYLE_RADIO, only one item + * can be "selected" at a time. Whereas, if ICON_LIST_STYLE_MARK is set as + * the %IconList's style, multiple items can be "checked" at the same time. + * However, no item can be selected or checked when %IconList's style is set as + * ICON_LIST_STYLE_NORMAL. + * + * When a list item is selected by the user, the "focused" bitmap image is displayed + * instead of item's "normal" bitmap image. + * + * Please note that any image resources (bitmaps) that are allocated by application + * must be freed after they are passed to Additem()/InsertItem()/SetItem() to + * minimize memory usage. @n + * + * Example: + * + * @image html ui_controls_iconlist.png + * + *@n + * This is a simple UI application which uses a icon list control. + * + * + * @code +//Sample code for IconListSample.h +#include + +class IconListSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IItemEventListener +{ +public: + IconListSample(void) + : __pIconList(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + + // IItemEventListener + virtual void OnItemStateChanged(const Tizen::Ui::Control &source, int index, int itemId, Tizen::Ui::ItemStatus status); + +private: + static const int ID_LIST_FIRSTITEM = 101; + static const int ID_LIST_SECONDITEM = 102; + + Tizen::Ui::Controls::IconList *__pIconList; +}; + * @endcode + * + * @code +//Sample code for IconListSample.cpp +#include +#include + +#include "IconListSample.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; +using namespace Tizen::Graphics; + +bool +IconListSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +IconListSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of IconList + __pIconList = new IconList(); + __pIconList->Construct(Rectangle(0, 100, GetClientAreaBounds().width, GetClientAreaBounds().height), ICON_LIST_STYLE_NORMAL, 96, 96); + __pIconList->AddItemEventListener(*this); + + // Creates instances of String + String itemText1(L"Item1"); + String itemText2(L"Item2"); + + // Gets instances of Bitmap + AppResource* pAppResource = Application::GetInstance()->GetAppResource(); + Bitmap *pBitmapNormal1 = pAppResource->GetBitmapN(L"call.png"); + Bitmap *pBitmapFocused1 = pAppResource->GetBitmapN(L"call_focused.png"); + Bitmap *pBitmapNormal2 = pAppResource->GetBitmapN(L"home.png"); + Bitmap *pBitmapFocused2 = pAppResource->GetBitmapN(L"home_focused.png"); + + // Adds the items to the icon list + __pIconList->AddItem(&itemText1, pBitmapNormal1, pBitmapFocused1, ID_LIST_FIRSTITEM); + __pIconList->AddItem(&itemText2, pBitmapNormal2, pBitmapFocused2, ID_LIST_SECONDITEM); + + // Adds the icon list to the form + AddControl(*__pIconList); + + // Deallocates bitmaps + delete pBitmapNormal1; + delete pBitmapFocused1; + delete pBitmapNormal2; + delete pBitmapFocused2; + + return r; +} + +// IItemEventListener implementation +void +IconListSample::OnItemStateChanged (const Control &source, int index, int itemId, ItemStatus status) +{ + switch (itemId) + { + case ID_LIST_FIRSTITEM: + { + // .... + } + break; + case ID_LIST_SECONDITEM: + { + // .... + } + break; + default: + break; + } +} + * @endcode + * @endif + */ +class _OSP_EXPORT_ IconList + : public Tizen::Ui::Control +{ +public: + /** + * @if OSPDEPREC + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * @endif + */ + IconList(void); + + /** + * @if OSPDEPREC + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * @endif + */ + virtual ~IconList(void); + +public: + /** + * @if OSPDEPREC + * Initializes this instance of %IconList with the specified parameters. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return An error code + * @param[in] rect An instance of the Graphics::Rectangle class @n + * This instance represents the X and Y coordinates of the top-left corner of the created %IconList along with + * the width and height. @n + * @param[in] style The style set of %IconList + * @param[in] itemWidth The width of the items in the %IconList + * @param[in] itemHeight The height of the items in the %IconList + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks A control is fully usable only after it has been added to a container, therefore some methods may fail if used earlier. + * @remarks The %IconList cannot display more than 64 items on screen at once. + * @remarks The size of the control must be within the range defined by the minimum and maximum size. + * @remarks The minimum size of this control is 0 x 0. + * @endif + */ + result Construct(const Tizen::Graphics::Rectangle& rect, IconListStyle style, int itemWidth, int itemHeight); + + +// Operation + /** + * @if OSPDEPREC + * Adds a listener instance. @n + * The added listener can listen to item events when they are fired. Only an item event with the ITEM_SELECTED state is fired. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @param[in] listener The listener to be added + * @endif + */ + void AddItemEventListener(Tizen::Ui::IItemEventListener& listener); + + /** + * @if OSPDEPREC + * Removes a listener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @param[in] listener The listener to be removed + * @endif + */ + void RemoveItemEventListener(Tizen::Ui::IItemEventListener& listener); + + /** + * @if OSPDEPREC + * Sets the background bitmap of the %IconList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @param[in] bitmap The background bitmap + * @endif + */ + void SetBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap); + + /** + * @if OSPDEPREC + * Sets the top and left margins of the items for %IconList. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return An error code + * @param[in] topMargin The top margin of the background bitmap + * @param[in] leftMargin The left margin of the background bitmap + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The %IconList cannot display more than 64 items on screen at once. + * @endif + */ + result SetMargin(int topMargin, int leftMargin); + + + /** + * @if OSPDEPREC + * Gets the top margin of the items for the %IconList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return The top margin of the background bitmap + * @endif + */ + int GetTopMargin(void) const; + + /** + * @if OSPDEPREC + * Gets the left margin of the items for the %IconList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return The left margin of the background bitmap + * @endif + */ + int GetLeftMargin(void) const; + + /** + * @if OSPDEPREC + * Adds a list item with the specified text and bitmap images to the %IconList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return An error code + * @param[in] pText The item text + * @param[in] pNormalBitmap The default bitmap image + * @param[in] pFocusedBitmap The displayed bitmap image when an item is selected + * @param[in] itemId The item ID + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The contents of the specified texts and bitmaps are copied and kept by %List. + * To display text in multi-lines or to denote the end of line, use '\\n'. + * @endif + */ + result AddItem(const Tizen::Base::String* pText, const Tizen::Graphics::Bitmap* pNormalBitmap, const Tizen::Graphics::Bitmap* pFocusedBitmap, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + + /** + * @if OSPDEPREC + * Inserts the specified text and bitmap item in the specified index of the specified %IconList. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return An error code + * @param[in] index The item text + * @param[in] pText The text item to be added + * @param[in] pNormalBitmap The default bitmap image + * @param[in] pFocusedBitmap The displayed bitmap image when an item is selected + * @param[in] itemId The item ID + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The contents of the specified texts and bitmaps are copied and kept by %IconList. + * To display text in multi-lines or to denote the end of line, use '\\n'. + * @endif + */ + result InsertItemAt(int index, const Tizen::Base::String* pText, const Tizen::Graphics::Bitmap* pNormalBitmap, const Tizen::Graphics::Bitmap* pFocusedBitmap, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + + /** + * @if OSPDEPREC + * Sets the specified text and bitmap item in the specified index of the specified %IconList. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the List item + * @param[in] pText The item text + * @param[in] pNormalBitmap The default bitmap image + * @param[in] pFocusedBitmap The displayed bitmap image when an item is selected + * @param[in] itemId The item ID + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The contents of the specified texts and bitmaps are copied and kept by %IconList. + * Call RefreshItem() to update item images. + * To display text in multi-lines or to denote the end of line, use '\\n'. + * @endif + */ + result SetItemAt(int index, const Tizen::Base::String* pText, const Tizen::Graphics::Bitmap* pNormalBitmap, const Tizen::Graphics::Bitmap* pFocusedBitmap, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + + /** + * @if OSPDEPREC + * Removes the item at the specified index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the %IconList item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result RemoveItemAt(int index); + + /** + * @if OSPDEPREC + * Removes all items of the %IconList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result RemoveAllItems(void); + + /** + * @if OSPDEPREC + * Gets the column count of the %IconList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return The count of all the items of the %IconList control + * @endif + */ + int GetColumnCount(void) const; + + /** + * @if OSPDEPREC + * Gets the item count of the %IconList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return The count of all the items of the %IconList control + * @endif + */ + int GetItemCount(void) const; + + /** + * @if OSPDEPREC + * Sets the checked status of the specified item of the %IconList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the %IconList item + * @param[in] check Set to @c true to check the specified item, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * + * @remarks This method can only be used when the style of the list allows selection (ICON_LIST_STYLE_MARK). + * @remarks The method only changes the state of the list item. %IconList needs to be redrawn to reflect the change on the screen. + * @endif + */ + result SetItemChecked(int index, bool check); + + /** + * @if OSPDEPREC + * Checks whether the specified item of the %IconList control is checked. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return @c true if the specified item is checked, @n + * else @c false + * @param[in] index The index of the list item + * @remarks This method can only be used when the style of the list allows selection. + * @endif + */ + bool IsItemChecked(int index) const; + + /** + * @if OSPDEPREC + * Sets the checked status of all the items of the %IconList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return An error code + * @param[in] check Set to @c true to check all the items, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method can only be used when the style of the list allows multiple selections (ICON_LIST_STYLE_MARK). + * @remarks The method only changes the states of the list items. %IconList needs to be redrawn to reflect the changes on the screen. + * @endif + */ + result SetAllItemsChecked(bool check); + + /** + * @if OSPDEPREC + * Removes all checked items of the %IconList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method can only be used when the style of the list allows multiple selections. + * @endif + */ + result RemoveAllCheckedItems(void); + + /** + * @if OSPDEPREC + * Gets the first checked items of the %IconList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return The index of the %IconList item + * @endif + */ + int GetFirstCheckedItemIndex(void) const; + + /** + * @if OSPDEPREC + * Gets the last checked items of the %IconList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return The index of the %IconList item + * @endif + */ + int GetLastCheckedItemIndex(void) const; + + /** + * @if OSPDEPREC + * Gets the next checked items at the specified index of the %IconList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return The index of the list item + * @param[in] index The index of the %IconList item + * @endif + */ + int GetNextCheckedItemIndexAfter(int index) const; + + /** + * @if OSPDEPREC + * Gets the index of the item at the specified item position. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return The index of the item, @n + * else @c -1 if there is no list item at the specified position + * @param[in] x The x position of the point + * @param[in] y The y position of the point + * @endif + */ + int GetItemIndexFromPosition(int x, int y) const; + + /** + * @if OSPDEPREC + * Gets the index of the item at the specified item position. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return The index of the item, @n + * else @c -1 if there is no list item at the specified position + * @param[in] position The position of the point + * @endif + */ + int GetItemIndexFromPosition(const Tizen::Graphics::Point& position) const; + + /** + * @if OSPDEPREC + * Sets a horizontal alignment of the text in the current %IconList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @param[in] alignment The horizontal alignment of the text + * @endif + */ + void SetTextHorizontalAlignment(HorizontalAlignment alignment); + + /** + * @if OSPDEPREC + * Sets a vertical alignment of the text of the current %IconList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @param[in] alignment The vertical alignment of the icon and text + * @endif + */ + void SetTextVerticalAlignment(VerticalAlignment alignment); + + /** + * @if OSPDEPREC + * Gets the horizontal alignment of the text of the current %IconList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return The horizontal alignment of the %IconList control + * @endif + */ + HorizontalAlignment GetTextHorizontalAlignment(void) const; + + /** + * @if OSPDEPREC + * Gets the vertical alignment of the text of the current %IconList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return The vertical alignment of the %IconList control + * @endif + */ + VerticalAlignment GetTextVerticalAlignment(void) const; + + /** + * @if OSPDEPREC + * Sets the background color of the %IconList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @param[in] color The background color + * @endif + */ + void SetBackgroundColor(const Tizen::Graphics::Color& color); + + /** + * @if OSPDEPREC + * Sets the text to display when the %IconList control contains no item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @param[in] text The text + * @endif + */ + void SetTextOfEmptyList(const Tizen::Base::String& text); + + /** + * @if OSPDEPREC + * Sets the color of the text that is displayed when the %IconList control contains no item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @param[in] color The color of the text + * @endif + */ + void SetTextColorOfEmptyList(const Tizen::Graphics::Color& color); + + + /** + * @if OSPDEPREC + * Gets the color of the text that is displayed when the %IconList control contains no item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return The color of the text, @n + * else RGBA(0, 0, 0, 0) if an error occurs + * @endif + */ + Tizen::Graphics::Color GetTextColorOfEmptyList(void) const; + + + /** + * @if OSPDEPREC + * Sets the text color of the item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @param[in] textColor The color of the text + * @endif + */ + void SetItemTextColor(const Tizen::Graphics::Color& textColor); + + /** + * @if OSPDEPREC + * Gets the text color of the item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return The color of the text, @n + * else RGBA(0, 0, 0, 0) if an error occurs + * @endif + */ + Tizen::Graphics::Color GetItemTextColor(void) const; + + + /** + * @if OSPDEPREC + * Sets the size of the text of the current %IconList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @param[in] size The size of the text + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks If @c size is less than the minimum size, this method fails. The minimum font size is 6 on devices of high screen density. + * @endif + */ + void SetTextSize(int size); + + + /** + * @if OSPDEPREC + * Gets the size of the text of the current %IconList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return The size of the text of the current %IconList control + * @endif + */ + int GetTextSize(void) const; + + /** + * @if OSPDEPREC + * Gets the index of the item with the specified item ID. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return The index of the item, @n + * else @c -1 if there is no list item with the specified item ID + * @param[in] itemId The item ID of the list item + * @endif + */ + int GetItemIndexFromItemId(int itemId) const; + + /** + * @if OSPDEPREC + * Gets the item ID of the item at the specified index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return The item ID of the item, @n + * else @c -1 if there is no list item at the specified index + * @param[in] index The index of the list item + * @endif + */ + int GetItemIdAt(int index) const; + + /** + * @if OSPDEPREC + * Sets the position of the checkbox of the current %IconList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @param[in] position The position of the checkbox of the current %IconList control + * @remarks This method changes the position of the checkbox image displayed for the "selected" item(s), when the style of %IconList is either + * ICON_LIST_STYLE_RADIO or ICON_LIST_STYLE_MARK. + * @endif + */ + void SetCheckBoxPosition(IconListCheckBoxPosition position); + + /** + * @if OSPDEPREC + * Gets the position of the checkbox of the current %IconList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return The position of the checkbox of the current %IconList control + * @endif + */ + IconListCheckBoxPosition GetCheckBoxPosition(void) const; + + /** + * @if OSPDEPREC + * Enables or disables focus animation. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @param[in] enable Set to @c true to enable focus animation, @n + * else @c false + * @remarks If a separate Focused Bitmap is to be used, the animation effect must be disabled. + * @endif + */ + void SetFocusAnimationEnabled(bool enable); + + /** + * @if OSPDEPREC + * Scrolls to the bottom of the %IconList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * @endif + */ + void ScrollToBottom(void); + + /** + * @if OSPDEPREC + * Scrolls to the top of the %IconList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * @endif + */ + void ScrollToTop(void); + + /** + * @if OSPDEPREC + * Scrolls the specified item to the top of %IconList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return An error code + * @param[in] itemIndex The index of the item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @endif + */ + result ScrollToTop(int itemIndex); + + /** + * @if OSPDEPREC + * Draws and shows the item of %IconList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IconListView class. + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the %IconList item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @endif + */ + result RefreshItem(int index); + +public: + friend class _IconListImpl; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + IconList(const IconList& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + IconList& operator =(const IconList& rhs); +}; //IconList + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_ICON_LIST_H_ diff --git a/inc/FUiCtrlIconListTypes.h b/inc/FUiCtrlIconListTypes.h new file mode 100644 index 0000000..63ece76 --- /dev/null +++ b/inc/FUiCtrlIconListTypes.h @@ -0,0 +1,71 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlIconListTypes.h + * @brief This is the header file for the %IconList enumerations. + * + * This header file contains the declarations of the %IconList enumerations. + * + * These enumerations define the various properties of the %IconList control. + */ + +#ifndef _FUI_CTRL_ICON_LIST_TYPES_H_ +#define _FUI_CTRL_ICON_LIST_TYPES_H_ + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @if OSPDEPREC + * @enum IconListStyle + * + * Defines the styles of %IconList. + * + * @brief [Deprecated] + * @deprecated This enumeration is deprecated. Instead of using this enumeration, use the IconListViewStyle enumeration. + * @since 2.0 + * @endif + */ +enum IconListStyle +{ + ICON_LIST_STYLE_NORMAL = 0, /**< @if OSPDEPREC The No mark or radio check @endif */ + ICON_LIST_STYLE_RADIO, /**< @if OSPDEPREC The radio style for single selection @endif */ + ICON_LIST_STYLE_MARK, /**< @if OSPDEPREC The mark style for multiple selection @endif */ +}; + +/** + * @if OSPDEPREC + * @enum IconListCheckBoxPosition + * + * Defines the check-box position. + * + * @brief [Deprecated] + * @deprecated This enumeration is deprecated. Instead of using this enumeration, use the IconListViewCheckBoxPosition enumeration. + * @since 2.0 + * @endif + */ +enum IconListCheckBoxPosition +{ + ICON_LIST_CHECK_BOX_POSITION_TOP_LEFT, /**< @if OSPDEPREC The position of checkbox is top-left @endif */ + ICON_LIST_CHECK_BOX_POSITION_TOP_RIGHT, /**< @if OSPDEPREC The position of checkbox is top-right @endif */ + ICON_LIST_CHECK_BOX_POSITION_BOTTOM_LEFT, /**< @if OSPDEPREC The position of checkbox is bottom-left @endif */ + ICON_LIST_CHECK_BOX_POSITION_BOTTOM_RIGHT /**< @if OSPDEPREC The position of checkbox is bottom-right @endif */ +}; + +}}} // Tizen::Ui::Controls + +#endif //_FUI_CTRL_ICON_LIST_TYPES_H_ diff --git a/inc/FUiCtrlIconListView.h b/inc/FUiCtrlIconListView.h new file mode 100644 index 0000000..86d55f5 --- /dev/null +++ b/inc/FUiCtrlIconListView.h @@ -0,0 +1,924 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlIconListView.h + * @brief This is the header file for the %IconListView class. + * + * This header file contains the declarations of the %IconListView class and its helper classes. + */ + +#ifndef _FUI_CTRL_ICON_LIST_VIEW_H_ +#define _FUI_CTRL_ICON_LIST_VIEW_H_ + +//Includes +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @class IconListView + * @brief This class defines the common behavior for a %IconListView control. + * + * @since 2.0 + * + * The %IconListView class displays a 2-dimentional list of bitmap images and icons. + * + * For more information on the class features, see ListViews. + * + * The following example demonstrates how to use the %IconListView class. + * + * @code +//Sample code for IconListViewSample.h +#include + +class IconListViewSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::Controls::IIconListViewItemProvider + , public Tizen::Ui::Controls::IIconListViewItemEventListener +{ +public: + IconListViewSample(void) + : __pIconListView(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + virtual result OnTerminating(void); + + // IIconListViewItemEventListener + virtual void OnIconListViewItemStateChanged(Tizen::Ui::Controls::IconListView &view, int index, Tizen::Ui::Controls::IconListViewItemStatus status); + + //IIconListViewItemProvider + virtual Tizen::Ui::Controls::IconListViewItem* CreateItem(int index); + virtual bool DeleteItem(int index, Tizen::Ui::Controls::IconListViewItem* pItem); + virtual int GetItemCount(void); + +private: + Tizen::Graphics::Bitmap* __pHome; + Tizen::Graphics::Bitmap* __pMsg; + Tizen::Graphics::Bitmap* __pAlarm; + + Tizen::Ui::Controls::IconListView* __pIconListView; +}; + * @endcode + * + * @code +//Sample code for IconListViewSample.cpp +#include +#include + +#include "IconListViewSample.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::Graphics; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; + +bool +IconListViewSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +IconListViewSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of IconListView + __pIconListView = new IconListView(); + __pIconListView->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height), + Dimension(100, 100), ICON_LIST_VIEW_STYLE_NORMAL, ICON_LIST_VIEW_SCROLL_DIRECTION_VERTICAL); + __pIconListView->SetItemProvider(*this); + __pIconListView->AddIconListViewItemEventListener(*this); + + // Adds the icon list view to the form + AddControl(*__pIconListView); + + // Gets instances of Bitmap + AppResource* pAppResource = Application::GetInstance()->GetAppResource(); + __pHome = pAppResource->GetBitmapN(L"home.png"); + __pMsg = pAppResource->GetBitmapN(L"message.png"); + __pAlarm = pAppResource->GetBitmapN(L"alarm.png"); + + return r; +} + +result +IconListViewSample::OnTerminating(void) +{ + result r = E_SUCCESS; + + // Deallocates bitmaps + delete __pHome; + delete __pMsg; + delete __pAlarm; + + return r; +} + +int +IconListViewSample::GetItemCount(void) +{ + return 3; +} + +IconListViewItem* +IconListViewSample::CreateItem(int index) +{ + // Creates an instance of IconListViewItem + IconListViewItem* pIconListview = new IconListViewItem(); + + // Creates an instance of String + String* pStr = new String(); + + switch (index % 3) + { + case 0: + { + *pStr = L"Home"; + pIconListview->Construct(*__pHome, pStr); + } + break; + case 1: + { + *pStr = L"Msg"; + pIconListview->Construct(*__pMsg, pStr); + } + break; + case 2: + { + *pStr = L"Alarm"; + pIconListview->Construct(*__pAlarm, pStr); + } + break; + } + + // Deallocates the string + delete pStr; + + return pIconListview; +} + +bool +IconListViewSample::DeleteItem(int index, IconListViewItem* pItem) +{ + delete pItem; + return true; +} + +void +IconListViewSample::OnIconListViewItemStateChanged (IconListView &view, int index, IconListViewItemStatus status) +{ + switch (index) + { + case 0: + { + // .... + } + break; + case 1: + { + // .... + } + break; + default: + break; + } +} + * @endcode + * + */ +class _OSP_EXPORT_ IconListView + : public Tizen::Ui::Control +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + IconListView(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~IconListView(void); + +public: + /** + * Initializes this instance of %IconListView with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect An instance of the Graphics::Rectangle class @n + * This instance represents the x and y coordinates of the top-left corner of the created %IconListView along with + * the width and height. + * @param[in] itemBitmapSize The size of an icon in the %IconListView + * @param[in] style The style set of %IconListView + * @param[in] direction The direction of scroll + * @param[in] scrollStyle The scroll style of %IconListView + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks A control is fully usable only after it has been added to a container, therefore some methods may fail if used earlier. + * @remarks The number of items to be displayed on a screen is calculated based on %IconListView size, item size, item spacing, and margins. @n + * The %IconListView cannot display more than 256 items on the screen at once. + * @remarks The actual size of bitmap to be displayed in %IconListView is smaller than the specified size when the border style is ICON_LIST_VIEW_ITEM_BORDER_STYLE_SHADOW. + */ + result Construct(const Tizen::Graphics::Rectangle& rect, const Tizen::Graphics::Dimension& itemBitmapSize, IconListViewStyle style = ICON_LIST_VIEW_STYLE_NORMAL, IconListViewScrollDirection direction = ICON_LIST_VIEW_SCROLL_DIRECTION_VERTICAL, IconListViewScrollStyle scrollStyle = ICON_LIST_SCROLL_STYLE_FADE_OUT); + + /** + * Sets the item provider that creates and deletes items for the %IconListView control. + * + * @since 2.0 + * + * @return An error code + * @param[in] provider The item provider to create and delete items + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks If an item provider is not set for the %IconListView, it does not work. @n + * The specified @c provider should be allocated in heap memory. + */ + result SetItemProvider(IIconListViewItemProvider& provider); + + /** + * Adds a listener instance. @n + * The added listener can listen to item events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to be added + */ + void AddIconListViewItemEventListener(IIconListViewItemEventListener& listener); + + /** + * Removes a listener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to be removed + */ + void RemoveIconListViewItemEventListener(IIconListViewItemEventListener& listener); + + /** + * Adds a listener instance that listens to state changes of a scroll event. @n + * The added listener can listen to events on the context of the given event dispatcher when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @see IScrollEventListener::OnScrollEndReached() + * @see RemoveScrollEventListener() + */ + void AddScrollEventListener(IScrollEventListener& listener); + + /** + * Removes a listener instance that listens to state changes of a scroll event. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @see IScrollEventListener::OnScrollEndReached() + * @see RemoveScrollEventListener() + */ + void RemoveScrollEventListener(IScrollEventListener& listener); + + /** + * Sets the background bitmap of the %IconListView. + * + * @since 2.0 + * + * @param[in] pBitmap The background bitmap + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks When @c pBitmap is null, %IconListView does not have a background bitmap. The default value for the background bitmap is @c null. + * @remarks The background bitmap has priority over the background color. When both the background bitmap and the background color are specified, + * only the bitmap is displayed. + */ + result SetBackgroundBitmap(const Tizen::Graphics::Bitmap* pBitmap); + + /** + * Sets the background color of this control. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The background color + * @exception E_SUCCESS The method is successful. + * @remarks The method sets the alpha value of the specified color to 255, when a device does not support 32 bit color space. + * @remarks The background bitmap has priority over the background color. When both the background bitmap and the background color are specified, + * only the bitmap is displayed. + */ + result SetBackgroundColor(const Tizen::Graphics::Color& color); + + /** + * Gets the background color of this control. + * + * @since 2.0 + * + * @return The background color, @n + * else RGBA(0, 0, 0, 0) if an error occurs + */ + Tizen::Graphics::Color GetBackgroundColor(void) const; + + /** + * Sets the margin of %IconListView. + * + * @since 2.0 + * + * @return An error code + * @param[in] type The type of margin + * @param[in] value The marginal value + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks The number of items to be displayed on a screen is calculated based on %IconListView size, item size, item spacing, and + * margins. The %IconListView cannot display more than 256 items on screen at once. + */ + result SetMargin(MarginType type, int value); + + /** + * Gets the margin of %IconListView. + * + * @since 2.0 + * + * @return The marginal value of %IconListView, @n + * else @c -1 if an error occurs + * @param[in] type The type of margin + */ + int GetMargin(MarginType type) const; + + /** + * Sets the horizontal and vertical spacing between the items. + * + * @since 2.0 + * + * @return An error code + * @param[in] horizontalSpacing The spacing between items in horizontal direction + * @param[in] verticalSpacing The spacing between items in vertical direction + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks The number of items to be displayed on a screen is calculated based on %IconListView size, item size, item spacing, and + * margins. The %IconListView cannot display more than 256 items on screen at once. + */ + result SetItemSpacing(int horizontalSpacing, int verticalSpacing); + + /** + * Gets the horizontal spacing between items of %IconListView. + * + * @since 2.0 + * + * @return The value of space between items in horizontal direction, @n + * else @c -1 if an error occurs + */ + int GetItemHorizontalSpacing(void) const; + + /** + * Gets the vertical spacing between items of %IconListView. + * + * @since 2.0 + * + * @return The value of space between items in vertical direction, @n + * else @c -1 if an error occurs + */ + int GetItemVerticalSpacing(void) const; + + /** + * Sets the checked status of the specified item of %IconListView. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the %IconListView item + * @param[in] check The check status + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @exception E_OUT_OF_RANGE The specified @c index is out of range. + * @remarks This method can only be used when the style of the list allows selection. + * @remarks The method only changes the state of the list item. %IconListView needs to be redrawn to reflect the change on the screen. + */ + result SetItemChecked(int index, bool check); + + /** + * Checks whether the specified item is checked. + * + * @since 2.0 + * + * @return @c true if the specified item is checked, @n + * else @c false + * @param[in] index The index of the item + * @remarks This method can only be used when the style of the list allows selection. + */ + bool IsItemChecked(int index) const; + + /** + * Gets the index of the item at the specified position. + * + * @since 2.0 + * + * @return The index of the item, @n + * else @c -1 when there is no list item at the specified position or when the %IconListView instance is invalid + * @param[in] x The x position of a point + * @param[in] y The y position of a point + */ + int GetItemIndexFromPosition(int x, int y) const; + + /** + * Gets the index of the item at the specified position. + * + * @since 2.0 + * + * @return The index of the item, @n + * else @c -1 if there is no list item at the specified position or when the %IconListView instance is invalid + * @param[in] position The position of a point + */ + int GetItemIndexFromPosition(const Tizen::Graphics::Point& position) const; + + /** + * Sets the horizontal alignment of the text of an item. + * + * @since 2.0 + * + * @return An error code + * @param[in] alignment The horizontal alignment of the text + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetTextHorizontalAlignment(HorizontalAlignment alignment); + + /** + * Sets the vertical alignment of the text of an item. + * + * @since 2.0 + * + * @return An error code + * @param[in] alignment The vertical alignment of the text + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetTextVerticalAlignment(IconListViewItemTextVerticalAlignment alignment); + + /** + * Gets the horizontal alignment of the text of the %IconListView control. + * + * @since 2.0 + * + * @return The horizontal alignment of the text, @n + * else ALIGNMENT_LEFT when the %IconListView instance is invalid + */ + HorizontalAlignment GetTextHorizontalAlignment(void) const; + + /** + * Gets the vertical alignment of the text of the current %IconListView. + * + * @since 2.0 + * + * @return The vertical alignment of the text of an item, @n + * else ICON_LIST_VIEW_ITEM_TEXT_VERTICAL_ALIGNMENT_INSIDE_TOP when the %IconListView is invalid + */ + IconListViewItemTextVerticalAlignment GetTextVerticalAlignment(void) const; + + /** + * Sets the text of the empty list. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text of the empty list + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetTextOfEmptyList(const Tizen::Base::String& text); + + /** + * Gets the text to display when there is no item in the list. + * + * @since 2.0 + * + * @return The text to be displayed, @n + * else an empty string if the instance is invalid + */ + Tizen::Base::String GetTextOfEmptyList(void) const; + + /** + * Sets the color of the text that is displayed when %IconListView contains no item. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The color of the text + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetTextColorOfEmptyList(const Tizen::Graphics::Color& color); + + /** + * Gets the color of the text to display when there is no item in the list. + * + * @since 2.0 + * + * @return The color of the text to be displayed, @n + * else RGBA(0, 0, 0, 0) if the instance is invalid + */ + Tizen::Graphics::Color GetTextColorOfEmptyList(void) const; + + /** + * Sets the text color of the item. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The drawing status of items + * @param[in] color The color of the text + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetItemTextColor(IconListViewItemDrawingStatus status, const Tizen::Graphics::Color& color); + + /** + * Gets the text color of the item. + * + * @since 2.0 + * + * @return The color of the text, @n + * else RGBA(0, 0, 0, 0) if the instance is invalid + * @param[in] status The drawing status of items + */ + Tizen::Graphics::Color GetItemTextColor(IconListViewItemDrawingStatus status) const; + + /** + * Sets the size of the text of the %IconListView control. + * + * @since 2.0 + * + * @return An error code + * @param[in] size The size of the text + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks If the specified @c size is less than the minimum size, this method fails. The minimum font size is @c 6 on devices of high screen density. + */ + result SetItemTextSize(int size); + + /** + * Gets the size of the text of the %IconListView control. + * + * @since 2.0 + * + * @return The size of the text of the %IconListView control, @n + * else @c -1 if the instance is invalid + */ + int GetItemTextSize(void) const; + + /** + * Sets the position of the checkbox of the %IconListView control. + * + * @since 2.0 + * + * @return An error code + * @param[in] position The position of the checkbox of the %IconListView + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * That is, %IconListView cannot get the position of the checkbox when the style is ICON_LIST_VIEW_STYLE_NORMAL. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method changes the position of the checkbox image displayed for the "selected" item(s), + * when the style of %IconListView is either ICON_LIST_VIEW_STYLE_RADIO and ICON_LIST_VIEW_STYLE_MARK. + */ + result SetCheckBoxPosition(IconListViewCheckBoxPosition position); + + /** + * Gets the position of the checkbox of the %IconListView control. + * + * @since 2.0 + * + * @return The position of the checkbox + * @remarks The method returns @c ICON_LIST_VIEW_CHECK_BOX_POSITION_TOP_LEFT when the style of %IconListView is ICON_LIST_VIEW_STYLE_NORMAL or + * ICON_LIST_VIEW_STYLE_DIVIDE_TEXT. + */ + IconListViewCheckBoxPosition GetCheckBoxPosition(void) const; + + /** + * Enables or disables touch animation. + * + * @since 2.0 + * + * @return An error code + * @param[in] enable Set to @c true to enable touch animation, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks If you want to use a separate selected bitmap, the animation effect must be disabled. + * @remarks In case that a touch animation disabled, the normal bitmap of %IconListViewItem is displayed in response to touch interaction if the + * selected bitmap of %IconListViewItem is @c null. + */ + result SetTouchAnimationEnabled(bool enable); + + /** + * Checks whether touch animation is enabled. + * + * @since 2.0 + * + * @return @c true if touch animation is enabled, @n + * else @c false if touch animation is disabled or when the instance is invalid + */ + bool IsTouchAnimationEnabled(void) const; + + /** + * Scrolls the list contents to the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @exception E_OUT_OF_RANGE The specified @c index is out of range. + */ + result ScrollToItem(int index); + + /** + * Refreshes the specified item of %IconListView. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the %IconListView item + * @param[in] type The type of change of an item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * That is, %IconListView cannot execute RefreshList() before first drawn. + * @exception E_SYSTEM A system error has occurred. + * @exception E_OUT_OF_RANGE The specified @c index is out of range. + */ + result RefreshList(int index, ListRefreshType type); + + /** + * Updates the whole items of a list. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method clears items in the list and re-invokes the methods of the item provider to fill the list. + */ + result UpdateList(void); + + /** + * Gets the size of bitmap of the item. + * + * @since 2.0 + * + * @return An error code + * @param[out] width The width of bitmap of the item + * @param[out] height The height of bitmap of the item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This instance is in an invalid state. + */ + result GetItemBitmapSize(int& width, int& height) const; + + /** + * Gets the size of bitmap of the item. + * + * @since 2.0 + * + * @return The size of bitmap of the item, @n + * else (-1, -1) if the instance is invalid + */ + Tizen::Graphics::Dimension GetItemBitmapSize(void) const; + + /** + * Gets the size of the item. + * + * @since 2.0 + * + * @return An error code + * @param[out] width The width of the item + * @param[out] height The height of the item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This instance is in an invalid state. + */ + result GetItemSize(int& width, int& height) const; + + /** + * Gets the size of the item. + * + * @since 2.0 + * + * @return The size of the item, @n + * else (-1, -1) if the instance is invalid + */ + Tizen::Graphics::Dimension GetItemSize(void) const; + + /** + * Sets the number of item lines to be scrolled for the magnetic scroll of %IconListView. + * + * @since 2.0 + * + * @return An error code + * @param[in] scrollSize The number of item lines for the magnetic scroll of %IconListView + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c scrollSize is out of range. @n + * The specified @c scrollSize is less than @c 0 or greater than the item count shown along the scroll direction. + * @exception E_SYSTEM A system error has occurred. + * @remarks If the @c scrollSize is set to @c 0, %IconListView does not use the magnetic scroll. The initial value is @c 0. + */ + result SetMagneticScrollSize(int scrollSize); + + /** + * Gets the number of item lines for the magnetic scroll of %IconListView. + * + * @since 2.0 + * + * @return The number of item lines for the magnetic scroll of %IconListView, @n + * else @c -1 when the instance is invalid + */ + int GetMagneticScrollSize(void) const; + + /** + * Gets the number of items to be displayed per axis of %IconListView. + * + * @since 2.0 + * + * @return The number of items to be displayed per axis, @n + * else @c -1 if the instance is invalid + * @remarks The axis represents "row" when the scroll style is ICON_LIST_VIEW_SCROLLSDIRECTION_HORIZONTAL, while it represents "column" when the + * scroll style is ICON_LIST_VIEW_SCROLLDIRECTION_VERTICAL. + */ + int GetItemCountPerAxis(void) const; + + /** + * Sets the items horizontal alignment of %IconListView. + * + * @since 2.0 + * + * @return An error code + * @param[in] alignment The alignment of items + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The alignment of icon list view is not in the vertical scroll direction. + * @exception E_SYSTEM A system error has occurred. + */ + result SetItemLayoutHorizontalAlignment(HorizontalAlignment alignment); + + /** + * Sets the items vertical alignment of %IconListView. + * + * @since 2.0 + * + * @return An error code + * @param[in] alignment The alignment of items + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The alignment of icon list view is not in the horizontal scroll direction. + * @exception E_SYSTEM A system error has occurred. + */ + result SetItemLayoutVerticalAlignment(VerticalAlignment alignment); + + /** + * Gets the items horizontal alignment of %IconListView. + * + * @since 2.0 + * + * @return The alignment of items, @n + * else @c ALIGNMENT_LEFT if the instance is invalid + */ + HorizontalAlignment GetItemLayoutHorizontalAlignment(void) const; + + /** + * Gets the items vertical alignment of %IconListView. + * + * @since 2.0 + * + * @return The alignment of items, @n + * else @c ALIGNMENT_TOP if the instance is invalid + */ + VerticalAlignment GetItemLayoutVerticalAlignment(void) const; + + /** + * Sets the item border style. + * + * @since 2.0 + * + * @return An error code + * @param[in] borderStyle An item border style + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetItemBorderStyle(IconListViewItemBorderStyle borderStyle); + + /** + * Gets the item border style. + * + * @since 2.0 + * + * @return The item border style, @n + * else @c ICON_LIST_VIEW_ITEM_BORDER_STYLE_NONE if an error occurs + */ + IconListViewItemBorderStyle GetItemBorderStyle(void) const; + + /** + * Sets the bitmap of the empty list. + * + * @since 2.0 + * + * @return An error code + * @param[in] pBitmap The bitmap of the empty list + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetBitmapOfEmptyList(const Tizen::Graphics::Bitmap* pBitmap); + + /** + * Begins the reordering mode. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see IIconListViewItemEventListener::OnIconListViewItemReordered() + */ + result BeginReorderingMode(void); + + /** + * Ends the reordering mode. + * + * @since 2.0 + * + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see IIconListViewItemEventListener::OnIconListViewItemReordered() + */ + result EndReorderingMode(void); + + /** + * Checks whether the %IconListView is in reordering mode. + * + * @since 2.0 + * + * @return @c true if the %IconListView is in reordering mode, @n + * else @c false + */ + bool IsInReorderingMode(void) const; + +public: + friend class _IconListViewImpl; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + // @since 2.0 + // + IconListView(const IconListView& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + // @since 2.0 + // + IconListView& operator =(const IconListView& rhs); + +}; // IconListView + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_ICON_LIST_VIEW_H_ diff --git a/inc/FUiCtrlIconListViewItem.h b/inc/FUiCtrlIconListViewItem.h new file mode 100644 index 0000000..01d13f2 --- /dev/null +++ b/inc/FUiCtrlIconListViewItem.h @@ -0,0 +1,122 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlIconListViewItem.h + * @brief This is the header file for the %IconListViewItem class. + * + * This header file contains the declarations of the %IconListViewItem class and its helper classes. + */ + +#ifndef _FUI_CTRL_ICON_LIST_VIEW_ITEM_H_ +#define _FUI_CTRL_ICON_LIST_VIEW_ITEM_H_ + +//includes +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +class IconListView; +class _IconListItemProviderAdaptor; +class _IconListViewItemImpl; + +/** + * @class IconListViewItem + * @brief This class defines the common behavior of a %IconListViewItem control. + * + * @since 2.0 + * + * The %IconListViewItem class displays an IconListView item. It comprises of bitmap images and text. The value is set using the IconListView control. + * @n + * For more information on the class features, see ListViews. + */ +class _OSP_EXPORT_ IconListViewItem + : public Tizen::Base::Object +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + IconListViewItem(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~IconListViewItem(void); + +public: + /** + * Initializes this instance of %IconListViewItem with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] bitmap The default bitmap image + * @param[in] pText The item text + * @param[in] pSelectedBitmap The displayed bitmap image when an item is selected + * @param[in] pHighlightedBitmap The displayed bitmap image when an item is highlighted + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks If @c pSelectedBitmap or @c pHighlightedBitmap is @c null, @c bitmap plays its role. + */ + result Construct(const Tizen::Graphics::Bitmap& bitmap, const Tizen::Base::String* pText = null, const Tizen::Graphics::Bitmap* pSelectedBitmap = null, const Tizen::Graphics::Bitmap* pHighlightedBitmap = null); + + /** + * Sets the overlay bitmap image as an element to the item. + * + * @since 2.0 + * + * @return An error code + * @param[in] overlayBitmapId The overlay bitmap ID + * @param[in] pOverlayBitmap The pointer of the overlay bitmap image + * @param[in] horizontalAlignment The horizontal alignment of overlay bitmap. + * @param[in] verticalAlignment The vertical alignment of overlay bitmap. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks When @c pOverlayBitmap is set as @c null, The overlay bitmap of the specified location will be erased. + */ + result SetOverlayBitmap(int overlayBitmapId, const Tizen::Graphics::Bitmap* pOverlayBitmap, HorizontalAlignment horizontalAlignment, VerticalAlignment verticalAlignment); + +private: + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + IconListViewItem(const IconListViewItem& rhs); + + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + IconListViewItem& operator =(const IconListViewItem& rhs); + +private: + friend class IconListView; + friend class _IconListItemProviderAdaptor; + friend class _IconListViewItemImpl; + + // This value is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + _IconListViewItemImpl* __pImpl; +}; //IconListViewItem + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_ICON_LIST_VIEW_ITEM_H_ diff --git a/inc/FUiCtrlIconListViewTypes.h b/inc/FUiCtrlIconListViewTypes.h new file mode 100644 index 0000000..daf5405 --- /dev/null +++ b/inc/FUiCtrlIconListViewTypes.h @@ -0,0 +1,151 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlIconListViewTypes.h + * @brief This is the header file for the %IconListView enumerations. + * + * This header file contains the declarations of the %IconListView enumerations. + * + * These enumerations define the various properties of the %IconListView control. + */ + +#ifndef _FUI_CTRL_ICON_LIST_VIEW_TYPES_H_ +#define _FUI_CTRL_ICON_LIST_VIEW_TYPES_H_ + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @enum IconListViewStyle + * + * Defines the styles of the %IconListView control. + * + * @since 2.0 + */ +enum IconListViewStyle +{ + ICON_LIST_VIEW_STYLE_NORMAL = 0, /**< The No mark or radio check */ + ICON_LIST_VIEW_STYLE_RADIO, /**< The radio style for a single selection */ + ICON_LIST_VIEW_STYLE_MARK /**< The mark style for multiple selections */ +}; + +/** + * @enum IconListViewItemBorderStyle + * + * Defines the constants used to identify the border style of the item. + * + * @since 2.0 + */ +enum IconListViewItemBorderStyle +{ + ICON_LIST_VIEW_ITEM_BORDER_STYLE_NONE = 0, /**< The item that has no border */ + ICON_LIST_VIEW_ITEM_BORDER_STYLE_OUTLINE, /**< The item that has a line border */ + ICON_LIST_VIEW_ITEM_BORDER_STYLE_SHADOW /**< The item that has a bitmap border with the drop shadow effect */ +}; + +/** + * @enum IconListViewScrollDirection + * + * Defines the scroll direction of the %IconListView control. + * + * @since 2.0 + */ +enum IconListViewScrollDirection +{ + ICON_LIST_VIEW_SCROLL_DIRECTION_VERTICAL, /**< The vertical direction */ + ICON_LIST_VIEW_SCROLL_DIRECTION_HORIZONTAL /**< The horizontal direction */ +}; + +/** + * @enum IconListViewItemTextVerticalAlignment + * + * Defines the vertical alignment of the item text. + * + * @since 2.0 + */ +enum IconListViewItemTextVerticalAlignment +{ + ICON_LIST_VIEW_ITEM_TEXT_VERTICAL_ALIGNMENT_INSIDE_TOP, /**< The text is top-aligned inside the item */ + ICON_LIST_VIEW_ITEM_TEXT_VERTICAL_ALIGNMENT_INSIDE_MIDDLE, /**< The text is middle-aligned inside the item */ + ICON_LIST_VIEW_ITEM_TEXT_VERTICAL_ALIGNMENT_INSIDE_BOTTOM, /**< The text is bottom-aligned inside the item */ + ICON_LIST_VIEW_ITEM_TEXT_VERTICAL_ALIGNMENT_OUTSIDE_TOP, /**< The text is top-aligned outside the item */ + ICON_LIST_VIEW_ITEM_TEXT_VERTICAL_ALIGNMENT_OUTSIDE_BOTTOM /**< The text is bottom-aligned outside the item */ +}; + +/** + * @enum IconListViewItemStatus + * + * Defines the constants used to identify the item state. + * + * @since 2.0 + */ +enum IconListViewItemStatus +{ + ICON_LIST_VIEW_ITEM_CHECKED = 0, /**< The item has been checked (toggle of the check area) */ + ICON_LIST_VIEW_ITEM_UNCHECKED, /**< The item has been unchecked (toggle of the check area) */ + ICON_LIST_VIEW_ITEM_SELECTED, /**< The item has been selected (non-check area of the item) */ + ICON_LIST_VIEW_ITEM_HIGHLIGHTED /**< The item has been highlighted (non-check area of the item) */ +}; + +/** + * @enum IconListViewItemDrawingStatus + * + * Defines the drawing state of the %IconListView control items. + * + * @since 2.0 + */ +enum IconListViewItemDrawingStatus +{ + ICON_LIST_VIEW_ITEM_DRAWING_STATUS_NORMAL = 0, /**< The drawing status for normal items */ + ICON_LIST_VIEW_ITEM_DRAWING_STATUS_PRESSED, /**< The drawing status for pressed items */ + ICON_LIST_VIEW_ITEM_DRAWING_STATUS_HIGHLIGHTED /**< The drawing status for highlighted items */ +}; + +/** + * @enum IconListViewCheckBoxPosition + * + * Defines the checkbox position. + * + * @since 2.0 + */ +enum IconListViewCheckBoxPosition +{ + ICON_LIST_VIEW_CHECK_BOX_POSITION_TOP_LEFT, /**< The position of the checkbox is top-left */ + ICON_LIST_VIEW_CHECK_BOX_POSITION_TOP_RIGHT, /**< The position of the checkbox is top-right */ + ICON_LIST_VIEW_CHECK_BOX_POSITION_BOTTOM_LEFT, /**< The position of the checkbox is bottom-left */ + ICON_LIST_VIEW_CHECK_BOX_POSITION_BOTTOM_RIGHT /**< The position of the checkbox is bottom-right */ +}; + +/** + * @enum IconListViewScrollStyle + * + * Defines the scroll style of the %IconListView control. + * + * @since 2.0 + */ +enum IconListViewScrollStyle +{ + ICON_LIST_SCROLL_STYLE_FADE_OUT = 0, /**< The fade-out scroll style */ + ICON_LIST_SCROLL_STYLE_FIXED, /**< The fixed scroll style */ + ICON_LIST_SCROLL_STYLE_JUMP_TO_TOP, /**< The jump to top scroll style */ + ICON_LIST_SCROLL_STYLE_THUMB /**< The thumb scroll style */ +}; + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_ICON_LIST_VIEW_TYPES_H_ diff --git a/inc/FUiCtrlInputTypes.h b/inc/FUiCtrlInputTypes.h new file mode 100644 index 0000000..b877a7f --- /dev/null +++ b/inc/FUiCtrlInputTypes.h @@ -0,0 +1,45 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlInputTypes.h + * @brief This is the header file for the input property. + * + * This header file contains the declarations of the input enumeration. + */ +#ifndef _FUI_CTRL_INPUT_ENUM_H_ +#define _FUI_CTRL_INPUT_ENUM_H_ + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @enum InputStyle + * + * Defines the input style. + * + * @since 2.0 + */ +enum InputStyle +{ + INPUT_STYLE_FULLSCREEN = 0, /**< The full screen input mode */ + INPUT_STYLE_OVERLAY /**< The overlay input mode */ +}; + +}; +}; +}; // Tizen::Ui::Controls +#endif // _FUI_CTRL_INPUT_ENUM_H_ diff --git a/inc/FUiCtrlKeypad.h b/inc/FUiCtrlKeypad.h new file mode 100644 index 0000000..347c9cc --- /dev/null +++ b/inc/FUiCtrlKeypad.h @@ -0,0 +1,354 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlKeypad.h + * @brief This is the header file for the %Keypad class. + * + * This header file contains the declarations of the %Keypad class. + */ + +#ifndef _FUI_CTRL_KEYPAD_H_ +#define _FUI_CTRL_KEYPAD_H_ + +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @if OSPDEPREC + * @enum KeypadInputModeCategory + * + * Defines the keypad input mode. + * + * @brief [Deprecated] + * @deprecated We no longer provide a method to specify the list of styles which the user can set the keypad to, @n + * or the current mode to initially set the keypad to, from this list. It is recommended to use the styles offered KeypadStyle enumeration instead. + * @since 2.0 + * @endif + */ +enum KeypadInputModeCategory +{ + KEYPAD_MODE_ALPHA = 0x0001, /**< @if OSPDEPREC The alphabetic input mode @endif */ + KEYPAD_MODE_PREDICTIVE = 0x0002, /**< @if OSPDEPREC The predictive input mode @endif*/ + KEYPAD_MODE_NUMERIC = 0x0004, /**< @if OSPDEPREC The numeric input mode @endif */ + KEYPAD_MODE_SYMBOL = 0x0008 /**< @if OSPDEPREC The symbolic input mode @endif */ +}; + +/** + * @class Keypad + * @brief This class displays a keypad on top of the screen. + * + * @since 2.0 + * + * The %Keypad class displays the full screen keypad without using an EditField or EditArea. + * + * For more information on the class features, see Keypad. + * + * The following example demonstrates how to use the %Keypad class. + * + * @code +// Sample code for KeypadSample.h +#include + +class KeypadSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IActionEventListener + , public Tizen::Ui::ITextEventListener +{ +public: + KeypadSample(void) + : __pKeypad(null){} + + bool Initialize(void); + void ShowKeypad(bool show); + virtual result OnInitializing(void); + virtual result OnTerminating(void); + + // IActionEventListener + virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId); + + // ITextEventListener + virtual void OnTextValueChanged(const Tizen::Ui::Control& source); + virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source); + + +private: + static const int ID_BUTTON = 101; + + Tizen::Ui::Controls::Keypad *__pKeypad; +}; + +// Sample code for KeypadSample.cpp +#include "KeypadSample.h" + +using namespace Tizen::Graphics; +using namespace Tizen::Ui::Controls; + +bool +KeypadSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +KeypadSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of Button and adds it to the form + Button* pButton = new Button(); + pButton->Construct(Rectangle(50, 50, 150, 150), L"Show Keypad"); + pButton->SetActionId(ID_BUTTON); + pButton->AddActionEventListener(*this); + AddControl(*pButton); + + // Creates an instance of Keypad + __pKeypad = new Keypad(); + __pKeypad->Construct(KEYPAD_STYLE_NORMAL, KEYPAD_MODE_ALPHA); + + // Adds an instance of ITextEventListener + __pKeypad->AddTextEventListener(*this); + + return r; +} + +void +KeypadSample::ShowKeypad(bool show) +{ + // Changes to desired show state + __pKeypad->SetShowState(show); + + //Calls Show() of the control + if (show) + { + __pKeypad->Show(); + } + // Calls Invalidate() of the container + else + { + Invalidate(true); + } +} + +result +KeypadSample::OnTerminating(void) +{ + result r = E_SUCCESS; + + // Deallocates the keypad + delete __pKeypad; + + return r; +} + +// IActionEventListener implementation +void +KeypadSample::OnActionPerformed(const Tizen::Ui::Control& source, int actionId) +{ + switch (actionId) + { + case ID_BUTTON: + { + ShowKeypad(true); + } + break; + + default: + break; + } +} + +// ITextEventListener implementation +void +KeypadSample::OnTextValueChanged(const Tizen::Ui::Control& source) +{ + // .... +} + +void +KeypadSample::OnTextValueChangeCanceled(const Tizen::Ui::Control& source) +{ + // .... +} + * @endcode + */ + +class _OSP_EXPORT_ Keypad + : public Tizen::Ui::Window +{ +//Lifecycle +public: + /** + * This is the default constructor for this class. + * + * @since 2.0 + */ + Keypad(void); + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~Keypad(void); + + /** + * Initializes this instance of %Keypad with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] keypadStyle The style of %Keypad + * @param[in] limitLength The limit of the length of text in EditField + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid, or @n + * the specified @c limitLength is less than or equal to @c 0. + * @exception E_SYSTEM A system error has occurred. + * @remarks If the keypad style is set to password, the input mode category is ignored. + * @remarks The orientation mode of the keypad is decided based on the G-sensor value. + */ + result Construct(KeypadStyle keypadStyle, int limitLength); + + /** + * @if OSPDEPREC + * Initializes this instance of %Keypad with input styles. + * + * @brief [Deprecated] + * @deprecated We no longer provide a method to specify the list of styles which the user can set the keypad to. @n + * It is recommended to use the other Construct() method and the KeypadStyle enumeration instead. + * @since 2.0 + * + * @return An error code + * @param[in] keypadStyle The style of %Keypad + * @param[in] category The initial category that the keypad would show first + * @param[in] limitLength The limit of the length of text in EditField + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid, or @n + * the specified @c limitLength is less than or equal to @c 0. + * @exception E_SYSTEM A system error has occurred. + * @remarks If the keypad style is set to password, the input mode category is ignored. + * @remarks The orientation mode of the keypad is decided based on the G-sensor value. + * @endif + */ + result Construct(KeypadStyle keypadStyle, KeypadInputModeCategory category, int limitLength = 100); + + /** + * Checks whether the text prediction is enabled. + * + * @since 2.0 + * @return @c true if the text prediction is enabled, @n + * else @c false + * @see SetTextPredictionEnabled() + */ + bool IsTextPredictionEnabled(void) const; + + /** + * Enables or disables the text prediction. + * + * @since 2.0 + * @param[in] enable Set to @c true to enable the text prediction, @n + * else @c false + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. + * @see IsTextPredictionEnabled() + */ + result SetTextPredictionEnabled(bool enable); + + /** + * Enables single-line editing. + * + * @since 2.0 + * + * @return An error code + * @param[in] enabled Set to @c true to enable single-line editing, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The %Keypad control is currently visible. + * @exception E_UNSUPPORTED_OPERATION The current state of the instance does not support the execution of the specified operation. @n + * The password style does not support multi-line editing. + * @exception E_SYSTEM A system error has occurred. + * @remarks By default, the single-line editing is disabled and the %Keypad control supports multi-lines (except the password style that only supports single-line editing). + */ + result SetSingleLineEnabled(bool enabled); + + /** + * Checks whether single-line editing is enabled. + * + * @since 2.0 + * + * @return @c true if single-line editing is enabled, @n + * else @c false + */ + bool IsSingleLineEnabled(void) const; + + /** + * Adds a ITextEventListener instance. @n + * The added listener can listen to text changed events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to be added + */ + void AddTextEventListener(Tizen::Ui::ITextEventListener& listener); + + /** + * Removes a ITextEventListener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to be removed + */ + void RemoveTextEventListener(Tizen::Ui::ITextEventListener& listener); + + /** + * Gets the text of the %Keypad control. + * + * @since 2.0 + * + * @return The string value + */ + Tizen::Base::String GetText(void) const; + + /** + * Sets the text of the %Keypad control. + * + * @since 2.0 + * + * @param[in] text The text to be set + */ + void SetText(Tizen::Base::String text); + +protected: + friend class _KeypadImpl; + +private: + Keypad(const Keypad&); + Keypad& operator =(const Keypad&); + +}; // Keypad + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_KEYPAD_H_ diff --git a/inc/FUiCtrlLabel.h b/inc/FUiCtrlLabel.h new file mode 100644 index 0000000..160daa6 --- /dev/null +++ b/inc/FUiCtrlLabel.h @@ -0,0 +1,341 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlLabel.h + * @brief This is the header file for the %Label class. + * + * This header file contains the declarations of the %Label class and its helper classes. + */ + +#ifndef _FUI_CTRL_LABEL_H_ +#define _FUI_CTRL_LABEL_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +/** + * @class Label + * @brief This class defines the common behavior of a %Label control. + * + * @since 2.0 + * + * The %Label class displays a non-editable text field and does not accept any input from the user. + * + * For more information on the class features, see Label. + * + * The following example demonstrates how to use the %Label class. + * + * @code +// Sample code for LabelSample.h +#include + +class LabelSample + : public Tizen::Ui::Controls::Form +{ +public: + LabelSample(void) + : __pLabel(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + +private: + Tizen::Ui::Controls::Label *__pLabel; +}; + * @endcode + * + * @code +// Sample code for LabelSample.cpp +#include + +#include "LabelSample.h" + +using namespace Tizen::Graphics; +using namespace Tizen::Ui::Controls; + +bool +LabelSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +LabelSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of Label + __pLabel = new Label(); + __pLabel->Construct(Rectangle(100, 100, 200, 50), L"Label Text"); + __pLabel->SetTextConfig(30, LABEL_TEXT_STYLE_BOLD); + __pLabel->SetBackgroundColor(Color::GetColor(COLOR_ID_BLUE)); + + // Adds the label to the form + AddControl(*__pLabel); + + return r; +} + * @endcode + * + */ +class _OSP_EXPORT_ Label + : public Tizen::Ui::Control +{ +public: + /** + * This is the default constructor for this class. + * + * @since 2.0 + */ + Label(void); + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~Label(void); + + /** + * Initializes this instance of %Label with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect An instance of the Rectangle class @n + * This instance represents the x and y coordinates of the top-left corner of the created window along with + * the width and height of the window. + * @param[in] text The text for this label instance + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks A control is fully usable only after it has been added to a container, therefore some methods may fail if used earlier. + * To display text in multi-lines or to denote the end of line use '\\n'. @n + * The size of the control must be within the range defined by the minimum size and the maximum size. + */ + result Construct(const Tizen::Graphics::Rectangle& rect, const Tizen::Base::String& text); + +public: + /** + * Sets the specified text for the %Label control. + * + * @since 2.0 + * + * @param[in] text The string to set + * @remarks To display text in multi-lines or to denote the end of line use '\\n'. + */ + void SetText(const Tizen::Base::String& text); + + /** + * Gets the text of the %Label control. + * + * @since 2.0 + * + * @return The text of the %Label control, @n + * else an empty string if an error occurs + */ + Tizen::Base::String GetText(void) const; + + /** + * Sets the background bitmap of the %Label control. + * + * @since 2.0 + * + * @param[in] bitmap The background bitmap + */ + void SetBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap); + + /** + * Sets the horizontal alignment of the text of the %Label control. + * + * @since 2.0 + * + * @param[in] alignment The horizontal text alignment + */ + void SetTextHorizontalAlignment(HorizontalAlignment alignment); + + /** + * Gets the horizontal alignment of the text of the %Label control. + * + * @since 2.0 + * + * @return The horizontal text alignment, @n + * else @c ALIGNMENT_LEFT if the instance is invalid + */ + HorizontalAlignment GetTextHorizontalAlignment(void) const; + + /** + * Sets the vertical alignment of the text of the %Label control. + * + * @since 2.0 + * + * @param[in] alignment The vertical text alignment + */ + void SetTextVerticalAlignment(VerticalAlignment alignment); + + /** + * Gets the vertical alignment of the text of the %Label control. + * + * @since 2.0 + * + * @return The vertical text alignment, @n + * else @c ALIGNMENT_TOP if the instance is invalid + */ + VerticalAlignment GetTextVerticalAlignment(void) const; + + /** + * Sets the background color of the %Label control. + * + * @since 2.0 + * + * @param[in] color The normal background color + */ + void SetBackgroundColor(const Tizen::Graphics::Color& color); + + /** + * Gets the background color of the %Label control. + * + * @since 2.0 + * + * @return The background color + */ + Tizen::Graphics::Color GetBackgroundColor(void) const; + + /** + * Sets the text color of the %Label control. + * + * @since 2.0 + * + * @param[in] color The color to be set + */ + virtual void SetTextColor(const Tizen::Graphics::Color& color); + + /** + * Gets the text color of the %Label control. + * + * @since 2.0 + * + * @return The text color + */ + virtual Tizen::Graphics::Color GetTextColor(void) const; + + /** + * Sets the text attributes of the %Label control. + * + * @since 2.0 + * + * @param[in] size The size of the text + * @param[in] style The style of the text + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @remarks The specific error code can be accessed using the GetLastResult() method. @n + * If @c size is less than the minimum size, this method fails. The minimum font size is 6 on devices of high screen density. + */ + void SetTextConfig(int size, LabelTextStyle style); + + /** + * Gets the text size of the %Label control. + * + * @since 2.0 + * + * @return The size of the text, @n + * else @c -1 if an error occurs + */ + int GetTextSize(void) const; + + /** + * Gets the text style of the %Label control. + * + * @since 2.0 + * + * @return The style of the text, @n + * else @c LABEL_TEXT_STYLE_NORMAL if the instance is invalid + */ + LabelTextStyle GetTextStyle(void) const; + + /** + * Sets the top and left margins. + * + * @since 2.0 + * + * @return An error code + * @param[in] topMargin The top margin. + * @param[in] leftMargin The left margin. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The specified @c size must be greater than @c 0. + + * @see GetTopMargin(), GetLeftMargin() + */ + result SetMargin(int topMargin, int leftMargin); + + /** + * Gets the top margin. + * + * @since 2.0 + * + * @return The size of the top margin, @n + * else @c -1 if an error occurs + * @see SetMargin() + */ + int GetTopMargin(void) const; + + /** + * Gets the left margin. + * + * @since 2.0 + * + * @return The size of the left margin, @n + * else @c -1 if an error occurs. + * @see SetMargin() + */ + int GetLeftMargin(void) const; + +protected: + friend class _LabelImpl; + +private: + // + // This is the copy constructor for this class. + // + Label(const Label& rhs); + + // + // Assigns the value of the specified instance to the current instance of %Label. + // + Label& operator =(const Label& rhs); + +}; // Label + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_LABEL_H_ diff --git a/inc/FUiCtrlLabelTypes.h b/inc/FUiCtrlLabelTypes.h new file mode 100644 index 0000000..ef33afe --- /dev/null +++ b/inc/FUiCtrlLabelTypes.h @@ -0,0 +1,58 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlLabelTypes.h + * @brief This is the header file for the LabelTextStyle enumeration. + * + * This header file contains the declarations of the LabelTextStyle enumeration. + */ +#ifndef _FUI_CTRL_LABEL_ENUM_H_ +#define _FUI_CTRL_LABEL_ENUM_H_ + +namespace Tizen { namespace Ui { namespace Controls +{ + + /** + * @enum LabelTextStyle + * + * Defines the text styles of the label. + * + * @since 2.0 + */ +enum LabelTextStyle +{ + LABEL_TEXT_STYLE_NORMAL, /**< The plain text style */ + LABEL_TEXT_STYLE_BOLD, /**< The bold text style */ + LABEL_TEXT_STYLE_ITALIC, /**< The italic text style */ +}; + + /** + * @enum LabelContentHint + * + * Defines the content update type. + * + * @since 2.0 + */ +enum LabelContentHint +{ + LABEL_CONTENT_HINT_DYNAMIC, /**< The contents will change */ + LABEL_CONTENT_HINT_STATIC /**< The contents will not change */ +}; + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_LABEL_ENUM_H_ diff --git a/inc/FUiCtrlList.h b/inc/FUiCtrlList.h new file mode 100644 index 0000000..7aeb2e4 --- /dev/null +++ b/inc/FUiCtrlList.h @@ -0,0 +1,961 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlList.h + * @brief This is the header file for the %List class. + * + * This header file contains the declarations of the %List class and its helper classes. + */ + +#ifndef _FUI_CTRL_LIST_H_ +#define _FUI_CTRL_LIST_H_ + +#include +#include +#include +#include +#include +#include +#include +#include + + +namespace Tizen { namespace Base { namespace Runtime +{ +class IEvent; +}}} // Tizen::Base::Runtime + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @if OSPDEPREC + * @class List + * @brief [Deprecated] This class defines the common behavior of the %List control. + * + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * The %List class defines the common behavior of the %List control. + * A list displays the user selection in the form of a list of items. When an item + * on the list is selected or deselected, an item event occurs. It is passed on to + * any item event listeners that have registered an interest in item events generated + * by this list. + * + * If an application wants to perform something based on a list being selected and + * deselected, it must realize IItemEventListener and register the listener to + * receive events from this list, by calling the list's AddItemEventListener() method. + * + * There are several styles supported with differences in the number of columns, rows and + * types of data that can be set. The Construct has a parameter for the size of + * all 4 aspects of a list item. If the item has less than 2 rows or 2 columns, you + * only need to specify the width and height information relevant to the style selected. + * Also, the check style causes some space to be taken up on the right side of the list + * item. The framework will try to make room for the check from the right-most column, + * so the actual width of each column may be different from what you have set. + * + * @image html ui_controls_list_construct.png + * + * If the application directly allocates resources, the resources must be deleted + * (for example, text or bitmap). + * + * Example: + * + * @image html ui_controls_list.png + * + * + * This is a simple UI application which uses a list control. + * + * + * @code +//Sample code for ListSample.h +#include + +class ListSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IItemEventListener +{ +public: + ListSample(void) + : __pList(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + virtual void OnItemStateChanged(const Tizen::Ui::Control &source, int index, int itemId, Tizen::Ui::ItemStatus status); + +private: + static const int ID_LIST_FIRSTITEM = 101; + static const int ID_LIST_SECONDITEM = 102; + + Tizen::Ui::Controls::List* __pList; +}; + * @endcode + * + * @code +//Sample code for ListSample.cpp +#include + +#include "ListSample.h" + +using namespace Tizen::Base; +using namespace Tizen::Ui; +using namespace Tizen::Graphics; +using namespace Tizen::Ui::Controls; + +bool +ListSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +ListSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of List + __pList = new List(); + __pList->Construct(Rectangle(0, 0, GetClientAreaBounds().width, 500), + LIST_STYLE_NORMAL, LIST_ITEM_SINGLE_TEXT, 100, 0, GetClientAreaBounds().width, 0); + __pList->AddItemEventListener(*this); + + // Sets Strings + String itemText1(L"List Item 1"); + String itemText2(L"List Item 2"); + + // Adds the items to the list + __pList->AddItem(&itemText1, null, null, null, ID_LIST_FIRSTITEM); + __pList->AddItem(&itemText2, null, null, null, ID_LIST_SECONDITEM); + + // Adds the list to the form + AddControl(*__pList); + + return r; +} + +// IItemEventListener implementation +void +ListSample::OnItemStateChanged (const Tizen::Ui::Control &source, int index, int itemId, Tizen::Ui::ItemStatus status) +{ + switch (itemId) + { + case ID_LIST_FIRSTITEM: + { + // .... + } + break; + case ID_LIST_SECONDITEM: + { + // .... + } + break; + default: + break; + } +} + * @endcode + * @endif + */ +class _OSP_EXPORT_ List + : public Tizen::Ui::Control +{ +public: + /** + * @if OSPDEPREC + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * @endif + */ + List(void); + + /** + * @if OSPDEPREC + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * @endif + */ + virtual ~List(void); + + /** + * @if OSPDEPREC + * Initializes this instance of %List with the specified parameters. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] rect An instance of the Graphics::Rectangle class @n + * This instance represents the x and y coordinates of the top-left corner of the created list along with + * the width and height of the list. + * @param[in] style The style set of the list + * @param[in] itemFormat The layout of the list items + * @param[in] row1Height The height of the first row + * @param[in] row2Height The height of the second row + * @param[in] column1Width The width of the first column + * @param[in] column2Width The width of the second column + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks A control is fully usable only after it has been added to a container, therefore some methods may fail if used earlier. @n + * If the given size is less than the minimum size, %List is constructed with the minimum size. @n + * When, %List is constructed with LIST_STYLE_NUMBER style, the maximum number of items supported is @c 99. + * @remarks The size of the control must be within the range defined by the minimum size and the maximum size. + * @remarks The minimum size of this control is 92 x 72 on a WVGA screen, 60 x 48 on a HVGA screen and 46 x 36 on a WQVGA screen. + * @endif + */ + result Construct(const Tizen::Graphics::Rectangle& rect, ListStyle style, ListItemFormat itemFormat, int row1Height, int row2Height, int column1Width, int column2Width); + + /** + * @if OSPDEPREC + * Adds the specified listener instance. @n + * The added listener can listen to the item events when they are fired. Only an item event with the ITEM_SELECTED state is fired. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @endif + */ + void AddItemEventListener(Tizen::Ui::IItemEventListener& listener); + + /** + * @if OSPDEPREC + * Removes the specified listener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @endif + */ + void RemoveItemEventListener(Tizen::Ui::IItemEventListener& listener); + + /** + * @if OSPDEPREC + * Adds the item to the current %List instance. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] pText1 A pointer to the first string + * @param[in] pText2 A pointer to the second string + * @param[in] pBitmap1 A pointer to the first normal bitmap + * @param[in] pBitmap2 A pointer to the second normal bitmap + * @param[in] itemId The itemId for this item + * @exception E_SUCCESS The method is successful. + * @exception E_MAX_EXCEEDED The number of items has exceeded the maximum limit. + * @exception E_SYSTEM A system error has occurred. + * @remarks The contents of the specified texts and bitmaps are copied and kept by the list. + * If the size of the text exceeds the displayable area, the text will slide automatically when the list item is selected. + * @endif + */ + result AddItem(const Tizen::Base::String* pText1, const Tizen::Base::String* pText2, const Tizen::Graphics::Bitmap* pBitmap1, const Tizen::Graphics::Bitmap* pBitmap2, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Inserts the specified item to list, at the specified index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] index The index at which the item is to be inserted + * @param[in] pText1 A pointer to the first string + * @param[in] pText2 A pointer to the second string + * @param[in] pBitmap1 A pointer to the first normal bitmap + * @param[in] pBitmap2 A pointer to the second normal bitmap + * @param[in] itemId The item ID for this item + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is less than @c 0 or greater than the item count. + * @exception E_MAX_EXCEEDED The number of items has exceeded the maximum limit. + * @exception E_SYSTEM A system error has occurred. + * @remarks The contents of the specified texts and bitmaps are copied and kept by the list. + * If the size of the text exceeds the displayable area, the text will slide automatically when a list item is selected. + * @endif + */ + result InsertItemAt(int index, const Tizen::Base::String* pText1, const Tizen::Base::String* pText2, const Tizen::Graphics::Bitmap* pBitmap1, const Tizen::Graphics::Bitmap* pBitmap2, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Sets the contents of the specified item to list at the specified index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] index The index at which the contents of the item is to be set + * @param[in] pText1 A pointer to the first string + * @param[in] pText2 A pointer to the second string + * @param[in] pBitmap1 A pointer to the first normal bitmap + * @param[in] pBitmap2 A pointer to the second normal bitmap + * @param[in] itemId The item ID for this item + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is less than @c 0 or greater than or equal to the item count. + * @exception E_SYSTEM A system error has occurred. + * @remarks The contents of the specified texts and bitmaps are copied and kept in the list. + * If the size of the text exceeds the displayable area, the text will slide automatically when a list item is selected. + * @endif + */ + result SetItemAt(int index, const Tizen::Base::String* pText1, const Tizen::Base::String* pText2, const Tizen::Graphics::Bitmap* pBitmap1, const Tizen::Graphics::Bitmap* pBitmap2, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Removes the item at the specified index of the list. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] index The index at which the item is to be deleted + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is less than @c 0 or greater than or equal to the item count. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result RemoveItemAt(int index); + + /** + * @if OSPDEPREC + * Removes all the items of the list. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result RemoveAllItems(void); + + /** + * @if OSPDEPREC + * Gets the item count of the list. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The number of items in the list + * @endif + */ + int GetItemCount(void) const; + + /** + * @if OSPDEPREC + * Sets the enabled status of the specified item of the list. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the list item for which status is to be set + * @param[in] enable Set to @c true to enable the item, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetItemEnabled(int index, bool enable); + + /** + * @if OSPDEPREC + * Checks whether the specified item is enabled. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return @c true if the item is enabled, @n + * else @c false + * @param[in] index The index of the list item + * @endif + */ + bool IsItemEnabled(int index) const; + + /** + * @if OSPDEPREC + * Sets the background bitmap image of the focused item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @param[in] bitmap The background bitmap of the focused item + * @endif + */ + void SetFocusedItemBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap); + + /** + * @if OSPDEPREC + * Sets the highlighted background image on the rectangle of each list item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @param[in] bitmap The background image + * @remarks When a user navigates a user interface with directional keys, the selected UI control is highlighted and takes the focus. + * @endif + */ + void SetHighlightedItemBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap); + + /** + * @if OSPDEPREC + * Sets the background image on the rectangle of each list item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @param[in] bitmap The background image + * @endif + */ + void SetNormalItemBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap); + + /** + * @if OSPDEPREC + * Gets the index of the top-drawn item of the list. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The index of the top-drawn item + * @endif + */ + int GetTopDrawnItemIndex(void) const; + + /** + * @if OSPDEPREC + * Gets the index of the bottom-drawn item of the list. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The index of the bottom-drawn item + * @endif + */ + int GetBottomDrawnItemIndex(void) const; + + /** + * @if OSPDEPREC + * Sets the text to be displayed when the list is empty. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @param[in] text The text message to be displayed + * @endif + */ + void SetTextOfEmptyList(const Tizen::Base::String& text); + + /** + * @if OSPDEPREC + * Sets the color of the text that is displayed when the list is empty. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @param[in] color The color of the text for an empty List + * @endif + */ + void SetTextColorOfEmptyList(const Tizen::Graphics::Color& color); + + /** + * @if OSPDEPREC + * Gets the color of the empty text that is displayed when the list is empty. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The empty text color, @n + * else RGBA(0, 0, 0, 0) if the instance is invalid + * @endif + */ + Tizen::Graphics::Color GetTextColorOfEmptyList(void) const; + + /** + * @if OSPDEPREC + * Sets the background color of this control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @param[in] color The background color + * @endif + */ + void SetBackgroundColor(const Tizen::Graphics::Color& color); + + /** + * @if OSPDEPREC + * Sets the item text color. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @param[in] textIndex The index of the text + * @param[in] textColor The color of the text + * @endif + */ + void SetItemTextColor(ListItemText textIndex, const Tizen::Graphics::Color& textColor); + + /** + * @if OSPDEPREC + * Gets the text color of item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The item text color + * @param[in] textIndex The index of the text, @n + * else RGBA(0, 0, 0, 0) if the instance is invalid + * @endif + */ + Tizen::Graphics::Color GetItemTextColor(ListItemText textIndex) const; + + /** + * @if OSPDEPREC + * Enables the text slide. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @param[in] textIndex The text index of the list item format to slide + * @remarks If text slide is enabled, the texts which are too long to fit in the given list item slide show the remnant contents when a user touches + * the item for a long time. + * @endif + */ + void EnableTextSlide(ListItemText textIndex); + + /** + * @if OSPDEPREC + * Disables the text sliding. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * @endif + */ + void DisableTextSlide(void); + + /** + * @if OSPDEPREC + * Gets the height of the list item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The height of the item + * @endif + */ + int GetItemHeight(void) const; + + /** + * @if OSPDEPREC + * Gets the row1 height of the current list + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The row1 height of the item + * @endif + */ + int GetRow1Height(void) const; + + /** + * @if OSPDEPREC + * Gets the row2 height of the current list + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The row2 height of the item + * @endif + */ + int GetRow2Height(void) const; + + /** + * @if OSPDEPREC + * Gets the column1 width of the current list + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The column1 width of the item + * @endif + */ + int GetColumn1Width(void) const; + + /** + * @if OSPDEPREC + * Gets the column2 width of the current list + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The column2 width of the item + * @endif + */ + int GetColumn2Width(void) const; + + /** + * @if OSPDEPREC + * Sets the row1 height of the current List + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] row1Height The row1 height of the list item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks In logical pixels, the minimum height of the rows is 48. + * @endif + */ + result SetRow1Height(int row1Height); + + /** + * @if OSPDEPREC + * Sets the row2 height of the current list. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] row2Height The row2 height of the list item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks In logical pixels, the minimum height of the rows is 48. + * @endif + */ + result SetRow2Height(int row2Height); + + /** + * @if OSPDEPREC + * Sets the column1 width of the current %List + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] column1Width The column1 width of the list item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetColumn1Width(int column1Width); + + /** + * @if OSPDEPREC + * Sets the column2 width of the current %List + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] column2Width The column2 width of the list item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetColumn2Width(int column2Width); + + /** + * @if OSPDEPREC + * Sets the check status of the specified item of the list. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the list + * @param[in] check The check status + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * + * @remarks This method can only be used when the style of the list allows selection. + * @endif + */ + result SetItemChecked(int index, bool check); + + /** + * @if OSPDEPREC + * Checks whether the specified item of the list is checked. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return @c true if the item is checked, @n + * else @c false + * @param[in] index The index of the list item + * + * @remarks This method can only be used when the style of the list allows selection. + * @endif + */ + bool IsItemChecked(int index) const; + + /** + * @if OSPDEPREC + * Sets the checked status of all the items of the list. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] check Set to @c true to check all the items, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method can only be used when the style of the list allows multiple selections. + * @endif + */ + result SetAllItemsChecked(bool check); + + /** + * @if OSPDEPREC + * Removes all the checked items of the list. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method can only be used when the style of the list allows multiple selections. + * @endif + */ + result RemoveAllCheckedItems(void); + + /** + * @if OSPDEPREC + * Gets the index of the first checked item from the list. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The index of the first checked item + * @remarks This method can only be used when the style of the list allows multiple selections. + * @endif + */ + int GetFirstCheckedItemIndex(void) const; + + /** + * @if OSPDEPREC + * Gets the index of the last checked item from the list. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The index of the last checked item + * @remarks This method can only be used when the style of the list allows multiple selections. + * @endif + */ + int GetLastCheckedItemIndex(void) const; + + /** + * @if OSPDEPREC + * Gets the index of the next checked item after the specified index from the list. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The index of the next checked item + * @param[in] index The index of the item + * @remarks This method can only be used when the style of the list allows multiple selections. + * @endif + */ + int GetNextCheckedItemIndexAfter(int index) const; + + /** + * @if OSPDEPREC + * Gets the index of the item with the specified item ID. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The index of the item + * @param[in] itemId The item ID of the list + * @remarks The method returns -1 when there is no list item with the specified item ID. + * @endif + */ + int GetItemIndexFromItemId(int itemId) const; + + /** + * @if OSPDEPREC + * Gets the index of the item at the specified item position. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The index of the item, @n + * else @c -1 if there is no list item at the specified position + * @param[in] x The x position of the point + * @param[in] y The y position of the point + * @endif + */ + int GetItemIndexFromPosition(int x, int y) const; + + /** + * @if OSPDEPREC + * Gets the index of the item at the specified item position. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The index of the item, @n + * else @c -1 if there is no list item at the specified position + * @param[in] position The position of the point + * @endif + */ + int GetItemIndexFromPosition(const Tizen::Graphics::Point& position) const; + + /** + * @if OSPDEPREC + * Gets the item ID of the item at the specified index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The ID of the item, @n + * else @c -1 if there is no list item at the specified index + * @param[in] index The index of the list item + * @endif + */ + int GetItemIdAt(int index) const; + + /** + * @if OSPDEPREC + * Scrolls to the bottom of the List. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * @endif + */ + void ScrollToBottom(void); + + /** + * @if OSPDEPREC + * Scrolls to the top of the List. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * @endif + */ + void ScrollToTop(void); + + /** + * @if OSPDEPREC + * Scrolls to the item at the specified index. @n + * The specified item is drawn at the top of the list. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the list item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @endif + */ + result ScrollToTop(int index); + + /** + * @if OSPDEPREC + * Draws and shows the item of the list. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the list item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @endif + */ + result RefreshItem(int index); + + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + List(const List& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + List& operator =(const List& rhs); + + friend class _ListImpl; +}; //List + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_LIST_H_ diff --git a/inc/FUiCtrlListContextItem.h b/inc/FUiCtrlListContextItem.h new file mode 100644 index 0000000..d6b5bf4 --- /dev/null +++ b/inc/FUiCtrlListContextItem.h @@ -0,0 +1,191 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlListContextItem.h + * @brief This is the header file for the %ListContextItem class. + * + * This header file contains the declarations of the %ListContextItem class and its helper classes. + */ + +#ifndef _FUI_CTRL_LIST_CONTEXT_ITEM_H_ +#define _FUI_CTRL_LIST_CONTEXT_ITEM_H_ + +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +class _ListContextItemImpl; + +/** + * @class ListContextItem + * @brief This class defines common behavior for %ListContextItem. + * + * @since 2.0 + * + * The %ListContextItem class displays the context item for a ListView or GroupedListView. + * + * For more information on the class features, see ListViews. + */ + +class _OSP_EXPORT_ ListContextItem + : public Tizen::Base::Object +{ +public: + /** + * The object is not fully constructed after this constructor is + * called. For full construction, the Construct() method must be + * called right after calling this constructor. + * + * @since 2.0 + */ + ListContextItem(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~ListContextItem(void); + + /** + * Initializes this instance of %ListContextItem with the specified parameter. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(void); + + /** + * Adds the text element to the context item. + * + * @since 2.0 + * + * @return An error code + * @param[in] elementId The ID of the element + * @param[in] text The text to display + * @param[in] enable Set to @c true, to enable this element @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result AddElement(int elementId, const Tizen::Base::String& text, bool enable = true); + + /** + * Adds the bitmap element to the context item. + * + * @since 2.0 + * @return An error code + * @param[in] elementId The ID of the element + * @param[in] normalBitmap The bitmap displayed when the item is in normal status + * @param[in] pressedBitmap The bitmap displayed when the item is pressed + * @param[in] pHighlightedBitmap The bitmap displayed when the item is highlighted + * @param[in] enable Set to @c true, to enable this element, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result AddElement(int elementId, const Tizen::Graphics::Bitmap& normalBitmap, const Tizen::Graphics::Bitmap& pressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap = null, bool enable = true); + + /** + * Adds the text and the bitmap element to the context item. + * + * @since 2.0 + * + * @return An error code + * @param[in] elementId The ID of the element + * @param[in] text The text to display + * @param[in] normalBitmap The bitmap displayed when the item is in normal status + * @param[in] pressedBitmap The bitmap displayed when the item is pressed + * @param[in] pHighlightedBitmap The bitmap displayed when the item is highlighted + * @param[in] enable Set to @c true, to enable this element, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result AddElement(int elementId, const Tizen::Base::String& text, const Tizen::Graphics::Bitmap& normalBitmap, const Tizen::Graphics::Bitmap& pressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap = null, bool enable = true); + + /** + * Sets the background image of a context item. + * + * @since 2.0 + * + * @return An error code + * @param[in] pBitmap The background bitmap image + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The background bitmap has priority over the background color. When both the background bitmap and the background color are specified, only + * the bitmap is displayed. @n + * When @c pBitmap is set as @c null, the background color of the context item is drawn. + */ + result SetBackgroundBitmap(const Tizen::Graphics::Bitmap* pBitmap); + + /** + * Sets the background color of a context item. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The background color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The background bitmap has priority over the background color. When both the background bitmap and the background color are specified, only + * the bitmap is displayed. + */ + result SetBackgroundColor(const Tizen::Graphics::Color& color); + + /** + * Gets the background color of a context item. + * + * @since 2.0 + * + * @return The background color of a context item + */ + Tizen::Graphics::Color GetBackgroundColor(void) const; + +protected: + friend class _ListContextItemImpl; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + ListContextItem(const ListContextItem& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + ListContextItem& operator =(const ListContextItem& rhs); + +private: + _ListContextItemImpl* __pImpl; +}; // ListContextItem + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_LIST_CONTEXT_ITEM_H_ + diff --git a/inc/FUiCtrlListItemBase.h b/inc/FUiCtrlListItemBase.h new file mode 100644 index 0000000..2790b09 --- /dev/null +++ b/inc/FUiCtrlListItemBase.h @@ -0,0 +1,230 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlListItemBase.h + * @brief This is the header file for the %ListItemBase class. + * + * This header file contains the declarations of the %ListItemBase class and its helper classes. + */ + +#ifndef _FUI_CTRL_LIST_ITEM_BASE_H_ +#define _FUI_CTRL_LIST_ITEM_BASE_H_ + +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +class _ListItemBaseImpl; + +/** + * @class ListItemBase + * @brief This class defines common behavior for a %ListItemBase. + * + * @since 2.0 + * + * The %ListItemBase class is a base class, which represents a list item which is the unit of handling of the ListView or + * GroupedListView classes. + * + * For more information on the class features, see ListViews. + */ + +class _OSP_EXPORT_ ListItemBase + : public Tizen::Base::Object +{ +public: + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~ListItemBase(void); + + /** + * Sets the background image of the item which is displayed when the item is in specified state. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The item drawing state + * @param[in] pBitmap The background bitmap image + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The background bitmap has priority over the background color. When both the background bitmap and the background color are specified, + * only the bitmap is displayed. + */ + result SetBackgroundBitmap(ListItemDrawingStatus status, const Tizen::Graphics::Bitmap* pBitmap); + + /** + * Sets the background color of the item which is displayed when the item is in specified state. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The item drawing state + * @param[in] color The background color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The background bitmap has priority over the background color. When both the background bitmap and the background color are specified, only the bitmap is displayed. @n + * The background color of the item is not applied when the item is inserted into the GroupedListView of section style. + */ + result SetBackgroundColor(ListItemDrawingStatus status, const Tizen::Graphics::Color& color); + + /** + * Gets the background color of the item that is displayed when the item is in the specified state. + * + * @since 2.0 + * + * @return The background color of the item + * @param[in] status The item drawing state, @n + * else RGBA(0, 0, 0, 0) if an error has occurs + * @see SetBackgroundColor() + */ + Tizen::Graphics::Color GetBackgroundColor(ListItemDrawingStatus status) const; + + /** + * Sets ContextItem that is displayed when an item is swept. + * + * @since 2.0 + * + * @return An error code + * @param[in] pItem The %ListContextItem instance + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks If the context item is not set, ListView() or GroupedListView() does not display the context item and an item sweep event is generated when an + * item is swept. @n + * The specified @c pItem should be deleted by the applications when it is no longer used. + */ + result SetContextItem(const ListContextItem* pItem); + + /** + * Sets the description text. + * + * @since 2.0 + * + * @return An error code + * @param[in] text Description text + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetDescriptionText(const Tizen::Base::String& text); + + /** + * Sets the color of the description text. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The color of the description text + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetDescriptionTextColor(const Tizen::Graphics::Color& color); + + /** + * Sets the progress value of a list item. + * + * @since 2.0 + * + * @return An error code + * @param[in] value The progress value of the list item @n + * The valid values are integers from @c 0 to @c 100. + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetProgressValue(int value); + + /** + * Sets the margin of the progress bar. + * + * @since 2.0 + * + * @return An error code + * @param[in] leftMargin The left margin of the progress bar + * @param[in] rightMargin The right margin of the progress bar + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetProgressMargins(int leftMargin, int rightMargin); + + /** + * Gets the width of the annex area. + * + * @since 2.0 + * + * @return The width of the annex + * @param[in] style The style of the annex + * @remarks The width of the annex area is different among annex styles. + */ + static int GetAnnexWidth(ListAnnexStyle style); + +protected: + friend class _ListItemBaseImpl; + +protected: + // + // This default constructor is intentionally declared as private so that only the platform can create an instance. + // @since 2.0 + // + ListItemBase(void); + + // + // Initializes this instance of ListItem with the specified parameter. + // + // @since 2.0 + // + // @return An error code + // + // @param[in] itemSize The size of the item + // @param[in] style The style of Annex + // @exception E_SUCCESS The method is successful. + // @exception E_SYSTEM A system error has occurred. + // + result Construct(const Tizen::Graphics::Dimension& itemSize, ListAnnexStyle style); + + // + // The following methods are reserved and may change its name at any time without prior notice. + // + virtual void ListItemBase_Reserved1(void) {} + virtual void ListItemBase_Reserved2(void) {} + virtual void ListItemBase_Reserved3(void) {} + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + ListItemBase(const ListItemBase& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + ListItemBase& operator =(const ListItemBase& rhs); + +protected: + _ListItemBaseImpl* _pImpl; +}; // ListItemBase + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_LIST_ITEM_BASE_H_ diff --git a/inc/FUiCtrlListTypes.h b/inc/FUiCtrlListTypes.h new file mode 100644 index 0000000..617b945 --- /dev/null +++ b/inc/FUiCtrlListTypes.h @@ -0,0 +1,127 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlListTypes.h + * @brief This is the header file for the List enumerations. + * + * This header file contains the declarations of the List enumerations. + */ +#ifndef _FUI_CTRL_LIST_TYPES_H_ +#define _FUI_CTRL_LIST_TYPES_H_ + +namespace Tizen { namespace Ui { namespace Controls +{ + +// +//This integer is for internal use only. Using this integer can cause behavioral, security-related, +//and consistency-related issues in the application. +// +static const int LIST_ITEM_NOTFOUND = 0; + +/** + * The integer value that represents the unspecified item ID + * + * @since 2.0 + */ +static const int LIST_ITEM_UNSPECIFIED_ID = -1; + +/** + * @if OSPDEPREC + * @enum ListStyle + * + * Defines the list style. + * + * @brief [Deprecated] + * @deprecated This enumeration is deprecated. Instead of using this enumeration, use ListAnnexStyle enumeration for CustomItem or SimpleItem class. @n + * @since 2.0 + * @endif + */ +enum ListStyle +{ + LIST_STYLE_NORMAL = 0, /**< @if OSPDEPREC The normal style @endif */ + LIST_STYLE_NUMBER, /**< @if OSPDEPREC The numbered style @endif */ + LIST_STYLE_RADIO, /**< @if OSPDEPREC The radio style for single selection @endif */ + LIST_STYLE_RADIO_WITH_DIVIDER, /**< @if OSPDEPREC The radio style with divider for single selection @endif */ + LIST_STYLE_MARK, /**< @if OSPDEPREC The mark style for multiple selection @endif */ + LIST_STYLE_MARK_WITH_DIVIDER, /**< @if OSPDEPREC The mark style with divider for multiple selection @endif */ + LIST_STYLE_ONOFF, /**< @if OSPDEPREC The On/Off style @endif */ + LIST_STYLE_ONOFF_WITH_DIVIDER /**< @if OSPDEPREC The On/Off style with divider @endif */ +}; + +/** + * @if OSPDEPREC + * @enum ListItemFormat + * + * Defines the list item format. + * + * @brief [Deprecated] + * @deprecated This enumeration is deprecated. There is no need to use this enumeration. @n + * @since 2.0 + * @endif + */ +enum ListItemFormat +{ + LIST_ITEM_SINGLE_IMAGE = 0, /**< @if OSPDEPREC The single line of image @endif */ + LIST_ITEM_SINGLE_TEXT, /**< @if OSPDEPREC The single line of text @endif */ + LIST_ITEM_SINGLE_IMAGE_TEXT, /**< @if OSPDEPREC The single line of image, and text @endif */ + LIST_ITEM_SINGLE_TEXT_IMAGE, /**< @if OSPDEPREC The single line of text, and image @endif */ + LIST_ITEM_SINGLE_IMAGE_TEXT_IMAGE, /**< @if OSPDEPREC The single line of image, text, and image @endif */ + LIST_ITEM_DOUBLE_IMAGE_TEXT_FULLTEXT, /**< @if OSPDEPREC The 1st line of image and text, 2nd line of text @endif */ + LIST_ITEM_DOUBLE_FULLTEXT_IMAGE_TEXT, /**< @if OSPDEPREC The 1st line of text, 2nd line of image, and text @endif */ + LIST_ITEM_DOUBLE_TEXT_IMAGE_FULLTEXT, /**< @if OSPDEPREC The 1st line of text and image, 2nd line of text @endif */ + LIST_ITEM_DOUBLE_FULLTEXT_TEXT_IMAGE, /**< @if OSPDEPREC The 1st line of text, 2nd line of text, and image @endif */ + LIST_ITEM_DOUBLE_IMAGE_TEXT_TEXT, /**< @if OSPDEPREC A big image followed by two lines of text @endif */ + LIST_ITEM_DOUBLE_TEXT_TEXT_IMAGE /**< @if OSPDEPREC The two lines of text followed by a big image @endif */ +}; + +/** + * @if OSPDEPREC + * @enum ListItemText + * + * Defines the option of text slide. + * + * @brief [Deprecated] + * @deprecated This enumeration is deprecated. There is no need to use this enumeration. @n + * @since 2.0 + * @endif + */ +enum ListItemText +{ + LIST_ITEM_TEXT1, /**< @if OSPDEPREC The sliding of 1st text is switched on @endif */ + LIST_ITEM_TEXT2 /**< @if OSPDEPREC The sliding of 2nd text is switched on @endif */ +}; + +/** + * @if OSPDEPREC + * @enum FastScrollIndexDigit + * + * Defines the number of digits or characters of the fast scroll index. + * + * @brief [Deprecated] + * @deprecated This enumeration is deprecated. There is no need to use this enumeration. @n + * @since 2.0 + * @endif + */ +enum FastScrollIndexDigit +{ + SCROLL_INDEX_DIGIT_NUM_1, /**< @if OSPDEPREC The number of digits or characters of the index is 1 @endif */ + SCROLL_INDEX_DIGIT_NUM_2 /**< @if OSPDEPREC The number of digits or characters of the index is 2 @endif */ +}; + +}}} // Tizen::Ui::Controls + +#endif //_FUI_CTRL_LIST_TYPES_H_ diff --git a/inc/FUiCtrlListView.h b/inc/FUiCtrlListView.h new file mode 100644 index 0000000..e8000e1 --- /dev/null +++ b/inc/FUiCtrlListView.h @@ -0,0 +1,885 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlListView.h + * @brief This is the header file for the %ListView class. + * + * This header file contains the declarations of the %ListView class and its helper classes. + */ + +#ifndef _FUI_CTRL_LIST_VIEW_H_ +#define _FUI_CTRL_LIST_VIEW_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +class _ListViewImpl; + +/** + * @class ListView + * @brief This class defines common behavior for a %ListView control. + * + * @since 2.0 + * + * The %ListView class displays a list of simple and user-configured items. A simple item has a fixed layout consisting of a bitmap + * and a text string. A user-configured item in a %ListView instance can have a different layout and height than the other items. + * Each user-configured item is composed of elements that can be texts and bitmaps, and is configured using the CustomItem class. + * + * For more information on the class features, see ListViews. + * + * The following example demonstrates how to use the %ListView class. + * + * + * @code +//Sample code for ListViewSample.h +#include + +class ListViewSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::Controls::IListViewItemEventListener + , public Tizen::Ui::Controls::IListViewItemProvider +{ +public: + ListViewSample(void) + : __pListView(null) + , __pItemContext(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + virtual result OnTerminating(void); + + // IListViewItemEventListener + virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView &listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state); + virtual void OnListViewItemStateChanged(Tizen::Ui::Controls::ListView &listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status); + virtual void OnListViewItemSwept(Tizen::Ui::Controls::ListView &listView, int index, Tizen::Ui::Controls::SweepDirection direction); + + // IListViewItemProvider + virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int index, int itemWidth); + virtual bool DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth); + virtual int GetItemCount(void); + +private: + static const int ID_FORMAT_STRING = 100; + static const int ID_FORMAT_BITMAP = 101; + static const int ID_CONTEXT_ITEM_1 = 103; + static const int ID_CONTEXT_ITEM_2 = 104; + + Tizen::Graphics::Bitmap* __pHome; + Tizen::Graphics::Bitmap* __pMsg; + Tizen::Graphics::Bitmap* __pAlarm; + Tizen::Graphics::Bitmap* __pCall; + + Tizen::Ui::Controls::ListView* __pListView; + Tizen::Ui::Controls::ListContextItem* __pItemContext; +}; + * @endcode + * + * @code +//Sample code for ListViewSample.cpp +#include +#include + +#include "ListViewSample.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::Graphics; +using namespace Tizen::Media; +using namespace Tizen::Ui::Controls; + +bool +ListViewSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +ListViewSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of ListView + __pListView = new ListView(); + __pListView->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height), true, false); + __pListView->SetItemProvider(*this); + __pListView->AddListViewItemEventListener(*this); + + // Adds the list view to the form + AddControl(*__pListView); + + // Creates an instance of ListContextItem + __pItemContext = new ListContextItem(); + __pItemContext->Construct(); + __pItemContext->AddElement(ID_CONTEXT_ITEM_1, L"Test1"); + __pItemContext->AddElement(ID_CONTEXT_ITEM_2, L"Test2"); + + // Gets instances of Bitmap + AppResource* pAppResource = Application::GetInstance()->GetAppResource(); + __pHome = pAppResource->GetBitmapN(L"tizen.png"); + __pMsg = pAppResource->GetBitmapN(L"tizen.png"); + __pAlarm = pAppResource->GetBitmapN(L"tizen.png"); + __pCall = pAppResource->GetBitmapN(L"tizen.png"); + + return r; +} + +result +ListViewSample::OnTerminating(void) +{ + result r = E_SUCCESS; + + // Deallocates bitmaps + delete __pHome; + delete __pMsg; + delete __pAlarm; + delete __pCall; + + // Deallocates the item context + delete __pItemContext; + + return r; +} + +// IListViewItemEventListener implementation +void +ListViewSample::OnListViewItemStateChanged(ListView &listView, int index, int elementId, ListItemStatus status) +{ + switch (elementId) + { + case ID_FORMAT_BITMAP: + { + // .... + } + break; + case ID_FORMAT_STRING: + { + // .... + } + break; + default: + break; + } +} + +void +ListViewSample::OnListViewContextItemStateChanged(ListView &listView, int index, int elementId, ListContextItemStatus state) +{ + switch (elementId) + { + case ID_CONTEXT_ITEM_1: + { + // .... + } + break; + case ID_CONTEXT_ITEM_2: + { + // .... + } + break; + default: + break; + } +} + +void +ListViewSample::OnListViewItemSwept(ListView &listView, int index, SweepDirection direction) +{ + // .... +} + +// IListViewItemProvider implementation +ListItemBase* +ListViewSample::CreateItem(int index, int itemWidth) +{ + // Creates an instance of CustomItem + CustomItem* pItem = new CustomItem(); + ListAnnexStyle style = LIST_ANNEX_STYLE_NORMAL; + + switch (index % 4) + { + case 0: + { + style = LIST_ANNEX_STYLE_NORMAL; + pItem->Construct(Dimension(itemWidth,112), style); + pItem->AddElement(Rectangle(10, 20, 60, 60), ID_FORMAT_BITMAP, *__pHome, null, null); + pItem->AddElement(Rectangle(80, 25, 150, 50), ID_FORMAT_STRING, L"Home", true); + } + break; + case 1: + { + style = LIST_ANNEX_STYLE_DETAILED; + pItem->Construct(Dimension(itemWidth,112), style); + pItem->AddElement(Rectangle(10, 20, 60, 60), ID_FORMAT_BITMAP, *__pMsg, null, null); + pItem->AddElement(Rectangle(80, 25, 150, 50), ID_FORMAT_STRING, L"Msg", true); + } + break; + case 2: + { + style = LIST_ANNEX_STYLE_ONOFF_SLIDING; + pItem->Construct(Dimension(itemWidth,112), style); + pItem->AddElement(Rectangle(10, 20, 60, 60), ID_FORMAT_BITMAP, *__pAlarm, null, null); + pItem->AddElement(Rectangle(80, 25, 150, 50), ID_FORMAT_STRING, L"Alarm", true); + } + break; + case 3: + { + style = LIST_ANNEX_STYLE_MARK; + pItem->Construct(Dimension(itemWidth,112), style); + pItem->AddElement(Rectangle(10, 20, 60, 60), ID_FORMAT_BITMAP, *__pCall, null, null); + pItem->AddElement(Rectangle(80, 25, 150, 50), ID_FORMAT_STRING, L"Call", true); + } + break; + default: + break; + } + + pItem->SetContextItem(__pItemContext); + + return pItem; +} + +bool +ListViewSample::DeleteItem(int index, ListItemBase* pItem, int itemWidth) +{ + delete pItem; + pItem = null; + return true; +} + +int +ListViewSample::GetItemCount(void) +{ + return 15; +} + * @endcode + * + */ +class _OSP_EXPORT_ ListView + : public Tizen::Ui::Control +{ +public: + /** + * The object is not fully constructed after this constructor is + * called. For full construction, the Construct() method must be + * called right after calling this constructor. + * + * @since 2.0 + */ + ListView(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~ListView(void); + + /** + * @if OSPDEPREC + * Initializes this instance of %ListView with the specified parameters. + * + * @brief [Deprecated] + * @deprecated This method is deprecated. + * @since 2.0 + * + * @return An error code + * @param[in] rect An instance of the Graphics::Rectangle class @n + * This instance represents the x and y coordinates of the left top corner of the created %ListView along with the width + * and height. + * @param[in] itemDivider Set to @c true to display an item divider, @n + * else @c false + * @param[in] fastScroll Set to @c true to use fast scroll, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * Either the @c rect.width or @c rect.height parameter has a negative value. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result Construct(const Tizen::Graphics::Rectangle& rect, bool itemDivider = true, bool fastScroll = false); + + /** + * Initializes this instance of %ListView with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect An instance of the Graphics::Rectangle class @n + * This instance represents the x and y coordinates of the left top corner of the created %ListView along with the width + * and height. + * @param[in] itemDivider Set to @c true to display an item divider, @n + * else @c false + * @param[in] scrollStyle Set to scroll style + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * Either the @c rect.width or @c rect.height parameter has a negative value. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(const Tizen::Graphics::Rectangle& rect, bool itemDivider, ListScrollStyle scrollStyle); + + /** + * Sets the item provider that creates and deletes items for the list. + * + * @since 2.0 + * + * @return An error code + * @param[in] provider The item provider to create and delete items + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks If an item provider is not set for the list, the list does not work. @n + * The specified @c provider should be allocated in heap memory. + */ + result SetItemProvider(IListViewItemProvider& provider); + + + /** + * Adds a listener instance that listens to state changes of list view items. @n + * The added listener can listen to events on the specified event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to add + */ + void AddListViewItemEventListener(IListViewItemEventListener& listener); + + /** + * Removes a listener instance that listens to state changes of list view items. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to remove + */ + void RemoveListViewItemEventListener(IListViewItemEventListener& listener); + + /** + * Adds a listener instance that listens to state changes of a fast scroll. @n + * The added listener can listen to events on the specified event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to add + */ + void AddFastScrollListener(IFastScrollListener& listener); + + /** + * Removes a listener instance that listens to state changes of a fast scroll. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to remove + */ + void RemoveFastScrollListener(IFastScrollListener& listener); + + /** + * Adds a listener instance that listens to state changes of a scroll event. @n + * The added listener can listen to events on the specified event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to add + * @see IScrollEventListener::OnScrollEndReached() + * @see RemoveScrollEventListener() + */ + void AddScrollEventListener(IScrollEventListener& listener); + + /** + * Removes a listener instance that listens to state changes of a scroll event. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to remove + * @see IScrollEventListener::OnScrollEndReached() + * @see AddScrollEventListener() + */ + void RemoveScrollEventListener(IScrollEventListener& listener); + + /** + * Adds a link event listener. + * + * @since 2.0 + * + * @param[in] listener The event listener to add + * @remarks The added listener is notified when a link is selected by the user. + * @see RemoveUiLinkEventListener() + */ + void AddUiLinkEventListener(Tizen::Ui::IUiLinkEventListener& listener); + + /** + * Removes the specified link event listener. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to remove + * @see AddUiLinkEventListener() + */ + void RemoveUiLinkEventListener(Tizen::Ui::IUiLinkEventListener& listener); + + /** + * Sets the sweep event to enable. + * + * @since 2.0 + * + * @return An error code + * @param[in] enable Set to @c true to enable the sweep, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetSweepEnabled(bool enable); + + /** + * Sets the index list of the scroll by texts. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text of the index + * @param[in] useSearchIcon Set to @c true to show the magnifying icon, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @exception E_SYSTEM A system error has occurred. + */ + result SetFastScrollIndex(const Tizen::Base::String& text, bool useSearchIcon); + + /** + * Gets the index of the top drawn item of the %ListView control. + * + * @since 2.0 + * + * @return The index of the top drawn item + */ + int GetTopDrawnItemIndex(void) const; + + /** + * Gets the index of the bottom drawn item of the %ListView control. + * + * @since 2.0 + * + * @return The index of the bottom drawn item + */ + int GetBottomDrawnItemIndex(void) const; + + /** + * Scrolls to the item at the specified index. @n + * The specified item is drawn at the top of the %ListView control. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The item index + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result ScrollToItem(int index); + + /** + * Scrolls to the item at the specified index. @n + * The specified item is drawn at the position specified by the item alignment. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The item index + * @param[in] itemAlignment The item alignment + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result ScrollToItem(int index, ListScrollItemAlignment itemAlignment); + + /** + * Sets the check status of the item at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The item index + * @param[in] check The check status + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @exception E_INVALID_OPERATION The item is disabled. + * @exception E_SYSTEM A system error has occurred. + */ + result SetItemChecked(int index, bool check); + + /** + * Checks whether the item at the specified index is checked. + * + * @since 2.0 + * + * @return @c true if the item is checked, @n + * else @c false + * @param[in] index The item index + */ + bool IsItemChecked(int index) const; + + /** + * Sets the enabled/disabled status of the item at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The item index + * @param[in] enable The enabled/disabled status + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * + */ + result SetItemEnabled(int index, bool enable); + + /** + * Checks whether the item at the specified index is enabled. + * + * @since 2.0 + * + * @return @c true if the item is enabled, @n + * else @c false + * @param[in] index The item index + */ + bool IsItemEnabled(int index) const; + + /** + * Counts the number of items. + * + * @since 2.0 + * + * @return The total number of items + */ + int GetItemCount(void) const; + + /** + * Shows the description text of the given item. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the item + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks If no description text is set to the item of the specified index, this method does not show the description text. + * + */ + result ShowItemDescriptionText(int index); + + /** + * Hides the description text of the given item. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the item + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result HideItemDescriptionText(int index); + + /** + * Refreshes the specified item. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The item index + * @param[in] type The item to be added, removed, or modified + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_SYSTEM A system error has occurred. + * @remarks 3 refresh types are supported: LIST_REFRESH_TYPE_ITEM_ADD, LIST_REFRESH_TYPE_ITEM_REMOVE, and LIST_REFRESH_TYPE_ITEM_MODIFY. + * - LIST_REFRESH_TYPE_ITEM_ADD is used when new data is added to the data model. @n + * - LIST_REFRESH_TYPE_ITEM_REMOVE is used when a data is deleted from the data model. @n + * - LIST_REFRESH_TYPE_ITEM_MODIFY is used when an existing data has changes and needs to be updated. @n + * Calling this method with LIST_REFRESH_TYPE_ITEM_MODIFY invokes the item provider to call DeleteItem() and CreateItem() for the given index in + * sequence. + * @remarks This method internally calls Invalidate(), so you do not need to call them to update the screen. + */ + result RefreshList(int index, ListRefreshType type); + + /** + * Refreshes the specified item's element. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The item index + * @param[in] elementId The item element ID + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method internally calls Invalidate(), so you do not need to call them to update the screen. + */ + result RefreshList(int index, int elementId); + + /** + * Updates the whole items of a list. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method clears the items in the list and re-invokes the methods of the item provider to fill the list. + */ + result UpdateList(void); + + /** + * Gets the index of the item at the specified position. + * + * @since 2.0 + * + * @return The index of the item, @n + * else @c -1 if there is no list item at the specified position + * @param[in] x The X position of the point + * @param[in] y The Y position of the point + * @remarks The method returns -1 when there is no list item at the specified position. + */ + int GetItemIndexFromPosition(int x, int y) const; + + /** + * Gets the index of the item at the specified position. + * + * @since 2.0 + * + * @return The index of the item + * @param[in] position The position of the point, @n + * else @c -1 if there is no list item at the specified position + */ + int GetItemIndexFromPosition(const Tizen::Graphics::Point& position) const; + + /** + * Gets the index of the item and ID of the element at the specified position. + * + * @since 2.0 + * + * @return An error code + * @param[in] x The X position of the item + * @param[in] y The Y position of the item + * @param[out] itemIndex The index of the item + * @param[out] elementId The ID of the element + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred, or @n + * there is no item at the specified position. + * @remarks The specified @c itemIndex is -1 when there is no list item at the specified position. + * @remarks The specified @c elementId is -1 when there is no element at the specified position. + */ + result GetItemIndexFromPosition(int x, int y, int& itemIndex, int& elementId) const; + + /** + * Gets the index of the item and ID of the element at the specified position. + * + * @since 2.0 + * + * @return An error code + * @param[in] position The position of the point + * @param[out] itemIndex The index of the item + * @param[out] elementId The ID of the element + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred, or @n + * there is no item at the specified position. + * @remarks The specified @c itemIndex is -1 when there is no list item at the specified position. + * @remarks The specified @c elementId is -1 when there is no element at the specified position. + */ + result GetItemIndexFromPosition(const Tizen::Graphics::Point& position, int& itemIndex, int& elementId) const; + + /** + * Sets the color of a division line between items. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The division line color + * @exception E_SUCCESS The method is successful. + */ + result SetItemDividerColor(const Tizen::Graphics::Color& color); + + /** + * Gets the color of a division line between items. + * + * @since 2.0 + * + * @return The color of a section, @n + * else RGBA(0, 0, 0, 0) if the instance is invalid + */ + Tizen::Graphics::Color GetItemDividerColor(void) const; + + /** + * Sets the background color of this control. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The background color + * @exception E_SUCCESS The method is successful. + * @remarks The method sets the alpha value of the specified @c color to @c 255, when a device does not support 32bit color space. @n + * The background bitmap has priority over the background color. When both the background bitmap and the background color are specified, only + * the bitmap image is displayed. + */ + result SetBackgroundColor(const Tizen::Graphics::Color& color); + + /** + * Gets the background color of this control. + * + * @since 2.0 + * + * @return The background color, @n + * else RGBA(0, 0, 0, 0) if the instance is invalid + */ + Tizen::Graphics::Color GetBackgroundColor(void) const; + + /** + * Sets the bitmap of this control. + * + * @since 2.0 + * + * @return An error code + * @param[in] pBitmap The bitmap for the list + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetBackgroundBitmap(const Tizen::Graphics::Bitmap* pBitmap); + + /** + * Sets the bitmap of the empty list. + * + * @since 2.0 + * + * @return An error code + * @param[in] pBitmap The bitmap for the empty list + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetBitmapOfEmptyList(const Tizen::Graphics::Bitmap* pBitmap); + + /** + * Sets the text of the empty list. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text for the empty list + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetTextOfEmptyList(const Tizen::Base::String& text); + + /** + * Gets the text to display when there is no item in a list. + * + * @since 2.0 + * + * @return The text to display, @n + * else an empty string if the instance is invalid + */ + Tizen::Base::String GetTextOfEmptyList(void) const; + + /** + * Sets a color of the text to display when there is no item in a list. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The color of the text to display + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetTextColorOfEmptyList(const Tizen::Graphics::Color& color); + + /** + * Gets a color of the text to display when there is no item in a list. + * + * @since 2.0 + * + * @return The color of the text to display + */ + Tizen::Graphics::Color GetTextColorOfEmptyList(void) const; + + /** + * Begins the reordering mode. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see IListViewItemEventListener::OnListViewItemReordered() + */ + result BeginReorderingMode(void); + + /** + * Ends the reordering mode. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see IListViewItemEventListener::OnListViewItemReordered() + */ + result EndReorderingMode(void); + + /** + * Checks whether the %ListView control is in reordering mode. + * + * @since 2.0 + * + * @return @c true if the %ListView is in reordering mode, @n + * else @c false + */ + bool IsInReorderingMode(void) const; + +protected: + friend class _ListViewImpl; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + ListView(const ListView& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + ListView& operator =(const ListView& rhs); +}; // ListView + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_LIST_VIEW_H_ diff --git a/inc/FUiCtrlListViewTypes.h b/inc/FUiCtrlListViewTypes.h new file mode 100644 index 0000000..9c51fe5 --- /dev/null +++ b/inc/FUiCtrlListViewTypes.h @@ -0,0 +1,147 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlListViewTypes.h + * @brief This is the header file for the List enumerations. + * + * This header file contains the declarations of the List enumerations. + */ +#ifndef _FUI_CTRL_LIST_VIEW_TYPES_H_ +#define _FUI_CTRL_LIST_VIEW_TYPES_H_ + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @enum ListAnnexStyle + * + * Defines the style of annex in the items. + * + * @since 2.0 + */ +enum ListAnnexStyle +{ + LIST_ANNEX_STYLE_NORMAL = 0, /**< The no style annex */ + LIST_ANNEX_STYLE_MARK, /**< The mark style annex for multiple selection */ + LIST_ANNEX_STYLE_ONOFF_SLIDING, /**< The slider style On/Off */ + LIST_ANNEX_STYLE_DETAILED, /**< Detailed style for further interaction */ + LIST_ANNEX_STYLE_RADIO /**< The radio style for simple look */ +}; + +/** + * @enum ListItemDrawingStatus + * + * Defines the drawing state of the items. + * + * @since 2.0 + */ +enum ListItemDrawingStatus +{ + LIST_ITEM_DRAWING_STATUS_NORMAL = 0, /**< The normal drawing state */ + LIST_ITEM_DRAWING_STATUS_PRESSED, /**< The pressed drawing state */ + LIST_ITEM_DRAWING_STATUS_HIGHLIGHTED /**< The highlighted drawing state */ +}; + +/** + * @enum ListRefreshType + * + * Defines the update type of the list. + * + * @since 2.0 + */ +enum ListRefreshType +{ + LIST_REFRESH_TYPE_ITEM_ADD = 0, /**< The add type */ + LIST_REFRESH_TYPE_ITEM_REMOVE, /**< The remove type */ + LIST_REFRESH_TYPE_ITEM_MODIFY /**< The modify type */ +}; + +/** + * @enum ListItemStatus + * + * Defines the item state of the list. + * + * @since 2.0 + */ +enum ListItemStatus +{ + LIST_ITEM_STATUS_SELECTED = 0, /**< The selected item state */ + LIST_ITEM_STATUS_HIGHLIGHTED, /**< The highlighted item state */ + LIST_ITEM_STATUS_CHECKED, /**< The check item state */ + LIST_ITEM_STATUS_UNCHECKED, /**< The uncheck item state */ + LIST_ITEM_STATUS_MORE /**< The more item state */ +}; + +/** + * @enum ListContextItemStatus + * + * Defines the state of the context items. + * + * @since 2.0 + */ +enum ListContextItemStatus +{ + LIST_CONTEXT_ITEM_STATUS_SELECTED = 0, /**< The selected context item state */ + LIST_CONTEXT_ITEM_STATUS_HIGHLIGHTED /**< The highlighted context item state */ +}; + +/** + * @enum SweepDirection + * + * Defines the direction of the sweep interaction. + * + * @since 2.0 + */ +enum SweepDirection +{ + SWEEP_DIRECTION_LEFT = 0, /**< The left direction */ + SWEEP_DIRECTION_RIGHT /**< The right direction */ +}; + +/** + * @enum ListScrollItemAlignment + * + * Defines the alignment information for item scroll. + * + * @since 2.0 + */ +enum ListScrollItemAlignment +{ + LIST_SCROLL_ITEM_ALIGNMENT_TOP = 0, /**< The item is aligned at the top of the ListView at item scroll*/ + LIST_SCROLL_ITEM_ALIGNMENT_BOTTOM /**< The item is aligned at the bottom of the ListView at item scroll */ +}; + +/** + * @enum ListScrollStyle + * + * Defines the scroll style of the list. + * + * @since 2.0 + */ +enum ListScrollStyle +{ + SCROLL_STYLE_FADE_OUT = 0, /**< The fade-out scroll style */ + SCROLL_STYLE_FIXED, /**< The fixed scroll style */ + SCROLL_STYLE_FAST_SCROLL, /**< The fast scroll style */ + SCROLL_STYLE_JUMP_TO_TOP, /**< The jump to top scroll style */ + SCROLL_STYLE_THUMB /**< The thumb scroll style */ +}; + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_LIST_VIEW_TYPES_H_ diff --git a/inc/FUiCtrlMessageBox.h b/inc/FUiCtrlMessageBox.h new file mode 100644 index 0000000..a4aa470 --- /dev/null +++ b/inc/FUiCtrlMessageBox.h @@ -0,0 +1,349 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlMessageBox.h + * @brief This is the header file for the %MessageBox class. + * + * This header file contains the declarations of the %MessageBox class. + */ + +#ifndef _FUI_CTRL_MESSAGE_BOX_H_ +#define _FUI_CTRL_MESSAGE_BOX_H_ + +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @enum MessageBoxStyle + * + * Defines the %MessageBox style. + * + * @since 2.0 + */ +enum MessageBoxStyle +{ + MSGBOX_STYLE_NONE, /**< The message box does not contain push buttons: NONE */ + MSGBOX_STYLE_OK, /**< The message box contains one push button: OK */ + MSGBOX_STYLE_CANCEL, /**< The message box contains one push button: CANCEL */ + MSGBOX_STYLE_OKCANCEL, /**< The message box contains two push buttons: OK and CANCEL */ + MSGBOX_STYLE_YESNO, /**< The message box contains two push buttons: YES and NO */ + MSGBOX_STYLE_YESNOCANCEL, /**< The message box contains three push buttons: YES, NO and CANCEL */ + MSGBOX_STYLE_ABORTRETRYIGNORE, /**< The message box contains three push buttons: ABORT, RETRY, and IGNORE */ + MSGBOX_STYLE_CANCELTRYCONTINUE, /**< The message box contains three push buttons: CANCEL, TRY, and CONTINUE */ + MSGBOX_STYLE_RETRYCANCEL /**< The message box contains two push buttons: RETRY and CANCEL */ +}; + + +/** + * @enum MessageBoxModalResult + * + * Defines the %MessageBox notifications. + * + * @since 2.0 + */ +enum MessageBoxModalResult +{ + + MSGBOX_RESULT_CLOSE, /**< The message box is closed */ + MSGBOX_RESULT_OK, /**< The OK button is selected */ + MSGBOX_RESULT_CANCEL, /**< The cancel button is selected */ + MSGBOX_RESULT_YES, /**< The Yes button is selected */ + MSGBOX_RESULT_NO, /**< The No button is selected */ + MSGBOX_RESULT_ABORT, /**< The Abort button is selected */ + MSGBOX_RESULT_TRY, /**< The Try button is selected */ + MSGBOX_RESULT_RETRY, /**< The Retry button is selected */ + MSGBOX_RESULT_IGNORE, /**< The Ignore button is selected */ + MSGBOX_RESULT_CONTINUE, /**< The Continue button is selected */ +}; + + +/** + * @class MessageBox + * @brief This class implements a message box. + * + * @since 2.0 + * + * The %MessageBox class displays a confirmation message when the user is asked to confirm an action, or a warning message when the + * user wants to continue a potentially dangerous action. It can also display information, question, alarm, and lock messages, or + * the user selections. + * + * For more information on the class features, see Popup and MessageBox. + * + * The following example demonstrates how to use the %MessageBox class. + * + * @code +// Sample code for MessageBoxSample.h +#include + +class MessageBoxSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IActionEventListener +{ +public: + bool Initialize(void); + void OpenMessageBox(void); + virtual result OnInitializing(void); + virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId); + +protected: + static const int ID_BTN_DO_SOMETHING = 101; +}; + * @endcode + * + * @code +// Sample code for MessageBoxSample.cpp +#include + +#include "MessageBoxSample.h" + +using namespace Tizen::Graphics; +using namespace Tizen::Ui::Controls; + +bool +MessageBoxSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +MessageBoxSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of Button + Button* pButton = new Button(); + pButton->Construct(Rectangle(10, 10, 350, 60), L"MessageBox Test"); + pButton->SetActionId(ID_BTN_DO_SOMETHING); + pButton->AddActionEventListener(*this); + + // Adds the button to the form + AddControl(*pButton); + + return r; +} + +void +MessageBoxSample::OpenMessageBox(void) +{ + // Creates an instance of MessageBox + MessageBox messageBox; + messageBox.Construct(L"MessageBox Title", L"MessageBox Sample Code.", MSGBOX_STYLE_OK, 3000); + + int modalResult = 0; + + // Calls ShowAndWait() : Draws and Shows itself and processes events + messageBox.ShowAndWait(modalResult); + + switch (modalResult) + { + case MSGBOX_RESULT_OK: + { + // .... + } + break; + default: + break; + } +} + +void +MessageBoxSample::OnActionPerformed(const Control& source, int actionId) +{ + switch (actionId) + { + case ID_BTN_DO_SOMETHING: + { + OpenMessageBox(); + } + break; + default: + break; + } +} + * @endcode + */ + +class _OSP_EXPORT_ MessageBox + : public Tizen::Ui::Window +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + MessageBox(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~MessageBox(void); + + /** + * Initializes this instance of %MessageBox with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] title The title string to be set + * @param[in] text The text string to be set + * @param[in] style The style of the %MessageBox control + * @param[in] timeout The duration of the timeout in milliseconds + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @exception E_INVALID_ARG The specified @c text is too long. + * @remarks To create a %MessageBox control, call ShowAndWait() after the Construct() method is called. @n + * The message box text cannot contain over @c 399 characters. @n + * To display the text in multi-lines or to denote the end of line use '\\n'. + * @see ShowAndWait() + */ + result Construct(const Tizen::Base::String& title, const Tizen::Base::String& text, MessageBoxStyle style, unsigned long timeout = 0); + +public: + /** + * Runs the modal window. @n + * This method should be called only after calling the Construct() method. + * + * @since 2.0 + * + * @return An error code + * @param[out] modalResult The %MessageBox notification + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + virtual result ShowAndWait(int& modalResult); + + /** + * Gets the text of the %MessageBox control. + * + * @since 2.0 + * + * @return The text of this %MessageBox instance, @n + * else an empty string if the instance is invalid + */ + Tizen::Base::String GetText(void) const; + + /** + * Gets the title of the %MessageBox control. + * + * @since 2.0 + * + * @return The title of this %MessageBox instance, @n + * else an empty string if the instance is invalid + */ + Tizen::Base::String GetTitleText(void) const; + + /** + * Gets the style of the current %MessageBox. + * + * @since 2.0 + * + * @return The style of the current %MessageBox, @n + * else @c MSGBOX_STYLE_NONE if the instance is invalid + */ + MessageBoxStyle GetMessageBoxStyle(void) const; + + /** + * Gets the timeout value of %MessageBox. + * + * @since 2.0 + * + * @return The timeout value in milliseconds, @n + * else @c 0 if the instance is invalid + */ + virtual unsigned long GetTimeout(void) const; + + /** + * Sets the color of the %MessageBox control. + * + * @since 2.0 + * + * @param[in] color The color to be set + */ + void SetColor(const Tizen::Graphics::Color& color); + + /** + * Gets the color of the %MessageBox control. + * + * @since 2.0 + * + * @return The color to be set + */ + Tizen::Graphics::Color GetColor(void) const; + + /** + * Sets the title text color of the %MessageBox control. + * + * @since 2.0 + * + * @param[in] color The title text color to be set + */ + void SetTitleTextColor(const Tizen::Graphics::Color& color); + + /** + * Gets the title text color of the %MessageBox control. + * + * @since 2.0 + * + * @return The title text color + */ + Tizen::Graphics::Color GetTitleTextColor(void) const; + + /** + * Sets the text color of the %MessageBox control. + * + * @since 2.0 + * + * @param[in] color The text color to be set + */ + void SetTextColor(const Tizen::Graphics::Color& color); + + /** + * Gets the text color of the %MessageBox control. + * + * @since 2.0 + * + * @return The text color + */ + Tizen::Graphics::Color GetTextColor(void) const; + +protected: + friend class _MessageBoxImpl; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + MessageBox(const MessageBox& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + MessageBox& operator =(const MessageBox& rhs); + +}; // MessageBox + + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_MESSAGE_BOX_H_ diff --git a/inc/FUiCtrlOptionMenu.h b/inc/FUiCtrlOptionMenu.h new file mode 100644 index 0000000..80ad9a4 --- /dev/null +++ b/inc/FUiCtrlOptionMenu.h @@ -0,0 +1,481 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlOptionMenu.h + * @brief This is the header file for the %OptionMenu class. + * + * This header file contains the declarations of the %OptionMenu class and its helper classes. + */ + +#ifndef _FUI_CTRL_OPTION_MENU_H_ +#define _FUI_CTRL_OPTION_MENU_H_ + +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @if OSPDEPREC + * @class OptionMenu + * @brief [Deprecated] This class defines a common behavior for an %OptionMenu control. + * + * @deprecated This class is deprecated because the use of the %OptionMenu control is no longer recommended. + * @since 2.0 + * + * The %OptionMenu class defines a common behavior for an %OptionMenu control. + * An %OptionMenu is used to present users with multiple options. Hierarchical menu + * of depth 2 can be constructed. Option menu consists of main items and sub-items. + * Unlike ContextMenu, menus cannot display bitmaps. + * + * If an application wants to perform tasks when a menu item is selected, it must + * implement IActionEventListener and register the listener by calling %OptionMenu's + * AddActionEventListener() method. It will then receive action ID associated + * with the menu item. + * Note that %OptionMenu cannot be used in a Popup. + * + * Example: + * + * @image html ui_controls_optionmenu.png + * + * This is the simple UI application which uses an %OptionMenu control. + * + * @code + // Sample code for OptionMenuSample.h + #include + +class OptionMenuSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IActionEventListener +{ +public: + bool Initialize(void) ; + void ShowOptionMenu(void); + + virtual result OnInitializing(void); + virtual result OnTerminating(void); + + // IActionEventListener + virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId); + +private: + static const int ID_OPTIONKEY = 100; + static const int ID_OPTIONMENU_ITEM1 = 101; + static const int ID_OPTIONMENU_ITEM2 = 102; + + Tizen::Ui::Controls::OptionMenu* __pOptionMenu; +}; + * @endcode + * + * @code +// Sample code for OptionMenuSample.cpp +#include "OptionMenuSample.h" + +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; + +bool +OptionMenuSample::Initialize() +{ + Construct(FORM_STYLE_OPTIONKEY|FORM_STYLE_NORMAL); + return true; +} + +result +OptionMenuSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of OptionMenu + __pOptionMenu = new OptionMenu(); + __pOptionMenu->Construct(); + __pOptionMenu->AddItem("Item1",ID_OPTIONMENU_ITEM1); + __pOptionMenu->AddItem("Item2",ID_OPTIONMENU_ITEM2); + SetOptionkeyActionId(ID_OPTIONKEY); + AddOptionkeyActionListener(*this); + + return r; +} + +result +OptionMenuSample::OnTerminating(void) +{ + result r = E_SUCCESS; + delete __pOptionMenu; + return r; +} + +void +OptionMenuSample::ShowOptionMenu(void) +{ + __pOptionMenu->SetShowState(true); + __pOptionMenu->Show(); +} + +// IActionEventListener implementation +void +OptionMenuSample::OnActionPerformed(const Control& source, int actionId) +{ + switch (actionId) + { + case ID_OPTIONKEY: + { + ShowOptionMenu(); + } + break; + case ID_OPTIONMENU_ITEM1: + { + // .... + } + break; + case ID_OPTIONMENU_ITEM2: + { + // .... + } + break; + default: + break; + } +} + * @endcode + * @endif + */ +class _OSP_EXPORT_ OptionMenu + : public Tizen::Ui::Window +{ +public: + /** + * @if OSPDEPREC + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %OptionMenu control is no longer recommended. + * @since 2.0 + * @endif + */ + OptionMenu(void); + + /** + * @if OSPDEPREC + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %OptionMenu control is no longer recommended. + * @since 2.0 + * @endif + */ + virtual ~OptionMenu(void); + + /** + * @if OSPDEPREC + * Initializes this instance of %OptionMenu. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %OptionMenu control is no longer recommended. + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM This method has failed. + * @endif + */ + result Construct(void); + + /** + * @if OSPDEPREC + * Adds a listener instance to receive action events from this control. @n + * The added listener can listen to events on the given event dispatcher's context when they are fired. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %OptionMenu control is no longer recommended. + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @endif + */ + void AddActionEventListener(Tizen::Ui::IActionEventListener& listener); + + /** + * @if OSPDEPREC + * Removes the specified action event listener so that it no longer receives events from this control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %OptionMenu control is no longer recommended. + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @endif + */ + void RemoveActionEventListener(Tizen::Ui::IActionEventListener& listener); + + /** + * @if OSPDEPREC + * Appends new item to the end of %OptionMenu. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %OptionMenu control is no longer recommended. + * @since 2.0 + * + * @return An error code + * @param[in] text The item to be appended + * @param[in] actionId The action ID + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM This method has failed. + * @remarks %OptionMenu can have a maximum of 12 main items. + * @endif + */ + result AddItem(const Tizen::Base::String& text, int actionId); + + /** + * @if OSPDEPREC + * Inserts a specific item at the given index of %OptionMenu. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %OptionMenu control is no longer recommended. + * @since 2.0 + * + * @return An error code + * @param[in] mainIndex The main index + * @param[in] text The item to be set + * @param[in] actionId The item ID + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is less than @c 0 or greater than @c 12. + * @exception E_SYSTEM The method has failed. + * @remarks %OptionMenu can have a maximum of 12 main items. + * @endif + */ + result InsertItemAt(int mainIndex, const Tizen::Base::String& text, int actionId); + + /** + * @if OSPDEPREC + * Sets a specific item at the given index of %OptionMenu. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %OptionMenu control is no longer recommended. + * @since 2.0 + * + * @return An error code + * @param[in] mainIndex The main index + * @param[in] text The string of the item to be set + * @param[in] actionId The item ID + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is less than @c 0 or greater than @c 12. + * @exception E_SYSTEM The method has failed. + * @endif + */ + result SetItemAt(int mainIndex, const Tizen::Base::String& text, int actionId); + + /** + * @if OSPDEPREC + * Removes the item of the specified index from %OptionMenu. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %OptionMenu control is no longer recommended. + * @since 2.0 + * + * @return An error code + * @param[in] mainIndex The main index + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is less than @c 0 or greater than @c 12. + * @exception E_SYSTEM This method has failed. + * @endif + */ + result RemoveItemAt(int mainIndex); + + /** + * @if OSPDEPREC + * Gets the number of items registered for %OptionMenu. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %OptionMenu control is no longer recommended. + * @since 2.0 + * + * @return The number of items registered for %OptionMenu + * @endif + */ + int GetItemCount(void) const; + + /** + * @if OSPDEPREC + * Gets the index of the item with the specified action ID. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %OptionMenu control is no longer recommended. + * @since 2.0 + * + * @return The index of the item + * @param[in] actionId The action ID of the item + * @endif + */ + int GetItemIndexFromActionId(int actionId) const; + + /** + * @if OSPDEPREC + * Gets the action ID of the item at the specified index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %OptionMenu control is no longer recommended. + * @since 2.0 + * + * @return The action ID of the item + * @param[in] mainIndex The index of the item + * @endif + */ + int GetItemActionIdAt(int mainIndex) const; + + /** + * @if OSPDEPREC + * Appends new sub-item to the end of %OptionMenu. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %OptionMenu control is no longer recommended. + * @since 2.0 + * + * @return An error code + * @param[in] mainIndex The index of the main item + * @param[in] text The string of item to be appended + * @param[in] actionId The item ID + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is less than @c 0 or greater than @c 12. + * @exception E_SYSTEM This method has failed. + * @remarks %OptionMenu can have a maximum of 32 sub-items. + * @endif + */ + result AddSubItem(int mainIndex, const Tizen::Base::String& text, int actionId); + + /** + * @if OSPDEPREC + * Inserts a specific sub-item at the given index of %OptionMenu. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %OptionMenu control is no longer recommended. + * @since 2.0 + * + * @return An error code + * @param[in] mainIndex The index of the main item + * @param[in] subIndex The index of the sub-item + * @param[in] text The string of the item to be set + * @param[in] actionId The action ID + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is less than @c 0 or greater than @c 12. + * @exception E_SYSTEM This method has failed. + * @remarks %OptionMenu can have a maximum of 32 sub-items. + * @endif + */ + result InsertSubItemAt(int mainIndex, int subIndex, const Tizen::Base::String& text, int actionId); + + /** + * @if OSPDEPREC + * Sets a specific sub-item at the given index of %OptionMenu. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %OptionMenu control is no longer recommended. + * @since 2.0 + * + * @return An error code + * @param[in] mainIndex The index of the main item + * @param[in] subIndex The index of the sub-item + * @param[in] text The string of the item to be set + * @param[in] actionId The action ID + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is less than @c 0 or greater than @c 12. + * @exception E_SYSTEM This method has failed. + * @endif + */ + result SetSubItemAt(int mainIndex, int subIndex, const Tizen::Base::String& text, int actionId); + + /** + * @if OSPDEPREC + * Removes the sub-item of the specified index from %OptionMenu. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %OptionMenu control is no longer recommended. + * @since 2.0 + * + * @return An error code + * @param[in] mainIndex The index of the main item + * @param[in] subIndex The index of the sub-item + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is less than @c 0 or greater than @c 12. + * @exception E_SYSTEM This method has failed. + * @endif + */ + result RemoveSubItemAt(int mainIndex, int subIndex); + + /** + * @if OSPDEPREC + * Gets the number of sub-items registered for %OptionMenu. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %OptionMenu control is no longer recommended. + * @since 2.0 + * + * @return The number of sub-items registered for %OptionMenu + * @param[in] mainIndex The index of the main item + * @endif + */ + int GetSubItemCount(int mainIndex) const; + + /** + * @if OSPDEPREC + * Gets the index of the sub-item at the specified action ID. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %OptionMenu control is no longer recommended. + * @since 2.0 + * + * @return The index of the item + * @param[in] actionId The action ID of the item + * @endif + */ + int GetSubItemIndexFromActionId(int actionId) const; + + /** + * @if OSPDEPREC + * Gets the action ID of the sub-item at the specified index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %OptionMenu control is no longer recommended. + * @since 2.0 + * + * @return The action ID of the item + * @param[in] mainIndex The index of the main item + * @param[in] subIndex The index of the sub-item + * @endif + */ + int GetSubItemActionIdAt(int mainIndex, int subIndex) const; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + OptionMenu(const OptionMenu&); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + OptionMenu& operator =(const OptionMenu&); + + friend class _OptionMenuImpl; +}; // OptionMenu + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_OPTION_MENU_H_ diff --git a/inc/FUiCtrlOverlayPanel.h b/inc/FUiCtrlOverlayPanel.h new file mode 100644 index 0000000..316a0b2 --- /dev/null +++ b/inc/FUiCtrlOverlayPanel.h @@ -0,0 +1,292 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlOverlayPanel.h + * @brief This is the header file for the %OverlayPanel class. + * + * This header file contains the declarations of the %OverlayPanel class. + */ +#ifndef _FUI_CTRL_OVERLAY_PANEL_H_ +#define _FUI_CTRL_OVERLAY_PANEL_H_ + +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +/** + * @if OSPDEPREC + * @class OverlayPanel + * @brief [Deprecated] This class is an implementation of %OverlayPanel. + * + * @deprecated This class is deprecated. Instead of using this class, use the OverlayRegion class, that supports video playback and camera preview. + * @since 2.0 + * + * @remarks The %OverlayPanel control can only be attached to a %Form control by using Tizen::Ui::Container::AddControl method, because of its native + * characteristics. Since %OverlayPanel inherits a Panel control, it can be used as a container if needed. + * + * The %OverlayPanel class is an implementation of the %OverlayPanel control. + * The %OverlayPanel is a special type of panel which is used to specify a region where the developer + * can playback video or camera preview. It is called an overlay because it is possible to overlay + * other graphics and controls on top of the panel. + * The %OverlayPanel consists of two layers, the foreground panel and background buffer which supports + * H/W accelerated rendering. Due to the hardware accelerated nature, there is a limitation with an + * %OverlayPanel. The Form that houses an %OverlayPanel can only have a black, opaque background. + * The overlay panel can manipulate the rotation, the aspect ratio and the size of input buffer. + * + * Example: Please refer to the camera preview example of Tizen::Media::Camera + * + * @endif + */ +class _OSP_EXPORT_ OverlayPanel + : public Tizen::Ui::Controls::Panel +{ +public: + /** + * @if OSPDEPREC + * @enum Rotation + * + * Defines the various rotation options. + * + * @brief [Deprecated] + * @deprecated This enumerator is deprecated. Instead of using this class, use the %OverlayRegion class, that supports video playback and camera + * preview. + * @since 2.0 + * @endif + */ + enum Rotation + { + ROTATION_NONE, /**< @if OSPDEPREC No rotation @endif */ + ROTATION_90, /**< @if OSPDEPREC The 90 degree rotation @endif */ + ROTATION_180, /**< @if OSPDEPREC The 180 degree rotation @endif */ + ROTATION_270, /**< @if OSPDEPREC The 270 degree rotation @endif */ + ROTATION_NONE_LR, /**< @if OSPDEPREC The horizontal mirroring @endif */ + ROTATION_NONE_UD, /**< @if OSPDEPREC The vertical mirroring @endif */ + ROTATION_90_LR, /**< @if OSPDEPREC The 90 degree rotation with horizontal mirroring @endif */ + ROTATION_90_UD, /**< @if OSPDEPREC The 90 degree rotation with vertical mirroring @endif */ + ROTATION_180_LR, /**< @if OSPDEPREC The 180 degree rotation with horizontal mirroring @endif */ + ROTATION_180_UD, /**< @if OSPDEPREC The 180 degree rotation with vertical mirroring @endif */ + ROTATION_270_LR, /**< @if OSPDEPREC The 270 degree rotation with horizontal mirroring @endif */ + ROTATION_270_UD, /**< @if OSPDEPREC The 270 degree rotation with vertical mirroring @endif */ + ROTATION_MAX + }; + + /** + * @if OSPDEPREC + * @enum BufferPixelFormat + * + * Defines the pixel formats. + * + * @brief [Deprecated] + * @deprecated This enumerator is deprecated. Instead of using this class, use the %OverlayRegion class, that supports video playback and camera preview. + * @since 2.0 + * @endif + */ + enum BufferPixelFormat + { + /** + * @if OSPDEPREC + * The ARGB8888 pixel format + * + * @since 2.0 + * @endif + */ + BUFFER_PIXEL_FORMAT_ARGB8888, + + /** + * @if OSPDEPREC + * The RGB565 pixel format + * + * @since 2.0 + * @endif + */ + BUFFER_PIXEL_FORMAT_RGB565, + + /** + * @if OSPDEPREC + * The 8 bit Y plane followed by 8 bit 2 X 2 subsampled U and V planes + * + * @since 2.0 + * @endif + */ + BUFFER_PIXEL_FORMAT_YCbCr420_PLANAR + }; + + /** + * @if OSPDEPREC + * This is the default constructor for this class. + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @brief [Deprecated] + * @deprecated This method is deprecated. Instead of using this class, use the %OverlayRegion class, that supports video playback and camera preview. + * @since 2.0 + * @endif + */ + OverlayPanel(void); + + /** + * @if OSPDEPREC + * This is the destructor for this class. + * + * @brief [Deprecated] + * @deprecated This method is deprecated. Instead of using this class, use the %OverlayRegion class, that supports video playback and camera preview. + * @since 2.0 + * @endif + */ + virtual ~OverlayPanel(void); + + /** + * @if OSPDEPREC + * Initializes this instance of %OverlayPanel at the specified rectangle. + * + * @brief [Deprecated] + * @deprecated This method is deprecated. Instead of using this class, use the %OverlayRegion class, that supports video playback and camera preview. + * @since 2.0 + * + * @return An error code + * @param[in] rect The location and size of the %OverlayPanel control @n + * The maximum size is 480 x 800 on a WVGA screen, or 240 x 400 on a WQVGA screen. @n + * The minimum size of this control is 32 x 32 on a WVGA screen. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks The size of the control must be within the range defined by the minimum size and the maximum size. + * @remarks Do not use %OverlayPanel in combination with %OverlayRegion. If used, %OverlayPanel may not work as expected. + * @see Tizen::Ui::Container + * @endif + */ + result Construct(const Tizen::Graphics::Rectangle& rect); + + /** + * @if OSPDEPREC + * Sets the rotation of the input buffer. @n + * All the rotations are clock-wise. + * + * @brief [Deprecated] + * @deprecated This method is deprecated. Instead of using this class, use the %OverlayRegion class, that supports video playback and camera preview. + * @since 2.0 + * + * @param[in] rotation The rotation + * + * @endif + */ + void SetRendererRotation(OverlayPanel::Rotation rotation); + + /** + * @if OSPDEPREC + * Changes the size of the displayed renderer. + * + * @brief [Deprecated] + * @deprecated This method is deprecated. Instead of using this class, use the %OverlayRegion class, that supports video playback and camera preview. + * @since 2.0 + * + * @param[in] dim The dimension of the window to draw + * + * @endif + */ + void SetRendererSize(Tizen::Graphics::Dimension& dim); + + /** + * @if OSPDEPREC + * Sets the aspect ratio of the renderer. + * + * @brief [Deprecated] + * @deprecated This method is deprecated. Instead of using this class, use the %OverlayRegion class, that supports video playback and camera preview. + * @since 2.0 + * + * @param[in] fix Set to @c true if the renderer will display the aspect ratio of the input buffer even if the renderer and input data have + * different aspect ratios, @n + * else @c false + * @endif + */ + void SetRendererAspectRatio(bool fix); + + /** + * @if OSPDEPREC + * Sets the input buffer. + * + * @brief [Deprecated] + * @deprecated This method is deprecated. Instead of using this class, use the %OverlayRegion class, that supports video playback and camera preview. + * @since 2.0 + * + * @param[in] destDim The dimension of the window to be drawn + * @param[in] srcBuffer The source buffer + * @param[in] srcDim The source dimension + * @param[in] srcFormat The pixel format of buffer data + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @exception E_UNSUPPORTED_FORMAT The specified pixel format is not supported. + * @remarks BUFFER_PIXEL_FORMAT_ARGB8888, and BUFFER_PIXEL_FORMAT_RGB565 are not supported. @n + * Control::Invalidate() methods must be called to properly display the input buffer. + * + * @endif + */ + result SetInputBuffer(const Tizen::Graphics::Dimension& destDim, const Tizen::Base::ByteBuffer& srcBuffer, const Tizen::Graphics::Dimension& srcDim, BufferPixelFormat srcFormat); + + /** + * @if OSPDEPREC + * Gets the information of the background buffer. + * + * @brief [Deprecated] + * @deprecated This method is deprecated. Instead of using this class, use the %OverlayRegion class, that supports video playback and camera preview. + * @since 2.0 + * + * @return An error code + * @param[out] info The information of the background buffer + * @exception E_SUCCESS The method is successful. + * @exception E_OPERATION_FAILED The operation has failed. + * @remarks Currently, this function provides buffer information except the pointer of the RGB color buffer. @n + * Therefore, info.pPixels is always assigned @c null. + * @endif + */ + result GetBackgroundBufferInfo(Tizen::Graphics::BufferInfo& info) const; + + /** + * @if OSPDEPREC + * Gets the masking color of this control. + * + * @brief [Deprecated] + * @deprecated This method is deprecated. Instead of using this class, use the %OverlayRegion class, that supports video playback and camera preview. + * @since 2.0 + * + * @return The pixel color format + * @endif + */ + Tizen::Graphics::Color GetMaskingColor(void) const; + +private: + friend class _OverlayPanelImpl; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + OverlayPanel(const OverlayPanel& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + OverlayPanel& operator =(const OverlayPanel& rhs); + +}; // OverlayPanel + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_OVERLAY_PANEL_H_ diff --git a/inc/FUiCtrlOverlayRegion.h b/inc/FUiCtrlOverlayRegion.h new file mode 100644 index 0000000..ed8a9b5 --- /dev/null +++ b/inc/FUiCtrlOverlayRegion.h @@ -0,0 +1,463 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlOverlayRegion.h + * @brief This is the header file for the %OverlayRegion class. + * + * This header file contains the declarations of the %OverlayRegion class. + */ + +#ifndef _FUI_CTRL_OVERLAY_REGION_H_ +#define _FUI_CTRL_OVERLAY_REGION_H_ + +#include +#include + +namespace Tizen { namespace Base +{ +class ByteBuffer; +}} // Tizen::Base + +namespace Tizen { namespace Graphics +{ +class Point; +class Dimension; +class Rectangle; +class BufferInfo; +}} // Tizen::Graphics + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @enum OverlayRegionBufferPixelFormat + * + * Defines the pixel formats. + * + * @since 2.0 + */ +enum OverlayRegionBufferPixelFormat +{ + OVERLAY_REGION_BUFFER_PIXEL_FORMAT_ARGB8888 = 1, /**< The ARGB8888 pixel format */ + OVERLAY_REGION_BUFFER_PIXEL_FORMAT_RGB565, /**< The RGB565 pixel format */ + OVERLAY_REGION_BUFFER_PIXEL_FORMAT_YCbCr420_PLANAR, /**< The 8-bit Y plane followed by the 8-bit 2x2 subsampled U and V planes */ + OVERLAY_REGION_BUFFER_PIXEL_FORMAT_NV12, /**< The NV12 pixel format */ + OVERLAY_REGION_BUFFER_PIXEL_FORMAT_UYVY, /**< The UYVY pixel format */ + OVERLAY_REGION_BUFFER_PIXEL_FORMAT_MAX, // This enum value is for internal use only. Using this enum value can cause behavioral, security-related, and consistency-related issues in the application. + OVERLAY_REGION_BUFFER_PIXEL_FORMAT_MIN = 0 // This enum value is for internal use only. Using this enum value can cause behavioral, security-related, and consistency-related issues in the application. +}; + +/** + * @enum OverlayRegionType + * + * Defines the type of an overlay region. + * + * @since 2.0 + */ +enum OverlayRegionType +{ + OVERLAY_REGION_TYPE_PRIMARY_CAMERA = 1, /**< The primary camera type @n + An overlay region displays the auto-rotated primary camera input that comes from Camera. */ + OVERLAY_REGION_TYPE_SECONDARY_CAMERA, /**< The secondary camera type @n + An overlay region displays the auto-rotated and mirrored secondary camera input that comes from Camera. */ + OVERLAY_REGION_TYPE_NORMAL, /**< The normal type @n + An overlay region displays the user input as it is. */ + OVERLAY_REGION_TYPE_MAX, // This enum value is for internal use only. Using this enum value can cause behavioral, security-related, and consistency-related issues in the application. + OVERLAY_REGION_TYPE_MIN = 0 // This enum value is for internal use only. Using this enum value can cause behavioral, security-related, and consistency-related issues in the application. +}; + +/** + * @enum OverlayRegionEvaluationOption + * + * Defines the option for evaluating the bounds of an overlay region. + * + * @since 2.0 + */ +enum OverlayRegionEvaluationOption +{ + OVERLAY_REGION_EVALUATION_OPTION_GREATER_THAN, /**< The option evaluating the overlay region bounds and finding the minimum bounds greater than the input bounds */ + OVERLAY_REGION_EVALUATION_OPTION_LESS_THAN, /**< The option evaluating the overlay region bounds and finding the maximum bounds smaller than input bounds */ +}; + + +/** + * @class OverlayRegion + * @brief This class is an implementation of an %OverlayRegion. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %OverlayRegion class displays a region of an overlay surface, which is used to play back a video or show the camera preview. + * @n + * For more information on the class features, see OverlayRegion. + * + * @code +//Sample code for OverlayRegionSample.h +#include +#include +#include + +class OverlayRegionSample + : public Tizen::Ui::Controls::Form + , public Tizen::Media::IPlayerEventListener +{ +public: + OverlayRegionSample(void) + : __pPlayer(null) + , __pOverlayRegion(null) + , __pOverlayPanel(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + virtual result OnTerminating(void); + + // IPlayerEventListener + virtual void OnPlayerOpened(result r); + virtual void OnPlayerEndOfClip(void); + virtual void OnPlayerSeekCompleted(result r); + virtual void OnPlayerBuffering(int percent); + virtual void OnPlayerErrorOccurred(const Tizen::Media::PlayerErrorReason r); + virtual void OnPlayerInterrupted(void); + virtual void OnPlayerReleased(void); + +private: + Tizen::Media::Player* __pPlayer; + Tizen::Ui::Controls::OverlayRegion*__pOverlayRegion; + Tizen::Ui::Controls::Panel* __pOverlayPanel; +}; + * @endcode + * + * @code +//Sample code for OverlayRegionSample.cpp +#include + +#include "OverlayRegionSample.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::Graphics; +using namespace Tizen::Media; +using namespace Tizen::Ui::Controls; + +bool +OverlayRegionSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +OverlayRegionSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Sets an overlay region area + int widthVideo = 480; + int HeightVideo = 320; + int positionX = (GetClientAreaBounds().width - 480) / 2; + int positionY = (GetClientAreaBounds().width - 480) / 2; + Rectangle overlayRectangle(positionX, positionY, widthVideo, HeightVideo); + + // Gets an overlay region + __pOverlayRegion = GetOverlayRegionN(overlayRectangle, OVERLAY_REGION_TYPE_NORMAL); + + // Gets buffer information + BufferInfo bufferInfo; + __pOverlayRegion->GetBackgroundBufferInfo(bufferInfo); + + // Gets a video file path + String videoFilePath = App::GetInstance()->GetAppResourcePath() + L"tizen.mp4"; + + // Creates an instance of Player + __pPlayer = new Player(); + __pPlayer->Construct(*this, &bufferInfo); + __pPlayer->SetLooping(true); + __pPlayer->OpenFile(videoFilePath); + __pPlayer->Play(); + + // Creates an instance of Panel which is overlaid with overlay region + __pOverlayPanel = new Panel(); + __pOverlayPanel->Construct(overlayRectangle); + AddControl(*__pOverlayPanel); + + // Creates instaces of Button and Label and adds controls to the panel + Label* pLabel = new Label(); + pLabel->Construct(Rectangle(0, 0, 400, 80),L"OverlayRegion Sample"); + pLabel->SetTextColor(Color::GetColor(COLOR_ID_RED)); + __pOverlayPanel->AddControl(*pLabel); + + Button* pButton = new Button(); + pButton->Construct(Rectangle(widthVideo - 200, HeightVideo - 100, 180, 80),L"BUTTON"); + __pOverlayPanel->AddControl(*pButton); + + Invalidate(true); + + return r; +} + +result +OverlayRegionSample::OnTerminating(void) +{ + result r = E_SUCCESS; + + // Deallocates controls + delete __pPlayer; + delete __pOverlayRegion; + + return r; +} + +// IPlayerEventListener implementation +void +OverlayRegionSample::OnPlayerOpened(result r) +{ + // .... +} + +void +OverlayRegionSample::OnPlayerEndOfClip(void) +{ + // .... +} + +void +OverlayRegionSample::OnPlayerSeekCompleted(result r) +{ + // .... +} + +void +OverlayRegionSample::OnPlayerBuffering(int percent) +{ + // .... +} + +void +OverlayRegionSample::OnPlayerErrorOccurred(const PlayerErrorReason r) +{ + // .... +} + +void +OverlayRegionSample::OnPlayerInterrupted(void) +{ + // .... +} + +void +OverlayRegionSample::OnPlayerReleased(void) +{ + // .... +} + * @endcode + */ +class _OSP_EXPORT_ OverlayRegion + : public Tizen::Base::Object +{ +public: + /** + * This is the destructor for this class. + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~OverlayRegion(void); + + /** + * Gets the position and size of the overlay region. + * + * @since 2.0 + * + * @return An instance of Rectangle that represents the position of the top-left corner, the width, and the height of the overlay region + * @remarks The shape of an overlay region is rectangular, which is defined by the top-left point, and the width or height. The position of the top-left + * point is relative to the top-left corner of the parent form. + * + */ + Tizen::Graphics::Rectangle GetBounds(void) const; + + /** + * Gets the position and size of the overlay region. + * + * @since 2.0 + * + * @param[out] x The x position of the top-left corner of the overlay region + * @param[out] y The y position of the top-left corner of the overlay region + * @param[out] width The width of the rectangular region + * @param[out] height The height of the rectangular region + * @remarks The shape of an overlay region is rectangular, which is defined by the top-left point, and the width or height. The position of the top-left + * point is relative to the top-left corner of the parent form. + * + */ + void GetBounds(int& x, int& y, int& width, int& height) const; + + /** + * Sets the input buffer. @n + * Due to the hardware accelerated rendering, there are limitations for an input buffer. The input buffer has the same restriction regarding its size as + * the overlay region and it can be checked by using the GetWidthUnit(), GetHeightUnit() and GetMaxCount(). If the specified condition is not satisfied, + * the E_INVALID_ARG exception is returned. If an input buffer does not fit to the bounds of the overlay region, it will be scaled up or down to the overlay + * region bounds without keeping the ratio of input. + * + * @since 2.0 + * + * @return An error code + * @param[in] srcBuffer The source buffer + * @param[in] srcDim The source dimension + * @param[in] srcFormat The pixel format of buffer data + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_UNSUPPORTED_FORMAT The specified pixel format is not supported. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_SYSTEM A system error has occurred. + */ + result SetInputBuffer(const Tizen::Base::ByteBuffer& srcBuffer, const Tizen::Graphics::Dimension& srcDim, OverlayRegionBufferPixelFormat srcFormat); + + /** + * Gets the information related to the background buffer. + * + * @since 2.0 + * + * @return An error code + * @param[out] info The information of the input buffer + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method provides the buffer information, except the pointer of a color buffer. Therefore, info.pPixels is always assigned as @c null. + */class Dimension; + + result GetBackgroundBufferInfo(Tizen::Graphics::BufferInfo& info) const; + + /** + * Shows the overlay region on the screen. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation, that is, this control cannot be displayed. + * @exception E_SYSTEM A system error has occurred. + */ + result Show(void); + + /** + * Evaluates and returns the valid position and size that are closest to the specified bounds. + * + * @since 2.0 + * + * @return @c true if the evaluation process does not meet an error, @n + * else @c false + * @param[in] option The option for evaluating the bounds of the overlay region + * @param[in, out] rect An instance of %Rectangle that represents the validated bounds of %OverlayRegion @n + * The width and height of the input rectangle must be greater than @c 0. + * @param[out] modified A boolean flag that indicates whether the specified @c rectangle is modified + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_UNSUPPORTED_OPTION A specified input parameter is not supported. + * @exception E_SYSTEM A system error has occurred. + * @remarks Due to the hardware accelerated rendering, there are limitations for an overlay region. @n + * The hardware capability for an overlay region is checked by using the GetWidthUnit(), GetHeightUnit() and GetMaxCount(). @n + * If the application runs on multi-screen resolutions, the specified bounds may not meet the hardware limitations of the overlay region. In + * such cases, GetOverlayRegionN() will return E_INVALID_ARG. @n + * To prevent this kind of problem, the application must use the OverlayRegion::EvaluateBounds() method to get a validated bounds that can be + * used as the input bounds of the GetOverlayRegionN() method. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + static bool EvaluateBounds(OverlayRegionEvaluationOption option, Tizen::Graphics::Rectangle& rect, bool& modified); + + /** + * Gets the value of the width. @n + * Only a multiple of this value can be allowed as the width of an overlay region. + * + * @since 2.0 + * + * @return The value of width + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + static int GetWidthUnit(void); + + /** + * Gets the value of the height. @n + * Only a multiple of this value can be allowed as the height of an overlay region. + * + * @since 2.0 + * + * @return The value of the height + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + static int GetHeightUnit(void); + + /** + * Gets the maximum count of overlay regions that can be used simultaneously per application. + * + * @since 2.0 + * + * @return The maximum count of overlay regions that can be used simultaneously per application + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + static int GetMaxCount(void); + + /** + * Gets the BufferPixelFormat list for the %OverlayRegion class. @n + * Each list item has a Tizen::UI::Controls::OverlayRegionBufferPixelFormat value. + * + * @since 2.0 + * + * @return A list of the pixel formats supported by the %OverlayRegion class, @n + * else @c null if no pixel format is supported or an exception occurs + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remark The specific error code can be accessed using the GetLastResult() method. @n + * The return value and each item in the list must be deleted by the caller. @n + * The format list can vary depending on the device. After checking the supported formats using this API, it's better to use a proper pixel format. @n + */ + static Tizen::Base::Collection::IListT< Tizen::Ui::Controls::OverlayRegionBufferPixelFormat >* GetSupportedBufferPixelFormatListN(void); + +private: + // + // This default constructor is intentionally declared as private so that only the platform can create an instance. + // + // @since 2.0 + // + OverlayRegion(void); + + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + OverlayRegion(const OverlayRegion& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + OverlayRegion& operator =(const OverlayRegion& rhs); + +private: + class _OverlayRegionImpl * __pOverlayRegionImpl; + + friend class _OverlayRegionImpl; + +}; // OverlayRegion + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_OVERLAY_CONTROL_H_ diff --git a/inc/FUiCtrlPanel.h b/inc/FUiCtrlPanel.h new file mode 100644 index 0000000..81e0680 --- /dev/null +++ b/inc/FUiCtrlPanel.h @@ -0,0 +1,293 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlPanel.h + * @brief This is the header file for the %Panel class. + * + * This header file contains the declarations of the %Panel class. + */ + +#ifndef _FUI_CTRL_PANEL_H_ +#define _FUI_CTRL_PANEL_H_ + +#include +#include +#include +#include + +namespace Tizen {namespace Base +{ +class String; +}} //Tizen::Base + +namespace Tizen { namespace Ui +{ +class DataBindingContext; +}} //Tizen::Ui + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @class Panel + * @brief This class provides a %Panel, that is the simplest container. + * + * @since 2.0 + * + * The %Panel class displays a space where other UI elements can be placed. It is a concrete implementation of the Container class. + * + * For more information on the class features, see Panels. + * + * The following example demonstrates how to use the %Panel class. + * + * @code +// Sample code for PanelSample.h +#include + +class PanelSample + : public Tizen::Ui::Controls::Form +{ +public: + PanelSample(void) + : __pPanel(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + +private: + Tizen::Ui::Controls::Panel* __pPanel; +}; + * @endcode + * + * @code +// Sample code for PanelSample.cpp +#include + +#include "PanelSample.h" + +using namespace Tizen::Graphics; +using namespace Tizen::Ui::Controls; + +bool +PanelSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +PanelSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of Panel + __pPanel = new Panel(); + __pPanel->Construct(Rectangle(100, 200, 300, 300)); + __pPanel->SetBackgroundColor(Color(0x50, 0xFF, 0x38)); + + //Adds the panel to the form + AddControl(*__pPanel); + + return r; +} + * @endcode + */ +class _OSP_EXPORT_ Panel + : public Tizen::Ui::Container +{ +// Lifecycle +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + * + */ + Panel(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + * + */ + virtual ~Panel(void); + + /** + * Initializes this instance of %Panel with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect The location and size of the %Panel control as an instance of Rectangle + * @param[in] groupStyle The group style of the %Panel control + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specified group style determines the border look of the %Panel control. + * @see Tizen::Ui::Container, Tizen::Ui::GroupStyle + */ + result Construct(const Tizen::Graphics::Rectangle& rect, GroupStyle groupStyle = GROUP_STYLE_NONE); + + + /** + * Initializes this instance of %Panel and child controls with the specified resource ID @n + * + * This method first attempts to find the resource file in the folder that corresponds to the current screen resolution. @n + * If it fails to find the resource file, it searches in other folders in the following order when CoordinateSystem is Logical in the application manifest file @n + * the density folder that corresponds to the current screen size category "res/screen-size-normal/" folder. + * + * @since 2.0 + * + * @return An error code + * @param[in] resourceId The resource ID describing the %Panel control + * @exception E_SUCCESS The method is successful. + * @exception E_FILE_NOT_FOUND The specified file cannot be found. + * @exception E_INVALID_FORMAT The specified XML format is invalid. + * @exception E_OPERATION_FAILED The operation has failed. + */ + result Construct(const Tizen::Base::String& resourceId); + + /** + * Initializes this instance of %Panel with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] layout The layout for both the portrait and landscape modes + * @param[in] rect The location and size of the %Panel control as an instance of Rectangle + * @param[in] groupStyle The table view style of the %Panel control + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The specified layout is already bound to another container. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specified group style determines the border look of the %Panel control. + * @see Tizen::Ui::Container, Tizen::Ui::GroupStyle + */ + result Construct(const Tizen::Ui::Layout& layout, const Tizen::Graphics::Rectangle& rect, GroupStyle groupStyle = GROUP_STYLE_NONE); + + /** + * Initializes this instance of %Panel with the specified layouts, rectangular region, and group style. + * + * @since 2.0 + * + * @return An error code + * @param[in] portraitLayout The layout for the portrait mode + * @param[in] landscapeLayout The layout for the landscape mode + * @param[in] rect The location and size of the %Panel control as an instance of Rectangle + * @param[in] groupStyle The table view style of the %Panel control + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The specified layout is already bound to another container. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specified group style determines the border look of the %Panel control. + * @see Tizen::Ui::Container, Tizen::Ui::GroupStyle + */ + result Construct(const Tizen::Ui::Layout& portraitLayout, const Tizen::Ui::Layout& landscapeLayout, const Tizen::Graphics::Rectangle& rect, GroupStyle groupStyle = GROUP_STYLE_NONE); + + /** + * Gets the background color of the %Panel control. + * + * @since 2.0 + * + * @return The background color + */ + Tizen::Graphics::Color GetBackgroundColor(void) const; + + /** + * Sets the background color of this control. + * + * @since 2.0 + * + * @param[in] color The background color + */ + void SetBackgroundColor(const Tizen::Graphics::Color& color); + + /** + * @if OSPDEPREC + * Enables the %Panel control to be composited to the screen buffer. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because changing composition mode is not allowed any more. + * @since 2.0 + * + * @return An error code + * @param[in] composite Set to @c true to make the %Panel control composited to the screen buffer, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks In case a %Panel is transparent and nothing is drawn on the canvas of the %Panel control, the graphic performance can be improved if the + * compositing of the %Panel control to the screen buffer is disabled. @n + * By default, compositing is enabled. For example, if a Form control has a %Panel that has a List, by disabling the compositing of the + * %Panel, the scroll performance of the %List will improve. + * @endif + */ + result SetCompositeEnabled(bool composite); + + /** + * @if OSPDEPREC + * Checks whether the %Panel control is composite to the screen buffer. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because changing composition mode is not allowed any more. + * @since 2.0 + * + * @return @c true if the %Panel control is composite to the screen buffer, @n + * else @c false + * @endif + */ + bool IsCompositeEnabled(void) const; + + /** + * Gets the data binding context. + * + * @since 2.0 + * + * @return The data binding context + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + DataBindingContext* GetDataBindingContextN(void) const; + +protected: + + friend class _PanelImpl; + + // Reserved virtual methods for later extension + + // The following methods are reserved and may change its name at any time without prior notice. + virtual void Panel_Reserved1(void) {} + + virtual void Panel_Reserved2(void) {} + + virtual void Panel_Reserved3(void) {} + +private: + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + Panel(const Panel& rhs); + + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + Panel& operator =(const Panel& rhs); + +}; // Panel + +}}} //Tizen::Ui::Controls + +#endif // _FUI_CTRL_PANEL_H_ + diff --git a/inc/FUiCtrlPopup.h b/inc/FUiCtrlPopup.h new file mode 100644 index 0000000..2b7d7ca --- /dev/null +++ b/inc/FUiCtrlPopup.h @@ -0,0 +1,447 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlPopup.h + * @brief This is the header file for the %Popup class. + * + * This header file contains the declarations of the %Popup class. + */ + +#ifndef _FUI_CTRL_POPUP_H_ +#define _FUI_CTRL_POPUP_H_ + +#include + +namespace Tizen { namespace Ui +{ +class DataBindingContext; +}} // Tizen::Ui + + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @class Popup + * @brief This class displays a popup on the top of the screen. + * + * @since 2.0 + * + * The %Popup class displays messages to alert the user of important changes, to request confirmation for a significant task, or to + * serve as a warning. It is an implementation of the Window class. + * + * For more information on the class features, see Popup and MessageBox. + * + * @see Tizen::Ui::Window + * + * The following example demonstrates how to use the %Popup class. + * + * @code +// Sample code for PopupSample.h +#include + +class PopupSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IActionEventListener +{ +public: + PopupSample(void) + : __pPopup(null){} + + bool Initialize(void); + void ShowPopup(void); + void HidePopup(void); + virtual result OnInitializing(void); + virtual result OnTerminating(void); + virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId); + +private: + static const int ID_BUTTON_OPEN_POPUP = 501; + static const int ID_BUTTON_CLOSE_POPUP = 502; + + Tizen::Ui::Controls::Popup* __pPopup; +}; + * @endcode + * + * @code +// Sample code for PopupSample.cpp +#include + +#include "PopupSample.h" + +using namespace Tizen::Graphics; +using namespace Tizen::Ui::Controls; + +bool +PopupSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +PopupSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of Popup + __pPopup = new Popup(); + __pPopup->Construct(true, Dimension(600,800)); + __pPopup->SetTitleText(L"Popup Sample"); + + // Creates an instance of Button to close the popup. + Button* pCloseButton = new Button(); + pCloseButton->Construct(Rectangle(10, 10, 250, 80), L"Close Popup"); + pCloseButton->SetActionId(ID_BUTTON_CLOSE_POPUP); + pCloseButton->AddActionEventListener(*this); + + // Adds the button to the popup + __pPopup->AddControl(*pCloseButton); + + // Creates an instance of Button to open the popup. + Button* pOpenButton = new Button(); + pOpenButton->Construct(Rectangle(10, 10, 250, 60), L"Open Popup"); + pOpenButton->SetActionId(ID_BUTTON_OPEN_POPUP); + pOpenButton->AddActionEventListener(*this); + + // Adds the button to the form + AddControl(*pOpenButton); + + return r; +} + +void +PopupSample::ShowPopup(void) +{ + __pPopup->SetShowState(true); + __pPopup->Show(); +} + +void +PopupSample::HidePopup(void) +{ + __pPopup->SetShowState(false); + Invalidate(true); +} + +result +PopupSample::OnTerminating(void) +{ + result r = E_SUCCESS; + + // Deallocates the __pPopup + delete __pPopup; + + return r; +} + +void +PopupSample::OnActionPerformed(const Control& source, int actionId) +{ + switch (actionId) + { + case ID_BUTTON_OPEN_POPUP: + { + ShowPopup(); + } + break; + case ID_BUTTON_CLOSE_POPUP: + { + HidePopup(); + } + break; + default: + break; + } +} + * @endcode + */ + +class _OSP_EXPORT_ Popup + : public Tizen::Ui::Window +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + Popup(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~Popup(void); + + /** + * Initializes this instance of %Popup with the specified dimensions. + * + * @since 2.0 + * + * @return An error code + * @param[in] hasTitle Set to @c true if the %Popup control has a title, @n + * else @c false + * @param[in] dim The size of the %Popup control + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(bool hasTitle, const Tizen::Graphics::Dimension& dim); + + /** + * Initializes this instance of %Popup and child controls with the specified resource ID @n + * + * This method first attempts to find the resource file in the folder that corresponds to the current screen resolution. @n + * If it fails to find the resource file, it searches in other folders in the following order when CoordinateSystem is Logical in the application manifest file @n + * the density folder that corresponds to the current screen size category "res/screen-size-normal/" folder. + * + * @since 2.0 + * + * @return An error code + * @param[in] resourceId The resource ID describing the %Popup control + * @exception E_SUCCESS The method is successful. + * @exception E_FILE_NOT_FOUND The specified file cannot be found. + * @exception E_INVALID_FORMAT The specified XML format is invalid. + * @exception E_OPERATION_FAILED The operation has failed. + */ + result Construct(const Tizen::Base::String& resourceId); + + /** + * Initializes this instance of %Popup with the specified layout and dimensions. + * + * @since 2.0 + * + * @return An error code + * @param[in] layout The layout for both the portrait and landscape mode + * @param[in] hasTitle Set to @c true if the %Popup control should have a title, @n + * else @c false + * @param[in] dim The size of the %Popup control + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid, or + * the specified layout is already bound to another container. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(const Tizen::Ui::Layout& layout, bool hasTitle, const Tizen::Graphics::Dimension& dim); + + /** + * Initializes this instance of %Popup with the specified layouts and dimensions. + * + * @since 2.0 + * + * @return An error code + * @param[in] portraitLayout The layout for the portrait mode + * @param[in] landscapeLayout The layout for the landscape mode + * @param[in] hasTitle Set to @c true if this %Popup control should have a title, @n + * else @c false + * @param[in] dim The size of the %Popup control + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid, or + * the specified layout is already bound to another container. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(const Tizen::Ui::Layout& portraitLayout, const Tizen::Ui::Layout& landscapeLayout, bool hasTitle, const Tizen::Graphics::Dimension& dim); + + /** + * Shows the modal window. @n + * + * @since 2.0 + * @return An error code + * @param[out] modalResult The %Popup's notification. @n + * This value is the 'modalResult' parameter of the EndModal() method + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE The %Popup is not visible. The visible state of the %Popup should be set @c true. + * @remarks Do not call this method from Tizen::App::App::OnAppInitializing(). @n + * To show a %Popup properly from Tizen::Ui::Controls::Form::OnInitializing(), theForm must + * have been successfully drawn before the DoModal() method. + */ + result DoModal(int& modalResult); + + /** + * Closes the modal window. @n + * + * @since 2.0 + * @return An error code + * @param[in] modalResult The result value of the modal window. @n + * The value which needs to be returned as the output parameter of DoModal() method should be passed as the input argument + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE The method is not supported because this popup isn't running as a modal window. + */ + result EndModal(int modalResult); + + /** + * Sets the title of the %Popup control. + * + * @since 2.0 + * + * @return An error code + * @param[in] title The title to be set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + virtual result SetTitleText(const Tizen::Base::String& title); + + /** + * Gets the title of the %Popup control. + * + * @since 2.0 + * + * @return The title of the %Popup control + */ + Tizen::Base::String GetTitleText(void) const; + + /** + * Gets the bounds of the client area. + * + * @since 2.0 + * + * @return The bounds of the client area in a Rectangle instance + */ + Tizen::Graphics::Rectangle GetClientAreaBounds(void) const; + + /** + * Creates and returns a graphics canvas whose bounds (position and size) are equal to the bounds of the client area of the %Popup control. + * + * @since 2.0 + * + * @return The graphic canvas of the %Popup control, @n + * else @c null if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_RESOURCE_UNAVAILABLE The required resource is currently unavailable. + * @remarks The method allocates a Tizen::Graphics::Canvas whose bounds are equal to that of the client area of the %Popup control. @n + * It is the responsibility of the developers to deallocate the canvas after use. + * @remarks The canvas is valid only if the properties of the parent control of the canvas remain unchanged. @n + * Therefore, delete the previously allocated canvas and create a new canvas using the GetCanvasN() method if the size or position of the + * control is changed. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Canvas* GetClientAreaCanvasN(void) const; + + /** + * Translates the specified position to the client coordinates. + * + * @since 2.0 + * + * @return The position in relative to the top-left corner of the client-area, @n + * else @c (-1,-1) if the instance is invalid + * @param[in] position The position relative to the top-left corner of the %Popup control + * @see TranslateFromClientAreaPosition() + */ + Tizen::Graphics::Point TranslateToClientAreaPosition(const Tizen::Graphics::Point& position) const; + + /** + * Translates the specified client position to the control coordinate. + * + * @since 2.0 + * + * @return The position in relative to the top-left corner of the %Popup control, @n + * else @c (-1,-1) if the instance is invalid + * @param[in] clientPosition The position relative to the top-left corner of the client area + * @see TranslateToClientAreaPosition() + */ + Tizen::Graphics::Point TranslateFromClientAreaPosition(const Tizen::Graphics::Point& clientPosition) const; + + /** + * Gets the color of the %Popup control. + * + * @since 2.0 + * + * @return The color, @n + * else RGBA(0, 0, 0, 0) if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetColor(void) const; + + /** + * Sets the color of the %Popup control. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The color to be set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetColor(const Tizen::Graphics::Color& color); + + /** + * Gets the title text color of the %Popup control. + * + * @since 2.0 + * + * @return The color, @n + * else RGBA(0, 0, 0, 0) if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetTitleTextColor(void) const; + + /** + * Sets the title text color of the %Popup control. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The title text color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetTitleTextColor(const Tizen::Graphics::Color& color); + + /** + * Gets the data binding context. + * + * @since 2.0 + * + * @return The data binding context + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + DataBindingContext* GetDataBindingContextN(void) const; + +protected: + friend class _PopupImpl; + + // + // The following methods are reserved and may change its name at any time without + // prior notice. + // + virtual void Popup_Reserved1(void) { } + virtual void Popup_Reserved2(void) { } + virtual void Popup_Reserved3(void) { } + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + Popup(const Popup& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + Popup& operator =(const Popup& rhs); + +}; // Popup + + +}}} // Tizen::Ui::Controls + +#endif //_FUI_CTRL_POPUP_H_ diff --git a/inc/FUiCtrlProgress.h b/inc/FUiCtrlProgress.h new file mode 100644 index 0000000..9ae9a0e --- /dev/null +++ b/inc/FUiCtrlProgress.h @@ -0,0 +1,284 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlProgress.h + * @brief This is the header file for the %Progress class. + * + * This header file contains the declarations of the %Progress class and its helper classes. + */ + +#ifndef _FUI_CTRL_PROGRESS_H_ +#define _FUI_CTRL_PROGRESS_H_ + +#include +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @class Progress + * @brief This class is an implementation of a %Progress control. + * + * @since 2.0 + * + * The %Progress class displays the progress of a lengthy operation in a progress bar. + * + * For more information on the class features, see Progress. + * + * The following example demonstrates how to use the %Progress class. + * + * @code +// Sample code for ProgressSample.h +#include + +class ProgressSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IActionEventListener +{ +public: + ProgressSample(void) + : __pProgress(null) + , __pValue(0){} + + bool Initialize(void); + virtual result OnInitializing(void); + virtual void OnActionPerformed(const Tizen::Ui::Control&, int); + +private: + static const int ID_BUTTON_CHECKED = 100; + + Tizen::Ui::Controls::Progress* __pProgress; + int __pValue; +}; + * @endcode + * + * @code +// Sample code for ProgressSample.cpp +#include + +#include "ProgressSample.h" + +using namespace Tizen::Graphics; +using namespace Tizen::Ui::Controls; + +bool +ProgressSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +ProgressSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of Progress + __pProgress = new Progress(); + __pProgress->Construct(Rectangle(50, 50, GetClientAreaBounds().width - 100, 100), 0, 100); + __pProgress->SetValue(__pValue); + + // Creates an instance of pButton to control progress value + Button* pButton = new Button(); + pButton->Construct(Rectangle(50, 200, 150, 100), L"Here"); + pButton->SetActionId(ID_BUTTON_CHECKED); + pButton->AddActionEventListener(*this); + + // Adds the __pProgress and the pButton to the form + AddControl(*__pProgress); + AddControl(*pButton); + + return r; +} + +void +ProgressSample::OnActionPerformed(const Control& source, int actionId) +{ + switch (actionId) + { + case ID_BUTTON_CHECKED : + { + if (__pValue >= 100) + { + __pValue = 0; + } + else + { + __pValue += 10; + } + __pProgress->SetValue(__pValue); + __pProgress->Invalidate(true); + } + break; + default: + break; + } +} + * @endcode + * + */ +class _OSP_EXPORT_ Progress + : public Tizen::Ui::Control +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + Progress(void); + + + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~Progress(void); + + + /** + * Initializes this instance of %Progress with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect An instance of the Rectangle class @n + * This instance represents the x and y coordinates of the top-left corner of the created window along with + * its width and height. + * @param[in] minValue The minimum value of the current instance of %Progress + * @param[in] maxValue The maximum value of the current instance of %Progress + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_OUT_OF_RANGE The value of an argument is outside the valid range defined by the method. @n + * The specified values should be positive and @c minValue should be less than @c maxValue. + * @exception E_SYSTEM A system error has occurred. + * @remarks A control is fully usable only after it has been added to a container, therefore some methods may fail if used earlier. @n + * @remarks The size of the control must be within the range defined by the minimum size and the maximum size. + */ + result Construct(const Tizen::Graphics::Rectangle& rect, int minValue, int maxValue); + +public: + /** + * Sets the current value of the %Progress control. @n + * If the given value is greater than the @c maxValue with which %Progress is constructed, it will be set to %maxValue. The same applies for @c minValue. + * + * @since 2.0 + * + * @param[in] value The current progress value + */ + void SetValue(int value); + + + /** + * Sets the minimum and maximum value of the %Progress control. + * + * @since 2.0 + * + * @return An error code + * @param[in] minValue The minimum value of the current instance of %Progress + * @param[in] maxValue The maximum value of the current instance of %Progress + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_OUT_OF_RANGE The value of an argument is outside the valid range defined by the method. @n + * The specified values should be positive. + * @exception E_SYSTEM A system error has occurred. + */ + result SetRange(int minValue, int maxValue); + + + /** + * Gets the current value of the %Progress control. + * + * @since 2.0 + * + * @return An integer value representing the current value of progress, @n + * else @c -1 if an error occurs + */ + int GetValue(void) const; + + + /** + * Gets the minimum value and the maximum value of the %Progress control. + * + * @since 2.0 + * + * @param[out] minValue The minimum value + * @param[out] maxValue The maximum value + */ + void GetRange(int& minValue, int& maxValue) const; + + + /** + * Gets the percent value of the %Progress control. + * + * @since 2.0 + * + * @return The progress as a percentage, @n + * else @c -1 if an error occurs + */ + int GetPercentComplete(void) const; + + + /** + * Sets the color of the bar. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The color to be set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The method ignores the alpha value of the @c color parameter and sets the alpha value to @c 255. + */ + result SetBarColor(const Tizen::Graphics::Color& color); + + + /** + * Gets the color of the bar. + * + * @since 2.0 + * + * @return The color of the bar, @n + * else RGBA(0, 0, 0, 0) if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetBarColor(void) const; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + Progress(const Progress& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + Progress& operator =(const Progress& rhs); + + friend class _ProgressImpl; + +}; // Progress + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_PROGRESS_H_ diff --git a/inc/FUiCtrlProgressPopup.h b/inc/FUiCtrlProgressPopup.h new file mode 100644 index 0000000..43dbe07 --- /dev/null +++ b/inc/FUiCtrlProgressPopup.h @@ -0,0 +1,286 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlProgressPopup.h + * @brief This is the header file for the %ProgressPopup class. + * + * This header file contains the declarations of the %ProgressPopup class. + */ + +#ifndef _FUI_CTRL_PROGRESS_POPUP_H_ +#define _FUI_CTRL_PROGRESS_POPUP_H_ + +#include + +namespace Tizen { namespace Ui +{ +class IProgressPopupEventListener; +}} // Tizen::Ui + + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @class ProgressPopup + * @brief This class defines the common behavior of a %ProgressPopup control. + * + * @since 2.0 + * + * The %ProgressPopup class displays processing animation to show processing status. + * It can contain a title, body text and cancel button. + * + * @see Tizen::Ui::Window + * + * The following example demonstrates how to use the %ProgressPopup class. + * + * @code +// Sample code for ProgressPopupSample.h +#include + +class ProgressPopupSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IProgressPopupEventListener +{ +public: + ProgressPopupSample(void); + virtual ~ProgressPopupSample(void); + + virtual bool Initialize(void); + void ShowProgressPopup(void); + virtual result OnInitializing(void); + virtual result OnTerminating(void); + virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId); + + //IProgressPopupEventListener + virtual void OnProgressPopupCanceled(void); + +private: + static const int ID_BUTTON_PROGRESSPOPUP = 501; + static const int ID_BUTTON_CLOSE_PROGRESSPOPUP = 502; + + Tizen::Ui::Controls::ProgressPopup* __pProgressPopup; +}; + * @endcode + * + * @code +// Sample code for ProgressPopupSample.cpp +#include "ProgressPopupSample.h" + +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; +using namespace Tizen::Graphics; + +ProgressPopupSample::ProgressPopupSample(void) + : __pProgressPopup(null) +{ +} + +ProgressPopupSample::~ProgressPopupSample(void) +{ +} + +bool +ProgressPopupSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +ProgressPopupSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of ProgressPopup + __pProgressPopup = new (std::nothrow) ProgressPopup(); + __pProgressPopup->Construct(true,false); + __pProgressPopup->SetTitleText(L"ProgressPopup Test"); + __pProgressPopup->SetText(L"Hello World!!"); + __pProgressPopup->AddProgressPopupEventListener(*this); + + // Creates an instance of Button to open the ProgressPopup + Button* pButtonProgressPopup = new Button(); + pButtonProgressPopup->Construct(Rectangle(10, 10, 250, 60), L"Open ProgressPopup"); + pButtonProgressPopup->SetActionId(ID_BUTTON_PROGRESSPOPUP); + pButtonProgressPopup->AddActionEventListener(*this); + + return r; +} + +result +ProgressPopupSample::OnTerminating(void) +{ + result r = E_SUCCESS; + + // Deallocates the __pProgressPopup + delete __pProgressPopup; + + return r; +} + +void +ProgressPopupSample::ShowProgressPopup(void) +{ + __pProgressPopup->SetShowState(true); + __pProgressPopup->Show(); +} + +void +ProgressPopupSample::OnActionPerformed(const Control& source, int actionId) +{ + switch (actionId) + { + case ID_BUTTON_PROGRESSPOPUP: + ShowProgressPopup(); + break; + default: + break; + } +} + +void +ProgressPopupSample::OnProgressPopupCanceled(void) +{ + __pProgressPopup->SetShowState(false); + Invalidate(true); +} + + * @endcode + */ +class _OSP_EXPORT_ ProgressPopup + : public Popup +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + ProgressPopup(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~ProgressPopup(void); + + /** + * Initializes this instance of %ProgressPopup with the specified parameters. + * + * @since 2.0 + * @return An error code + * @param[in] cancelButton Set to @c true if the %ProgressPopup window has a cancel button, @n + * else @c false + * @param[in] translucent Set to @c true if the %ProgressPopup window is translucent, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. @n + * This error occurs when the internal resource is not loaded. + * @remarks To show a %ProgressPopup window, call Show() or DoModal() after calling the Construct() method. @n + * By default, the title area and the body text are not shown. @n + * Use SetTitleText() and SetText() to show the title area and the body text. + * @remarks If cancelButton is set to true and ProgressPopup is closed by pressing a Cancel Button, + * out parameter of DoModal(), modalResult, is -1. + */ + result Construct(bool cancelButton, bool translucent); + + /** + * Sets the text of the %ProgressPopup window. + * + * @since 2.0 + * @return An error code + * @param[in] text The text to be set + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + */ + result SetText(const Tizen::Base::String& text); + + /** + * Gets the text of the %ProgressPopup window. + * + * @since 2.0 + * + * @return The text of the %ProgressPopup window, @n + * else an empty string if an error occurs + */ + Tizen::Base::String GetText(void) const; + + /** + * Adds a listener instance @n + * The added listener can listen to events on the given event dispatcher's context when they are fired. + * + * @since 2.0 + * @return An error code + * @param[in] listener The event listener to be added. Listener should be allocated at heap, not stack. + * @exception E_SUCCESS This method was successful. + * @exception E_OBJ_ALREADY_EXIST The listener was already exist. + */ + result AddProgressPopupEventListener(Tizen::Ui::IProgressPopupEventListener& listener); + + /** + * Removes a listener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * @return An error code + * @param[in] listener The event listener to be removed. @n + * Listener should be referring to previously allocated instance which is passed as an argument to AddProgressPopupEventListener. + * @exception E_SUCCESS This method was successful. + * @exception E_OBJ_NOT_FOUND The listener was not found. + */ + result RemoveProgressPopupEventListener(Tizen::Ui::IProgressPopupEventListener& listener); + + /** + * Sets the text color of the %ProgressPopup window. + * + * @since 2.0 + * @param[in] color The text color + */ + void SetTextColor(const Tizen::Graphics::Color& color); + + /** + * Gets the text color of the %ProgressPopup window. + * + * @since 2.0 + * @return The color, @n + * else RGBA(0, 0, 0, 0) if an error occurs + */ + Tizen::Graphics::Color GetTextColor(void) const; + +protected: + friend class _ProgressPopupImpl; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + ProgressPopup(const ProgressPopup& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + ProgressPopup& operator =(const ProgressPopup& rhs); + +}; // ProgressPopup + + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_PROGRESS_POPUP_H_ diff --git a/inc/FUiCtrlRadioGroup.h b/inc/FUiCtrlRadioGroup.h new file mode 100644 index 0000000..bbc3254 --- /dev/null +++ b/inc/FUiCtrlRadioGroup.h @@ -0,0 +1,327 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlRadioGroup.h + * @brief This is the header file for the %RadioGroup class. + * + * This header file contains the declarations of the %RadioGroup class and its helper classes. + */ + +#ifndef _FUI_CTRL_RADIO_GROUP_H_ +#define _FUI_CTRL_RADIO_GROUP_H_ + +#include +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +/** + * @class RadioGroup + * @brief This class is an implementation of a %RadioGroup control. + * + * @since 2.0 + * + * The %RadioGroup class displays a set of CheckButtons with radio style together in a group, allowing the user to select only + * one of the predefined set of buttons. + * @n + * For more information on the class features, see Buttons. + * + * The following example demonstrates how to use the %RadioGroup class. + * + * @code +// Sample code for RadioGroupSample.h +#include + +class RadioGroupSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IActionEventListener +{ +public: + RadioGroupSample(void) + : __pRadioGroup(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + virtual result OnTerminating(void); + virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId); + +private: + static const int ID_BUTTON1_CHECKED = 101; + static const int ID_BUTTON1_UNCHECKED = 102; + static const int ID_BUTTON2_CHECKED = 103; + static const int ID_BUTTON2_UNCHECKED = 104; + + Tizen::Ui::Controls::RadioGroup* __pRadioGroup; +}; + * @endcode + * + * @code +// Sample code for RadioGroupSample.cpp +#include + +#include "RadioGroupSample.h" + +using namespace Tizen::Graphics; +using namespace Tizen::Ui::Controls; + +bool +RadioGroupSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +RadioGroupSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates instances of CheckButton + CheckButton *pCheckButton1 = new CheckButton(); + pCheckButton1->Construct(Rectangle(50, 50, GetClientAreaBounds().width - 100, 100), + CHECK_BUTTON_STYLE_RADIO, BACKGROUND_STYLE_DEFAULT, false, L"Radio1"); + pCheckButton1->SetActionId(ID_BUTTON1_CHECKED, ID_BUTTON1_UNCHECKED); + pCheckButton1->AddActionEventListener(*this); + + CheckButton *pCheckButton2 = new CheckButton(); + pCheckButton2->Construct(Rectangle(50, 160, GetClientAreaBounds().width - 100, 100), + CHECK_BUTTON_STYLE_RADIO,BACKGROUND_STYLE_DEFAULT, false, L"Radio2"); + pCheckButton2->SetActionId(ID_BUTTON2_CHECKED, ID_BUTTON2_UNCHECKED); + pCheckButton2->AddActionEventListener(*this); + + // Adds check buttons to the form + AddControl(*pCheckButton1); + AddControl(*pCheckButton2); + + // Creates an instance of RadioGroup + __pRadioGroup = new RadioGroup(); + __pRadioGroup->Construct(); + + // Adds the check buttons to the radio group + __pRadioGroup->Add(*pCheckButton1); + __pRadioGroup->Add(*pCheckButton2); + + return r; +} + +result +RadioGroupSample::OnTerminating(void) +{ + result r = E_SUCCESS; + + // Deallocates the __pRadioGroup + delete __pRadioGroup; + + return r; +} + +// IActionEventListener implementation +void +RadioGroupSample::OnActionPerformed(const Control& source, int actionId) +{ + switch (actionId) + { + case ID_BUTTON1_CHECKED: + { + // .... + } + break; + case ID_BUTTON1_UNCHECKED: + { + // .... + } + break; + case ID_BUTTON2_CHECKED: + { + // .... + } + break; + case ID_BUTTON2_UNCHECKED: + { + // .... + } + break; + default: + break; + } +} + * @endcode + * + */ +class _OSP_EXPORT_ RadioGroup + : public Tizen::Ui::Control +{ +public: + /** + * This is the default constructor for this class. + * + * @since 2.0 + */ + RadioGroup(void); + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~RadioGroup(void); + + + /** + * Initializes this instance of %RadioGroup. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(void); + +public: + /** + * Adds the check button to the radio group. + * + * @since 2.0 + * + * @return An error code + * @param[in] checkButton The %CheckButton instance to be added + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks Only CheckButtons whose style is CHECK_BUTTON_STYLE_RADIO or CHECK_BUTTON_STYLE_RADIO_WITH_DIVIDER can be added to %RadioGroup. + */ + result Add(const CheckButton& checkButton); + + /** + * Removes the check button from the radio group. + * + * @since 2.0 + * + * @return An error code + * @param[in] checkButton The %CheckButton instance to be removed + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND The object is not found. + * @exception E_SYSTEM A system error has occurred. + * @remarks Before removing %CheckButton from its parent container, it must be removed from %RadioGroup. + */ + result Remove(const CheckButton& checkButton); + +public: + /** + * Gets the number of check buttons in the radio group. + * + * @since 2.0 + * + * @return The number of check buttons in the radio group + */ + int GetItemCount(void) const; + + /** + * Selects the specified check button in the radio group. + * + * @since 2.0 + * + * @param[in] checkButton The check button to be selected + */ + void SetSelectedItem(const CheckButton& checkButton); + + /** + * Gets the selected check button in the radio group. + * + * @since 2.0 + * + * @return The pointer to the selected check button, @n + * else @c null if an error occurs or no check button in the radio group is selected + * + */ + const CheckButton* GetSelectedItem(void) const; + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is prohibited. If this method is used + // in an application, the application can get rejected during the certification + // process. + // + // (Blocked) Draws the control. + // + // @since 2.0 + // + // @return An error code + // @exception E_UNSUPPORTED_OPERATION This operation is not supported. + // + virtual result Draw(void); + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is prohibited. If this method is used + // in an application, the application can get rejected during the certification + // process. + // + // (Blocked) Shows this control. + // + // @since 2.0 + // + // @return An error code + // @exception E_UNSUPPORTED_OPERATION This operation is not supported. + // + virtual result Show(void); + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is prohibited. If this method is used + // in an application, the application can get rejected during the certification + // process. + // + // (Blocked) Gives the input focus to the control. @n + // One must call this method if the control needs to listen to the user input events such as key pressed. + // + // @since 2.0 + // + // @return An error code + // @exception E_UNSUPPORTED_OPERATION This operation is not supported. + // + virtual result SetFocus(void); + +protected: + friend class _RadioGroupImpl; + +private: + // + // This is the copy constructor for the %RadioGroup class. + // + RadioGroup(const RadioGroup& rhs); + + // + // Assigns the value of the specified instance to the current instance of %RadioGroup. + // + RadioGroup& operator =(const RadioGroup& rhs); + +}; // RadioGroup + +}}} //Tizen::Ui::Controls + +#endif // _FUI_CTRL_RADIO_GROUP_H_ diff --git a/inc/FUiCtrlScrollEventTypes.h b/inc/FUiCtrlScrollEventTypes.h new file mode 100644 index 0000000..eb73d54 --- /dev/null +++ b/inc/FUiCtrlScrollEventTypes.h @@ -0,0 +1,50 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlScrollEventTypes.h + * @brief This is the header file for the List enumerations. + * + * @since 2.0 + * + * This header file contains the declarations of the scroll event enumerations. + */ +#ifndef _FUI_CTRL_SCROLL_EVENT_ENUM_H_ +#define _FUI_CTRL_SCROLL_EVENT_ENUM_H_ + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @enum ScrollEndEvent + * + * Defines constants which represent the type of scroll end event. + * + * @since 2.0 + */ +enum ScrollEndEvent +{ + SCROLL_END_EVENT_END_TOP = 0, /**< The scroll reaches top end */ + SCROLL_END_EVENT_END_BOTTOM, /**< The scroll reaches bottom end */ + SCROLL_END_EVENT_END_LEFT, /**< The scroll reaches left end */ + SCROLL_END_EVENT_END_RIGHT /**< The scroll reaches right end */ +}; + +}; +}; +}; // Tizen::Ui::Controls + +#endif diff --git a/inc/FUiCtrlScrollPanel.h b/inc/FUiCtrlScrollPanel.h new file mode 100644 index 0000000..4ed96cc --- /dev/null +++ b/inc/FUiCtrlScrollPanel.h @@ -0,0 +1,503 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlScrollPanel.h + * @brief This is the header file for the %ScrollPanel class. + * + * This header file contains the declarations of the %ScrollPanel class. + */ + +#ifndef _FUI_CTRL_SCROLL_PANEL_H_ +#define _FUI_CTRL_SCROLL_PANEL_H_ + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +/** + * @class ScrollPanel + * @brief This class implements a scrollable container class. + * + * @since 2.0 + * + * The %ScrollPanel class is a Panel with automatic scroll bars. + * + * For more information on the class features, see Panels. + * + * The following example demonstrates how to use the %ScrollPanel class. + * + * @code +// Sample code for ScrollPanelSample.h +#include + +class ScrollPanelSample + : public Tizen::Ui::Controls::Form +{ +public: + ScrollPanelSample(void) + : __pScrollPanel(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + +private: + Tizen::Ui::Controls::ScrollPanel* __pScrollPanel; +}; + * @endcode + * + * @code +// Sample code for ScrollPanelSample.cpp +#include + +#include "ScrollPanelSample.h" + +using namespace Tizen::Graphics; +using namespace Tizen::Ui::Controls; + +bool +ScrollPanelSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +ScrollPanelSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of ScrollPanel + __pScrollPanel = new ScrollPanel(); + __pScrollPanel->Construct(Rectangle(100, 250, 400, 300)); + __pScrollPanel->SetBackgroundColor(Color::GetColor(COLOR_ID_YELLOW)); + + // Creates an instance of Button and an instance of EditField + Button* pButton = new Button(); + pButton->Construct(Rectangle(0, 80, 200, 150), L"Button"); + + EditField* pEdit = new EditField(); + pEdit->Construct(Rectangle(0, 250, 200, 150)); + pEdit->SetText(L"Edit"); + + // Adds the button and the edit field to the ScrollPanel + __pScrollPanel->AddControl(*pButton); + __pScrollPanel->AddControl(*pEdit); + + // Adds the ScrollPanel to the form + AddControl(*__pScrollPanel); + + return r; +} + * @endcode + */ + +class _OSP_EXPORT_ ScrollPanel + : public Panel +{ + +// Lifecycle +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + * + */ + ScrollPanel(void); + + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + * + */ + virtual ~ScrollPanel(void); + + + /** + * Initializes this instance of %ScrollPanel with the specified rectangular region. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect The location and size of the %ScrollPanel control + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The given width or height is less than 0. + * @exception E_SYSTEM A system error has occurred. + * @remarks By default, the scroll direction is vertical and the scroll area is resized automatically. + * @see Tizen::Ui::Container + */ + result Construct(const Tizen::Graphics::Rectangle& rect); + + + /** + * Initializes this instance of %ScrollPanel and child controls with the specified resource ID @n + * + * This method first attempts to find the resource file in the folder that corresponds to the current screen resolution. @n + * If it fails to find the resource file, it searches in other folders in the following order when CoordinateSystem is Logical in the application manifest file @n + * the density folder that corresponds to the current screen size category "res/screen-size-normal/" folder. + * + * @since 2.0 + * + * @return An error code + * @param[in] resourceId The resource ID describing the %ScrollPanel control + * @exception E_SUCCESS The method is successful. + * @exception E_FILE_NOT_FOUND The specified file cannot be found. + * @exception E_INVALID_FORMAT The specified XML format is invalid. + * @exception E_OPERATION_FAILED The operation has failed. + */ + result Construct(const Tizen::Base::String& resourceId); + + /** + * Initializes this instance of %ScrollPanel with the specified rectangular region. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect The location and size of the %ScrollPanel control + * @param[in] scrollDirection The scroll direction of %ScrollPanel + * @param[in] autoResizingEnable Whether to resize the client area automatically + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The given width or height is less than 0. + * @see Tizen::Ui::Container + */ + result Construct(const Tizen::Graphics::Rectangle& rect, ScrollPanelScrollDirection scrollDirection, bool autoResizingEnable); + + + /** + * Initializes this instance of %ScrollPanel with the specified layout and rectangular region. + * + * @since 2.0 + * + * @return An error code + * @param[in] layout The layout for both the portrait and landscape mode + * @param[in] rect The location and size of the %ScrollPanel control + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG @c layout is already bound to another container, or the given width or the height is less than 0. + * @exception E_SYSTEM A system error has occurred. + * @remarks By default, the scroll direction is vertical and the scroll area is resized automatically. + * @see Tizen::Ui::Container + */ + result Construct(const Tizen::Ui::Layout& layout, const Tizen::Graphics::Rectangle& rect); + + + /** + * Initializes this instance of %ScrollPanel with the specified layout and rectangular region. + * + * @since 2.0 + * + * @return An error code + * @param[in] layout The layout for both the portrait and landscape mode + * @param[in] rect The location and size of the %ScrollPanel control + * @param[in] scrollDirection The scroll direction of %ScrollPanel + * @param[in] autoResizingEnable Whether to resize the client area automatically + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG @c layout is already bound to another container, or the given width or height is less than 0. + * @see Tizen::Ui::Container + */ + result Construct(const Tizen::Ui::Layout& layout, const Tizen::Graphics::Rectangle& rect, ScrollPanelScrollDirection scrollDirection, bool autoResizingEnable); + + + /** + * Initializes this instance of %ScrollPanel with the specified layouts and rectangular region. + * + * @since 2.0 + * + * @return An error code + * @param[in] portraitLayout The layout for the portrait mode + * @param[in] landscapeLayout The layout for the landscape mode + * @param[in] rect The location and size of the %ScrollPanel control + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG @c portraitLayout or @c landscapeLayout is already bound to another container, or the given width or height is less than 0. + * @exception E_SYSTEM A system error has occurred. + * @remarks By default, the scroll direction is vertical and the scroll area is resized automatically. + * @see Tizen::Ui::Container + */ + result Construct(const Tizen::Ui::Layout& portraitLayout, const Tizen::Ui::Layout& landscapeLayout, const Tizen::Graphics::Rectangle& rect); + + + /** + * Initializes this instance of %ScrollPanel with the specified layouts and rectangular region. + * + * @since 2.0 + * + * @return An error code + * @param[in] portraitLayout The layout for the portrait mode + * @param[in] landscapeLayout The layout for the landscape mode + * @param[in] rect The location and size of the %ScrollPanel control + * @param[in] scrollDirection The scroll direction of %ScrollPanel + * @param[in] autoResizingEnable Whether to resize the client area automatically + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG @c portraitLayout or @c landscapeLayout is already bound to another container, or the given width or height is less than 0. + * @see Tizen::Ui::Container + */ + result Construct(const Tizen::Ui::Layout& portraitLayout, const Tizen::Ui::Layout& landscapeLayout, const Tizen::Graphics::Rectangle& rect, ScrollPanelScrollDirection scrollDirection, bool autoResizingEnable); + + + /** + * Adds a listener instance that listens to the state changes of a scroll event. @n + * The added listener can listen to the events on the given event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to add + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @see IScrollEventListener::OnScrollEndReached() + * @see RemoveScrollEventListener() + */ + void AddScrollEventListener(IScrollEventListener& listener); + + + /** + * Removes a listener instance that listens to the state changes of a scroll event. @n + * The removed listener cannot listen to the events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to remove + * @see IScrollEventListener::OnScrollEndReached() + * @see AddScrollEventListener() + */ + void RemoveScrollEventListener(IScrollEventListener& listener); + + + /** + * Gets the scroll position. + * + * @since 2.0 + * + * @return The scroll position + */ + int GetScrollPosition(void) const; + + + /** + * @if OSPDEPREC + * Sets the scroll position. + * + * @brief [Deprecated] + * @deprecated This method is deprecated. Instead of using this method, use the SetScrollPosition(int, bool), which supports animated scroll. + * @since 2.0 + * + * @param[in] position The scroll position + * @endif + */ + void SetScrollPosition(int position); + + /** + * Sets the scroll position. + * + * @since 2.0 + * + * @param[in] position The scroll position in pixel + * @param[in] withAnimation @c true to scroll the %ScrollPanel smoothly. @n + * else @c false. + * + */ + void SetScrollPosition(int position, bool withAnimation); + + /** + * Scrolls to the bottom of %ScrollPanel. + * + * @since 2.0 + */ + void ScrollToBottom(void) const; + + + /** + * Scrolls to the top of %ScrollPanel. + * + * @since 2.0 + */ + void ScrollToTop(void) const; + + + /** + * Closes the overlay Window for supporting the overlay keypad. + * + * @since 2.0 + * + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result CloseOverlayWindow(void); + + + /** + * Gets the bounds of the client area. + * + * @since 2.0 + * + * @return The bounds of the client area + * + */ + Tizen::Graphics::Rectangle GetClientAreaBounds(void) const; + + + /** + * Sets the width of the client area. + * + * @since 2.0 + * + * @return An error code + * @param[in] width The width of the client area to set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG @c width is less than the width of %ScrollPanel + * @exception E_INVALID_OPERATION The width of the client area cannot be set when auto resizing of the client area is off, or the scroll direction is vertical. + * + */ + result SetClientAreaWidth(int width); + + + /** + * Sets the height of the client area. + * + * @since 2.0 + * + * @return An error code + * @param[in] height The height of the client area to set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG @c height is less than the height of %ScrollPanel + * @exception E_INVALID_OPERATION The height of the client area cannot be set when auto resizing of the client area is off, or the scroll direction is horizontal. + * + */ + result SetClientAreaHeight(int height); + + + /** + * Gets the scroll direction of the %ScrollPanel. + * + * @since 2.0 + * + * @return Direction of %ScrollPanel + * + */ + ScrollPanelScrollDirection GetScrollDirection(void) const; + + + /** + * Gets how the scroll area the %ScrollPanel is resized. + * + * @since 2.0 + * + * @return Whether to resize the client area automatically + * + */ + bool IsScrollAreaAutoResizingEnabled(void) const; + + + /** + * Enables or disables scrolling by page, where page size is determined by the size of the %ScrollPanel. + * + * @since 2.0 + * + * @param[in] enable Set to @c true to enable page scroll. + * + */ + void SetPageScrollEnabled(bool enable); + + + /** + * Checks whether scrolling by page feature is enabled. + * + * @since 2.0 + * + * @return @c true if the page scroll is enabled. @n + * else @c false. + * + */ + bool IsPageScrollEnabled(void) const; + + + /** + * Sets the visibility of scroll bar. + * + * @since 2.0 + * + * @param[in] visible Set to @c true to show scroll bar. @n + * else @c false. + * + */ + void SetScrollBarVisible(bool visible); + + + /** + * Gets the visibility of scroll bar. + * + * @since 2.0 + * + */ + bool IsScrollBarVisible(void) const; + + + /** + * Sets the scroll input handling mode. + * + * @since 2.0 + * + * @param[in] mode The scroll input handling mode + * @see GetScrollInputMode() + */ + void SetScrollInputMode(ScrollInputMode mode); + + + /** + * Gets the scroll input handling mode. + * + * @since 2.0 + * + * @return The scroll input handling mode + * @see SetScrollInputMode() + */ + ScrollInputMode GetScrollInputMode(void) const; + + +protected: + + friend class _ScrollPanelImpl; + + // Reserved virtual methods for later extension + + // The following methods are reserved and may change its name at any time without prior notice. + virtual void ScrollPanel_Reserved1(void) {} + + virtual void ScrollPanel_Reserved2(void) {} + + virtual void ScrollPanel_Reserved3(void) {} + +private: + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + ScrollPanel(const ScrollPanel& rhs); + + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + ScrollPanel& operator =(const ScrollPanel& rhs); + +}; // ScrollPanel + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_SCROLL_PANEL_H_ diff --git a/inc/FUiCtrlScrollPanelTypes.h b/inc/FUiCtrlScrollPanelTypes.h new file mode 100644 index 0000000..114013a --- /dev/null +++ b/inc/FUiCtrlScrollPanelTypes.h @@ -0,0 +1,45 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlScrollPanelTypes.h + * @brief This is the header file for the ScrollPanel enumeration. + * + * The ScrollPanel enumeration defines the data types for the ScrollPanel. + */ +#ifndef _FUI_CTRL_SCROLL_PANEL_TYPES_H_ +#define _FUI_CTRL_SCROLL_PANEL_TYPES_H_ + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @enum ScrollPanelScrollDirection + * + * Defines the scroll direction type of the ScrollPanel control. + * + * @since 2.0 + */ +enum ScrollPanelScrollDirection +{ + SCROLL_PANEL_SCROLL_DIRECTION_VERTICAL = 0, /**< Vertical scroll mode */ + SCROLL_PANEL_SCROLL_DIRECTION_HORIZONTAL /**< Horizontal scroll mode */ +}; + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_SCROLL_PANEL_TYPES_H_ diff --git a/inc/FUiCtrlSearchBar.h b/inc/FUiCtrlSearchBar.h new file mode 100644 index 0000000..2a94567 --- /dev/null +++ b/inc/FUiCtrlSearchBar.h @@ -0,0 +1,1427 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlSearchBar.h + * @brief This is the header file for the %SearchBar class. + * + * This header file contains the declarations of the %SearchBar class. + */ + +#ifndef _FUI_CTRL_SEARCH_BAR_H_ +#define _FUI_CTRL_SEARCH_BAR_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Graphics +{ +class Rectangle; +}} // Tizen::Graphics + +namespace Tizen { namespace Ui { namespace Controls +{ + +class ISearchBarEventListener; + +/** + * @enum SearchFieldStatus + * + * Defines the possible states of the search field of the search bar. + * + * @since 2.0 + */ +enum SearchFieldStatus +{ + SEARCH_FIELD_STATUS_NORMAL, /**< The normal state */ + SEARCH_FIELD_STATUS_HIGHLIGHTED, /**< The focus-highlighted state */ + SEARCH_FIELD_STATUS_DISABLED /**< The disabled state */ +}; + +/** + * @enum SearchBarButtonStatus + * + * Defines the possible states of the search bar button. + * + * @since 2.0 + */ +enum SearchBarButtonStatus +{ + SEARCH_BAR_BUTTON_STATUS_NORMAL = 0, /**< The normal status */ + SEARCH_BAR_BUTTON_STATUS_PRESSED, /**< The selected status */ + SEARCH_BAR_BUTTON_STATUS_HIGHLIGHTED, /**< The highlighted status */ + SEARCH_BAR_BUTTON_STATUS_DISABLED /**< The disabled status */ +}; + +/** + * @enum SearchBarMode + * + * Defines the possible modes of the search bar. + * + * @since 2.0 + */ +enum SearchBarMode +{ + SEARCH_BAR_MODE_NORMAL, /**< The normal mode */ + SEARCH_BAR_MODE_INPUT /**< The input mode */ +}; + +/** + * @class SearchBar + * @brief This class is an implementation of a search bar. + * + * @since 2.0 + * + * The %SearchBar class displays an editable search field for entering keywords and an optional button that is displayed in the + * input mode. + * + * For more information on the class features, see SearchBar. + * + * The following example demonstrates how to use the %SearchBar class. + * + * @code +// Sample code for SearchBarSample.h +#include + +class SearchBarSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::Controls::ISearchBarEventListener + , public Tizen::Ui::Controls::IListViewItemEventListener + , public Tizen::Ui::Controls::IListViewItemProvider + , public Tizen::Ui::ITextEventListener +{ +public: + SearchBarSample(void) + : __pSearchBar(null) + , __pSearchBarListView(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + + // ISearchBarEventListener + virtual void OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar& source, Tizen::Ui::Controls::SearchBarMode mode); + virtual void OnSearchBarContentAreaResized(Tizen::Ui::Controls::SearchBar& source, Tizen::Graphics::Dimension& size) {}; + virtual void OnTextValueChanged(const Tizen::Ui::Control& source); + virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source){}; + + // IListViewItemEventListener + virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView &listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state); + virtual void OnListViewItemStateChanged(Tizen::Ui::Controls::ListView &listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status); + virtual void OnListViewItemSwept(Tizen::Ui::Controls::ListView &listView, int index, Tizen::Ui::Controls::SweepDirection direction); + + //IListViewItemProvider + virtual Tizen::Ui::Controls::ListItemBase* CreateItem (int index, int itemWidth); + virtual bool DeleteItem (int index, Tizen::Ui::Controls::ListItemBase *pItem, int itemWidth); + virtual int GetItemCount(void); + +private: + static const int ID_FORMAT_STRING = 500; + + Tizen::Ui::Controls::SearchBar* __pSearchBar; + Tizen::Ui::Controls::ListView* __pSearchBarListView; +}; + * @endcode + * + * @code +// Sample code for SearchBarSample.cpp +#include +#include + +#include "SearchBarSample.h" + +using namespace Tizen::Base; +using namespace Tizen::Base::Collection; +using namespace Tizen::Graphics; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; + +bool +SearchBarSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +SearchBarSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of SearchBar + __pSearchBar = new SearchBar(); + __pSearchBar->Construct(Rectangle(0, 0, GetClientAreaBounds().width, 110)); + __pSearchBar->SetText(L"Click here! "); + __pSearchBar->AddSearchBarEventListener(*this); + __pSearchBar->AddTextEventListener(*this); + + // Creates an instance of ListView + __pSearchBarListView = new ListView(); + __pSearchBarListView->Construct(Rectangle(0, 110, GetClientAreaBounds().width, GetClientAreaBounds().height - 110), true, false); + __pSearchBarListView->SetItemProvider(*this); + __pSearchBarListView->AddListViewItemEventListener(*this); + __pSearchBarListView->SetTextOfEmptyList(L"No search result"); + __pSearchBarListView->SetShowState(false); + __pSearchBar->SetContent(__pSearchBarListView); + + // Adds controls to the form + AddControl(*__pSearchBar); + + return r; +} + +// ISearchBarEventListener implementation +void +SearchBarSample::OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar& source, Tizen::Ui::Controls::SearchBarMode mode) +{ + Rectangle clientRect = GetClientAreaBounds(); + __pSearchBar->SetText(L""); + + if(mode == SEARCH_BAR_MODE_INPUT) + { + SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, false); + __pSearchBar->SetContentAreaSize(Dimension(clientRect.width, clientRect.height)); + __pSearchBarListView->SetSize(Dimension(clientRect.width, clientRect.height)); + __pSearchBarListView->UpdateList(); + } + else + { + SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, true); + __pSearchBarListView->UpdateList(); + __pSearchBarListView->SetShowState(false); + __pSearchBar->SetText(L"Click here!"); + } + Invalidate(true); +} + +void +SearchBarSample::OnTextValueChanged(const Tizen::Ui::Control& source) +{ + if(__pSearchBarListView) + { + __pSearchBarListView->UpdateList(); + __pSearchBarListView->ScrollToItem(0); + __pSearchBarListView->SetShowState(true); + } + Invalidate(true); +} + +// IListViewItemEventListener implementation + void + SearchBarSample::OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView &listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state) + { + // .... + } + + void + SearchBarSample::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView &listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status) + { + // .... + } + + void + SearchBarSample::OnListViewItemSwept(Tizen::Ui::Controls::ListView &listView, int index, Tizen::Ui::Controls::SweepDirection direction) + { + // .... + } + +//IListViewItemProvider +ListItemBase* +SearchBarSample::CreateItem (int index, int itemWidth) +{ + // Creates an instance of CustomItem + CustomItem* pItem = new CustomItem(); + ListAnnexStyle style = LIST_ANNEX_STYLE_NORMAL; + + // Gets texts of the search bar + String inputText = null; + inputText = __pSearchBar->GetText(); + + if(inputText.CompareTo(L"a") == 0 || inputText.CompareTo(L"A") == 0 ) + { + switch (index % 3) + { + case 0: + { + pItem->Construct(Dimension(itemWidth,100), style); + pItem->AddElement(Rectangle(80, 25, 200, 50), ID_FORMAT_STRING, L"ajo", true); + } + break; + case 1: + { + pItem->Construct(Dimension(itemWidth,100), style); + pItem->AddElement(Rectangle(80, 25, 200, 50), ID_FORMAT_STRING, L"aeun", true); + } + break; + case 2: + { + pItem->Construct(Dimension(itemWidth,100), style); + pItem->AddElement(Rectangle(80, 25, 200, 50), ID_FORMAT_STRING, L"abee", true); + } + break; + default: + break; + } + } + else if (inputText.CompareTo(L"b") == 0 || inputText.CompareTo(L"B") == 0) + { + switch (index%3) + { + case 0: + { + pItem->Construct(Dimension(itemWidth,100), style); + pItem->AddElement(Rectangle(80, 25, 200, 50), ID_FORMAT_STRING, L"bonge", true); + } + break; + case 1: + { + pItem->Construct(Dimension(itemWidth,100), style); + pItem->AddElement(Rectangle(80, 25, 200, 50), ID_FORMAT_STRING, L"bnpyo", true); + } + break; + case 2: + { + pItem->Construct(Dimension(itemWidth,100), style); + pItem->AddElement(Rectangle(80, 25, 200, 50), ID_FORMAT_STRING, L"bkueon", true); + } + break; + default: + break; + } + } + else + { + pItem->Construct(Dimension(itemWidth,100), style); + pItem->AddElement(Rectangle(80, 25, 200, 50), ID_FORMAT_STRING, L"default", true); + } + + return pItem; +} + +bool +SearchBarSample::DeleteItem (int index, Tizen::Ui::Controls::ListItemBase *pItem, int itemWidth) +{ + delete pItem; + pItem = null; + return true; +} + +int +SearchBarSample::GetItemCount(void) +{ + return 3; +} + * @endcode + * + */ + +class _OSP_EXPORT_ SearchBar + : public Tizen::Ui::Control +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + SearchBar(void); + + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~SearchBar(void); + + /** + * Initializes this instance of the %SearchBar control with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect An instance of the Graphics::Rectangle class @n + * This instance represents the x and y coordinates of the top-left corner of the created window along with + * the width and height of the control. + * @param[in] searchBarButton Set to @c true to display the search bar button, @n + * else @c false + * @param[in] keypadAction The keypad action + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid, or @n + * the action ID of the specified item must be a positive integer. + * @exception E_SYSTEM A system error has occurred. + * @remarks It is recommended that %SearchBar should be placed at the top-left corner of Form's client area. + * @remarks By default, a "Cancel" button is displayed if @c searchBarButton is set to @c true. When the user presses the cancel button, + * the %SearchBar control returns to SEARCH_BAR_MODE_NORMAL automatically. + */ + result Construct(const Tizen::Graphics::Rectangle& rect, bool searchBarButton = true, KeypadAction keypadAction = KEYPAD_ACTION_SEARCH); + + /** + * Gets the content of Control. + * + * @since 2.0 + * + * @return The control that is displayed in the content area of %SearchBar in the SEARCH_BAR_MODE_INPUT mode, @n + * else @c null if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Ui::Control* GetContent(void) const; + + /** + * Sets the content control. + * + * @if OSPCOMPAT + * @brief [Compatibility] + * @endif + * @since 2.0 + * @if OSPCOMPAT + * @compatibility This method has compatibility issues with OSP compatible applications. @n + * For more information, see @ref CompSetContentPage "here" + * @endif + * @return An error code + * @param[in] pContent The control that is to be displayed in the content area of the search bar + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The following controls cannot be set as the content: @n + * @li All classes derived from the Window class + * @li All picker classes (For example, DateTimePicker) + * @li Form + * @li Keypad + * @li OverlayPanel + * @exception E_SYSTEM A system error has occurred. + * @remarks The specified content control is displayed when the mode of the %SearchBar control is changed to SEARCH_BAR_MODE_INPUT. + * @see GetContentAreaSize() + * @see AddSearchBarEventListener() + * @see ISearchBarEventListener + */ + result SetContent(const Tizen::Ui::Control* pContent); + /** + * @page CompSetContentPage Compatibility for SetContent() + * @section CompSetContentPage IssueSection Issues + * Implementing this method in OSP compatible applications has the following issue: @n + * SetContent() method passes the ownership of Content control to SearchBar in OSP, + * whereas the Content control ownership remains with the caller in Tizen. + * + * @section CompSetContentPage SolutionSection Resolutions + * In Tizen, the caller should delete the previous Content control, if this method is called more than once. + */ + + /** + * Updates the content area of the %SearchBar control. + * + * @since 2.0 + * + * @return An error code + * @param[in] show Set to @c true to perform show on the content area, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The current mode of %SearchBar prohibits the execution of the method. + * @exception E_SYSTEM A system error has occurred. + * @remarks The method performs Invalidate() on the content area. + */ + result UpdateContentArea(bool invalidate = true); + + /** + * Sets the visibility state of the content area. + * + * @since 2.0 + * + * @return An error code + * @param[in] visible Set to @c true to make the content area visible, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see IsContentAreaVisible() + */ + result SetContentAreaVisible(bool visible); + + /** + * Checks whether the content area is visible. + * + * @since 2.0 + * + * @return @c true if the content area is visible, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @see SetContentAreaVisible() + */ + bool IsContentAreaVisible(void) const; + + /** + * Sets the size of the content area of the %SearchBar control. + * + * @since 2.0 + * + * @return An error code + * @param[in] size The size of the content area + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The width and height of @c size must be greater than or equal to @c 0. + * @remarks The content area must be resized when the orientation of the form is changed once the size of the content area is changed. + * @see GetContentAreaSize() + */ + result SetContentAreaSize(const Tizen::Graphics::Dimension& size); + + /** + * Gets the size of the content area of the %SearchBar control. + * + * @since 2.0 + * + * @return The size of the content area + * @remarks The content area is the area where the 'content' of the %SearchBar control is displayed. The size of the content areas can + * be changed at runtime. + * @see AddSearchBarEventListener() + * @see ISearchBarEventListener + */ + Tizen::Graphics::Dimension GetContentAreaSize(void) const; + +// Modes + /** + * Gets the search bar mode. + * + * @since 2.0 + * + * @return The search bar mode + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetMode() + */ + SearchBarMode GetMode(void) const; + + /** + * Checks whether the search bar mode is locked. + * + * @since 2.0 + * + * @return @c true if the mode is locked, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetModeLock() + */ + bool IsModeLocked(void) const; + + /** + * Sets the search bar mode. + * + * @since 2.0 + * + * @return An error code + * @param[in] mode The search bar mode + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation, or @n + * the mode is locked. + * @exception E_SYSTEM A system error has occurred. + * @see GetMode() + * @see SetModeLock() + */ + result SetMode(SearchBarMode mode); + + /** + * Sets the lock status of the search bar mode. + * + * @since 2.0 + * + * @return An error code + * @param[in] modeLocked Set to @c true to lock the search bar mode, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetMode() + */ + result SetModeLocked(bool modeLocked); + + /** + * Gets the action ID of the search bar button. + * + * @since 2.0 + * + * @return The action ID, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. @n + * By default, the method returns @c -1 if no user defined search bar button is set. + */ + int GetButtonActionId(void) const; + + /** + * Gets the color of the search bar button for the specified state. + * + * @since 2.0 + * + * @return The color of the search bar button, @n + * else RGBA(0,0,0,0) if an error occurs + * @param[in] status The status of the search bar button + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetButtonColor() + */ + Tizen::Graphics::Color GetButtonColor(SearchBarButtonStatus status) const; + + /** + * Gets the text color of the search bar button for the specified state. + * + * @since 2.0 + * + * @return The text color of the search bar button, @n + * else RGBA(0,0,0,0) if an error occurs + * @param[in] status The status of the search bar button + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetButtonTextColor(SearchBarButtonStatus status) const; + + /** + * Gets the state of the search bar button. + * + * @since 2.0 + * + * @return The state of the search bar button + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + SearchBarButtonStatus GetButtonStatus(void) const; + + /** + * Sets the user defined search bar button. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The button text + * @param[in] actionId The button action ID + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid, or @n + * the specified @c actionId must be greater than or equal to @c 0. + * @exception E_SYSTEM A system error has occurred. + */ + result SetButton(const Tizen::Base::String& text, int actionId); + + /** + * Sets the enabled status of the search bar button. + * + * @since 2.0 + * + * @return An error code + * @param[in] enabled Set to @c true to enable the search bar button, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetButtonEnabled(bool enabled); + + /** + * Sets the color of the search bar button for the specified state. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The button status + * @param[in] color The button color to be set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetButtonColor() + */ + result SetButtonColor(SearchBarButtonStatus status, const Tizen::Graphics::Color& color); + + /** + * Sets the text color of the button of the %SearchBar control for the specified state. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The button status + * @param[in] color The button text color to set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetButtonTextColor(SearchBarButtonStatus status, const Tizen::Graphics::Color& color); + + /** + * Appends the specified character at the end of the text. + * + * @since 2.0 + * + * @return An error code + * @param[in] character The character to be added + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The method modifies the text buffer that is managed by the %SearchBar control. @n + * To display the changes, the control must be drawn again. + */ + result AppendCharacter(const Tizen::Base::Character& character); + + /** + * Appends the specified text at the end of the existing text. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text to be appended + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks To denote the end of a line use '\\n'. @n + * The method modifies the text buffer that is managed by the %SearchBar control. @n + * To display the changes, the control must be drawn again. + */ + result AppendText(const Tizen::Base::String& text); + + + /** + * Sets the text to be displayed. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text to be displayed + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks To denote the end of a line use '\\n'. @n + * The method modifies the text buffer that is managed by the %SearchBar control. @n + * To display the changes, the control must be drawn again. + */ + result SetText(const Tizen::Base::String& text); + + /** + * Inserts the character at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The position to insert the character + * @param[in] character The character to be inserted + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is outside the bounds of the data structure. @n + * The specified @c index is greater than the number of elements or less than @c 0. + * @exception E_MAX_EXCEEDED The length of the specified @c text exceeds the system limitation. + * @exception E_SYSTEM A system error has occurred. + * @remarks The method modifies the text buffer that is managed by the %SearchBar control. @n + * To display the changes, the control must be drawn again. + */ + result InsertCharacterAt(int index, const Tizen::Base::Character& character); + + /** + * Inserts the specified text at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The position at which to insert + * @param[in] text The text to be inserted + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is outside the bounds of the data structure. @n + * The specified @c index is greater than the number of elements or less than @c 0. + * @exception E_MAX_EXCEEDED The length of the specified @c text exceeds the system limitation. + * @exception E_SYSTEM A system error has occurred. + * @remarks The method modifies the text buffer that is managed by the %SearchBar control. + * To display the changes, the control must be drawn again. + */ + result InsertTextAt(int index, const Tizen::Base::String& text); + + /** + * Deletes the character at the specified position. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c index is negative. + * @exception E_OUT_OF_RANGE The specified @c index is outside the bounds of the data structure. @n + * The specified @c index is greater than the number of elements or less than @c 0. + * @exception E_SYSTEM A system error has occurred. + * @remarks The method modifies the text buffer that is managed by the %SearchBar control. @n + * To display the changes, the control must be drawn again. + */ + result DeleteCharacterAt(int index); + + /** + * Clears the text that is displayed by the %SearchBar control. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The method modifies the text buffer that is managed by the %SearchBar control. @n + * To display the changes, the control must be drawn again. + */ + result Clear(void); + + /** + * Gets the length of the text that is displayed by the %SearchBar control. + * + * @since 2.0 + * + * @return The length of the text, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + int GetTextLength(void) const; + + /** + * Gets the text that is displayed by the %SearchBar control. + * + * @since 2.0 + * + * @return The text displayed by the %SearchBar control, @n + * else an empty string if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetText() + */ + Tizen::Base::String GetText(void) const; + + /** + * Gets a portion of text that is displayed by the %SearchBar control. + * + * @since 2.0 + * + * @return The specified portion of the text, @n + * else an empty string if an error occurs + * @param[in] start The starting index of range + * @param[in] end The last index of range + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified index is outside the bounds of the data structure, or @n + * either the @c start or @c end parameter is greater than the number of elements or less than @c 0. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetText() + */ + Tizen::Base::String GetText(int start, int end) const; + + /** + * Gets the limit of the length of the text. + * + * @since 2.0 + * + * @return The limit of the text length, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. @n + * The default limit length is @c 500. + * @see SetLimitLength() + */ + int GetLimitLength(void) const; + + /** + * Sets the limit of the length of the text. + * + * @since 2.0 + * + * @return An error code + * @param[in] limitLength The limit text length to be set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid, or @n + * the specified limit length cannot be @c 0 or negative. + * @exception E_SYSTEM A system error has occurred. + * @see GetLimitLength() + */ + result SetLimitLength(int limitLength); + + /** + * Shows the keypad associated with the %SearchBar control. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @exception E_SYSTEM A system error has occurred. + * @see HideKeypad() + */ + result ShowKeypad(void) const; + + /** + * Hides the keypad associated with the %SearchBar control. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see ShowKeypad() + */ + result HideKeypad(void) const; + + /** + * Gets the text size of the search field. + * + * @since 2.0 + * + * @return The size of the text, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetSearchFieldTextSize() + */ + int GetSearchFieldTextSize(void) const; + + /** + * Sets the text size of the text field of the %SearchBar control. + * + * @since 2.0 + * + * @return An error code + * @param[in] size The text size + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid, or @n + * the specified @c size cannot be a negative value. + * @exception E_SYSTEM A system error has occurred. + * @see GetSearchFieldTextSize() + */ + result SetSearchFieldTextSize(int size); + + /** + * Gets the start and the end index of the currently selected text block. + * + * @since 2.0 + * + * @return An error code + * @param[out] start The start index of the text block + * @param[out] end The end index of the text block + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The method returns @c start = 0 and @c end = 0 if no text block is selected. + * @see ReleaseBlock() + * @see SetBlockRange() + */ + result GetBlockRange(int& start, int& end) const; + + /** + * Releases the selection of the current text block. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetBlockRange() + * @see SetBlockRange() + */ + result ReleaseBlock(void); + + /** + * Sets the block range for the text. + * + * @since 2.0 + * + * @return An error code + * @param[in] start The start index of the text block + * @param[in] end The end index of the text block + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified index is outside the bounds of the data structure, or @n + * either the @c start or @c end parameter is greater than the number of elements or less than @c 0. + * @exception E_SYSTEM A system error has occurred. + * @see ReleaseBlock() + * @see GetBlockRange() + */ + result SetBlockRange(int start, int end); + + /** + * Removes the text of the selected text block. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveTextBlock(void); + + /** + * Gets the color of the %SearchBar control for the specified status. + * + * @since 2.0 + * + * @return The color of the %SearchBar control, @n + * else RGBA(0,0,0,0) if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetColor() + */ + Tizen::Graphics::Color GetColor(void) const; + + /** + * Gets the color of the search field for the specified status. + * + * @since 2.0 + * + * @return The color, @n + * else RGBA(0,0,0,0) if an error occurs + * @param[in] status The search field status + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetSearchFieldColor() + */ + Tizen::Graphics::Color GetSearchFieldColor(SearchFieldStatus status) const; + + /** + * Gets the text color of the search field for the specified status. + * + * @since 2.0 + * + * @return The text color, @n + * else RGBA(0,0,0,0) if an error occurs + * @param[in] status The search field status + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetSearchFieldTextColor() + */ + Tizen::Graphics::Color GetSearchFieldTextColor(SearchFieldStatus status) const; + + /** + * Sets the background bitmap of the %SearchBar control. + * + * @since 2.0 + * + * @return An error code + * @param[in] bitmap The background bitmap + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap); + + /** + * Sets the color of the search bar. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetColor() + */ + result SetColor(const Tizen::Graphics::Color& color); + + /** + * Sets the color of the search field for the specified status. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The state of the search field + * @param[in] color The text color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetSearchFieldColor() + */ + result SetSearchFieldColor(SearchFieldStatus status, const Tizen::Graphics::Color& color); + + /** + * Sets the text color of the search field for the specified status. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The state of the search field + * @param[in] color The text color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetSearchFieldTextColor() + */ + result SetSearchFieldTextColor(SearchFieldStatus status, const Tizen::Graphics::Color& color); + + /** + * Gets the guide text. + * + * @since 2.0 + * + * @return The guide text, @n + * else an empty string if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see GetGuideText() + */ + Tizen::Base::String GetGuideText(void) const; + + /** + * Sets the guide text. @n + * This text is displayed when there is no text in the %SearchBar control. + * + * @since 2.0 + * + * @return An error code + * @param[in] guideText The guide text + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetGuideText() + */ + result SetGuideText(const Tizen::Base::String& guideText); + + /** + * Gets the text color of the guide text. + * + * @since 2.0 + * + * @return The text color of the guide text, @n + * else RGBA(0,0,0,0) if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetGuideTextColor() + */ + Tizen::Graphics::Color GetGuideTextColor(void) const; + + /** + * Sets the text color of the guide text. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The guide text color + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetGuideTextColor() + */ + result SetGuideTextColor(const Tizen::Graphics::Color& color); + +// Cursor + /** + * Gets the current cursor position index. + * + * @since 2.0 + * + * @return The cursor position, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetCursorPosition() + */ + int GetCursorPosition(void) const; + + /** + * Sets the cursor at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The cursor index + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is outside the bounds of the data structure. @n + * The specified @c index is greater than the number of elements or less than @c 0. + * @exception E_SYSTEM A system error has occurred. + * @see GetCursorPosition() + */ + result SetCursorPosition(int index); + + /** + * Checks whether the lowercase mode is enabled. + * + * @since 2.0 + * + * @return @c true if the lowercase mode is enabled, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetLowerCaseModeEnabled() + */ + bool IsLowerCaseModeEnabled(void) const; + + /** + * Enables or disables the lowercase mode. + * + * @since 2.0 + * + * @param[in] enable Set to @c true to enable the lowercase mode, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see IsLowerCaseModeEnabled() + */ + void SetLowerCaseModeEnabled(bool enable); + +// Ellipsis + /** + * Gets the ellipsis position. + * + * @since 2.0 + * + * @return The ellipsis position + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetEllipsisPosition() + */ + EllipsisPosition GetEllipsisPosition(void) const; + + /** + * Sets the ellipsis position. + * + * @since 2.0 + * + * @return An error code + * @param[in] position The ellipsis position + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetEllipsisPosition() + */ + result SetEllipsisPosition(EllipsisPosition position); + + /** + * Sets the input language. + * + * @since 2.0 + * + * @return An error code + * @param[in] languageCode The language to set + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The application can set the language of the current keypad that is associated with the current %SearchBar. @n + * This method only works if the language to set is supported by the current preloaded keypad. + */ + + result SetCurrentLanguage(Tizen::Locales::LanguageCode languageCode); + + /** + * Gets the current input language. + * + * @since 2.0 + * + * @return An error code + * @param[out] language The current input language + * @exception E_SUCCESS The method is successful. + * @remarks The application can get the current language of the keypad that is associated with the current %SearchBar. + */ + + result GetCurrentLanguage(Tizen::Locales::LanguageCode& language) const; + + /** + * Gets the keypad action type. + * + * @since 2.0 + * + * @return The keypad action + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + KeypadAction GetKeypadAction(void) const; + + /** + * Checks whether the text prediction is enabled. + * + * @since 2.0 + * @return @c true if the text prediction is enabled, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @see SetTextPredictionEnabled() + */ + bool IsTextPredictionEnabled(void) const; + + /** + * Enables or disables the text prediction. + * + * @since 2.0 + * @param[in] enable Set to @c true to enable the text prediction, @n + * else @c false + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. + * @see IsTextPredictionEnabled() + */ + result SetTextPredictionEnabled(bool enable); + + /** + * Adds the specified action event listener. @n + * The added listener is notified when the user clicks the search bar button. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @see RemoveActionEventListener() + */ + void AddActionEventListener(Tizen::Ui::IActionEventListener& listener); + + /** + * Removes the specified action event listener. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @see AddActionEventListener() + */ + void RemoveActionEventListener(Tizen::Ui::IActionEventListener& listener); + + /** + * Adds the specified text event listener. @n + * The added listener can listen to events on the context of the specified event dispatcher when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @remarks The added listener is notified when: @n + * @li The user presses a key on the software keypad. + * @li The user selects a word in the candidate list. + * @li The user pastes a text. + * @see RemoveTextEventListener() + */ + void AddTextEventListener(Tizen::Ui::ITextEventListener& listener); + + /** + * Removes the specified text event listener. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @see AddTextEventListener() + */ + void RemoveTextEventListener(Tizen::Ui::ITextEventListener& listener); + + /** + * Adds the specified search bar event listener. @n + * The added listener can listen to events on the context of the specified event dispatcher when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @remarks The added listener is notified when: @n + * @li The user presses a key on the software keypad. + * @li The user selects a word in the candidate list. + * @li The user pastes a text. + * @see AddSearchBarEventListener() + */ + void AddSearchBarEventListener(ISearchBarEventListener& listener); + + /** + * Removes the specified search bar event listener. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @see RemoveTextEventListener() + */ + void RemoveSearchBarEventListener(ISearchBarEventListener& listener); + + /** + * Adds the specified text block event listener. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @remarks Programmatically, modification of the text selection does not cause the text block selection event to fire. + * @see RemoveTextBlockEventListener() + */ + void AddTextBlockEventListener(Tizen::Ui::ITextBlockEventListener& listener); + + /** + * Removes the specified text block event listener. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @see AddTextBlockEventListener() + */ + void RemoveTextBlockEventListener(Tizen::Ui::ITextBlockEventListener& listener); + + /** + * Adds the specified keypad event listener. @n + * The added listener is notified when the keypad associated with this text editor is opened or closed. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @see RemoveKeypadEventListener() + */ + void AddKeypadEventListener(Tizen::Ui::IKeypadEventListener& listener); + + /** + * Removes the specified keypad event listener. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @see AddKeypadEventListener() + */ + void RemoveKeypadEventListener(Tizen::Ui::IKeypadEventListener& listener); + + /** + * Adds a listener instance for language events. @n + * The added listener is notified when the input language is changed. + * + * @since 2.0 + * + * @param[in] listener The listener to add + * @remarks The application can recognize when the language is changed from the keypad by adding Tizen::Ui::ILanguageEventListener. + * @see RemoveLanguageEventListener() + */ + + void AddLanguageEventListener(Tizen::Ui::ILanguageEventListener& listener); + + /** + * Removes the specified listener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to remove + * @see AddLanguageEventListener() + */ + + void RemoveLanguageEventListener(Tizen::Ui::ILanguageEventListener& listener); + + +protected: + friend class _SearchBarImpl; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + SearchBar(const SearchBar& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + SearchBar& operator =(const SearchBar& rhs); + +}; // SearchBar + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_SEARCH_BAR_H_ diff --git a/inc/FUiCtrlSectionTableView.h b/inc/FUiCtrlSectionTableView.h new file mode 100644 index 0000000..4357851 --- /dev/null +++ b/inc/FUiCtrlSectionTableView.h @@ -0,0 +1,707 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlSectionTableView.h + * @brief This is the header file for the %SectionTableView class. + * + * This header file contains the declarations of the %SectionTableView class and its helper classes. + */ + +#ifndef _FUI_CTRL_SECTION_TABLE_VIEW_H_ +#define _FUI_CTRL_SECTION_TABLE_VIEW_H_ + +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +class ISectionTableViewItemProvider; +class ISectionTableViewItemEventListener; +class IFastScrollListener; +class IScrollEventListener; + +/** + * @class SectionTableView + * @brief This class defines common behavior for a %SectionTableView control. + * + * @since 2.0 + * + * The %SectionTableView class defines common behavior for a %SectionTableView control. + * @code +//Sample code for SectionTableViewSample.h +#include + +class SectionTableViewSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::Controls::ISectionTableViewItemProvider + , public Tizen::Ui::Controls::ISectionTableViewItemEventListener +{ +public: + SectionTableViewSample(void) + : __pSectionTableView(null) + , __pContextItem(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + virtual result OnTerminating(void); + + // ISectionTableViewItemEventListener + virtual void OnSectionTableViewItemStateChanged(Tizen::Ui::Controls::SectionTableView& tableView, int sectionIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status); + virtual void OnSectionTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::SectionTableView& tableView, int sectionIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated); + + // ISectionTableViewItemProvider + virtual int GetSectionCount(void); + virtual int GetItemCount(int sectionIndex); + virtual bool HasSectionHeader(int sectionIndex); + virtual bool HasSectionFooter(int sectionIndex); + virtual Tizen::Base::String GetSectionHeader(int sectionIndex); + virtual Tizen::Base::String GetSectionFooter(int sectionIndex); + virtual int GetDefaultItemHeight(void); + virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int sectionIndex, int itemIndex, int itemWidth); + virtual bool DeleteItem(int sectionIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem); + virtual void UpdateItem(int sectionIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem); + +private: + Tizen::Ui::Controls::SectionTableView* __pSectionTableView; +}; + * @endcode + * + * @code + +//Sample code for SectionTableViewSample.cpp +#include +#include + +#include "SectionTableViewSample.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::Graphics; +using namespace Tizen::Media; +using namespace Tizen::Ui::Controls; + +bool +SectionTableViewSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +SectionTableViewSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of TableView + __pSectionTableView = new TableView(); + __pSectionTableView->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height), true, TABLE_VIEW_SCROLL_BAR_STYLE_FADE_OUT); + __pSectionTableView->SetItemProvider(*this); + __pSectionTableView->AddTableViewItemEventListener(*this); + + // Adds the TableView to the form + AddControl(*__pSectionTableView); + return r; +} + +result +SectionTableViewSample::OnTerminating(void) +{ + return E_SUCCESS; +} + +// ISectionTableViewItemEventListener implementation +void +SectionTableViewSample::OnSectionTableViewItemStateChanged(SectionTableView& tableView, int sectionIndex, int itemIndex, TableViewItem* pItem, TableViewItemStatus status) +{ + // .... +} + +void +SectionTableViewSample::OnSectionTableViewContextItemActivationStateChanged(SectionTableView& tableView, int sectionIndex, int itemIndex, TableViewContextItem* pContextItem, bool activated) +{ + // .... +} + +// ISectionTableViewItemProvider implementation +int +SectionTableViewSample::GetSectionCount(void) +{ + return 10; +} + +int +SectionTableViewSample::GetItemCount(int sectionIndex) +{ + return 5; +} + +bool +SectionTableViewSample::HasSectionHeader(int sectionIndex) +{ + true; +} + +bool +SectionTableViewSample::HasSectionFooter(int sectionIndex) +{ + true; +} + +String +SectionTableViewSample::GetSectionHeader(int sectionIndex) +{ + String text; + text.Format(30, L"Section header %d", sectionIndex); + + return text; +} + +String +SectionTableViewSample::GetSectionFooter(int sectionIndex) +{ + String text; + text.Format(30, L"Section footer %d", sectionIndex); + + return text; +} + +int +SectionTableViewSample::GetDefaultItemHeight(void) +{ + return 100; +} + +TableViewItem* +SectionTableViewSample::CreateItem(int sectionIndex, int itemIndex, int itemWidth) +{ + TableViewAnnexStyle style = TABLE_VIEW_ANNEX_STYLE_NORMAL; + TableViewItem* pItem = new TableViewItem(); + + switch (itemIndex % 5) + { + case 0: + style = TABLE_VIEW_ANNEX_STYLE_NORMAL; + break; + case 1: + style = TABLE_VIEW_ANNEX_STYLE_MARK; + break; + case 2: + style = TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING; + break; + case 3: + style = TABLE_VIEW_ANNEX_STYLE_DETAILED; + break; + case 4: + style = TABLE_VIEW_ANNEX_STYLE_RADIO; + break; + default: + break; + } + + pItem->Construct(Dimension(itemWidth, GetDefaultItemHeight()), style); + + String text; + text.Format(30, L"TableViewItem %d", itemIndex); + + Label* pLabel = new Label(); + pLabel->Construct(Rectangle(0, 0, itemWidth, GetDefaultItemHeight(), text); + + pItem->AddControl(*pLabel); + + return pItem; + +} + +bool +SectionTableViewSample::DeleteItem(int sectionIndex, int itemIndex, TableViewItem* pItem) +{ + delete pItem; + + return true; +} + +void +SectionTableViewSample::UpdateItem(int sectionIndex, int itemIndex, TableViewItem* pItem) +{ + // .... +} +* @endcode +* +*/ + +class _OSP_EXPORT_ SectionTableView + : public Tizen::Ui::Container +{ +public: + /** + * The object is not fully constructed after this constructor is called. Hence, the Construct() method must be called after calling this constructor. + * + * @since 2.0 + */ + SectionTableView(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~SectionTableView(void); + + /** + * Initializes this instance of %SectionTableView with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect An instance of the Graphics::Rectangle class + * This instance represents the x and y coordinates of the left top corner of the created %SectionTableView along with the width and height. + * @param[in] itemDivider Set to @c true to display an item divider, @n + * else @c false + * @param[in] scrollStyle The style of %SectionTableView scroll bar style + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid, or either the rect.width or rect.height parameter has a negative value. + * + */ + result Construct(const Tizen::Graphics::Rectangle& rect, bool itemDivider, TableViewScrollBarStyle scrollStyle); + + /** + * Sets the item provider that creates and deletes items for the section style table view. + * + * @since 2.0 + * + * @param[in] pProvider The item provider to create and delete items + * @remarks If an item provider is not set for the table view, the table view does not work. + * The specified provider should be allocated in heap memory. + */ + void SetItemProvider(ISectionTableViewItemProvider* pProvider); + + /** + * Sets the color of a section. + * + * @since 2.0 + * + * @param[in] color The section color + * @remarks This method works only when the style of the %SectionTableView control is TABLE_VIEW_STYLE_SECTION. + */ + void SetSectionColor(const Tizen::Graphics::Color& color); + + /** + * Gets the color of a section. + * + * @since 2.0 + * + * @return The section color + */ + Tizen::Graphics::Color GetSectionColor(void) const; + + /** + * Sets the grouped look is enabled. + * + * @since 2.0 + * + * @param[in] enable The enabled/disabled status + */ + void SetGroupedLookEnabled(bool enable); + + /** + * Returns whether the grouped look is enabled or not. + * + * @since 2.0 + * + * @return @c true if the grouped look is enabled, else @c false + */ + bool IsGroupedLookEnabled(void) const; + + /** + * Adds a listener instance that listens to state changes of table view items. @n + * The added listener can listen to events on the specified event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The event listener to add + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_ALREADY_EXIST The listener is already added. + * @remarks The specified listener should be allocated in heap memory. + */ + result AddSectionTableViewItemEventListener(ISectionTableViewItemEventListener& listener); + + /** + * Removes a listener instance that listens to state changes of table view items. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The event listener to remove + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND The listener is not found. + */ + result RemoveSectionTableViewItemEventListener(ISectionTableViewItemEventListener& listener); + + /** + * Adds a listener instance that listens to state changes of a fast scroll. @n + * The added listener can listen to events on the specified event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The event listener to add + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_OBJ_ALREADY_EXIST The listener is already added. + * @remarks The specified listener should be allocated in heap memory. + */ + result AddFastScrollListener(IFastScrollListener& listener); + + /** + * Removes a listener instance that listens to state changes of a fast scroll. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The event listener to remove + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_OBJ_NOT_FOUND The listener is not found. + */ + result RemoveFastScrollListener(IFastScrollListener& listener); + + /** + * Adds a listener instance that listens to state changes of a scroll event. @n + * The added listener can listen to events on the specified event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The event listener to add + * @see IScrollEventListener::OnScrollEndReached() + * @see RemoveScrollEventListener() + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_OBJ_ALREADY_EXIST The listener is already added. + * @remarks The specified listener should be allocated in heap memory. + */ + result AddScrollEventListener(IScrollEventListener& listener); + + /** + * Removes a listener instance that listens to state changes of a scroll event. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The event listener to remove + * @see IScrollEventListener::OnScrollEndReached() + * @see AddScrollEventListener() + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_OBJ_NOT_FOUND The listener is not found. + */ + result RemoveScrollEventListener(IScrollEventListener& listener); + + /** + * Sets the text index of the fast scroll. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text of the index + * @param[in] useSearchIcon Set to @c true to show the magnifying icon, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + */ + result SetFastScrollIndex(const Tizen::Base::String& text, bool useSearchIcon); + + /** + * Gets the section and item indexes of the top item. + * + * @since 2.0 + * + * @return An error code + * @param[out] sectionIndex The section index + * @param[out] itemIndex The item index + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND Top drawn item is not found. + */ + result GetTopDrawnItemIndex(int& sectionIndex, int& itemIndex) const; + + /** + * Gets the section and item indexes of the bottom item. + * + * @since 2.0 + * + * @return An error code + * @param[out] sectionIndex The section index + * @param[out] itemIndex The item index + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND Bottom drawn item is not found. + */ + result GetBottomDrawnItemIndex(int& sectionIndex, int& itemIndex) const; + + /** + * Scrolls to the item at the specified index. + * The specified item is drawn at the position specified by the item alignment. + * + * @since 2.0 + * + * @return An error code + * @param[in] sectionIndex The section index + * @param[in] itemIndex The item index + * @param[in] itemAlignment The item alignment + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + */ + result ScrollToItem(int sectionIndex, int itemIndex, TableViewScrollItemAlignment itemAlignment = TABLE_VIEW_SCROLL_ITEM_ALIGNMENT_TOP); + + /** + * Checks or unchecks the item at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] sectionIndex The section index + * @param[in] itemIndex The item index + * @param[in] check Set to @c true to select the item, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @exception E_INVALID_OPERATION The item is disabled. + * @remarks This method works only when the annex style of the item allows selection. + */ + result SetItemChecked(int sectionIndex, int itemIndex, bool check); + + /** + * Returns whether the item at the specified index is selected or not. + * + * @since 2.0 + * + * @return @c true if the item is selected, @n + * else @c false + * @param[in] sectionIndex The section index + * @param[in] itemIndex The item index + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @remarks This method returns @c false, if the annex style of the item does not allow selection. + */ + bool IsItemChecked(int sectionIndex, int itemIndex) const; + + /** + * Enables or disables the item at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] sectionIndex The section index + * @param[in] itemIndex The item index + * @param[in] enable Set to @c true to enable the specified item, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + */ + result SetItemEnabled(int sectionIndex, int itemIndex, bool enable); + + /** + * Returns whether the item at the specified index is enabled or disabled. + * + * @since 2.0 + * + * @return @c true if the item is enabled, @n + * else @c false + * @param[in] sectionIndex The section index + * @param[in] itemIndex The item index + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + */ + bool IsItemEnabled(int sectionIndex, int itemIndex) const; + + /** + * Counts the total number of sections. + * + * @since 2.0 + * + * @return The total number of sections + */ + int GetSectionCount(void) const; + + /** + * Counts all the items of the specified section. + * + * @since 2.0 + * + * @return The total number of items in the specified section + * @param[in] sectionIndex The section index + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + */ + int GetItemCountAt(int sectionIndex) const; + + /** + * Updates the specified item. @n + * For instance, TABLE_VIEW_REFRESH_TYPE_ITEM_ADD is used when a new item needs to be added and TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE is used when an item is deleted from the + * table view. Moreover, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY is used when the content of an existing item has changed and it needs to be updated. + * Note that calling this method with TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY invokes item provider's UpdateItem() for the given index in sequence. + * + * @since 2.0 + * + * @return An error code + * @param[in] sectionIndex The section index + * @param[in] itemIndex The item index + * @param[in] type The item to be added, removed, or modified + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @remarks If the specified item. itemIndex is -1, then the method is applied to the section item with the given index. + * Note that if TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE option is used to a section item, all the items in the section (including the section item itself) are + * removed from the table view. + */ + result RefreshItem(int sectionIndex, int itemIndex, TableViewRefreshType type); + + /** + * Updates all the items of a table view. + * + * @since 2.0 + * + * @return An error code + * @remarks This method clears all the items in the table view and invokes the methods of the item provider again to update the table view. + */ + void UpdateTableView(void); + + /** + * Gets the index of the item at the specified position. + * + * @since 2.0 + * + * @param[in] position The position of the item + * @param[out] sectionIndex The section index of the item on specified position + * @param[out] itemIndex The item index of the item on specified position + * @remarks This method sets both of sectionIndex and itemIndex to -1 if no item is found at the given position. + */ + result GetItemIndexFromPosition(const Tizen::Graphics::Point& position, int& sectionIndex, int& itemIndex) const; + + /** + * Sets the color of a division line between items. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The division line color + */ + void SetItemDividerColor(const Tizen::Graphics::Color& color); + + /** + * Gets the color of a division line between items. + * + * @since 2.0 + * + * @return The color of a division line + */ + Tizen::Graphics::Color GetItemDividerColor(void) const; + + /** + * Sets the background color of this control. + * + * @since 2.0 + * + * @param[in] color The background color + * @remarks The background bitmap has priority over the background color. When both the background bitmap and the background color are specified, + * only the bitmap image is displayed. + */ + void SetBackgroundColor(const Tizen::Graphics::Color& color); + + /** + * Gets the background color of this control. + * + * @since 2.0 + * + * @return The background color + */ + Tizen::Graphics::Color GetBackgroundColor(void) const; + + /** + * Sets the scroll input handling mode. + * + * @since 2.0 + * + * @param[in] mode The scroll input handling mode + * @see GetScrollInputMode() + */ + void SetScrollInputMode(ScrollInputMode mode); + + /** + * Gets the scroll input handling mode. + * + * @since 2.0 + * + * @return The scroll input handling mode + * @see SetScrollInputMode() + */ + ScrollInputMode GetScrollInputMode(void) const; + + /* + * Scrolls the list contents with the amount of pixels. + * + * @since 2.0 + * + * @return An error code + * @param[in] pixel The amount of pixels to scroll + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c pixel is out of range. + * @remarks If you call ScrollByPixel() with negative @c pixel when position of scroll is already top of contents then it will return E_OUT_OF_RANGE. + * Likewise, in case of positive @c pixel on the bottom position of scroll it will also return E_OUT_OF_RANGE. + */ + result ScrollByPixel(int pixel); + + /* + * Gets the current scroll position + * + * @since 2.0 + */ + int GetCurrentScrollPosition(void) const; + + /* + * Enables or disables the scroll of SectionTableView items. + * + * @since 2.0 + */ + void SetScrollEnabled(bool enable); + + /* + * Checks whether the scroll is enabled or disabled. + * + * @since 2.0 + */ + bool IsScrollEnabled(void) const; + +private: + friend class _TableViewImpl; + + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + SectionTableView(const SectionTableView& rhs); + + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + SectionTableView& operator =(const SectionTableView& rhs); +}; // SectionTableView + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_SECTION_TABLE_VIEW_H_ diff --git a/inc/FUiCtrlSimpleItem.h b/inc/FUiCtrlSimpleItem.h new file mode 100644 index 0000000..00bf28b --- /dev/null +++ b/inc/FUiCtrlSimpleItem.h @@ -0,0 +1,112 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlSimpleItem.h + * @brief This is the header file for the %SimpleItem class. + * + * This header file contains the declarations of the %SimpleItem class and its helper classes. + */ + +#ifndef _FUI_CTRL_SIMPLE_ITEM_H_ +#define _FUI_CTRL_SIMPLE_ITEM_H_ + +#include +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +class _SimpleItemImpl; + +/** + * @class SimpleItem + * @brief This class defines the common behavior of a %SimpleItem. + * + * @since 2.0 + * + * The %SimpleItem class displays a list item, which is the unit of handling a ListView or GroupedListView. It provides the default + * formatting of the list items. + * @n + * For more information on the class features, see ListViews. + * + */ + +class _OSP_EXPORT_ SimpleItem + : public ListItemBase +{ +public: + /** + * The object is not fully constructed after this constructor is + * called. For full construction, the Construct() method must be + * called right after calling this constructor. + * + * @since 2.0 + */ + SimpleItem(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~SimpleItem(void); + + /** + * Initializes this instance of %SimpleItem with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemSize The size of the item + * @param[in] style The style of Annex + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(const Tizen::Graphics::Dimension& itemSize, ListAnnexStyle style); + + /** + * Sets the text string and bitmap image for %SimpleItem. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text string to add + * @param[in] pBitmap The bitmap image to display + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetElement(const Tizen::Base::String& text, const Tizen::Graphics::Bitmap* pBitmap = null); + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + SimpleItem(const SimpleItem& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + SimpleItem& operator =(const SimpleItem& rhs); +}; // SimpleItem + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_SIMPLE_ITEM_H_ diff --git a/inc/FUiCtrlSlidableGroupedList.h b/inc/FUiCtrlSlidableGroupedList.h new file mode 100644 index 0000000..e0b69ec --- /dev/null +++ b/inc/FUiCtrlSlidableGroupedList.h @@ -0,0 +1,1324 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlSlidableGroupedList.h + * @brief This is the header file for the %SlidableGroupedList class. + * + * This header file contains the declarations of the %SlidableGroupedList class and its helper classes. + */ +#ifndef _FUI_CTRL_SLIDABLE_GROUPED_LIST_H_ +#define _FUI_CTRL_SLIDABLE_GROUPED_LIST_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Base { namespace Runtime +{ +class IEvent; +} } } + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @if OSPDEPREC + * @class SlidableGroupedList + * @brief [Deprecated] This class defines the common behavior of the %SlidableGroupedList control. + * + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * The %SlidableGroupedList class represents a list which loads grouped + * items on demand and unloads unused grouped items to save memory. Like GroupedList, + * the list items of GroupedList consist of groups and items. A group represents grouped + * items and is inserted into the first level just as items are inserted into List. Items + * which are from CustomListItems are inserted under related groups. So, items are uniquely + * identified with two indices: group index and item index. + * + * The operation of %SlidableGroupedList is the same as that of a GroupedList, except + * that a %SlidableGroupedList does not hold all items in the memory. Most of the item manipulations + * are available when they are loaded, but the check state is maintained for all items + * whether they are loaded or not. + * ISlidableGroupedListEventListener must be implemented so that an application can + * be notified when the items need to be loaded as the user scrolls through a list. + * If an application wants to perform tasks when the state of a list item is changed, + * it must implement IGroupedItemEventListener and register it to the slidable + * grouped list. It will then receive related events from %SlidableGroupedList. + * + * Note that CustomListItem and CustomListItemFormat need to be created on a heap. CustomListItems will be deleted automatically + * when the %SlidableGroupedList itself is destroyed. If you want to remove certain list items, you must use RemoveItemAt(). CustomListItemFormat + * must be deleted by the application. + * + * Refer to CustomListItem and CustomListItemFormat. + * + * Example: + * + * @image html ui_controls_slidablegroupedlist.png + * + * This is the simple UI application which uses a %SlidableGroupedList control. + * + * @code +// Sample code for SlidableGroupedListSample.h +#include + +class SlidableGroupedListSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IGroupedItemEventListener + , public Tizen::Ui::ISlidableGroupedListEventListener +{ +public: + SlidableGroupedListSample(void) + : __pSlidableGroupedList(null) + , __pCustomListItemFormat(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + virtual result OnTerminating(void); + + Tizen::Ui::Controls::CustomListItem* LoadListItem(int itemId); + virtual void OnItemStateChanged(const Tizen::Ui::Control &source, int groupIndex, int itemIndex, int itemId, int elementId, Tizen::Ui::ItemStatus status); + virtual void OnItemStateChanged(const Tizen::Ui::Control &source, int groupIndex, int itemIndex, int itemId, Tizen::Ui::ItemStatus status); + virtual void OnListPropertyRequested(const Tizen::Ui::Control &source); + virtual void OnLoadToTopRequested(const Tizen::Ui::Control &source, int groupIndex, int itemIndex, int numItems); + virtual void OnLoadToBottomRequested(const Tizen::Ui::Control &source, int groupIndex, int itemIndex, int numItems); + virtual void OnUnloadItemRequested(const Tizen::Ui::Control& source, int groupIndex, int itemIndex); + +private: + static const int ID_LIST_TEXT = 101; + static const int ID_LIST_BITMAP = 102; + static const int ITEM_HEIGHT = 103; + static const int ITEM_COUNT = 104; + static const int ITEM_COUNT_GROUP1 = 10; + static const int ITEM_COUNT_GROUP2 = 20; + static const int ITEM_COUNT_GROUP3 = 30; + static const int ITEM_ID_LIMITS = 30; + + Tizen::Ui::Controls::SlidableGroupedList* __pSlidableGroupedList; + Tizen::Ui::Controls::CustomListItemFormat* __pCustomListItemFormat; +}; + * @endcode + * + * @code +// Sample code for SlidableGroupedListSample.cpp +#include +#include + +#include "SlidableGroupedListSample.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::Base::Collection; +using namespace Tizen::Graphics; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; + + +bool +SlidableGroupedListSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +SlidableGroupedListSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of SlidableGroupedList + __pSlidableGroupedList = new SlidableGroupedList(); + __pSlidableGroupedList->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height), CUSTOM_LIST_STYLE_NORMAL); + __pSlidableGroupedList->AddGroupedItemEventListener(*this); + __pSlidableGroupedList->AddSlidableGroupedListEventListener(*this); + + // Creates an instance of CustomListItemFormat + __pCustomListItemFormat = new CustomListItemFormat(); + __pCustomListItemFormat->Construct(); + __pCustomListItemFormat->AddElement(ID_LIST_TEXT, Rectangle(10, 25, 240, 80)); + __pCustomListItemFormat->AddElement(ID_LIST_BITMAP, Rectangle(250, 10, 70, 80)); + + // Adds the groups to the slidable grouped list + __pSlidableGroupedList->AddGroup(L"Group1", null, ITEM_COUNT_GROUP1, ITEM_COUNT_GROUP1 * ITEM_HEIGHT); + __pSlidableGroupedList->AddGroup(L"Group2", null, ITEM_COUNT_GROUP2, ITEM_COUNT_GROUP2 * ITEM_HEIGHT); + __pSlidableGroupedList->AddGroup(L"Group3", null, ITEM_COUNT_GROUP3, ITEM_COUNT_GROUP3 * ITEM_HEIGHT); + + // Adds the slidable grouped list to the form + AddControl(*__pSlidableGroupedList); + + return r; +} + +result +SlidableGroupedListSample::OnTerminating(void) +{ + result r = E_SUCCESS; + + // Deallocates the item format + delete __pCustomListItemFormat; + + return r; +} + +CustomListItem* +SlidableGroupedListSample::LoadListItem(int itemId) +{ + // Gets instances of Bitmap + AppResource* pAppResource = Application::App::GetInstance()->GetAppResource(); + Bitmap *pBitmapNormal = pAppResource->GetBitmapN(L"tizen.png"); + Bitmap *pBitmapFocused = pAppResource->GetBitmapN(L"tizen.png"); + + // Creates an instance of String to set an item element + String itemText; + int groupIndex = itemId / ITEM_ID_LIMITS; + int itemIndex = itemId % ITEM_ID_LIMITS; + itemText.Format(128, L"ITEM %d-%d", groupIndex+1, itemIndex+1); + + // Creates an instance of CustomListItem + CustomListItem* pItem = new CustomListItem(); + pItem->Construct(ITEM_HEIGHT); + pItem->SetItemFormat(*__pCustomListItemFormat); + pItem->SetElement(ID_LIST_TEXT, itemText); + pItem->SetElement(ID_LIST_BITMAP, *pBitmapNormal, pBitmapFocused); + + // Deallocates bitmaps + delete pBitmapNormal; + delete pBitmapFocused; + + return pItem; +} + +// IGroupedItemEventListener implementation +void +SlidableGroupedListSample::OnItemStateChanged(const Control &source, int groupIndex, int itemIndex, int itemId, ItemStatus status) +{ + switch (itemId) + { + case 1: + { + // .... + } + break; + default: + break; + } +} + +void +SlidableGroupedListSample::OnItemStateChanged(const Control &source, int groupIndex, int itemIndex, int itemId, int elementId, ItemStatus status) +{ + switch (itemId) + { + case 1: + switch (elementId) + { + case ID_LIST_TEXT: + { + // .... + } + break; + case ID_LIST_BITMAP: + { + // .... + } + break; + } + break; + default: + break; + } +} + +// IFastScrollEventListener implementation +void +SlidableGroupedListSample::OnListPropertyRequested(const Control &source) +{ + // .... +} + +void +SlidableGroupedListSample::OnLoadToTopRequested(const Control &source, int groupIndex, int itemIndex, int numItems) +{ + for(int i=0; i < numItems; ++i) + { + // Loads items upwards + int itemId = ITEM_ID_LIMITS * groupIndex + itemIndex; + + CustomListItem* pItem = LoadListItem(itemId); + __pSlidableGroupedList->LoadItemToTop(*pItem, itemId); + } +} + +void +SlidableGroupedListSample::OnLoadToBottomRequested (const Control &source, int groupIndex, int itemIndex, int numItems) +{ + for(int i=0; i< numItems; ++i) + { + // Loads items downwards + int itemId = ITEM_ID_LIMITS * groupIndex + itemIndex + i; + + CustomListItem* pItem = LoadListItem(itemId); + __pSlidableGroupedList->LoadItemToBottom(*pItem, itemId); + } +} + +void +SlidableGroupedListSample::OnUnloadItemRequested(const Control& source, int groupIndex, int itemIndex) +{ + // Releases resources of the specified item + // .... +} + * @endcode + * @endif + */ +class _OSP_EXPORT_ SlidableGroupedList + : public Tizen::Ui::Control +{ +public: + /** + * @if OSPDEPREC + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * @endif + */ + SlidableGroupedList(void); + + /** + * @if OSPDEPREC + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * @endif + */ + virtual ~SlidableGroupedList(void); + +// Operation + /** + * @if OSPDEPREC + * Initializes this instance of %SlidableGroupedList with the specified parameters. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] rect An instance of the Graphics::Rectangle class @n + * This instance represents the x and y coordinates of the top-left corner of the created %SlidableGroupedList along with + * the width and height. + * @param[in] style The style of the CustomListItem instances + * @param[in] itemDivider Set to @c true to display an item divider, @n + * else @c false + * @param[in] fastScroll Set to @c true to use fast scroll, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks The size of the control must be within the range defined by the minimum size and the maximum size. @n + * @remarks The minimum size of this control is 274 x 148 on a WVGA screen, 180 x 96 on a HVGA screen and 137 x 74 on a WQVGA screen. + * + * @endif + */ + result Construct(const Tizen::Graphics::Rectangle& rect, CustomListStyle style, bool itemDivider = true, bool fastScroll = false); + + /** + * @if OSPDEPREC + * Adds the specified listener instance. + * The added listener can listen to the events on the context of the given event dispatcher when they are fired. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @endif + */ + void AddSlidableGroupedListEventListener(Tizen::Ui::ISlidableGroupedListEventListener& listener); + + /** + * @if OSPDEPREC + * Removes the specified listener instance. + * The removed listener cannot listen to the events when they are fired. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @endif + */ + void RemoveSlidableGroupedListEventListener(Tizen::Ui::ISlidableGroupedListEventListener& listener); + + /** + * @if OSPDEPREC + * Loads the item to the top of the %SlidableGroupedList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] item The %CustomListItem instance + * @param[in] itemId The item ID + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result LoadItemToTop(const Tizen::Ui::Controls::CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Loads the item to the end of the %SlidableGroupedList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] item The %CustomListItem object + * @param[in] itemId The item ID + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result LoadItemToBottom(const Tizen::Ui::Controls::CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Unloads all the loaded items of the %SlidableGroupedList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result UnloadAllItems(void); + + + /** + * @if OSPDEPREC + * Removes all the items in the specified group. @n + * The group is not removed. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks The removed list items are deleted from the memory. + * @endif + */ + result RemoveAllItemsAt(int groupIndex); + + /** + * @if OSPDEPREC + * Removes all the items in the list. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The removed list items are deleted from the memory. + * @remarks After the items have been removed, the ISlidableGroupedListEventListener::OnListPropertyRequested() method is called. + * @see ISlidableGroupedListEventListener + * @endif + */ + result RemoveAllItems(void); + + /** + * @if OSPDEPREC + * Removes the specified listener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @endif + */ + void RemoveFastScrollEventListener(Tizen::Ui::IFastScrollEventListener& listener); + + /** + * @if OSPDEPREC + * Removes the specified listener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @endif + */ + void RemoveGroupedItemEventListener(Tizen::Ui::IGroupedItemEventListener& listener); + + /** + * @if OSPDEPREC + * Scrolls to the bottom of the %SlidableGroupedList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * @endif + */ + void ScrollToBottom(void); + + /** + * @if OSPDEPREC + * Scrolls to the top of the %SlidableGroupedList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * @endif + */ + void ScrollToTop(void); + + /** + * @if OSPDEPREC + * Scrolls to the item at the specified index. @n + * The specified item is drawn at the top of the %SlidableGroupedList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result ScrollToTop(int groupIndex, int itemIndex); + + /** + * @if OSPDEPREC + * Scrolls to the group at the specified index. @n + * The specified group is drawn at the top of the %SlidableGroupedList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result ScrollToTop(int groupIndex); + + + /** + * @if OSPDEPREC + * Sets all the items at the specified group index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @param[in] groupIndex The group index + * @param[in] check Set to @c true to check the item, @n + * else @c false to uncheck + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetAllItemsChecked(int groupIndex, bool check); + + /** + * @if OSPDEPREC + * Sets the contents of the group of the %SlidableGroupedList control at the specified group index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @param[in] text The string of the group to be appended + * @param[in] pBackgroundBitmap The bitmap of the group + * @param[in] groupId The group ID + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetGroupAt(int groupIndex, const Tizen::Base::String& text, const Tizen::Graphics::Bitmap* pBackgroundBitmap, int groupId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Sets the specified item as checked or unchecked. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index of the item to be checked + * @param[in] itemIndex The index of the item to be checked + * @param[in] check Set to @c true to check the item, @n + * else @c false to uncheck it + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetItemChecked(int groupIndex, int itemIndex, bool check); + + /** + * @if OSPDEPREC + * Enables or disables the item at the specified index of the %SlidableGroupedList. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index of the item to be checked + * @param[in] itemIndex The index of the item to be checked + * @param[in] enable Set to @c true to enable the item, @n + * else @c false to disable it + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetLoadedItemEnabled(int groupIndex, int itemIndex, bool enable); + + /** + * @if OSPDEPREC + * Removes all the checked items from the group. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @param[in] height The estimated/real height of the items of the group + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result RemoveAllCheckedItemsAt(int groupIndex, int height); + + /** + * @if OSPDEPREC + * Removes the specified item from the group. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @param[in] height The estimated/real height of the item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks The removed list item is deleted from the memory. + * @endif + */ + result RemoveItemAt(int groupIndex, int itemIndex, int height); + + + /** + * @if OSPDEPREC + * Removes the group of the %SlidableGroupedList control at the group index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks When the specified group is removed, all the items in the group are also removed. + * @remarks The removed list items are deleted from the memory. + * @endif + */ + result RemoveGroupAt(int groupIndex); + + + /** + * @if OSPDEPREC + * Gets the item at the specified indexes if the item is currently loaded. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return A pointer to the loaded item, @n + * else @c null if the specified item is not currently loaded + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @endif + */ + const Tizen::Ui::Controls::CustomListItem* GetLoadedItemAt(int groupIndex, int itemIndex) const; + + + /** + * @if OSPDEPREC + * Gets the item ID at the specified index if the item is currently loaded. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return The item ID, @n + * else LIST_ITEM_UNSPECIFIED_ID if the specified item is not currently loaded + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @endif + */ + int GetLoadedItemIdAt(int groupIndex, int itemIndex) const; + + + /** + * @if OSPDEPREC + * Gets the item index from the specified item ID. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code, @n + * else @c -1 if the specified item is not currently loaded + * @param[in] itemId The item ID + * @param[out] groupIndex The group index + * @param[out] itemIndex The item index + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result GetLoadedItemIndexFromItemId(int itemId, int& groupIndex, int& itemIndex) const; + + /** + * @if OSPDEPREC + * Removes all the checked items of the %SlidableGroupedList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] height The height of the item to be deleted + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The removed list items are deleted from the memory. + * @remarks This method can only be used when the style of the list allows multiple selections. + * @endif + */ + result RemoveAllCheckedItems(int height); + + /** + * @if OSPDEPREC + * Gets the index of the first loaded item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[out] groupIndex The group index + * @param[out] itemIndex The item index + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result GetFirstLoadedItemIndex(int& groupIndex, int& itemIndex) const; + + /** + * @if OSPDEPREC + * Gets the index of the last loaded item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[out] groupIndex The group index + * @param[out] itemIndex The item index + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result GetLastLoadedItemIndex(int& groupIndex, int& itemIndex) const; + + /** + * @if OSPDEPREC + * Sets the first index list of the scroll by text. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] text The text of the first index + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetFastScrollMainIndex(const Tizen::Base::String& text); + + + /** + * @if OSPDEPREC + * Sets the second index list of the scroll by text. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] text The text of the second index @n + * Each second index of the first index has to be separated by ',' + * @param[in] indexDigit The index digit count + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The sub-index of fast scroll does not support SCROLL_INDEX_DIGIT_NUM_2. Therefore, when SCROLL_INDEX_DIGIT_NUM_2 is passed to + * @c indexDigit, this method returns E_SYSTEM. + * @endif + */ + result SetFastScrollSubIndex(const Tizen::Base::String& text, FastScrollIndexDigit indexDigit = SCROLL_INDEX_DIGIT_NUM_1); + + /** + * @if OSPDEPREC + * Sets the background color of this control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @param[in] color The background color + * @endif + */ + void SetBackgroundColor(const Tizen::Graphics::Color& color); + + /** + * @if OSPDEPREC + * Sets the text of the empty list. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @param[in] text The text of the empty list + * @endif + */ + void SetTextOfEmptyList(const Tizen::Base::String& text); + + /** + * @if OSPDEPREC + * Sets the color of the text to be displayed in the absence of a %SlidableGroupedList item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @param[in] color The color of the text to be displayed + * @endif + */ + void SetTextColorOfEmptyList(const Tizen::Graphics::Color& color); + + /** + * @if OSPDEPREC + * Gets the color of the text to be displayed in the absence of a %SlidableGroupedList item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return The color of the text to be displayed + * @endif + */ + Tizen::Graphics::Color GetTextColorOfEmptyList(void) const; + + /** + * @if OSPDEPREC + * Sets the contents of the item in the specified group. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @param[in] itemIndex The %CustomListItem object + * @param[in] item The item + * @param[in] itemId The item ID + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks Do not add, insert, or set an item, that already belongs to %SlidableGroupedList. + * @endif + */ + result SetItemAt(int groupIndex, int itemIndex, const Tizen::Ui::Controls::CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Adds the specified listener instance. + * The added listener can listen to events on the context of the given event dispatcher when they are fired. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @endif + */ + void AddFastScrollEventListener(Tizen::Ui::IFastScrollEventListener& listener); + + /** + * @if OSPDEPREC + * Adds the specified group to the %SlidableGroupedList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] text The string of the group to be appended + * @param[in] pBackgroundBitmap The background bitmap of the group + * @param[in] itemCount The number of items of the group + * @param[in] groupHeight The total height of the items of the group + * @param[in] groupId The group ID + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result AddGroup(const Tizen::Base::String& text, const Tizen::Graphics::Bitmap* pBackgroundBitmap, int itemCount, int groupHeight, int groupId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Adds the specified listener instance. + * The added listener can listen to events on the context of the given event dispatcher when they are fired. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @endif + */ + void AddGroupedItemEventListener(Tizen::Ui::IGroupedItemEventListener& listener); + + + /** + * @if OSPDEPREC + * Adds the item to the specified group. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @param[in] item The CustomListItem object + * @param[in] itemId The item ID + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks The added item is deleted automatically when the list is destroyed. + * Do not add, insert, or set an item that already belongs to %SlidableGroupedList. + * @endif + */ + result AddItem(int groupIndex, const Tizen::Ui::Controls::CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Gets the index of the current bottom drawn item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[out] groupIndex The group index + * @param[out] itemIndex The item index + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result GetBottomDrawnItemIndex(int& groupIndex, int& itemIndex) const; + + + /** + * @if OSPDEPREC + * Gets the index of the first checked list item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[out] groupIndex The group index + * @param[out] itemIndex The item index + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result GetFirstCheckedItemIndex(int& groupIndex, int& itemIndex) const; + + + /** + * @if OSPDEPREC + * Gets the group ID from the specified group index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return The group ID + * @param[in] groupIndex The group index + * @endif + */ + int GetGroupIdAt(int groupIndex) const; + + + /** + * @if OSPDEPREC + * Gets the group index from the specified group ID. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return The group index + * @param[in] groupId The group ID + * @endif + */ + int GetGroupIndexFromGroupId(int groupId) const; + + + /** + * @if OSPDEPREC + * Gets the index of the last checked item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[out] groupIndex The group index + * @param[out] itemIndex The item index + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result GetLastCheckedItemIndex(int& groupIndex, int& itemIndex) const; + + /** + * @if OSPDEPREC + * Gets the index of the next checked item after the specified item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in,out] groupIndex The group index + * @param[in,out] itemIndex The item index + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result GetNextCheckedItemIndexAfter(int& groupIndex, int& itemIndex) const; + + /** + * @if OSPDEPREC + * Gets the index of the current top drawn item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[out] groupIndex The group index + * @param[out] itemIndex The item index + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result GetTopDrawnItemIndex(int& groupIndex, int& itemIndex) const; + + /** + * @if OSPDEPREC + * Gets the index of the item at the specified item position. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] x The x position of the point + * @param[in] y The y position of the point + * @param[out] groupIndex The index of the group, that the item belongs to + * @param[out] itemIndex The index of the item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. @n + * There is no item at the specified position. + * @endif + */ + result GetItemIndexFromPosition(int x, int y, int& groupIndex, int& itemIndex) const; + + /** + * @if OSPDEPREC + * Gets the index of the item at the specified item position. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] position The position of the point + * @param[out] groupIndex The index of the group, that the item belongs to + * @param[out] itemIndex The index of the item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. @n + * There is no item at the specified position. + * @endif + */ + result GetItemIndexFromPosition(const Tizen::Graphics::Point& position, int& groupIndex, int& itemIndex) const; + + /** + * @if OSPDEPREC + * Inserts the group at the specified group index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @param[in] text The string of the group to be appended + * @param[in] pBackgroundBitmap The background bitmap of the group + * @param[in] itemCount The count of all the items in the group + * @param[in] groupHeight The total height of all the items in the group + * @param[in] groupId The group ID + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result InsertGroupAt(int groupIndex, const Tizen::Base::String& text, const Tizen::Graphics::Bitmap* pBackgroundBitmap, int itemCount, int groupHeight, int groupId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Checks whether the item at the specified index is checked. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return @c true if the item is checked, @n + * else @c false + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * + * @remarks This method can only be used when the style of the list allows selection. + * @endif + */ + bool IsItemChecked(int groupIndex, int itemIndex) const; + + /** + * @if OSPDEPREC + * Checks whether the item at the specified index is enabled. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return @c true if the item is enabled, @n + * else @c false + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @endif + */ + bool IsLoadedItemEnabled(int groupIndex, int itemIndex) const; + + + /** + * @if OSPDEPREC + * Checks whether the item at the specified index is currently loaded to the slidable list. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return @c true if the item is loaded, @n + * else @c false + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @endif + */ + bool IsItemLoaded(int groupIndex, int itemIndex) const; + + + /** + * @if OSPDEPREC + * Removes all the groups of the %SlidableGroupedList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks When the specified group is removed, all the items in the group are also removed. + * @remarks The removed list items are deleted from the memory. + * @remarks After the items have been removed, the ISlidableGroupedListEventListener::OnListPropertyRequested() method is called. + * @endif + */ + result RemoveAllGroups(void); + + /** + * @if OSPDEPREC + * Gets the count of all the groups of the %SlidableGroupedList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return The count of all the groups + * @endif + */ + int GetGroupCount(void) const; + + /** + * @if OSPDEPREC + * Inserts the item to the specified group and item indices. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @param[in] item The CustomListItem object + * @param[in] itemId The item ID + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The inserted item is deleted automatically when the list is destroyed. + * Do not add, insert, or set an item, that already belongs to %SlidableGroupedList. + * @endif + */ + result InsertItemAt(int groupIndex, int itemIndex, const Tizen::Ui::Controls::CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + + /** + * @if OSPDEPREC + * Gets the count of all the items in the specified group. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return The count of all the items in the specified group + * @param[in] groupIndex The group index + * @endif + */ + int GetItemCountAt(int groupIndex) const; + + /** + * @if OSPDEPREC + * Draws and shows the specified item of %SlidableGroupedList. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @param[in] itemIndex The item index + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c groupIndex or @c itemIndex is invalid. + * @exception E_INVALID_OPERATION The item has never been drawn before calling this method. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result RefreshItem(int groupIndex, int itemIndex); + + /** + * @if OSPDEPREC + * Draws and shows the specified group of %SlidableGroupedList. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the %GroupedListView class. + * @since 2.0 + * + * @return An error code + * @param[in] groupIndex The group index + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c groupIndex is invalid. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result RefreshGroup(int groupIndex); + +protected: + + friend class _SlidableGroupedListImpl; +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + SlidableGroupedList(const SlidableGroupedList& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + SlidableGroupedList& operator =(const SlidableGroupedList& rhs); + +}; //SlidableGroupedList + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_SLIDABLE_GROUPED_LIST_H_ diff --git a/inc/FUiCtrlSlidableList.h b/inc/FUiCtrlSlidableList.h new file mode 100644 index 0000000..f2941a5 --- /dev/null +++ b/inc/FUiCtrlSlidableList.h @@ -0,0 +1,986 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlSlidableList.h + * @brief This is the header file for the %SlidableList class. + * + * This header file contains the declarations of the %SlidableList class and its helper classes. + */ + +#ifndef _FUI_CTRL_SLIDABLE_LIST_H_ +#define _FUI_CTRL_SLIDABLE_LIST_H_ + +//Includes +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +namespace Tizen { namespace Base { namespace Runtime +{ +class IEvent; +}}} // Tizen::Base::Runtime + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @if OSPDEPREC + * @class SlidableList + * @brief [Deprecated] This class defines the common behavior of a %SlidableList control. + * + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * The %SlidableList class represents a list which loads items on demand and + * unloads unused items to save memory. The operation of %SlidableList is the same + * as that of a List, except that a %SlidableList does not hold all the items in the memory. + * Most of the item manipulations are available when they are loaded, but the check + * state is maintained for all items whether they are loaded or not. + * ISlidableListEventListener must be implemented so that an application can be + * notified when items need to be loaded as the user scrolls through a list. + * If an application wants to perform tasks when the state of a list item is changed, + * then it must implement ICustomItemEventListener and register it to the slidable list, + * It will then receive related events from %SlidableList. + * + * Note that CustomListItem and CustomListItemFormat need to be created on a heap. CustomListItems will be deleted automatically + * when the %SlidableList itself is destroyed. If you want to remove certain list items, you must use RemoveItemAt(). CustomListItemFormat + * must be deleted by the application. + * + * Refer to CustomListItem and CustomListItemFormat. + * + * Example: + * + * @image html ui_controls_slidablelist.png + * + * This is the simple UI application which uses a %SlidableList control. + * + * @code +// Sample code for SlidableListSample.h +#include + +class SlidableListSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::ICustomItemEventListener + , public Tizen::Ui::ISlidableListEventListener +{ +public: + SlidableListSample(void) + : __pSlidableList(null) + , __pCustomListItemFormat(null){} + + bool Initialize(void); + Tizen::Ui::Controls::CustomListItem* CreateListItem(Tizen::Base::String itemText, + Tizen::Graphics::Bitmap* pBitmapNormal, Tizen::Graphics::Bitmap* pBitmapFocused); + + virtual result OnInitializing(void); + virtual result OnTerminating(void); + + // ICustomItemEventListener + virtual void OnItemStateChanged(const Tizen::Ui::Control& source, int index, int itemId, Tizen::Ui::ItemStatus status); + virtual void OnItemStateChanged(const Tizen::Ui::Control& source, int index, int itemId, int elementId, Tizen::Ui::ItemStatus status); + + // ISlidableEventListener + virtual void OnListPropertyRequested (const Tizen::Ui::Control &source); + virtual void OnLoadToTopRequested(const Tizen::Ui::Control &source, int index, int numItems); + virtual void OnLoadToBottomRequested(const Tizen::Ui::Control &source, int index, int numItems); + virtual void OnUnloadItemRequested(const Tizen::Ui::Control& source, int itemIndex); + +private: + static const int ID_LIST_TEXT = 101; + static const int ID_LIST_BITMAP = 102; + static const int ITEM_COUNT = 100; + static const int ITEM_HEIGHT = 100; + + Tizen::Ui::Controls::SlidableList* __pSlidableList; + Tizen::Ui::Controls::CustomListItemFormat* __pCustomListItemFormat; +}; + * @endcode + * + * @code +// Sample code for SlidableListSample.cpp +#include +#include + +#include "SlidableListSample.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::Ui; +using namespace Controls; +using namespace Tizen::Graphics; + +bool +SlidableListSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +SlidableListSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of SlidableList + __pSlidableList = new SlidableList(); + __pSlidableList->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height), CUSTOM_LIST_STYLE_NORMAL); + __pSlidableList->AddCustomItemEventListener(*this); + __pSlidableList->AddSlidableListEventListener(*this); + + // Creates an instance of CustomListItemFormat of the slidable list + __pCustomListItemFormat = new CustomListItemFormat(); + __pCustomListItemFormat->Construct(); + __pCustomListItemFormat->AddElement(ID_LIST_TEXT, Rectangle(10, 25, 200, 80)); + __pCustomListItemFormat->AddElement(ID_LIST_BITMAP, Rectangle(220, 10, 70, 80)); + + // Adds the slidable list to the form + AddControl(*__pSlidableList); + + return r; +} + +result +SlidableListSample::OnTerminating(void) +{ + result r = E_SUCCESS; + + // Deallocates the item format + delete __pCustomListItemFormat; + + return r; +} + +CustomListItem* +SlidableListSample::CreateListItem(String itemText, Bitmap* pBitmapNormal, Bitmap* pBitmapFocused) +{ + CustomListItem* pItem = new CustomListItem(); + + pItem->Construct(ITEM_HEIGHT); + pItem->SetItemFormat(*__pCustomListItemFormat); + pItem->SetElement(ID_LIST_TEXT, itemText); + pItem->SetElement(ID_LIST_BITMAP, *pBitmapNormal, pBitmapFocused); + + return pItem; +} + +// ICustomItemEventListener implementation +void +SlidableListSample::OnItemStateChanged(const Control& source, int index, int itemId, ItemStatus status) +{ + switch (itemId) + { + case 1: + { + // .... + } + break; + default: + break; + } +} + +void +SlidableListSample::OnItemStateChanged(const Control& source, int index, int itemId, int elementId, ItemStatus status) +{ + switch (itemId) + { + case 1: + { + switch (elementId) + { + case ID_LIST_TEXT: + { + // .... + } + break; + case ID_LIST_BITMAP: + { + // .... + } + break; + default: + break; + } + } + break; + default: + break; + } +} + +// ISlidableEventListener implementation +void +SlidableListSample::OnListPropertyRequested (const Control &source) +{ + // Sets the total count and the height of items + __pSlidableList->SetItemCountAndHeight(ITEM_COUNT, ITEM_COUNT * ITEM_HEIGHT); +} + +void +SlidableListSample::OnLoadToTopRequested(const Control &source, int index, int numItems) +{ + // Gets instances of Bitmap + AppResource *pAppResource = Application::GetInstance()->GetAppResource(); + Bitmap *pBitmapNormal = pAppResource->GetBitmapN(L"tizen.png"); + Bitmap *pBitmapFocused = pAppResource->GetBitmapN(L"tizen.png"); + + // Creates items of the slidable list + for(int i = index; i > index - numItems; i--) + { + String itemText = "ITEM_"; + itemText.Append(i); + __pSlidableList->LoadItemToTop(*CreateListItem(itemText, pBitmapNormal, pBitmapFocused), i+1); + } + + // Deallocates bitmaps + delete pBitmapNormal; + delete pBitmapFocused; +} + +void +SlidableListSample::OnLoadToBottomRequested (const Control &source, int index, int numItems) +{ + // Gets instances of Bitmap + AppResource *pAppResource = Application::GetInstance()->GetAppResource(); + Bitmap *pBitmapNormal = pAppResource->GetBitmapN(L"tizen.png"); + Bitmap *pBitmapFocused = pAppResource->GetBitmapN(L"tizen.png"); + + // Creates items of the slidable list + for(int i = index; i < index + numItems; i++) + { + String itemText = L"ITEM_"; + itemText.Append(i); + __pSlidableList->LoadItemToBottom(*CreateListItem(itemText, pBitmapNormal, pBitmapFocused), i+1); + } + + // Deallocates bitmaps + delete pBitmapNormal; + delete pBitmapFocused; +} + +void +SlidableListSample::OnUnloadItemRequested(const Control& source, int itemIndex) +{ + // Releases resources of the specified item + // .... +} + * @endcode + * @endif + */ +class _OSP_EXPORT_ SlidableList + : public Tizen::Ui::Control +{ +public: + /** + * @if OSPDEPREC + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * @endif + */ + SlidableList(void); + + /** + * @if OSPDEPREC + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * @endif + */ + virtual ~SlidableList(void); + +// Operation + + /** + * @if OSPDEPREC + * Initializes this instance of %SlidableList with the specified parameters. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] rect This instance represents the X and Y coordinates of the top-left corner of the created %SlidableList along with the width and height + * @param[in] style The style set of %CustomList + * @param[in] itemDivider Set to @c true to display an item divider, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * Either the @c rect.width or the @c rect.height is @c 0 or negative. + * @exception E_SYSTEM The method has failed. + * @remarks The size of the control must be within the range defined by the minimum size and the maximum size. + * @remarks The minimum size of this control is 92 x 72 on a WVGA screen, 60 x 48 on a HVGA screen and 46 x 36 on a WQVGA screen. + * + * @endif + */ + result Construct(const Tizen::Graphics::Rectangle& rect, CustomListStyle style, bool itemDivider = true); + + /** + * @if OSPDEPREC + * Adds a listener instance. + * The added listener can listen to events on the context of the given event dispatcher when they are fired. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @endif + */ + void AddSlidableListEventListener(Tizen::Ui::ISlidableListEventListener& listener); + + /** + * @if OSPDEPREC + * Removes a listener instance. + * The removed listener cannot listen to events when they are fired. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @endif + */ + void RemoveSlidableListEventListener(Tizen::Ui::ISlidableListEventListener& listener); + + /** + * @if OSPDEPREC + * Adds a listener instance. @n + * The added listener can listen to events on the context of the given event dispatcher when they are fired. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @endif + */ + void AddCustomItemEventListener(Tizen::Ui::ICustomItemEventListener& listener); + + /** + * @if OSPDEPREC + * Adds the specified item to the %SlidableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] item The CustomListItem to be added + * @param[in] itemId The item ID + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The added item is deleted automatically when the list is destroyed. @n + * Do not add, insert, or set an item which already belongs to %SlidableList. + * @endif + */ + result AddItem(const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Gets the index of the bottom drawn item from the %SlidableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An integer value representing the index of the bottom drawn item + * @endif + */ + int GetBottomDrawnItemIndex(void) const; + + /** + * @if OSPDEPREC + * Gets the first item of all the checked items in the %SlidableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The index of the first selected item + * @remarks This method can only be used when the style of the list allows multiple selections. + * @endif + */ + int GetFirstCheckedItemIndex(void) const; + + /** + * @if OSPDEPREC + * Gets the count of the number of items in the %SlidableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The number of items in the %SlidableList control + * @endif + */ + int GetItemCount(void) const; + + /** + * @if OSPDEPREC + * Gets the last item of all the checked items in the %SlidableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The index of the last selected item + * @remarks This method can only be used when the style of the list allows multiple selections. + * @endif + */ + int GetLastCheckedItemIndex(void) const; + + /** + * @if OSPDEPREC + * Gets the radio checked item of the %SlidableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The next item index + * @param[in] index The item index + * @remarks This method can only be used when the style of the list allows multiple selections. + * @endif + */ + int GetNextCheckedItemIndexAfter(int index) const; + + /** + * @if OSPDEPREC + * Gets the index of the top drawn item of the %SlidableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The index of the top drawn item + * @endif + */ + int GetTopDrawnItemIndex(void) const; + + /** + * @if OSPDEPREC + * Inserts the specified item in the %SlidableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] index The item index at which to insert the item + * @param[in] item The CustomListItem to be inserted + * @param[in] itemId The item ID for this item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c index is less than @c 0 or greater than the item count. + * @exception E_SYSTEM A system error has occurred. + * @remarks The inserted item is deleted automatically when the list is destroyed. + * Do not add, insert, or set an item that already belongs to %SlidableList. + * @endif + */ + result InsertItemAt(int index, const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Removes all the items of the %SlidableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The removed list items are deleted from the memory. + * @remarks After items have been removed, the ISlidableListEventListener::OnListPropertyRequested() method is called. + * @see ISlidableListEventListener + * @endif + */ + result RemoveAllItems(void); + + /** + * @if OSPDEPREC + * Removes a listener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @endif + */ + void RemoveCustomItemEventListener(Tizen::Ui::ICustomItemEventListener& listener); + + /** + * @if OSPDEPREC + * Scrolls to the bottom of the %SlidableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * @endif + */ + void ScrollToBottom(void); + + /** + * @if OSPDEPREC + * Scrolls to the top of the %SlidableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * @endif + */ + void ScrollToTop(void); + + /** + * @if OSPDEPREC + * Scrolls to the item at the specified index. @n + * The specified item is drawn at the top of the %SlidableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] index The item index + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @endif + */ + result ScrollToTop(int index); + + /** + * @if OSPDEPREC + * Sets the check status for all items of the %SlidableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] check Set to @c true to check all the items, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method can only be used when the style of the list allows multiple selections. + * @endif + */ + result SetAllItemsChecked(bool check); + + /** + * @if OSPDEPREC + * Sets the check status of the item at the specified index of the %SlidableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] index The item index + * @param[in] check The check status + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * + * @remarks This method can only be used when the style of the list allows selection. + * @endif + */ + result SetItemChecked(int index, bool check); + + /** + * @if OSPDEPREC + * Enables or disables the status of the item at the specified index of the %SlidableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] index The item index + * @param[in] enable Set to @c true to enable, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * + * @endif + */ + result SetLoadedItemEnabled(int index, bool enable); + + /** + * @if OSPDEPREC + * Sets the background color of the %SlidableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @param[in] color The background color + * @endif + */ + void SetBackgroundColor(const Tizen::Graphics::Color& color); + + /** + * @if OSPDEPREC + * Sets the text to display in the absence of a %SlidableList item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @param[in] text The text message + * @endif + */ + void SetTextOfEmptyList(const Tizen::Base::String& text); + + /** + * @if OSPDEPREC + * Sets a color of the text to display in the absence of a %SlidableList item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @param[in] color The color of the text to be displayed + * @endif + */ + void SetTextColorOfEmptyList(const Tizen::Graphics::Color& color); + + /** + * @if OSPDEPREC + * Gets a color of the text to display in the absence of a %SlidableList item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The color of the text to be displayed + * @endif + */ + Tizen::Graphics::Color GetTextColorOfEmptyList(void) const; + + /** + * @if OSPDEPREC + * Gets the loaded item at the specified index of the %SlidableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return A CustomListItem + * @param[in] index The item index + * @endif + */ + const CustomListItem* GetLoadedItemAt(int index) const; + + /** + * @if OSPDEPREC + * Gets the index of the loaded item at the specified item ID. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The item ID + * @param[in] index The item index + * @endif + */ + int GetLoadedItemIdAt(int index) const; + + /** + * @if OSPDEPREC + * Checks whether the item at the specified index is enabled. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return @c true if the item is enabled, @n + * else @c false + * @param[in] index The item index + * @endif + */ + bool IsItemChecked(int index) const; + + /** + * @if OSPDEPREC + * Checks whether the loaded item at the specified index is enabled. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return @c true if the item is enabled, @n + * else @c false + * @param[in] index The item index + * @endif + */ + bool IsLoadedItemEnabled(int index) const; + + /** + * @if OSPDEPREC + * Gets the index of the loaded item at the specified item ID. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The index of the item + * @param[in] itemId The item ID + * @endif + */ + int GetLoadedItemIndexFromItemId(int itemId) const; + + /** + * @if OSPDEPREC + * Loads the item to the top of the %SlidableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] item The %CustomListItem to be loaded + * @param[in] itemId The item ID for this item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result LoadItemToTop(const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Loads the item to the end of the %SlidableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] item The CustomListItem to be loaded + * @param[in] itemId The item ID for this item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result LoadItemToBottom(const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Unloads all loaded items of the %SlidableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result UnloadAllItems(void); + + /** + * @if OSPDEPREC + * Sets the contents of the item at the specified index of the %SlidableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] index The item index + * @param[in] item The CustomListItem to be set + * @param[in] itemId The item ID for this item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c index is less than @c 0 or greater than or equal to the item count. + * @exception E_SYSTEM A system error has occurred. + * @remarks Do not add, insert, or set an item which already belongs to %SlidableList. + * @endif + */ + result SetItemAt(int index, const CustomListItem& item, int itemId = LIST_ITEM_UNSPECIFIED_ID); + + /** + * @if OSPDEPREC + * Removes the item at the specified index of the %SlidableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] index The item index to be deleted + * @param[in] itemHeight The height of the item to be deleted + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The removed list item is deleted from the memory. + * @endif + */ + result RemoveItemAt(int index, int itemHeight); + + /** + * @if OSPDEPREC + * Removes all the checked items of the %SlidableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] itemHeight The height of the item to be deleted + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The removed list items are deleted from the memory. + * @remarks This method can only be used when the style of the list allows multiple selections. + * @endif + */ + result RemoveAllCheckedItems(int itemHeight); + + /** + * @if OSPDEPREC + * Sets the number of items and the combined height of all the items of the %SlidableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @param[in] count The count of list items + * @param[in] listHeight The height of the list + * @endif + */ + void SetItemCountAndHeight(int count, int listHeight); + + /** + * @if OSPDEPREC + * Checks whether the specific item is loaded. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return @c true if the item is loaded, @n + * else @c false + * @param[in] index The item index + * @endif + */ + bool IsItemLoaded(int index) const; + + /** + * @if OSPDEPREC + * Gets the index of the first loaded item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The index of the first loaded item + * @endif + */ + int GetFirstLoadedItemIndex(void) const; + + /** + * @if OSPDEPREC + * Gets the index of the last loaded item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The index of the last loaded item + * @endif + */ + int GetLastLoadedItemIndex(void) const; + + /** + * @if OSPDEPREC + * Gets the index of the item at the specified item position. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The index of the item, @n + * else @c -1 if there is no list item with the specified position + * @param[in] x The x position of the point + * @param[in] y The y position of the point + * @endif + */ + int GetItemIndexFromPosition(int x, int y) const; + + /** + * @if OSPDEPREC + * Gets the index of the item at the specified item position. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return The index of the item, @n + * else @c -1 if there is no list item with the specified position + * @param[in] position The position of the point + * @endif + */ + int GetItemIndexFromPosition(const Tizen::Graphics::Point& position) const; + + /** + * @if OSPDEPREC + * Draws and shows the item of the %SlidableList control. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the ListView class. + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the %SlidableList item + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @exception E_INVALID_OPERATION The item has never been drawn before calling this method. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @endif + */ + result RefreshItem(int index); + +protected: + + friend class _SlidableListImpl; +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + SlidableList(const SlidableList& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + SlidableList& operator =(const SlidableList& rhs); +}; //SlidableList +}}} // Tizen::Ui::Controls +#endif // _FUI_CTRL_SLIDABLE_LIST_H_ diff --git a/inc/FUiCtrlSlider.h b/inc/FUiCtrlSlider.h new file mode 100644 index 0000000..bc01d84 --- /dev/null +++ b/inc/FUiCtrlSlider.h @@ -0,0 +1,424 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlSlider.h + * @brief This is the header file for the %Slider class. + * + * This header file contains the declarations of the %Slider class and its helper classes. + */ + +#ifndef _FUI_CTRL_SLIDER_H_ +#define _FUI_CTRL_SLIDER_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @class Slider + * @brief This class is an implementation of a %Slider control. + * + * @since 2.0 + * + * The %Slider class displays a slider that represents changing progress or setting information. The difference between %Slider + * and Progress is that the former accepts user input by the touch of the slider icon. + * + * For more information on the class features, see Slider. + * + * The following example demonstrates how to use the %Slider class. + * + * @code +// Sample code for SliderSample.h +#include + +class SliderSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IAdjustmentEventListener +{ +public: + SliderSample(void) + : __pSlider(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + virtual void OnAdjustmentValueChanged(const Tizen::Ui::Control& source, int adjustment); + +private: + Tizen::Ui::Controls::Slider* __pSlider; +}; + * @endcode + * + * @code +// Sample code for SliderSample.cpp +#include + +#include "SliderSample.h" + +using namespace Tizen::Graphics; +using namespace Tizen::Ui::Controls; + +bool +SliderSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +SliderSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of Slider + __pSlider = new Slider(); + __pSlider->Construct(Rectangle(0, 200, GetClientAreaBounds().width, 200), BACKGROUND_STYLE_DEFAULT, false, 0, 100); + __pSlider->SetValue(50); + __pSlider->AddAdjustmentEventListener(*this); + + // Adds the slider to the form + AddControl(*__pSlider); + + return r; +} + +// IAdjustmentEventListener implementation +void +SliderSample::OnAdjustmentValueChanged(const Control& source, int adjustment) +{ + // .... +} + * @endcode + * + */ +class _OSP_EXPORT_ Slider + : public Tizen::Ui::Control +{ +// Lifecycle +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + Slider(void); + + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~Slider(void); + + /** + * Initializes this instance of %Slider with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect An instance of the Graphics::Rectangle class @n + * This instance represents the x and y coordinates of the top-left corner of the created window along with + * the width and height of the control. + * @param[in] backgroundStyle The background style set of the slider + * @param[in] showTitle Set to @c true to enable the show title, @n + * else @c false + * @param[in] minValue The minimum slider value + * @param[in] maxValue The maximum slider value + * @param[in] groupStyle The table view style of the slider + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The background style of BACKGROUND_STYLE_NONE does not work with group styles except GROUP_STYLE_NONE. + * @exception E_OUT_OF_RANGE The specified values are less than @c -99 or greater than @c 999. + * @exception E_SYSTEM A system error has occurred. + * @remarks A control is fully usable only after it has been added to a container. Therefore, some methods may fail if used earlier. @n + * If the given size is less than the minimum, it returns E_INVALID_ARG. + * @remarks The size of the control must be within the range defined by the minimum size and the maximum size. + */ + result Construct(const Tizen::Graphics::Rectangle& rect, BackgroundStyle backgroundStyle = BACKGROUND_STYLE_DEFAULT, bool showTitle = false, int minValue = 0, int maxValue = 100, GroupStyle groupStyle = GROUP_STYLE_NONE); + + /** + * Adds a IAdjustmentEventListener instance. @n + * The added listener listens to events on the context of the specified event dispatcher when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + */ + void AddAdjustmentEventListener(Tizen::Ui::IAdjustmentEventListener& listener); + + /** + * Removes a IAdjustmentEventListener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + */ + void RemoveAdjustmentEventListener(Tizen::Ui::IAdjustmentEventListener& listener); + +// Operation +public: + /** + * Sets the range of the %Slider control. + * + * @since 2.0 + * + * @return An error code + * @param[in] minValue The minimum value of the %Slider control + * @param[in] maxValue The maximum value of the %Slider control + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_OUT_OF_RANGE The specified values are greater than @c -99 or less than @c 999. + * @exception E_SYSTEM A system error has occurred. + */ + result SetRange(int minValue, int maxValue); + + /** + * Gets the minimum value and the maximum value of the slider. + * + * @since 2.0 + * + * @param[out] minValue The minimum value of the slider + * @param[out] maxValue The maximum value of the slider + */ + void GetRange(int& minValue, int& maxValue) const; + + /** + * Sets the value of the current thumb position. @n + * If the specified @c value is greater than @c maxValue, the value is set to @c maxValue, and + * if the specified @c value is less than @c minValue, the value is set to @c minValue. + * + * @since 2.0 + * + * @param[in] value The value of the position + */ + void SetValue(int value); + + /** + * Gets the value of the current thumb position. + * + * @since 2.0 + * + * @return The current thumb position + */ + int GetValue(void) const; + + /** + * Sets the icon of the slider. + * + * @since 2.0 + * + * @param[in] position The position of the icon (ICON_POSITION_LEFT/ICON_POSITION_RIGHT) + * @param[in] icon The bitmap image of the icon + * @remarks If the size of the bitmap is greater than the default size, the bitmap image is scaled down. + */ + void SetIcon(IconPosition position, const Tizen::Graphics::Bitmap& icon); + + /** + * Sets the title of the slider. + * + * @since 2.0 + * + * @return An error code + * @param[in] title The title to be set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetTitleText(const Tizen::Base::String& title); + + /** + * Gets the title of the slider. + * + * @since 2.0 + * + * @return The title text of the entered string, @n + * else an empty string if the %Slider instance is not constructed + */ + Tizen::Base::String GetTitleText(void) const; + + /** + * Sets the title text color of the %Slider control. + * + * @since 2.0 + * + * @param[in] color The title text color to be set + */ + void SetTitleTextColor(const Tizen::Graphics::Color& color); + + /** + * Gets the title text color of the %Slider control. + * + * @since 2.0 + * + * @return The title text color + */ + Tizen::Graphics::Color GetTitleTextColor(void) const; + + /** + * Initializes this instance of %Slider with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect An instance of the Graphics::Rectangle class @n + * This instance represents the x and y coordinates of the top-left corner of the created window along with + * its width and height. + * @param[in] sliderStyle The style of the slider @n + * Multiple link types can be combined using bitwise OR operator. See Tizen::Ui::Controls::SliderStyle. + * @param[in] minValue The minimum slider value + * @param[in] maxValue The maximum slider value + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified minimum and maximum values are less than @c -99, or greater than @c 999. + * @exception E_INVALID_ARG A specified input parameter is invalid, or the specified @c minValue is greater than @c maxVaue. + * @exception E_SYSTEM A system error has occurred. + * @remarks A control is fully functional only after it has been added to a container. Therefore, some methods may fail if they are used before + * adding the control to the container. @n + * If the specified size is less than the minimum size, the %Slider control is constructed with the minimum size. + * @remarks The width and the height of the control must be greater than @c 0. + * @remarks The size of the control must be within the range defined by the minimum size and the maximum size. + */ + result Construct(const Tizen::Graphics::Rectangle& rect, unsigned long sliderStyle, int minValue = 0, int maxValue = 100); + + /** + * Adds a ISliderEventListener instance. @n + * The added listener can listen to the slider-related events. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + */ + void AddSliderEventListener(ISliderEventListener& listener); + + /** + * Removes a ISliderEventListener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + */ + void RemoveSliderEventListener(ISliderEventListener& listener); + + /** + * Sets the color of the bar. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The color to be set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The method ignores the alpha value of the @c color parameter and sets the alpha value to @c 255. + */ + result SetBarColor(const Tizen::Graphics::Color& color); + + /** + * Gets the color of the bar. + * + * @since 2.0 + * + * @return The color of the bar, @n + * else RGBA(0, 0, 0, 0) if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetBarColor(void) const; + + /** + * Sets the color of the slider. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The color to be set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The operation is not supported if the background style of the %Slider control is BACKGROUND_STYLE_NONE. + * @exception E_SYSTEM A system error has occurred. + * @remarks If a device supports only the 16-bit color space, this method considers the color as opaque by ignoring the alpha value of @c color. + */ + result SetColor(const Tizen::Graphics::Color& color); + + /** + * Gets the color of the slider. + * + * @since 2.0 + * + * @return The color , @n + * else RGBA(0, 0, 0, 0) if an instance is invalid or the background style is BACKGROUND_STYLE_NONE + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The background style is not proper. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetColor(void) const; + + /** + * Sets the bitmap image to the %Slider control Thumb. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The state of the slider thumb + * @param[in] bitmap The Thumb bitmap image + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + */ + result SetThumbBitmap(SliderThumbStatus status, const Tizen::Graphics::Bitmap& bitmap); + + /** + * Sets the text color of the %Slider control Thumb. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The state of the slider thumb + * @param[in] color The color should be set for the thumb text + */ + void SetThumbTextColor(SliderThumbStatus status, const Tizen::Graphics::Color& color); + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + Slider(const Slider&); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + Slider& operator =(const Slider&); + + friend class _SliderImpl; + +}; // Slider + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_SLIDER_H_ diff --git a/inc/FUiCtrlSliderTypes.h b/inc/FUiCtrlSliderTypes.h new file mode 100644 index 0000000..c22f1a9 --- /dev/null +++ b/inc/FUiCtrlSliderTypes.h @@ -0,0 +1,62 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlSliderTypes.h + * @brief This is the header file for the SliderStyle enumerations. + * + * This header files contains the declarations of the SliderStyle enumeration. + * + */ +#ifndef _FUI_CTRL_SLIDER_TYPES_H_ +#define _FUI_CTRL_SLIDER_TYPES_H_ + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @enum SliderStyle + * + * Defines the slider styles. + * + * @since 2.0 + */ +enum SliderStyle +{ + SLIDER_STYLE_NONE = 0x0000, /**< The no bubble, no title slider */ + SLIDER_STYLE_BUBBLE = 0x0001, /**< The bubble style slider */ + SLIDER_STYLE_TITLE = 0x0002, /**< The title style slider */ +}; + +/** + * @enum SliderThumbStatus + * + * Defines the possible states of the slider thumb. + * + * @since 2.0 + */ + +enum SliderThumbStatus +{ + SLIDER_THUMB_STATUS_NORMAL, /**< The normal state */ + SLIDER_THUMB_STATUS_PRESSED, /**< The pressed state */ + SLIDER_THUMB_STATUS_DISABLED, /**< The disabled state */ + SLIDER_THUMB_STATUS_HIGHLIGHTED, /**< The focus-highlighted state */ +}; + +}}} // Tizen::Ui::Controls + +#endif //_FUI_CTRL_SLIDER_TYPES_H_ diff --git a/inc/FUiCtrlSplitPanel.h b/inc/FUiCtrlSplitPanel.h new file mode 100644 index 0000000..8d7b5c1 --- /dev/null +++ b/inc/FUiCtrlSplitPanel.h @@ -0,0 +1,314 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlSplitPanel.h + * @brief This is the header file for the %SplitPanel class. + * + * This header file contains the declarations of the %SplitPanel class. + */ +#ifndef _FUI_CTRL_SPLIT_PANEL_H_ +#define _FUI_CTRL_SPLIT_PANEL_H_ + +#include +#include +#include +#include + + +namespace Tizen { namespace Ui { namespace Controls +{ + +class ISplitPanelEventListener; + +/** + * @class SplitPanel + * @brief This class is an implementation of a %SplitPanel control. + * + * @since 2.0 + * @final This class is not intended for extension. + * + * The %SplitPanel class provides the functionality of a %SplitPanel which is a control that contains two panes. + * + * For more information on the class features, see SplitPanel. + * + * The following example demonstrates how to use the %SplitPanel class. + * + * @code +// Sample code for SplitPanel.h +#include + +class SplitPanelSample + : public Tizen::Ui::Controls::Form +{ +public: + virtual result OnInitializing(void); +}; + * @endcode + * + * @code +// Sample code for SplitPanelSample.cpp +#include "SplitPanelSample.h" + +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; +using namespace Tizen::Graphics; + +result +SplitPanelSample::OnInitializing(void) +{ + // Creates an instance of SplitPanel + SplitPanel* pSplitPanel = new (std::nothrow) SplitPanel(); + pSplitPanel->Construct(Rectangle(0, 0, 800, 400), + SPLIT_PANEL_DIVIDER_STYLE_MOVABLE, SPLIT_PANEL_DIVIDER_DIRECTION_VERTICAL); + + // Creates instances of Panel + Panel* pFirstPanel = new (std::nothrow) Panel(); + pFirstPanel->Construct(Rectangle(0, 0, 400, 480)); + + Panel* pSecondPanel = new (std::nothrow) Panel(); + pSecondPanel->Construct(Rectangle(0, 0, 400, 480)); + + //Sets the divider position to the slit panel + pSplitPanel->SetDividerPosition(400); + + //Sets panes to the split panel + pSplitPanel->SetPane(pFirstPanel, SPLIT_PANEL_PANE_ORDER_FIRST); + pSplitPanel->SetPane(pSecondPanel, SPLIT_PANEL_PANE_ORDER_SECOND); + + // Adds the split panel to the form + AddControl(*pSplitPanel); + + return E_SUCCESS; +} + * @endcode + * + */ + +class _OSP_EXPORT_ SplitPanel + : public Tizen::Ui::Control +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + SplitPanel(void); + + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~SplitPanel(void); + + /** + * Initializes this instance of %SplitPanel with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect The location and size of the %SplitPanel control as a Rectangle instance. + * @param[in] splitPanelDividerStyle The divider style of the %SplitPanel control + * @param[in] splitPanelDividerDirection The divider direction of the %SplitPanel control @n + * The specified divider direction determines the divider is vertical or horizontal. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + */ + result Construct(const Tizen::Graphics::Rectangle& rect, SplitPanelDividerStyle splitPanelDividerStyle, SplitPanelDividerDirection splitPanelDividerDirection); + + /** + * Adds a ISplitPanelEventListener instance. @n + * The added listener listens to events on the context of the specified event dispatcher when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_ALREADY_EXIST The event listener already exists. + */ + result AddSplitPanelEventListener(ISplitPanelEventListener& listener); + + /** + * Removes a ISplitPanelEventListener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND The event listener is not found. + */ + result RemoveSplitPanelEventListener(ISplitPanelEventListener& listener); + + /** + * Sets the pane to the %SplitPanel control. + * + * @since 2.0 + * + * @return An error code + * @param[in] pControl The control to be set. + * @param[in] paneOrder The order of pane. SPLIT_PANEL_PANE_FIRST is displayed on the left side @n + * and SPLIT_PANEL_PANE_SECOND is displayed on the right side of the %SplitPanel when its direction is SPLIT_PANEL_DIVIDER_DIRECTION_VERTICAL. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @remarks The %SplitPanel control must contain exactly two panes and the user can change their relative sizes. + */ + result SetPane(Control* pControl, SplitPanelPaneOrder paneOrder); + + /** + * Gets the control at the specified pane order of the %SplitPanel. + * + * @since 2.0 + * + * @return The control at the specified pane order of the %SplitPanel @n + * @c null, if there is no panel. + * @param[in] paneOrder The order of pane. SPLIT_PANEL_PANE_FIRST is displayed on the left side @n + * and SPLIT_PANEL_PANE_SECOND is displayed on the right side of the %SplitPanel when its direction is SPLIT_PANEL_DIVIDER_DIRECTION_VERTICAL. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Control* GetPane(SplitPanelPaneOrder paneOrder) const; + + /** + * Sets the divider position of the control. + * + * @since 2.0 + * + * @return An error code + * @param[in] position The position of divider + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @see GetDividerPosition() + * @see SetMaximumDividerPosition(), GetMaximumDividerPosition() + * @see SetMinimumDividerPosition(), GetMinimumDividerPosition() + */ + result SetDividerPosition(int position); + + /** + * Gets the current divider position of the control. + * + * @since 2.0 + * + * @return The current divider position + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetDividerPosition() + * @see SetMaximumDividerPosition(), GetMaximumDividerPosition() + * @see SetMinimumDividerPosition(), GetMinimumDividerPosition() + */ + int GetDividerPosition(void) const; + + /** + * Sets the divider maximum position of the control. + * + * @since 2.0 + * + * @return An error code + * @param[in] position The position of divider. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @see GetMaximumDividerPosition() + * @see SetMinimumDividerPosition(), GetMinimumDividerPosition() + */ + result SetMaximumDividerPosition(int position); + + /** + * Gets the maximum divider position. + * + * @since 2.0 + * + * @return The maximum divider position of the control. + * @see SetMaximumDividerPosition() + * @see SetMinimumDividerPosition(), GetMinimumDividerPosition() + */ + int GetMaximumDividerPosition(void) const; + + /** + * Sets the divider minimum position of the control. + * + * @since 2.0 + * + * @return An error code + * @param[in] position The position of divider. + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @see GetMinimumDividerPosition() + * @see SetMaximumDividerPosition(), GetMaximumDividerPosition() + */ + result SetMinimumDividerPosition(int position); + + /** + * Gets the minimum divider position. + * + * @since 2.0 + * + * @return The minimum divider position of the control. + * @see SetMinimumDividerPosition() + * @see SetMaximumDividerPosition(), GetMaximumDividerPosition() + */ + int GetMinimumDividerPosition(void) const; + + /** + * Maximizes the specified pane. + * + * @since 2.0 + * + * @return An error code + * @param[in] paneOrder The order of pane. + * @see IsPaneMaximized() + */ + result MaximizePane(SplitPanelPaneOrder paneOrder); + + /** + * Checks whether the specified pane is maximized. + * + * @since 2.0 + * @return @c true if the pane is maximized, @n + * else @c false + */ + bool IsPaneMaximized(SplitPanelPaneOrder paneOrder) const; + + /** + * Restores the previous pane size if the specified pane is maximized. + * + * @since 2.0 + * + * @return An error code + * @see MaximizePane() + */ + result RestorePane(void); + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + SplitPanel(const SplitPanel& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + SplitPanel& operator =(const SplitPanel& rhs); + + friend class _SplitPanelImpl; + +}; // SplitPanel + +}}} //Tizen::Ui::Controls + +#endif // _FUI_CTRL_SPLIT_PANEL_H_ diff --git a/inc/FUiCtrlSplitPanelTypes.h b/inc/FUiCtrlSplitPanelTypes.h new file mode 100644 index 0000000..94a5498 --- /dev/null +++ b/inc/FUiCtrlSplitPanelTypes.h @@ -0,0 +1,73 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlSplitPanelTypes.h + * @brief This is the header file for the %SplitPanel enumerations. + * + * This header file contains the declarations of the %SplitPanel enumerations. + * + */ +#ifndef _FUI_CTRL_SPLIT_PANEL_TYPES_H_ +#define _FUI_CTRL_SPLIT_PANEL_TYPES_H_ + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @enum SplitPanelDividerStyle + * + * Defines the divider style of the %SplitPanel control. + * + * @since 2.0 + */ +enum SplitPanelDividerStyle +{ + SPLIT_PANEL_DIVIDER_STYLE_FIXED, /**< The fixed divider style */ + SPLIT_PANEL_DIVIDER_STYLE_MOVABLE /**< The movable divider style */ +}; + +/** + * @enum SplitPanelDividerDirection + * + * Defines the divider direction of the %SplitPanel control. + * + * @since 2.0 + */ +enum SplitPanelDividerDirection +{ + SPLIT_PANEL_DIVIDER_DIRECTION_VERTICAL, /**< Set to vertical divider */ + SPLIT_PANEL_DIVIDER_DIRECTION_HORIZONTAL /**< Set to horizontal divider */ +}; + +/** + * @enum SplitPanelPaneOrder + * + * Defines the pane order of the %SplitPanel control. + * + * @since 2.0 + */ +enum SplitPanelPaneOrder +{ + SPLIT_PANEL_PANE_ORDER_FIRST, + SPLIT_PANEL_PANE_ORDER_SECOND +}; + +}}} // Tizen::Ui::Controls + +#endif //_FUI_CTRL_SPLIT_PANEL_TYPES_H_ + diff --git a/inc/FUiCtrlTab.h b/inc/FUiCtrlTab.h new file mode 100644 index 0000000..8b1b508 --- /dev/null +++ b/inc/FUiCtrlTab.h @@ -0,0 +1,729 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlTab.h + * @brief This is the header file for the %Tab class. + * + * This header file contains the declarations of the %Tab class and its helper classes. + */ + +#ifndef _FUI_CTRL_TAB_H_ +#define _FUI_CTRL_TAB_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Ui +{ +class IActionEventListener; +}} + +namespace Tizen { namespace Ui { namespace Controls +{ +class _PublicActionEvent; + + +/** + * @if OSPDEPREC + * @class Tab + * @brief [Deprecated] This class is an implementation of a %Tab control. + * + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @remarks Note that tabs are part of a Form control, not a Frame control. This means that each tab item cannot be a form. You can associate a Panel + * control or a ScrollPanel control to each tab item. + * + * The %Tab class is an implementation of a %Tab control. + * %Tab control displays the user selection in the form of a horizontal list. Each + * item of %Tab control consists of its text string and optional bitmap image. + * Items can be added to an itemlist of the tab model with AddItem(). Items can + * be inserted into an itemlist by InsertItemAt(), updated into an itemlist by SetItemAt(), + * removed from an itemlist by RemoveItemAt(), etc. It is possible to customize the + * background image of the tab shelf, and the image of the currently selected tab item. + * A badge icon can also be used to give more information for each tab item. + * + * Example: + * + * @image html ui_controls_tab.png + * + * + * This is the simple UI application that uses a %Tab control. + * + * + * @code +//Sample code for TabSample.h + +#include + +class TabSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IActionEventListener +{ +public: + TabSample(void) + : __pTab(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + + // IActionEventListener + virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId); + +private: + Tizen::Ui::Controls::Tab* __pTab; +}; + * @endcode + * + * @code +// Sample code for TabSample.cpp +#include "TabSample.h" + +using namespace Tizen::Ui::Controls; + +bool +TabSample::Initialize() +{ + Construct(FORM_STYLE_NORMAL|FORM_STYLE_TEXT_TAB); + return true; +} + +result +TabSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Gets an instance of Tab + __pTab = GetTab(); + + // Adds items to the tab + __pTab->AddItem(L"First", 0); + __pTab->AddItem(L"Second", 1); + __pTab->AddActionEventListener(*this); + + return r; +} + +// IActionEventListener implementation +void +TabSample::OnActionPerformed(const Control& source, int actionId) +{ + switch (actionId) + { + case 0: + { + // .... + } + break; + case 1: + { + // .... + } + break; + default: + break; + } +} + * @endcode + * @endif + */ +class _OSP_EXPORT_ Tab + : public Tizen::Ui::Control +{ +public: + /** + * @if OSPDEPREC + * Adds a listener instance. + * The added listener can listen to events on the context of the given event dispatcher when they are fired. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @endif + */ + void AddActionEventListener(Tizen::Ui::IActionEventListener& listener); + + /** + * @if OSPDEPREC + * Removes a listener instance. + * The removed listener cannot listen to events when they are fired. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @endif + */ + void RemoveActionEventListener(Tizen::Ui::IActionEventListener& listener); + +public: + /** + * @if OSPDEPREC + * Adds an item consisting of the specified text string. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @return An error code + * @param[in] text The text string of the item + * @param[in] actionId The action ID for this item + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c actionId is out of range. + * @exception E_SYSTEM A system error has occurred, or @n + * the total number of items has exceed the %Tab control's maximum item count. + * @remarks The @c actionId range is @c 0-999. @n + * The maximum number of items for %Tab with text style is @c 9. @n + * The maximum number of items for icon style %Tab is @c 8. + * @remarks This method can only be used when the %Form control has the FORM_STYLE_TEXT_TAB style. + * @endif + */ + result AddItem(const Tizen::Base::String& text, int actionId); + + /** + * @if OSPDEPREC + * Adds an item consisting of the title icon and the specified text string. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @return An error code + * @param[in] titleIcon The bitmap for the title icon + * @param[in] text The text string of the item + * @param[in] actionId The specified @c actionId for this item + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c actionId is out of range. + * @exception E_SYSTEM A system error has occurred, or @n + * the total number of items has exceed the %Tab control's maximum item count. + * @remarks The @c actionId range is @c 0-999. @n + * The maximum number of items for %Tab with text style is @c 9. @n + * The maximum number of items for icon style %Tab is @c 8. @n + * This method can only be used when the %Form control has the FORM_STYLE_TEXT_TAB style. + * @remarks If the size of bitmap is greater than the default size , the bitmap is scaled down. + * @endif + */ + result AddItem(const Tizen::Graphics::Bitmap& titleIcon, const Tizen::Base::String& text, int actionId); + + /** + * @if OSPDEPREC + * Adds the item that consists of the specified icon. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @return An error code + * @param[in] icon The bitmap for the icon + * @param[in] actionId The specified @c actionId for this item + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c actionId is out of range. + * @exception E_SYSTEM A system error has occurred, or @n + * the total number of items has exceed the %Tab control's maximum item count. + * @remarks The @c actionId range is @c 0-999. @n + * The maximum number of items for %Tab with text style is @c 9. @n + * The maximum number of items for icon style %Tab is @c 8. @n + * This method can only be used when the Form control has the FORM_STYLE_ICON_TAB style. @n + * If the size of the bitmap is greater than the default size, the bitmap is scaled down. + * @endif + */ + result AddItem(const Tizen::Graphics::Bitmap& icon, int actionId); + + /** + * @if OSPDEPREC + * Inserts the item that consists of only a text string at the specified index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the item + * @param[in] text The text string of the item + * @param[in] actionId The specified @c actionId for this item + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c actionId is out of range. + * @exception E_SYSTEM A system error has occurred, or @n + * the total number of items has exceed the %Tab control's maximum item count. + * @remarks The @c actionId range is @c 0-999. @n + * The maximum number of items for %Tab with text style is @c 9. @n + * The maximum number of items for icon style %Tab is @c 8. + * @remarks This method can only be used when the Form control has the FORM_STYLE_TEXT_TAB style. + * @endif + */ + result InsertItemAt(int index, const Tizen::Base::String& text, int actionId); + + /** + * @if OSPDEPREC + * Inserts the item that consists of the title icon and specified text string at the specified index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the item + * @param[in] titleIcon The bitmap for the title icon + * @param[in] text The text string of the item + * @param[in] actionId The specified @c actionId for this item + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c actionId is out of range. + * @exception E_SYSTEM A system error has occurred, or @n + * the total number of items has exceed the %Tab control's maximum item count. + * @remarks The @c actionId range is @c 0-999. + * @remarks The maximum number of items for %Tab with text style is @c 9. @n + * The maximum number of items for icon style %Tab is @c 8. @n + * This method can only be used when the %Form control has the FORM_STYLE_TEXT_TAB style. @n + * If the size of bitmap is greater than the default size, the bitmap is scaled down. + * @endif + */ + result InsertItemAt(int index, const Tizen::Graphics::Bitmap& titleIcon, const Tizen::Base::String& text, int actionId); + + /** + * @if OSPDEPREC + * Inserts the item which consists of the title icon and specified text string at the specified index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the item + * @param[in] icon The Bitmap for the Icon + * @param[in] actionId The specified @c actionId for this item + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c actionId is out of range. + * @exception E_SYSTEM A system error has occurred, or @n + * the total number of items has exceed the %Tab control's maximum item count. + * @remarks The @c actionId range is @c 0-999. + * @remarks The maximum number of items for %Tab with text style is @c 9. @n + * The maximum number of items for icon style %Tab is @c 8. @n + * This method can only be used when the Form control has the FORM_STYLE_ICON_TAB style. @n + * If the size of bitmap is greater than the default size, the bitmap is scaled down. + * @endif + */ + result InsertItemAt(int index, const Tizen::Graphics::Bitmap& icon, int actionId); + + /** + * @if OSPDEPREC + * Sets the item that consists of only a text string at the specified index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the item + * @param[in] text The text string of the item + * @param[in] actionId The specified @c actionId for this item + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c actionId is out of range. + * @exception E_SYSTEM A system error has occurred. + * @remarks The @c actionId range is @c 0-999. @n + * This method can only be used when the Form control has the FORM_STYLE_TEXT_TAB style. + * @endif + */ + result SetItemAt(int index, const Tizen::Base::String& text, int actionId); + + /** + * @if OSPDEPREC + * Sets the item that consists of the title icon and the specified text string at the given index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the item + * @param[in] titleIcon The bitmap for the title icon + * @param[in] text The text string of the item + * @param[in] actionId The action ID for the item + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c actionId is out of range. + * @exception E_SYSTEM A system error has occurred. + * @remarks The @c actionId range is @c 0-999. @n + * This method can only be used when the Form control has the FORM_STYLE_TEXT_TAB style. @n + * If the size of bitmap is greater than the default size, the bitmap is scaled down. + * @endif + */ + result SetItemAt(int index, const Tizen::Graphics::Bitmap& titleIcon, const Tizen::Base::String& text, int actionId); + + /** + * @if OSPDEPREC + * Sets the item that consists of only a title icon at the specified index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the item + * @param[in] icon The bitmap for the icon + * @param[in] actionId The action ID for the item + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c actionId is out of range. + * @exception E_SYSTEM A system error has occurred. + * @remarks The @c actionId range is @c 0-999. @n + * This method can only be used when the Form control has the FORM_STYLE_ICON_TAB style. @n + * If the size of bitmap is greater than the default size, the bitmap is scaled down. + * @endif + */ + result SetItemAt(int index, const Tizen::Graphics::Bitmap& icon, int actionId); + + /** + * @if OSPDEPREC + * Removes item at the given index from the tab. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result RemoveItemAt(int index); + + /** + * @if OSPDEPREC + * Removes all the items from the tab. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result RemoveAllItems(void); + + /** + * @if OSPDEPREC + * Sets the badge icon of the specified item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @return An error code + * @param[in] actionId The specified @c actionId for this item + * @param[in] pBadgeIcon The bitmap for the icon + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c actionId is out of range. + * @exception E_SYSTEM A system error has occurred. + * @remarks The @c actionId range is @c 0-999. @n + * If the size of bitmap is greater than the default size, the bitmap is scaled down. + * @endif + */ + result SetBadgeIcon(int actionId, const Tizen::Graphics::Bitmap* pBadgeIcon); + + /** + * @if OSPDEPREC + * Gets the number of items in the specified tab. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @return The number of items in the tab + * @endif + */ + int GetItemCount(void) const; + + /** + * @if OSPDEPREC + * Gets the index of the item at the specified action ID. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @return The index of the item, @n + * else @c -1 if an error occurs + * @param[in] actionId The action ID of the item + * @remarks The @c actionId range is @c 0-999. + * @endif + */ + int GetItemIndexFromActionId(int actionId) const; + + /** + * @if OSPDEPREC + * Gets the action ID of the item at the specified index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @return The action ID of the item, @n + * else @c -1 if @c index is less than @c 0 or greater than the item count of tab + * @param[in] index The index of the item + * @endif + */ + int GetItemActionIdAt(int index) const; + + /** + * @if OSPDEPREC + * Sets the selected item for the specified index. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @param[in] index The index of the item + * @endif + */ + void SetSelectedItem(int index); + + /** + * @if OSPDEPREC + * Gets the index of the selected item from the tab. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @return The index of the item, @n + * else @c -1 if an error occurs + * @endif + */ + int GetSelectedItemIndex(void) const; + + /** + * @if OSPDEPREC + * Sets the edit-enabled mode. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @param[in] enable Set to @c true to enable edit mode, @n + * else @c false + * @endif + */ + void SetEditModeEnabled(bool enable); + + /** + * @if OSPDEPREC + * Checks whether the edit mode is set. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @return @c true if the edit mode is set, @n + * else @c false + * @endif + */ + bool IsEditModeEnabled(void) const; + + /** + * @if OSPDEPREC + * Sets the background bitmap of the tab. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @return An error code + * @param[in] bitmap The background bitmap + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The background bitmap is invalid. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap); + + /** + * @if OSPDEPREC + * Sets the background bitmap of the focused item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @return An error code + * @param[in] bitmap The background bitmap of the focused item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The background bitmap is invalid. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result SetFocusedItemBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap); + + /** + * @if OSPDEPREC + * Sets the text color of the tab. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @param[in] textColor The color to be set + * @endif + */ + void SetTextColor(const Tizen::Graphics::Color& textColor); + + /** + * @if OSPDEPREC + * Gets the text color of the tab. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @return The text color + * @endif + */ + Tizen::Graphics::Color GetTextColor(void) const; + + /** + * @if OSPDEPREC + * Sets the text color for the selected item of the tab. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @param[in] textColor The color to be set + * @endif + */ + void SetSelectedTextColor(const Tizen::Graphics::Color& textColor); + + /** + * @if OSPDEPREC + * Gets the text color for the selected item of the tab. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @return The text color + * @endif + */ + Tizen::Graphics::Color GetSelectedTextColor(void) const; + + /** + * @if OSPDEPREC + * Gets the color of the text when the %Tab item is highlighted. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @return The highlighted text color + * @remarks When a user navigates the user interface using the directional keys, the focused UI control is highlighted. + * @endif + */ + Tizen::Graphics::Color GetHighlightedTextColor(void) const; + + /** + * @if OSPDEPREC + * Sets the color of the text when the tab item is highlighted. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @param[in] color The color to be set + * @remarks When a user navigates the user interface using the directional keys, the focused UI control is highlighted. + * @endif + */ + void SetHighlightedTextColor(const Tizen::Graphics::Color& color); + + /** + * @if OSPDEPREC + * Sets the background bitmap of the highlighted tab item. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because the use of the %Tab control is no longer recommended. + * @since 2.0 + * + * @return An error code + * @param[in] bitmap The background bitmap of the focused item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The background bitmap is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks The background bitmap must use the 9-patched bitmap. + * @remarks When a user navigates the user interface using the directional keys, the focused UI control is highlighted. + * @endif + */ + result SetHighlightedItemBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap); + + + //void SetStyle(int style); + +private: + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + // @since 2.0 + // + Tab(void); + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + // @since 2.0 + // + virtual ~Tab(void); + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // Initializes this instance of %Tab with the specified parameter. + // + // @since 2.0 + // @return An error code + // @param[in] tabHandle The handle of the tab + // @exception E_SUCCESS The method is successful. + // @exception E_SYSTEM A system error has occurred. + // + result Construct(void); + + // + // Stores __BitmapItem. + // + Tizen::Base::Collection::ArrayList __items; + +private: + friend class _TabImpl; + +}; + +}}} //Tizen::Ui::Controls + +#endif // _FUI_CTRL_TAB_H_ diff --git a/inc/FUiCtrlTabBar.h b/inc/FUiCtrlTabBar.h new file mode 100644 index 0000000..05e59c8 --- /dev/null +++ b/inc/FUiCtrlTabBar.h @@ -0,0 +1,487 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlTabBar.h + * @brief This is the header file for the %TabBar class. + * + * This header file contains the declarations of the %TabBar class. + */ +#ifndef _FUI_CTRL_TAB_BAR_H_ +#define _FUI_CTRL_TAB_BAR_H_ + +#include + +namespace Tizen { namespace Ui +{ +class IActionEventListener; +}} // Tizen::Ui +namespace Tizen { namespace Ui { namespace Controls +{ +class TabBarItem; +}}} // Tizen::Ui::Controls + +namespace Tizen { namespace Ui { namespace Controls +{ +/** + * @enum TabBarItemStatus + * + * Defines the possible states of TabBarItem. + * + * @since 2.0 + */ +enum TabBarItemStatus +{ + TAB_BAR_ITEM_STATUS_NORMAL, /**< The normal state */ + TAB_BAR_ITEM_STATUS_SELECTED /**< The selected state */ +}; + + +/** + * @class TabBar + * @brief This class is an implementation of %TabBar. + * + * @since 2.0 + * + * The %TabBar class displays a list of possible options for the user selection in a horizontal list. + * + * For more information on the class features, see TabBar. + * + * The following example demonstrates how to use the %TabBar class. + * + * @code +// Sample code for TabBarSample.h +#include + +class TabBarSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IActionEventListener +{ +public: + TabBarSample(void) + : __pTabBar(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + + // IActionEventListener + virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId); + +private: + static const int ID_TABBAR_ITEM1 = 100; + static const int ID_TABBAR_ITEM2 = 101; + static const int ID_TABBAR_ITEM3 = 102; + + Tizen::Ui::Controls::TabBar *__pTabBar; +}; + * @endcode + * + * @code +// Sample code for TabBarSample.cpp +#include "TabBarSample.h" + +using namespace Tizen::Ui::Controls; + +bool +TabBarSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +TabBarSample::OnInitializing() +{ + result r = E_SUCCESS; + + // Creates an instance of TabBar + __pTabBar = new TabBar(); + __pTabBar->Construct(0, 0, GetClientAreaBounds().width); + + // Creates instances of TabBarItem + TabBarItem tabBarItem1; + TabBarItem tabBarItem2; + TabBarItem tabBarItem3; + + tabBarItem1.Construct(L"1", ID_TABBAR_ITEM1); + tabBarItem2.Construct(L"2", ID_TABBAR_ITEM2); + tabBarItem3.Construct(L"3", ID_TABBAR_ITEM3); + + // Adds items to the tab bar + __pTabBar->AddItem(tabBarItem1); + __pTabBar->AddItem(tabBarItem2); + __pTabBar->AddItem(tabBarItem3); + __pTabBar->AddActionEventListener(*this); + + // Adds the tab bar to the form + AddControl(*__pTabBar); + + return r; +} + +// IActionEventListener implementation +void +TabBarSample::OnActionPerformed(const Control& source, int actionId) +{ + switch (actionId) + { + case ID_TABBAR_ITEM1: + { + // .... + } + break; + case ID_TABBAR_ITEM2: + { + // .... + } + break; + default: + break; + } +} + * @endcode + * + */ +class _OSP_EXPORT_ TabBar + : public Tizen::Ui::Control +{ +// Lifecycle +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + * + */ + TabBar(void); + + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + * + */ + virtual ~TabBar(void); + + /** + * Initializes this instance of %TabBar with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] x The X position of the top left corner + * @param[in] y The Y position of the top left corner + * @param[in] width The width + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(int x, int y, int width); + + +// Operation +public: + /** + * Adds the specified item. + * + * @since 2.0 + * + * @return An error code + * @param[in] item The item to be added + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The specified @c item is not constructed. + * @exception E_MAX_EXCEEDED The number of items has exceeded the maximum limit. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @exception E_SYSTEM A system error has occurred. + * @remarks The maximum number of items for a %TabBar control is @c 100. @n + * However, the content of the specified item is copied to the %TabBar control. @n + * The item can be deallocated explicitly after this method call if it is created dynamically. @n + * The %TabBar control does not throw any exception even though the same action ID is assigned to multiple items. + */ + result AddItem(const TabBarItem& item); + + + /** + * Inserts the %TabBar item at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the item to be inserted + * @param[in] item The item to be inserted + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The specified @c item is not constructed. + * @exception E_MAX_EXCEEDED The number of items has exceeded the maximum limit. + * @exception E_OUT_OF_RANGE The specified @c index is out of the range of the data structure. @n + * The specified @c index is either greater than or equal to the number of items or is less than @c 0. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @exception E_SYSTEM A system error has occurred. + * @remarks The maximum number of items for a %TabBar control is @c 100. @n + * However, the content of the specified item is copied to the @c %TabBar control. @n + * The item can be deallocated explicitly after this method call if it is created dynamically. @n + * The %TabBar control does not throw any exception even though the same action ID is assigned to multiple items. + */ + result InsertItemAt(int index, const TabBarItem& item); + + + /** + * Gets the color of the %TabBar control. + * + * @since 2.0 + * + * @return The color, @n + * else RGBA(0,0,0,0) if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetColor(void) const; + + + /** + * Gets the item count. + * + * @since 2.0 + * + * @return The item count, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + int GetItemCount(void) const; + + + /** + * Gets the item color that is displayed when an item is selected. + * + * @since 2.0 + * + * @return The selected item color, @n + * else RGBA(0,0,0,0) if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetSelectedItemColor(void) const; + + + /** + * Gets the item text color for the specified state. + * + * @since 2.0 + * + * @return The item text color, @n + * else RGBA (0,0,0,0) if an error occurs + * @param[in] status The item state + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Color GetItemTextColor(TabBarItemStatus status) const; + + + /** + * Gets the index of the selected item. + * + * @since 2.0 + * + * @return The selected item index, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + int GetSelectedItemIndex(void) const; + + + /** + * Removes the %TabBar item at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the item + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is out of the range of the data structure. @n + * The specified @c index is either greater than or equal to the number of items or is less than @c 0. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @exception E_SYSTEM A system error has occurred. + * @remarks If the currently selected item is removed, the next item is selected automatically. + */ + result RemoveItemAt(int index); + + + /** + * Removes all the items from the %TabBar control. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @exception E_SYSTEM A system error has occurred. + */ + result RemoveAllItems(void); + + + /** + * Sets the color of the %TabBar control. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The color + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This instance is in an invalid state. + */ + result SetColor(const Tizen::Graphics::Color& color); + + + /** + * Sets the content of the %TabBar item at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index at which to set the specified item + * @param[in] item The item to be set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The specified @c item is not constructed. + * @exception E_OUT_OF_RANGE The specified @c index is out of the range of the data structure. @n + * The specified @c index is either greater than or equal to the number of items or is less than @c 0. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @exception E_SYSTEM A system error has occurred. + * @remarks The contents of the specified item are copied. @n + * The item can be deallocated explicitly after this method call if it is created dynamically. + */ + result SetItemAt(int index, const TabBarItem& item); + + + /** + * Selects the item at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The index of the item to be selected + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is not within the range of the data structure. @n + * The specified @c index is either greater than or equal to the number of items or is less than @c 0. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @exception E_SYSTEM A system error has occurred. + */ + result SetItemSelected(int index); + + + /** + * Sets the item text color for the specified state. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The item state + * @param[in] color The item text color + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @exception E_SYSTEM A system error has occurred. + */ + result SetItemTextColor(TabBarItemStatus status, const Tizen::Graphics::Color& color); + + + /** + * Sets the selected item color. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The item color + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @exception E_SYSTEM A system error has occurred. + */ + result SetSelectedItemColor(const Tizen::Graphics::Color& color); + + + /** + * Sets the width of the tab bar. + * + * @since 2.0 + * + * @return An error code + * @param[in] width The width + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @exception E_SYSTEM A system error has occurred. + */ + result SetWidth(int width); + + +//Listeners +public: + /** + * Adds an action event listener instance. @n + * The added listener can listen to events on the specified event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + void AddActionEventListener(Tizen::Ui::IActionEventListener& listener); + + + /** + * Removes an action event listener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + void RemoveActionEventListener(Tizen::Ui::IActionEventListener& listener); + +protected: + friend class _TabBarImpl; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + // @since 2.0 + // + // + TabBar(const TabBar& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + // @since 2.0 + // + // + TabBar& operator =(const TabBar& rhs); + +}; // TabBar + +}}} // Tizen::Ui: Control +#endif //_FUI_CTRL_TAB_BAR_H_ diff --git a/inc/FUiCtrlTabBarItem.h b/inc/FUiCtrlTabBarItem.h new file mode 100644 index 0000000..0ef9813 --- /dev/null +++ b/inc/FUiCtrlTabBarItem.h @@ -0,0 +1,167 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlTabBarItem.h + * @brief This is the header file for the %TabBarItem class. + * + * This header file contains the declarations of the %TabBarItem class. + */ +#ifndef _FUI_CTRL_TAB_BAR_ITEM_H_ +#define _FUI_CTRL_TAB_BAR_ITEM_H_ + +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +class _TabBarItemImpl; +}; +}; +}; + + +namespace Tizen { namespace Ui { namespace Controls +{ +/** + * @class TabBarItem + * @brief This class is an implementation of %TabBarItem. + * + * @since 2.0 + * + * The %TabBarItem class is a helper class that specifies the contents of a tab bar item. + * + * For more information on the class features, see TabBar. + */ +class _OSP_EXPORT_ TabBarItem + : public Tizen::Base::Object +{ +// Lifecycle +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + TabBarItem(void); + + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~TabBarItem(void); + + + /** + * Initializes this instance of %TabBarItem with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The item text + * @param[in] actionId The action ID of this item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The @c actionId of the specified item must be greater than or equal to @c 0. + * @exception E_INVALID_STATE This instance is in an invalid state. + */ + result Construct(const Tizen::Base::String& text, int actionId); + + +// Operation +public: + /** + * Sets the action ID of the item. + * + * @since 2.0 + * + * @return An error code + * @param[in] actionId The action ID for this item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The @c actionId of the specified item must be a positive integer. + * @exception E_INVALID_STATE This instance is in an invalid state. + */ + result SetActionId(int actionId); + + + /** + * Gets the action ID of the item. + * + * @since 2.0 + * + * @return The action ID, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + int GetActionId(void) const; + + + /** + * Gets the text of the item. + * + * @since 2.0 + * + * @return The item text, @n + * else an empty string if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Base::String GetText(void) const; + + + /** + * Sets the text of the item. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text to be set + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This instance is in an invalid state. + * @remarks If the size of the text exceeds the displayable area, the font size of the text is decreased automatically. + */ + result SetText(const Tizen::Base::String& text); + + +private: + friend class TabBar; + + // + //This method is for internal use only. Using this method can cause behavioral, security-related, + //and consistency-related issues in the application. + // + _TabBarItemImpl* __pTabBarItemImpl; + + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + TabBarItem(const TabBarItem& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + TabBarItem& operator =(const TabBarItem& rhs); + +}; // TabBarItem + +}}} // Tizen::Ui: Control + +#endif //_FUI_CTRL_TAB_BAR_ITEM_H_ diff --git a/inc/FUiCtrlTableView.h b/inc/FUiCtrlTableView.h new file mode 100644 index 0000000..ad142df --- /dev/null +++ b/inc/FUiCtrlTableView.h @@ -0,0 +1,660 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlTableView.h + * @brief This is the header file for the %TableView class. + * + * This header file contains the declarations of the %TableView class and its helper classes. + */ + +#ifndef _FUI_CTRL_TABLE_VIEW_H_ +#define _FUI_CTRL_TABLE_VIEW_H_ + +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +class ITableViewItemProvider; +class ITableViewItemEventListener; +class IFastScrollListener; +class IScrollEventListener; + +/** + * @class TableView + * @brief This class defines common behavior for a %TableView control. + * + * @since 2.0 + * + * The %TableView class defines common behavior for a %TableView control. + * @code +//Sample code for TableViewSample.h +#include + +class TableViewSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::Controls::ITableViewItemProvider + , public Tizen::Ui::Controls::ITableViewItemEventListener +{ +public: + TableViewSample(void) + : __pTableView(null) + , __pContextItem(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + virtual result OnTerminating(void); + + // ITableViewItemEventListener + virtual void OnTableViewItemStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status); + virtual void OnTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated); + virtual void OnTableViewItemReordered(Tizen::Ui::Controls::TableView& tableView, int itemIndexFrom, int itemIndexTo); + + // ITableViewItemProvider + virtual int GetItemCount(void); + virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int itemIndex, int itemWidth); + virtual bool DeleteItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem); + virtual void UpdateItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem); + virtual int GetDefaultItemHeight(void); + +private: + Tizen::Ui::Controls::TableView* __pTableView; + Tizen::Ui::Controls::TableViewContextItem* __pContextItem; +}; + * @endcode + * + * @code +//Sample code for TableViewSample.cpp +#include +#include + +#include "TableViewSample.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::Graphics; +using namespace Tizen::Media; +using namespace Tizen::Ui::Controls; + +bool +TableViewSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +TableViewSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of TableView + __pTableView = new TableView(); + __pTableView->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height), true, TABLE_VIEW_SCROLL_BAR_STYLE_FADE_OUT); + __pTableView->SetItemProvider(*this); + __pTableView->AddTableViewItemEventListener(*this); + + // Adds the TableView to the form + AddControl(*__pTableView); + + // Creates an instance of TableViewContextItem + __pContextItem = new TableViewContextItem(); + __pContextItem->Construct(Dimension(720, 100)); + + Button* pButton = new Button(); + pButton->Construct(Rectangle(10, 10, 200, 80), L"Context1"); + + Button* pButton2 = new Button(); + pButton2->Construct(Rectangle(250, 10, 200, 80), L"Context2"); + + __pContextItem->AddControl(*pButton); + __pContextItem->AddControl(*pButton2); + + return r; +} + +result +TableViewSample::OnTerminating(void) +{ + result r = E_SUCCESS; + + // Deallocates the item context + delete __pItemContext; + __pItemContext = null; + + return r; +} + +// ITableViewItemEventListener implementation +void +TableViewSample::OnTableViewItemStateChanged(TableView& tableView, int itemIndex, TableViewItem* pItem, TableViewItemStatus status) +{ + // .... +} + +void +TableViewSample::OnTableViewContextItemActivationStateChanged(TableView& tableView, int itemIndex, TableViewContextItem* pContextItem, bool activated) +{ + // .... +} + +void +TableViewSample::OnTableViewItemReordered(Tizen::Ui::Controls::TableView& tableView, int itemIndexFrom, int itemIndexTo) +{ + // .... +} + +// ITableViewItemProvider implementation +int +TableViewSample::GetItemCount(void) +{ + return 50; +} + +int +TableViewSample::GetDefaultItemHeight(void) +{ + return 100; +} + +TableViewItem* +TableViewSample::CreateItem(int itemIndex, int itemWidth) +{ + TableViewAnnexStyle style = TABLE_VIEW_ANNEX_STYLE_NORMAL; + TableViewItem* pItem = new TableViewItem(); + + switch (itemIndex % 5) + { + case 0: + style = TABLE_VIEW_ANNEX_STYLE_NORMAL; + break; + case 1: + style = TABLE_VIEW_ANNEX_STYLE_MARK; + break; + case 2: + style = TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING; + break; + case 3: + style = TABLE_VIEW_ANNEX_STYLE_DETAILED; + break; + case 4: + style = TABLE_VIEW_ANNEX_STYLE_RADIO; + break; + default: + break; + } + + pItem->Construct(Dimension(itemWidth, GetDefaultItemHeight()), style); + + String text; + text.Format(30, L"TableViewItem %d", itemIndex); + + Label* pLabel = new Label(); + pLabel->Construct(Rectangle(0, 0, itemWidth, GetDefaultItemHeight(), text); + + pItem->AddControl(*pLabel); + pItem->SetContextItem(__pContextItem); + + return pItem; +} + +bool +TableViewSample::DeleteItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem) +{ + delete pItem; + + return true; +} + +void +TableViewSample::UpdateItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem) +{ + // .... +} + * @endcode + * + */ + +class _OSP_EXPORT_ TableView + : public Tizen::Ui::Container +{ +public: + /** + * The object is not fully constructed after this constructor is called. Hence, the Construct() method must be called after calling this constructor. + * + * @since 2.0 + */ + TableView(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~TableView(void); + + /** + * Initializes this instance of %TableView with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect An instance of the Graphics::Rectangle class + * This instance represents the x and y coordinates of the left top corner of the created %TableView along with the width and height. + * @param[in] itemDivider Set to @c true to display an item divider, @n + * else @c false + * @param[in] scrollStyle The style of %TableView scroll bar style + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid, or either the rect.width or rect.height parameter has a negative value. + * + */ + result Construct(const Tizen::Graphics::Rectangle& rect, bool itemDivider, TableViewScrollBarStyle scrollStyle); + + /** + * Sets the item provider that creates and deletes items for the simple style table view. + * + * @since 2.0 + * + * @param[in] pProvider The item provider to create and delete items + * @remarks If an item provider is not set for the table view, the table view does not work. The specified provider should be allocated in heap memory. + * To reset the item provider, pass @c null to @c pProvider. + */ + void SetItemProvider(ITableViewItemProvider* pProvider); + + /** + * Begins the reordering mode. + * + * @since 2.0 + * + * @see ITableViewViewItemEventListener::OnTableViewItemReordered() + */ + void BeginReorderingMode(void); + + /** + * Ends the reordering mode. + * + * @since 2.0 + * + * @see ITableViewViewItemEventListener::OnTableViewItemReordered() + */ + void EndReorderingMode(void); + + /** + * Returns whether the %TableView control is in reordering mode or not. + * + * @since 2.0 + * + * @return @c true if the %TableView is in reordering mode, @n + * else @c false + */ + bool IsInReorderingMode(void) const; + + /** + * Adds a listener instance that listens to state changes of table view items. @n + * The added listener can listen to events on the specified event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The event listener to add + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_ALREADY_EXIST The listener is already added. + * @remarks The specified listener should be allocated in heap memory. + */ + result AddTableViewItemEventListener(ITableViewItemEventListener& listener); + + /** + * Removes a listener instance that listens to state changes of table view items. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The event listener to remove + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND The listener is not found. + */ + result RemoveTableViewItemEventListener(ITableViewItemEventListener& listener); + + /** + * Adds a listener instance that listens to state changes of a fast scroll. @n + * The added listener can listen to events on the specified event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The event listener to add + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_OBJ_ALREADY_EXIST The listener is already added. + * @remarks The specified listener should be allocated in heap memory. + */ + result AddFastScrollListener(IFastScrollListener& listener); + + /** + * Removes a listener instance that listens to state changes of a fast scroll. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The event listener to remove + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_OBJ_NOT_FOUND The listener is not found. + */ + result RemoveFastScrollListener(IFastScrollListener& listener); + + /** + * Adds a listener instance that listens to state changes of a scroll event. @n + * The added listener can listen to events on the specified event dispatcher's context when they are fired. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The event listener to add + * @see IScrollEventListener::OnScrollEndReached() + * @see RemoveScrollEventListener() + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_OBJ_ALREADY_EXIST The listener is already added. + * @remarks The specified listener should be allocated in heap memory. + */ + result AddScrollEventListener(IScrollEventListener& listener); + + /** + * Removes a listener instance that listens to state changes of a scroll event. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The event listener to remove + * @see IScrollEventListener::OnScrollEndReached() + * @see AddScrollEventListener() + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @exception E_OBJ_NOT_FOUND The listener is not found. + */ + result RemoveScrollEventListener(IScrollEventListener& listener); + + /** + * Sets the index table view of the scroll by texts. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text of the index + * @param[in] useSearchIcon Set to @c true to show the magnifying icon, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + */ + result SetFastScrollIndex(const Tizen::Base::String& text, bool useSearchIcon); + + /** + * Gets the group and item indexes of the top item. + * + * @since 2.0 + * + * @return The item index + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND Top drawn item is not found. + */ + int GetTopDrawnItemIndex(void) const; + + /** + * Gets the group and item indexes of the bottom item. + * + * @since 2.0 + * + * @return The item index + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND Bottom drawn item is not found. + */ + int GetBottomDrawnItemIndex(void) const; + + /** + * Scrolls to the item at the specified index. + * The specified item is drawn at the position specified by the item alignment. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemIndex The targeted item index + * @param[in] itemAlignment The item alignment + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + */ + result ScrollToItem(int itemIndex, TableViewScrollItemAlignment itemAlignment = TABLE_VIEW_SCROLL_ITEM_ALIGNMENT_TOP); + + /** + * Checks or unchecks the item at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemIndex The item index to be checked + * @param[in] check Set to @c true to select the item, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @exception E_INVALID_OPERATION The item is disabled. + * @remarks This method works only when the annex style of the item allows selection. + */ + result SetItemChecked(int itemIndex, bool check); + + /** + * Returns whether the item at the specified index is selected or not. + * + * @since 2.0 + * + * @return @c true if the item is selected, @n + * else @c false + * @param[in] itemIndex The item itemIndex + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @remarks This method returns @c false, if the annex style of the item does not allow selection. + */ + bool IsItemChecked(int itemIndex) const; + + /** + * Enables or disables the item at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemIndex The item index + * @param[in] enable Set to @c true to enable the specified item, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + */ + result SetItemEnabled(int itemIndex, bool enable); + + /** + * Returns whether the item at the specified index is enabled or disabled. + * + * @since 2.0 + * + * @return @c true if the item is enabled, @n + * else @c false + * @param[in] itemIndex The item index + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + */ + bool IsItemEnabled(int itemIndex) const; + + /** + * Counts all the items of the specified group. + * + * @since 2.0 + * + * @return The total number of items + */ + int GetItemCount(void) const; + + /** + * Updates the specified item. @n + * For instance, TABLE_VIEW_REFRESH_TYPE_ITEM_ADD is used when a new item needs to be added and TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE is used when an item is deleted from the + * table view. Moreover, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY is used when the content of an existing item has changed and it needs to be updated. + * Note that calling this method with TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY invokes item provider's UpdateItem() for the given index in sequence. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemIndex The item index + * @param[in] type The item to be added, removed, or modified + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE A specified input parameter is invalid. + * @remarks If the specified itemIndex. + */ + result RefreshItem(int itemIndex, TableViewRefreshType type); + + /** + * Updates all the items of a table view. + * + * @since 2.0 + * + * @return An error code + * @remarks This method clears all the items in the table view and invokes the methods of the item provider again to update the table view. + */ + void UpdateTableView(void); + + /** + * Gets the index of the item at the specified position. + * + * @since 2.0 + * + * @return The item index of the item on specified position + * @param[in] position The position of the item + * @remarks This method returns -1 if no item is found at the given position. + */ + int GetItemIndexFromPosition(const Tizen::Graphics::Point& position) const; + + /** + * Sets the color of a division line between items. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The division line color + */ + void SetItemDividerColor(const Tizen::Graphics::Color& color); + + /** + * Gets the color of a division line between items. + * + * @since 2.0 + * + * @return The color of a division line + */ + Tizen::Graphics::Color GetItemDividerColor(void) const; + + /** + * Sets the background color of this control. + * + * @since 2.0 + * + * @param[in] color The background color + * @remarks The background bitmap has priority over the background color. When both the background bitmap and the background color are specified, + * only the bitmap image is displayed. + */ + void SetBackgroundColor(const Tizen::Graphics::Color& color); + + /** + * Gets the background color of this control. + * + * @since 2.0 + * + * @return The background color + */ + Tizen::Graphics::Color GetBackgroundColor(void) const; + + /** + * Sets the scroll input handling mode. + * + * @since 2.0 + * + * @param[in] mode The scroll input handling mode + * @see GetScrollInputMode() + */ + void SetScrollInputMode(ScrollInputMode mode); + + + /** + * Gets the scroll input handling mode. + * + * @since 2.0 + * + * @return The scroll input handling mode + * @see SetScrollInputMode() + */ + ScrollInputMode GetScrollInputMode(void) const; + + /* + * Scrolls the list contents with the amount of pixels. + * + * @since 2.0 + * + * @return An error code + * @param[in] pixel The amount of pixels to scroll + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c pixel is out of range. + * @remarks If you call ScrollByPixel() with negative @c pixel when position of scroll is already top of contents then it will return E_OUT_OF_RANGE. + * Likewise, in case of positive @c pixel on the bottom position of scroll it will also return E_OUT_OF_RANGE. + */ + result ScrollByPixel(int pixel); + + /* + * Gets the current scroll position + * + * @since 2.0 + */ + int GetCurrentScrollPosition(void) const; + + /* + * Enables or disables the scroll of TableView items. + * + * @since 2.0 + */ + void SetScrollEnabled(bool enable); + + /* + * Checks whether the scroll is enabled or disabled. + * + * @since 2.0 + */ + bool IsScrollEnabled(void) const; + +private: + friend class _TableViewImpl; + + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + TableView(const TableView& rhs); + + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + TableView& operator =(const TableView& rhs); +}; // TableView + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_TABLE_VIEW_H_ diff --git a/inc/FUiCtrlTableViewContextItem.h b/inc/FUiCtrlTableViewContextItem.h new file mode 100644 index 0000000..a33ad5e --- /dev/null +++ b/inc/FUiCtrlTableViewContextItem.h @@ -0,0 +1,85 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlTableViewContextItem.h + * @brief This is the header file for the %TableViewContextItem class. + * + * This header file contains the declarations of the %TableViewContextItem class and its helper classes. + */ + +#ifndef _FUI_CTRL_TABLE_VIEW_CONTEXT_ITEM_H_ +#define _FUI_CTRL_TABLE_VIEW_CONTEXT_ITEM_H_ + +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +/** + * @class TableViewContextItem + * @brief This class defines common behavior for a %TableViewContextItem. + * + * @since 2.0 + * + * The %TableViewContextItem class is a class which represents a context item for TableView. + * A context item is shown when a table view item is swept, if %TableViewContextItem is set to the table view item. + * + */ + +class _OSP_EXPORT_ TableViewContextItem + : public TableViewItemBase +{ +public: + /** + * The object is not fully constructed after this constructor is called. Hence, the Construct() method must be called after calling this constructor. + * + * @since 2.0 + */ + TableViewContextItem(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~TableViewContextItem(void); + + /** + * Initializes this instance of %TableViewContextItem with the specified parameter. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemSize The size of the item + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + */ + result Construct(const Tizen::Graphics::Dimension& itemSize); + +private: + friend class _TableViewItemImpl; + + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + TableViewContextItem(const TableViewContextItem& rhs); + + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + TableViewContextItem& operator =(const TableViewContextItem& rhs); +}; // TableViewContextItem + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_TABLE_VIEW_CONTEXT_ITEM_H_ diff --git a/inc/FUiCtrlTableViewGroupItem.h b/inc/FUiCtrlTableViewGroupItem.h new file mode 100644 index 0000000..4e8f42e --- /dev/null +++ b/inc/FUiCtrlTableViewGroupItem.h @@ -0,0 +1,110 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlTableViewGroupItem.h + * @brief This is the header file for the %TableViewGroupItem class. + * + * This header file contains the declarations of the %TableViewGroupItem class and its helper classes. + */ + +#ifndef _FUI_CTRL_TABLE_VIEW_GROUP_ITEM_H_ +#define _FUI_CTRL_TABLE_VIEW_GROUP_ITEM_H_ + +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +/** + * @class TableViewGroupItem + * @brief This class defines common behavior of %TableViewGroupItem. + * + * @since 2.0 + * + * The %TableViewGroupItem class displays a table view group item. The %TableViewGroupItem can have any layout of Controls or Containers as children. + */ + +class _OSP_EXPORT_ TableViewGroupItem + : public TableViewItemBase +{ +public: + /** + * The object is not fully constructed after this constructor is called. Hence, the Construct() method must be called after calling this constructor. + * + * @since 2.0 + */ + TableViewGroupItem(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~TableViewGroupItem(void); + + /** + * Initializes this instance of %TableViewGroupItem with the specified parameter. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemSize The size of the item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + */ + result Construct(const Tizen::Graphics::Dimension& itemSize); + + /** + * Initializes this instance of %TableViewGroupItem with the specified parameter. + * + * @since 2.0 + * + * @return An error code + * @param[in] layout The layout for both of the portrait and landscape modes + * @param[in] itemSize The size of the item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + */ + result Construct(const Tizen::Ui::Layout& layout, const Tizen::Graphics::Dimension& itemSize); + + /** + * Initializes this instance of %TableViewGroupItem with the specified parameter. + * + * @since 2.0 + * + * @return An error code + * @param[in] portraitLayout The layout for portrait mode + * @param[in] landscapeLayout The layout for landscape mode + * @param[in] itemSize The size of the item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + */ + result Construct(const Tizen::Ui::Layout& portraitLayout, const Tizen::Ui::Layout& landscapeLayout, const Tizen::Graphics::Dimension& itemSize); + +private: + friend class _TableViewItemImpl; + + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + TableViewGroupItem(const TableViewGroupItem& rhs); + + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + TableViewGroupItem& operator =(const TableViewGroupItem& rhs); +}; // TableViewGroupItem + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_TABLE_VIEW_GROUP_ITEM_H_ diff --git a/inc/FUiCtrlTableViewItem.h b/inc/FUiCtrlTableViewItem.h new file mode 100644 index 0000000..d309246 --- /dev/null +++ b/inc/FUiCtrlTableViewItem.h @@ -0,0 +1,139 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlTableViewItem.h + * @brief This is the header file for the %TableViewItem class. + * + * This header file contains the declarations of the %TableViewItem class and its helper classes. + */ + +#ifndef _FUI_CTRL_TABLE_VIEW_ITEM_H_ +#define _FUI_CTRL_TABLE_VIEW_ITEM_H_ + +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +class TableViewContextItem; + +/** + * @class TableViewItem + * @brief This class defines common behavior for a %TableViewItem. + * + * @since 2.0 + * + * The %TableViewItem class is a base class which represents a table view item which is the unit of handling of TableView. + * + */ + +class _OSP_EXPORT_ TableViewItem + : public TableViewItemBase +{ +public: + /** + * The object is not fully constructed after this constructor is called. Hence, the Construct() method must be called after calling this constructor. + * + * @since 2.0 + */ + TableViewItem(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~TableViewItem(void); + + /** + * Initializes this instance of %TableViewItem with the specified parameter. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemSize The size of the item + * @param[in] style The style of Annex + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + */ + result Construct(const Tizen::Graphics::Dimension& itemSize, TableViewAnnexStyle style = TABLE_VIEW_ANNEX_STYLE_NORMAL); + + /** + * Initializes this instance of %TableViewItem with the specified parameter. + * + * @since 2.0 + * + * @return An error code + * @param[in] layout The layout for both of the portrait and landscape modes + * @param[in] itemSize The size of the item + * @param[in] style The style of Annex + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + */ + result Construct(const Tizen::Ui::Layout& layout, const Tizen::Graphics::Dimension& itemSize, TableViewAnnexStyle style = TABLE_VIEW_ANNEX_STYLE_NORMAL); + + /** + * Initializes this instance of %TableViewItem with the specified parameter. + * + * @since 2.0 + * + * @return An error code + * @param[in] portraitLayout The layout for portrait mode + * @param[in] landscapeLayout The layout for landscape mode + * @param[in] itemSize The size of the item + * @param[in] style The style of Annex + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + */ + result Construct(const Tizen::Ui::Layout& portraitLayout, const Tizen::Ui::Layout& landscapeLayout, const Tizen::Graphics::Dimension& itemSize, TableViewAnnexStyle style = TABLE_VIEW_ANNEX_STYLE_NORMAL); + + /** + * Sets context item that is displayed when an item is swept. + * + * @since 2.0 + * + * @return An error code + * @param[in] pItem The object of TableViewContextItem + * @remarks If context item is not set, TableView() does not display context item and an item sweep event is generated when an item is swept. + * pItem must be deleted by applications when it is no longer used. + */ + void SetContextItem(const TableViewContextItem* pItem); + + /** + * Get the width of the annex area. + * + * @since 2.0 + * + * @return The width of the annex + * @param[in] style The style of the annex + * @remarks The width of the annex area is different among annex styles. + */ + static int GetAnnexWidth(TableViewAnnexStyle style); + +private: + friend class _TableViewItemImpl; + + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + TableViewItem(const TableViewItem& rhs); + + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + TableViewItem& operator =(const TableViewItem& rhs); +}; //TableViewItem + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_TABLE_VIEW_ITEM_H_ diff --git a/inc/FUiCtrlTableViewItemBase.h b/inc/FUiCtrlTableViewItemBase.h new file mode 100644 index 0000000..2729b0a --- /dev/null +++ b/inc/FUiCtrlTableViewItemBase.h @@ -0,0 +1,169 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** +* @file FUiCtrlTableViewItemBase.h +* @brief This is the header file for the %TableViewItemBase class. +* +* This header file contains the declarations of the %TableViewItemBase class and its helper classes. +*/ + +#ifndef _FUI_CTRL_TABLE_VIEW_ITEM_BASE_H_ +#define _FUI_CTRL_TABLE_VIEW_ITEM_BASE_H_ + +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @class TableViewItemBase + * @brief This class defines common behavior for a %TableViewItemBase. + * + * @since 2.0 + * + * The %TableViewItemBase class is a base class which represents a table view item which is the unit of handling of TableView. + * + */ + +class _OSP_EXPORT_ TableViewItemBase + : public Tizen::Ui::Container +{ +public: + /** + * Sets the background image of the item which is displayed when the item is in specified state. + * + * @since 2.0 + * + * @return An error code + * @param[in] pBitmap The background bitmap image + * @param[in] status The item drawing state + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The background bitmap has priority over the background color. When both the background bitmap and the background color are specified, only the bitmap is displayed. + */ + result SetBackgroundBitmap(const Tizen::Graphics::Bitmap* pBitmap, TableViewItemDrawingStatus status = TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL); + + /** + * Sets the background color of the item which is displayed when the item is in specified state. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The background color + * @param[in] status The item drawing state + */ + void SetBackgroundColor(const Tizen::Graphics::Color& color, TableViewItemDrawingStatus status = TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL); + + /** + * Gets the background color of the item which is displayed when the item is in the specified state. + * + * @since 2.0 + * + * @return The background color of the item + * @param[in] status The item drawing state + * + * @remarks If an error occurs, this method returns RGBA(0, 0, 0, 0). + * @see SetBackgroundColor() + */ + Tizen::Graphics::Color GetBackgroundColor(TableViewItemDrawingStatus status = TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL) const; + + /** + * Enables or disables the individual selection of a control. + * + * @since 2.0 + * + * @return An error code + * @param[in] pControl The child control to be selected individually. + * @param[in] enable Set to @c true to enable the individual selection of a control, else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + */ + result SetIndividualSelectionEnabled(const Tizen::Ui::Control* pControl, bool enable); + + /** + * Returns whether the individual selection of a control is enabled or not. + * + * @since 2.0 + * + * @return @c true if the individual selection of a control is enabled, else @c false + * @param[in] pControl The target control. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + */ + bool IsIndividualSelectionEnabled(const Tizen::Ui::Control* pControl); + +protected: + // + // This class is constructible only as a subobject of a derived class. + // + // @since 2.0 + // + TableViewItemBase(void); + + // + // This class is destructible only as a subobject of a derived class. + // + // @since 2.0 + // + virtual ~TableViewItemBase(void); + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // The following method is reserved, and its name can be changed at any time without prior notice. + // + // @since 2.0 + // + virtual void TableViewItemBase_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // The following method is reserved, and its name can be changed at any time without prior notice. + // + // @since 2.0 + // + virtual void TableViewItemBase_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // The following method is reserved, and its name can be changed at any time without prior notice. + // + // @since 2.0 + // + virtual void TableViewItemBase_Reserved3(void) {} + +private: + friend class _TableViewItemImpl; + + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + TableViewItemBase(const TableViewItemBase& rhs); + + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + TableViewItemBase& operator =(const TableViewItemBase& rhs); +}; // TableViewItemBase + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_TABLE_VIEW_ITEM_BASE_H_ diff --git a/inc/FUiCtrlTableViewSimpleGroupItem.h b/inc/FUiCtrlTableViewSimpleGroupItem.h new file mode 100644 index 0000000..a7864e0 --- /dev/null +++ b/inc/FUiCtrlTableViewSimpleGroupItem.h @@ -0,0 +1,157 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlTableViewSimpleGroupItem.h + * @brief This is the header file for the %TableViewSimpleGroupItem class. + * + * This header file contains the declarations of the %TableViewSimpleGroupItem class and its helper classes. + */ + +#ifndef _FUI_CTRL_TABLE_VIEW_SIMPLE_GROUP_ITEM_H_ +#define _FUI_CTRL_TABLE_VIEW_SIMPLE_GROUP_ITEM_H_ + +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +/** + * @class TableViewSimpleGroupItem + * @brief This class defines common behavior of %TableViewSimpleGroupItem. + * + * @since 2.0 + * + * The %TableViewSimpleGroupItem class displays a table view group item. The basic layout of the %TableViewSimpleGroupItem instance is text and a bitmap arranged horizontally in one line. The bitmap can be omitted while text must be given. + */ + +class _OSP_EXPORT_ TableViewSimpleGroupItem + : public TableViewGroupItem +{ +public: + /** + * This is the default constructor for this class. + * + * @since 2.0 + */ + TableViewSimpleGroupItem(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~TableViewSimpleGroupItem(void); + + /** + * Initializes this instance of %TableViewSimpleGroupItem with the specified parameter. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemSize The size of the item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + */ + result Construct(const Tizen::Graphics::Dimension& itemSize); + + /** + * Initializes this instance of %TableViewSimpleGroupItem with the specified parameter. + * + * @since 2.0 + * + * @return An error code + * @param[in] layout The layout for both of the portrait and landscape modes + * @param[in] itemSize The size of the item + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + */ + result Construct(const Tizen::Ui::Layout& layout, const Tizen::Graphics::Dimension& itemSize); + + /** + * Sets the text string and bitmap image for %TableViewSimpleGroupItem. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text string to be added + * @param[in] pBitmap The bitmap image to be displayed + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + */ + result SetItemContents(const Tizen::Base::String& text, const Tizen::Graphics::Bitmap* pBitmap = null); + + /** + * Sets the color of the text. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The text color + * @param[in] status The item drawing state + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @see GetTextColor() + */ + result SetTextColor(const Tizen::Graphics::Color& color, TableViewItemDrawingStatus status = TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL); + + /** + * Gets the color of the text. + * + * @since 2.0 + * + * @return The text color + * @param[in] status The item drawing state + * @see SetTextColor() + */ + Tizen::Graphics::Color GetTextColor(TableViewItemDrawingStatus status = TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL) const; + + /** + * Sets the size of the text. + * + * @since 2.0 + * + * @return An error code + * @param[in] size The size of the text + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @see GetTextSize() + */ + result SetTextSize(int size); + + /** + * Gets the size of the text. + * + * @since 2.0 + * + * @return The size of the text + * @see SetTextSize() + */ + int GetTextSize(void) const; + +private: + friend class _TableViewItemImpl; + + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + TableViewSimpleGroupItem(const TableViewSimpleGroupItem& rhs); + + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + TableViewSimpleGroupItem& operator =(const TableViewSimpleGroupItem& rhs); +}; // TableViewSimpleGroupItem + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_TABLE_VIEW_SIMPLE_GROUP_ITEM_H_ diff --git a/inc/FUiCtrlTableViewSimpleItem.h b/inc/FUiCtrlTableViewSimpleItem.h new file mode 100644 index 0000000..2c0bc5e --- /dev/null +++ b/inc/FUiCtrlTableViewSimpleItem.h @@ -0,0 +1,158 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlTableViewSimpleItem.h + * @brief This is the header file for the %TableViewSimpleItem class. + * + * This header file contains the declarations of the %TableViewSimpleItem class and its helper classes. + */ + +#ifndef _FUI_CTRL_TABLE_VIEW_SIMPLE_ITEM_H_ +#define _FUI_CTRL_TABLE_VIEW_SIMPLE_ITEM_H_ + +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +/** + * @class TableViewSimpleItem + * @brief This class defines common behavior for a %TableViewSimpleItem. + * + * @since 2.0 + * + * The %TableViewSimpleItem class is a class which represents a table view item which has one label and one bitmap. + * + */ + +class _OSP_EXPORT_ TableViewSimpleItem + : public TableViewItem +{ +public: + /** + * The object is not fully constructed after this constructor is called. Hence, the Construct() method must be called after calling this constructor. + * + * @since 2.0 + */ + TableViewSimpleItem(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~TableViewSimpleItem(void); + + /** + * Initializes this instance of %TableViewSimpleItem with the specified parameter. + * + * @since 2.0 + * + * @return An error code + * @param[in] itemSize The size of the item + * @param[in] style The style of Annex + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + */ + result Construct(const Tizen::Graphics::Dimension& itemSize, TableViewAnnexStyle style = TABLE_VIEW_ANNEX_STYLE_NORMAL); + + /** + * Initializes this instance of TableViewItem with the specified parameter. + * + * @since 2.0 + * + * @return An error code + * @param[in] layout The layout for both of the portrait and landscape modes + * @param[in] itemSize The size of the item + * @param[in] style The style of Annex + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + */ + result Construct(const Tizen::Ui::Layout& layout, const Tizen::Graphics::Dimension& itemSize, TableViewAnnexStyle style = TABLE_VIEW_ANNEX_STYLE_NORMAL); + + /** + * Sets the text string and bitmap image for %TableViewSimpleItem. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text string to be added + * @param[in] pBitmap The bitmap image to be displayed + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + */ + result SetItemContents(const Tizen::Base::String& text, const Tizen::Graphics::Bitmap* pBitmap = null); + + /** + * Sets the color of the text. + * + * @since 2.0 + * + * @return An error code + * @param[in] color The text color + * @param[in] status The item drawing state + * @see GetTextColor() + */ + void SetTextColor(const Tizen::Graphics::Color& color, TableViewItemDrawingStatus status = TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL); + + /** + * Gets the color of the text. + * + * @since 2.0 + * + * @return The text color, + * @param[in] status The item drawing state + * @see SetTextColor() + */ + Tizen::Graphics::Color GetTextColor(TableViewItemDrawingStatus status = TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL) const; + + /** + * Sets the size of the text. + * + * @since 2.0 + * + * @return An error code + * @param[in] size The size of the text + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The given text size is less than 1. + * @see GetTextSize() + */ + result SetTextSize(int size); + + /** + * Gets the size of the text. + * + * @since 2.0 + * + * @return The size of the text, + * @see SetTextSize() + */ + int GetTextSize(void) const; + +private: + friend class _TableViewItemImpl; + + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + TableViewSimpleItem(const TableViewSimpleItem& rhs); + + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + TableViewSimpleItem& operator =(const TableViewSimpleItem& rhs); +}; // TableViewSimpleItem + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_TABLE_VIEW_SIMPLE_ITEM_H_ diff --git a/inc/FUiCtrlTableViewTypes.h b/inc/FUiCtrlTableViewTypes.h new file mode 100644 index 0000000..9681717 --- /dev/null +++ b/inc/FUiCtrlTableViewTypes.h @@ -0,0 +1,150 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCtrlTableViewTypes.h + * @brief This is the header file for the TableView enumerations. + * + * This header file contains the declarations of the TableView enumerations. + */ +#ifndef _FUI_CTRL_TABLE_VIEW_TYPES_H_ +#define _FUI_CTRL_TABLE_VIEW_TYPES_H_ + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @enum TableViewAnnexStyle + * + * Defines the style of annex in the items. + * + * @since 2.0 + */ +enum TableViewAnnexStyle +{ + TABLE_VIEW_ANNEX_STYLE_NORMAL = 0, /**< No annex */ + TABLE_VIEW_ANNEX_STYLE_MARK, /**< Mark style check for multiple selection */ + TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING, /**< On/Off slider style */ + TABLE_VIEW_ANNEX_STYLE_DETAILED, /**< Detailed style for further interaction */ + TABLE_VIEW_ANNEX_STYLE_RADIO /**< Radio style check for simple look */ +}; + +/** + * @enum TableViewItemDrawingStatus + * + * Defines the drawing state of the items. + * + * @since 2.0 + */ +enum TableViewItemDrawingStatus +{ + TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL = 0, /**< The normal drawing state */ + TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED, /**< The pressed drawing state */ + TABLE_VIEW_ITEM_DRAWING_STATUS_HIGHLIGHTED /**< The highlighted drawing state */ +}; + +/** + * @enum TableViewRefreshType + * + * Defines the update type of the TableView item. + * + * @since 2.0 + */ +enum TableViewRefreshType +{ + TABLE_VIEW_REFRESH_TYPE_ITEM_ADD = 0, /**< Refresh request of adding an item */ + TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE, /**< Refresh request of removing an item */ + TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY /**< Refresh request of modifying an item */ +}; + +/** + * @enum TableViewItemStatus + * + * Defines the item state of the TableView. + * + * @since 2.0 + */ +enum TableViewItemStatus +{ + TABLE_VIEW_ITEM_STATUS_SELECTED = 0, /**< The selected item state */ + TABLE_VIEW_ITEM_STATUS_HIGHLIGHTED, /**< The highlighted item state */ + TABLE_VIEW_ITEM_STATUS_CHECKED, /**< The checked item state */ + TABLE_VIEW_ITEM_STATUS_UNCHECKED, /**< The unchecked item state */ + TABLE_VIEW_ITEM_STATUS_MORE /**< The more item state */ +}; + +/** + * @enum TableViewSweepDirection + * + * Defines the direction of the sweep interaction. + * + * @since 2.0 + */ +enum TableViewSweepDirection +{ + TABLE_VIEW_SWEEP_DIRECTION_LEFT = 0, /**< The left direction */ + TABLE_VIEW_SWEEP_DIRECTION_RIGHT /**< The right direction */ +}; + +/** + * @enum TableViewScrollItemAlignment + * + * Defines the alignment information for item scroll. + * + * @since 2.0 + */ +enum TableViewScrollItemAlignment +{ + TABLE_VIEW_SCROLL_ITEM_ALIGNMENT_TOP = 0, /**< The item is aligned at the top of the TableView at item scroll*/ + TABLE_VIEW_SCROLL_ITEM_ALIGNMENT_BOTTOM /**< The item is aligned at the bottom of the TableView at item scroll */ +}; + +/** + * @enum TableViewScrollBarStyle + * + * Defines the scroll bar style of the list. + * + * @since 2.0 + */ +enum TableViewScrollBarStyle +{ + TABLE_VIEW_SCROLL_BAR_STYLE_NONE = 0, /**< No scroll bar */ + TABLE_VIEW_SCROLL_BAR_STYLE_FADE_OUT, /**< The fade-out scroll bar style */ + TABLE_VIEW_SCROLL_BAR_STYLE_FIXED, /**< The fixed scroll bar style */ + TABLE_VIEW_SCROLL_BAR_STYLE_JUMP_TO_TOP, /**< The jump to top scroll bar style */ + TABLE_VIEW_SCROLL_BAR_STYLE_THUMB, /**< The thumb scroll bar style */ + TABLE_VIEW_SCROLL_BAR_STYLE_FAST_SCROLL /**< The fast scroll bar style */ + +}; + +/** + * @enum ScrollInputMode + * + * Defines the scroll interaction mode + * + * @since 2.0 + */ +enum ScrollInputMode +{ + SCROLL_INPUT_MODE_ALLOW_ANY_DIRECTION = 0, /** < Scroll interaction is available to any direction. */ + SCROLL_INPUT_MODE_RESTRICT_TO_INITIAL_DIRECTION /** < Scroll interaction is restricted to first direction. */ +}; + + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_TABLE_VIEW_TYPES_H_ diff --git a/inc/FUiCtrlTextBox.h b/inc/FUiCtrlTextBox.h new file mode 100644 index 0000000..4d50354 --- /dev/null +++ b/inc/FUiCtrlTextBox.h @@ -0,0 +1,738 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlTextBox.h + * @brief This is the header file for the %TextBox class. + * + * This header file contains the declarations of the %TextBox class and its helper classes. + */ + +#ifndef _FUI_CTRL_TEXT_BOX_H_ +#define _FUI_CTRL_TEXT_BOX_H_ + +#include +#include +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ +class _TextBoxImpl; +}; +}; +}; + +namespace Tizen { namespace Ui { namespace Controls +{ +/** + * @enum TextBoxBorder + * + * Defines the possible types of text box borders. + * + * @since 2.0 + */ +enum TextBoxBorder +{ + TEXT_BOX_BORDER_NONE, /**< No border */ + TEXT_BOX_BORDER_ROUNDED /**< The rounded border */ +}; + + +/** + * @enum TextBoxStatus + * + * Defines the possible states of the text box. + * + * @since 2.0 + */ +enum TextBoxStatus +{ + TEXT_BOX_STATUS_NORMAL, /**< The normal state */ + TEXT_BOX_STATUS_HIGHLIGHTED, /**< The focus-highlighted state */ + TEXT_BOX_STATUS_DISABLED /**< The disabled state */ +}; + + +/** + * @enum TextBoxTextColor + * + * Defines the possible text colors. + * + * @since 2.0 + */ +enum TextBoxTextColor +{ + TEXT_BOX_TEXT_COLOR_NORMAL, /**< The default text color */ + TEXT_BOX_TEXT_COLOR_HIGHLIGHTED, /**< The highlighted text color */ + TEXT_BOX_TEXT_COLOR_DISABLED, /**< The disabled text color */ + TEXT_BOX_TEXT_COLOR_BLOCKED, /**< The text block color */ + TEXT_BOX_TEXT_COLOR_LINK /**< The link text color */ +}; + + +/** + * @enum TextBoxTextStyle + * + * Defines the possible text styles. + * + * @since 2.0 + */ +enum TextBoxTextStyle +{ + TEXT_BOX_TEXT_STYLE_NORMAL = 0x0000, /**< The normal text style */ + TEXT_BOX_TEXT_STYLE_BOLD = 0x0001, /**< The bold text style */ + TEXT_BOX_TEXT_STYLE_ITALIC = 0x0002, /**< The italic text style */ + TEXT_BOX_TEXT_STYLE_UNDERLINE = 0x0004, /**< The underline text style */ + TEXT_BOX_TEXT_STYLE_STRIKEOUT = 0x0008, /**< The strikeout text style */ + TEXT_BOX_TEXT_STYLE_MAX = 0x7FFF /**< The placeholder */ +}; + +/** + * @class TextBox + * @brief This class is an implementation of a %TextBox control. + * + * @since 2.0 + * + * The %TextBox class displays a non-editable text field. + * + * For more information on the class features, see TextBox. + * + * @code +// Sample code for TextBoxSample.h +#include + +class TextBoxSample + : public Tizen::Ui::Controls::Form +{ +public: + TextBoxSample(void) + : __pTextBox(null){} + + bool Initialize(void); + virtual result OnInitializing(void); + +private: + Tizen::Ui::Controls::TextBox* __pTextBox; +}; + * @endcode + * + * @code +// Sample code for TextBoxSample.cpp +#include + +#include "TextBoxSample.h" + +using namespace Tizen::Graphics; +using namespace Tizen::Ui::Controls; + +bool +TextBoxSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +TextBoxSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of TextBox + __pTextBox = new TextBox(); + __pTextBox->Construct(Rectangle(50, 50, GetClientAreaBounds().width-80, 300), TEXT_BOX_BORDER_ROUNDED); + + // Sets properties on the text box + __pTextBox->SetTextSize(50); + __pTextBox->SetText(L"Tizen Developer"); + __pTextBox->SetTextColor(TEXT_BOX_TEXT_COLOR_HIGHLIGHTED, Color::GetColor(COLOR_ID_RED)); + __pTextBox->AppendText(L"\nTizen SDK"); + + // Adds the text box to the form + AddControl(*__pTextBox); + + return r; +} + * @endcode + */ +class _OSP_EXPORT_ TextBox + : public Tizen::Ui::Control +{ +// Lifecycle +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + * + */ + TextBox(void); + + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~TextBox(void); + + /** + * Initializes this instance of %TextBox with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect An instance of the Graphics::Rectangle class @n + * This instance represents the x and y coordinates of the top-left corner of the created window along with + * the width and height of the control. + * @param[in] border The border style + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(const Tizen::Graphics::Rectangle& rect, TextBoxBorder border = TEXT_BOX_BORDER_ROUNDED); + +// Operation +public: + /** + * Sets the auto-link mask. + * + * @since 2.0 + * + * @return An error code + * @param[in] autoLinks The auto-link mask @n + * Multiple link types can be combined using the bitwise OR operator (see Tizen::Base::Utility::LinkType). @n + * For more information, see AutoLink Detection. + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks When @c autoLinks is set to @c 0, the auto-link detection is disabled. + * @see Tizen::Base::Utility::LinkType + * @see GetAutoLinkMask() + */ + result SetAutoLinkMask(unsigned long autoLinks); + + /** + * Gets the auto-link mask. + * + * @since 2.0 + * + * @return The auto-link mask + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetAutoLinkMask() + */ + unsigned long GetAutoLinkMask(void) const; + + /** + * Adds a link event listener. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @see RemoveUiLinkEventListener() + */ + void AddUiLinkEventListener(Tizen::Ui::IUiLinkEventListener& listener); + + /** + * Removes the specified link event listener. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @see AddUiLinkEventListener() + */ + void RemoveUiLinkEventListener(Tizen::Ui::IUiLinkEventListener& listener); + +// Text + /** + * Appends the specified character at the end of the text. + * + * @since 2.0 + * + * @return An error code + * @param[in] character The character to be added + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The method modifies the text buffer that is managed by the %TextBox control. @n + * To display the changes, the control must be drawn again. + */ + result AppendCharacter(const Tizen::Base::Character& character); + + /** + * Appends the specified text at the end of the text. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text to be appended + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks To denote the end of a line use '\\n'. @n + * The method modifies the text buffer that is managed by the %TextBox control. @n + * To display the changes, the control must be drawn again. + */ + result AppendText(const Tizen::Base::String& text); + + /** + * Clears the text that is displayed by the %TextBox control. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The method modifies the text buffer that is managed by the %TextBox control. @n + * To display the changes, the control must be drawn again. + */ + result Clear(void); + + /** + * Gets the number of the lines contained in the %TextBox control. + * + * @since 2.0 + * + * @return The line count of the text, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + int GetLineCount(void) const; + + /** + * Gets the text that is displayed by the %TextBox control. + * + * @since 2.0 + * + * @return The text of the %TextBox control, @n + * else an empty string if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetText() + */ + Tizen::Base::String GetText(void) const; + + /** + * Gets a portion of the text that is displayed by the %TextBox control. + * + * @since 2.0 + * + * @return The specified portion of the text, @n + * else an empty string if an error occurs + * @param[in] start The starting index of the range + * @param[in] end The last index of the range + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified index is outside the bounds of the data structure. @n + * The index is greater than the number of elements or less than @c 0. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetText() + */ + Tizen::Base::String GetText(int start, int end) const; + + /** + * Gets the length of the text that is displayed by the %TextBox control. + * + * @since 2.0 + * + * @return The length of the text, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + int GetTextLength(void) const; + + /** + * Inserts the character at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The position at which to insert the character + * @param[in] character The character to be inserted + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is outside the bounds of the data structure. @n + * The specified @c index is greater than the number of elements or less than @c 0. + * @exception E_SYSTEM A system error has occurred. + */ + result InsertCharacterAt(int index, const Tizen::Base::Character& character); + + /** + * Inserts the text at the specified index. + * + * @since 2.0 + * + * @return An error code + * @param[in] index The position at which to insert the text + * @param[in] text The text to be inserted + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified @c index is outside the bounds of the data structure. @n + * The specified @c index is greater than the number of elements or less than @c 0. + * @exception E_SYSTEM A system error has occurred. + */ + result InsertTextAt(int index, const Tizen::Base::String& text); + + /** + * Sets the text to be displayed. + * + * @since 2.0 + * + * @return An error code + * @param[in] text The text to be displayed + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks To denote the end of a line use '\\n'. @n + * The method modifies the text buffer that is managed by the %TextBox control. @n + * To display the changes, the control must be drawn again. + */ + result SetText(const Tizen::Base::String& text); + +// Line Spacing + /** + * Gets the line spacing. + * + * @since 2.0 + * + * @return The line spacing, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetLineSpacing() + */ + int GetLineSpacing(void) const; + + /** + * Sets the line spacing. @n + * The line spacing is determined by multiplying @c multiplier to the default line spacing and adding @c extra. @n + * + * @code + * The line spacing = (default line spacing) * multiplier + extra + * @endcode + * + * @since 2.0 + * + * @return An error code + * @param[in] multiplier The line spacing multiplier + * @param[in] extra The extra line spacing + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The specified line spacing value cannot be supported. + * @exception E_SYSTEM A system error has occurred. + * @see GetLineSpacing() + */ + result SetLineSpacing(int multiplier, int extra); + + // Text Alignment + /** + * Gets the horizontal text alignment. + * + * @since 2.0 + * + * @return The horizontal text alignment + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetTextAlignment() + */ + HorizontalAlignment GetTextAlignment(void) const; + + /** + * Sets the horizontal text alignment. + * + * @since 2.0 + * + * @return An error code + * @param[in] alignment The horizontal text alignment + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetTextAlignment() + */ + result SetTextAlignment(HorizontalAlignment alignment); + + // Text Size + /** + * Gets the text size of the %TextBox control. + * + * @since 2.0 + * + * @return The size of the text, @n + * else @c -1 if an error occurs + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetTextSize() + */ + int GetTextSize(void) const; + + /** + * Sets the text size. + * + * @since 2.0 + * + * @return An error code + * @param[in] size The text size + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The specified @c size cannot be a negative integer. + * @exception E_SYSTEM A system error has occurred. + * @see GetTextSize() + */ + result SetTextSize(int size); + + // Text Font + /** + * @if OSPDEPREC + * Gets the font typeface name and the style mask of the %TextBox control. + * + * @brief [Deprecated] + * @deprecated This method is deprecated. Instead of using this method, use the GetTextStyle() method. + * @since 2.0 + * + * @return An error code + * @param[out] typefaceName The name of the font typeface + * @param[out] style The text style (see TextBoxTextStyle) + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks Multiple styles can be combined using the bitwise OR operator. + * @see SetFontType() + * @see Tizen::Graphics::Font::GetSystemFontListN() + * @see TextBoxTextStyle + * @endif + */ + result GetFontType(Tizen::Base::String& typefaceName, unsigned long& style) const; + + /** + * Gets the text style mask of the %TextBox control. + * + * @since 2.0 + * + * @return A bitwise combination of Tizen::Ui::Controls::TextBoxTextStyle + * @see SetTextStyle() + * @see TextBoxTextStyle + */ + unsigned long GetTextStyle(void) const; + + /** + * @if OSPDEPREC + * Sets the font and the style mask of the %TextBox control. + * + * @brief [Deprecated] + * @deprecated This method is deprecated. Instead of using this method, use the SetTextStyle() method. + * @since 2.0 + * + * @return An error code + * @param[in] typefaceName The name of the font typeface + * @param[in] style The text style @n + * Multiple styles can be combined using the bitwise OR operator(see TextBoxTextStyle). + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid, or the specified font typeface is not supported. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specified font typeface must be one of the system fonts. @n + * @c italic and @c bold cannot be applied at the same time. If the specified style mask contains both @c italic and @c bold, @c italic will + * be applied. + * @see GetFontType() + * @see Tizen::Graphics::Font::GetSystemFontListN() + * @see TextBoxTextStyle + * @endif + */ + result SetFontType(const Tizen::Base::String& typefaceName, unsigned long style); + + /** + * Sets the text style mask of the %TextBox control. + * + * @since 2.0 + * + * @return An error code + * @param[in] style The text style @n + * Multiple styles can be combined using the bitwise OR operator (see Tizen::Ui::Controls::TextBoxTextStyle). + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @see GetTextStyle() + * @see TextBoxTextStyle + */ + result SetTextStyle(unsigned long style); + + using Control::SetFont; + /** + * @if OSPDEPREC + * Sets the font to render the text. + * + * @brief [Deprecated] + * @deprecated This method is deprecated. Instead of using this method, use the SetFont(const String& fontName) method of superclass. + * @since 2.0 + * + * @return An error code + * @param[in] font The text font + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks All previously set text attributes (style, weight, decoration, and size) will be discarded. + * @endif + */ + result SetFont(const Tizen::Graphics::Font& font); + +// Text Block + /** + * Releases the selection of the current text block. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetBlockRange() + * @see SetBlockRange() + */ + result ReleaseBlock(void); + + /** + * Gets the start and the end index of the currently selected text block. + * + * @since 2.0 + * + * @return An error code + * @param[out] start The start index of the text block + * @param[out] end The end index of the text block + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The method returns @c start = 0 and @c end = 0 if there is no selected text block. + * @see ReleaseBlock() + * @see SetBlockRange() + */ + result GetBlockRange(int& start, int& end) const; + + /** + * Sets the specified block of the text. + * + * @since 2.0 + * + * @return An error code + * @param[in] start The start index of the text block + * @param[in] end The end index of the text block + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified index is outside the bounds of the data structure. @n + * Either the @c start or @c end parameters are greater than the number of elements or less than @c 0. + * @exception E_SYSTEM A system error has occurred. + * @see ReleaseBlock() + * @see GetBlockRange() + */ + result SetBlockRange(int start, int end); + +// Appearances + /** + * Gets the color of the %TextBox control for the specified status. + * + * @since 2.0 + * + * @return The color of the %TextBox control, @n + * else RGBA (0,0,0,0) if an error occurs + * @param[in] status The state of the %TextBox control + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetColor() + */ + Tizen::Graphics::Color GetColor(TextBoxStatus status) const; + + /** + * Gets the text color of the specified text color type. + * + * @since 2.0 + * + * @return The color, @n + * else RGBA (0,0,0,0) if an error occurs + * @param[in] type The text color type + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @see SetTextColor() + */ + Tizen::Graphics::Color GetTextColor(TextBoxTextColor type) const; + + /** + * Sets the background bitmap of the %TextBox control. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The state of the %TextBox control + * @param[in] bitmap The background bitmap + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see SetBackgroundColor() + */ + result SetBackgroundBitmap(TextBoxStatus status, const Tizen::Graphics::Bitmap& bitmap); + + /** + * Sets the color of the %TextBox control for the specified status. + * + * @since 2.0 + * + * @return An error code + * @param[in] status The state of the %TextBox control + * @param[in] color The color to be set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetColor() + */ + result SetColor(TextBoxStatus status, const Tizen::Graphics::Color& color); + + /** + * Sets the text color of the %TextBox control for the specified text type. + * + * @since 2.0 + * + * @return An error code + * @param[in] type The text color type + * @param[in] color The text color to be set + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see GetTextColor() + */ + result SetTextColor(TextBoxTextColor type, const Tizen::Graphics::Color& color); + + /** + * Adds a text block event listener. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @remarks Programmatically modifying the text selection does not cause the text block selection event to fire. + * @see RemoveTextBlockEventListener() + */ + void AddTextBlockEventListener(Tizen::Ui::ITextBlockEventListener& listener); + + /** + * Removes the specified text block event listener. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to be removed + * @see AddTextBlockEventListener() + */ + void RemoveTextBlockEventListener(Tizen::Ui::ITextBlockEventListener& listener); + +protected: + friend class _TextBoxImpl; + +private: + TextBox(const TextBox& value); + TextBox& operator =(const TextBox& value); +}; //TextBox +}}} //Tizen::Ui::Controls + +#endif // _FUI_CTRL_TEXT_BOX_H_ diff --git a/inc/FUiCtrlTimePicker.h b/inc/FUiCtrlTimePicker.h new file mode 100644 index 0000000..646b49a --- /dev/null +++ b/inc/FUiCtrlTimePicker.h @@ -0,0 +1,331 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiCtrlTimePicker.h + * @brief This is the header file for the %TimePicker class. + * + * This header file contains the declarations of the %TimePicker class. + */ +#ifndef _FUI_CTRL_TIME_PICKER_H_ +#define _FUI_CTRL_TIME_PICKER_H_ + +#include +#include + +namespace Tizen { namespace Ui { namespace Controls +{ + +/** + * @class TimePicker + * @brief This class displays a %TimePicker control on top of the screen. + * + * @since 2.0 + * + * The %TimePicker class displays a full screen window-based selector that allows the user to select a certain time. + * + * For more information on the class features, see DatePicker, TimePicker, and DateTimeimePicker. + * + * The following example demonstrates how to use the %TimePicker class. + * + * @code +// Sample Code for TimePickerSample.h +#include + +class TimePickerSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::ITimeChangeEventListener + , public Tizen::Ui::IActionEventListener +{ +public: + TimePickerSample(void) + : __pTimePicker(null){} + + bool Initialize(void); + void ShowTimePicker(bool show); + virtual result OnInitializing(void); + virtual result OnTerminating(void); + + // IActionEventListener + virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId); + + // ITimeChangeEventListener + virtual void OnTimeChanged(const Tizen::Ui::Control& source, int hour, int minute); + virtual void OnTimeChangeCanceled(const Tizen::Ui::Control& source); + +private: + static const int ID_BUTTON = 101; + + Tizen::Ui::Controls::TimePicker* __pTimePicker; +}; + * @endcode + * + * @code +// Sample Code for TimePickerSample.cpp +#include + +#include "TimePickerSample.h" + +using namespace Tizen::Graphics; +using namespace Tizen::Ui::Controls; + +bool +TimePickerSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +TimePickerSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Createa an instance of Button + Button* pButton = new Button(); + pButton->Construct(Rectangle(50, 50, 300, 200), L"Show TimePicker"); + pButton->SetActionId(ID_BUTTON); + pButton->AddActionEventListener(*this); + + // Adda a Button to the Form + AddControl(*pButton); + + // Creates an instanceo of TimePicker + __pTimePicker = new TimePicker(); + __pTimePicker->Construct(); + + // Adds an instanceo of ITimeChangeEventListener + __pTimePicker->AddTimeChangeEventListener(*this); + + // Show TimePicker after it's owner Form is shown. + + return r; +} + +void +TimePickerSample::ShowTimePicker(bool show) +{ + // Change to desired show state + __pTimePicker->SetShowState(show); + + //Call Show() of the control + if (show) + { + __pTimePicker->Show(); + } + // Call Invalidate() of the container + else + { + Invalidate(true); + } +} + +result +TimePickerSample::OnTerminating(void) +{ + result r = E_SUCCESS; + + // Deallocates the time picker + delete __pTimePicker; + + return r; +} + +// IActionEventListener implementation +void +TimePickerSample::OnActionPerformed(const Control& source, int actionId) +{ + switch (actionId) + { + case ID_BUTTON: + ShowTimePicker(true); + break; + + default: + break; + } +} + + +// ITimeChangeEventListener implementation +void +TimePickerSample::OnTimeChanged(const Control& source, int hour, int minute) +{ + // Todo: +} + +void +TimePickerSample::OnTimeChangeCanceled(const Control& source) +{ + // Todo: +} + * @endcode + */ +class _OSP_EXPORT_ TimePicker + : public Tizen::Ui::Window +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + TimePicker(void); + + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~TimePicker(void); + + /** + * Adds a time changed event listener instance. + * + * @since 2.0 + * + * @param[in] listener The listener to be added + * @see ITimeChangeEventListener::OnTimeChanged() + * @see ITimeChangeEventListener::OnTimeChangeCanceled() + * @see RemoveTimeChangeEventListener() + */ + void AddTimeChangeEventListener(Tizen::Ui::ITimeChangeEventListener& listener); + + /** + * Removes a listener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to be removed + * @see AddTimeChangeEventListener() + */ + void RemoveTimeChangeEventListener(Tizen::Ui::ITimeChangeEventListener& listener); + + /** + * Initializes this instance of %TimePicker to the current date and time in wall time mode. + * + * @since 2.0 + * + * @return An error code + * @param[in] title The title + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(const Tizen::Base::String& title = L""); + + /** + * Gets the current hour value of the %TimePicker control. @n + * The hour value is between @c 0 to @c 23. + * + * @since 2.0 + * + * @return The current hour value, @n + * else @c -1 if an error occurs + */ + int GetHour(void) const; + + /** + * Gets the current minute value of the %TimePicker control. @n + * The minute value is between @c 0 to @c 59. + * + * @since 2.0 + * + * @return The current minute value, @n + * else @c -1 if an error occurs + */ + int GetMinute(void) const; + + /** + * Gets the current time value of the %TimePicker control. + * + * @since 2.0 + * + * @return The time value + */ + Tizen::Base::DateTime GetTime(void) const; + + /** + * Sets the 12H or 24H hour display type of the %TimePicker control. + * + * @since 2.0 + * + * @param[in] enable Set to @c true to enable the 24 hour notation, @n + * else @c false + */ + void Set24HourNotationEnabled(bool enable); + + /** + * Sets the hour value. @n + * The hour value should be between @c 0 and @c 23. + * + * @since 2.0 + * + * @param[in] hour The hour value + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c hour value is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result SetHour(int hour); + + /** + * Sets the minute value. @n + * The minute value should be between @c 0 and @c 59. + * + * @since 2.0 + * + * @param[in] minute The minute value + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c minute value is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result SetMinute(int minute); + + /** + * Sets the current time value of the %TimePicker control. + * + * @since 2.0 + * + * @param[in] time The time to be set + */ + void SetTime(const Tizen::Base::DateTime& time); + + /** + * Sets the time value of the %TimePicker control with the current system time in the Coordinated Universal Time (UTC) mode. + * + * @since 2.0 + */ + void SetCurrentTime(void); + +protected: + friend class _TimePickerImpl; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + TimePicker(const TimePicker& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + TimePicker& operator =(const TimePicker& rhs); + +}; // TimePicker + +}}} // Tizen::Ui::Controls + +#endif // _FUI_CTRL_TIME_PICKER_H_ diff --git a/inc/FUiCustomControlBase.h b/inc/FUiCustomControlBase.h new file mode 100644 index 0000000..3be3449 --- /dev/null +++ b/inc/FUiCustomControlBase.h @@ -0,0 +1,248 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiCustomControlBase.h + * @brief This is the header file for the %CustomControlBase class. + * + * This header file contains the declarations of the %CustomControlBase class and its helper classes. + */ + +#ifndef _FUI_CUSTOM_CONTROL_BASE_H_ +#define _FUI_CUSTOM_CONTROL_BASE_H_ + +#include + +namespace Tizen { namespace Ui +{ + +class _CustomControlBaseImpl; + +/** + * @if OSPDEPREC + * @class CustomControlBase + * @brief [Deprecated] This is the base class for the user-defined UI control classes. + * + * @deprecated This class is deprecated. Instead of using this class, use the Container class. + * @since 2.0 + * + * The %CustomControlBase class is the base class for the user-defined UI control classes. + * @n + * For more information on the class features, see CustomControlBase. + * @endif + */ +class _OSP_EXPORT_ CustomControlBase + : public Container +{ +// Lifecycle +public: + /** + * @if OSPDEPREC + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the Container class. + * @since 2.0 + * @endif + */ + virtual ~CustomControlBase(void); + + /** + * @if OSPDEPREC + * Notifies that the bounds of the control is about to change. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the Container class. + * @since 2.0 + * + * @return An error code + * @param[in] oldRect The old position and size values of the control + * @param[in] newRect The new position and size values of the control + * @remarks If the method returns an exception, the resulting exception + * is propagated and the control's size is unchanged. @n + * Provide control specific exceptions. + * @see Tizen::Ui::Control::SetBounds() + * @see Tizen::Ui::Control::SetSize() + * @endif + */ + virtual result PrepareBoundsChange(const Tizen::Graphics::Rectangle& oldRect, const Tizen::Graphics::Rectangle& newRect); + + /** + * @if OSPDEPREC + * Overrides this method to indicate that the specified @c width and @c height + * can be supported or a new @c width and @c height must be applied instead + * of the specified values. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the Container class. + * @since 2.0 + * + * @return A Boolean flag that indicates whether the specified @c width + * and @ height are supported + * @param[in, out] width The width that needs to evaluate + * @param[in, out] height The height that needs to evaluate + * @endif + */ + virtual bool EvaluateSize(int& width, int& height); + +protected: + /** + * @if OSPDEPREC + * The object is not fully constructed after this constructor is called. For full construction, one of the %Construct() method must be called right after calling this constructor. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the Container class. + * @since 2.0 + * @endif + */ + CustomControlBase(void); + + /** + * @if OSPDEPREC + * Initializes this instance of %CustomControlBase. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the Container class. + * @since 2.0 + * + * @return An error code + * @param[in] rect The rectangle bounds to set + * @param[in] resizable Set to @c true to make the control resizable, @n + * else @c false + * @param[in] movable Set to @c true to make the control movable, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method must be called from the derived classes's construct methods. + * @remarks If the @c resizable is @c false, IsResizable() returns @c false. + * @see IsResizable() + * @endif + */ + result Construct(const Tizen::Graphics::Rectangle& rect, bool resizable = true, bool movable = true); + + /** + * @if OSPDEPREC + * Initializes this instance of %CustomControlBase with the specified layout and rectangular region. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the Container class. + * @since 2.0 + * + * @return An error code + * @param[in] layout The layout for both the portrait and landscape mode + * @param[in] rect The location and size of the %CustomControlBase + * @param[in] resizable Set to @c true to make the control resizable, @n + * else @c false + * @param[in] movable Set to @c true to make the control movable, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method must be called from the derived classes's construct methods. + * @remarks If the @c resizable is @c false, IsResizable() returns @c false. + * @see IsResizable() + * @see Tizen::Ui::Layout + * @see Tizen::Ui::Container::GetLayoutN() + * @endif + */ + result Construct(const Tizen::Ui::Layout& layout, const Tizen::Graphics::Rectangle& rect, bool resizable = true, bool movable = true); + + /** + * @if OSPDEPREC + * Initializes this instance of %CustomControlBase with the specified layouts and rectangular region. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the Container class. + * @since 2.0 + * + * @return An error code + * @param[in] portraitLayout The layout for the portrait mode + * @param[in] landscapeLayout The layout for the landscape mode + * @param[in] rect The location and size of the %CustomControlBase + * @param[in] resizable Set to @c true to make the control resizable, @n + * else @c false + * @param[in] movable Set to @c true to make the control movable, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks If the @c resizable is @c false, IsResizable() returns @c false. + * @see IsResizable() + * @see Tizen::Ui::Layout + * @see Tizen::Ui::Container::GetLayoutN() + * @see Tizen::Ui::Container::GetPortraitLayoutN() + * @see Tizen::Ui::Container::GetLandscapeLayoutN() + * @endif + */ + result Construct(const Tizen::Ui::Layout& portraitLayout, const Tizen::Ui::Layout& landscapeLayout, const Tizen::Graphics::Rectangle& rect, bool resizable = true, bool movable = true); + +private: + /** + * @if OSPDEPREC + * The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the Container class. + * @since 2.0 + * @endif + */ + CustomControlBase(const CustomControlBase& rhs); + + /** + * @if OSPDEPREC + * The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the Container class. + * @since 2.0 + * @endif + */ + CustomControlBase& operator =(const CustomControlBase& rhs); + +protected: + friend class _CustomControlBaseImpl; + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void CustomControlBase_Reserved1(void) {} + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void CustomControlBase_Reserved2(void) {} + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void CustomControlBase_Reserved3(void) {} +}; // CustomControlBase + +}} // Tizen::Ui + +#endif // _FUI_CUSTOM_CONTROL_BASE_H_ + diff --git a/inc/FUiDataBindingContext.h b/inc/FUiDataBindingContext.h new file mode 100644 index 0000000..4f2f253 --- /dev/null +++ b/inc/FUiDataBindingContext.h @@ -0,0 +1,336 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiDataBindingContext.h + * @brief This is the header file for the %DataBindingContext class. + * + * This header file contains the declarations of the %DataBindingContext class. + */ + +#ifndef _FUI_DATA_BINDING_CONTEXT_H_ +#define _FUI_DATA_BINDING_CONTEXT_H_ + +#include +#include +#include +#include +#include +#include + +namespace Tizen { namespace Base +{ +class String; +}} + +namespace Tizen { namespace Ui +{ + +class Control; +class _DataBindingContextImpl; + +/** + * @class DataBindingContext + * @brief This class represents a data binding context and the application's data source. + * + * @since 2.0 + * + * The %DataBindingContext class represents the data binding context. + * + * The following example demonstrates how to use the %DataBindingContext class. +.* + * @code +// Sample code for DataBindingSample.h +#include +#include + +class DataBindingSample + : public Tizen::Ui::Controls::Form + , public Osp::Ui::IActionEventListener +{ +public: + DataBindingSample(void); + virtual ~DataBindingSample(void); + + virtual bool Initialize(void); + virtual result OnInitializing(void); + virtual void OnActionPerformed(const Osp::Ui::Control& source, int actionId); + +private : + static const int ID_BUTTON_UNBIND = 402; + static const int ID_BUTTON_UPDATE_BINDING = 403; + static const int ID_BUTTON_BIND = 404; + + Osp::Base::Integer __bindIntegerToButtonText; + Osp::Ui::Controls::Button* __pUnbindButton; + Osp::Ui::Controls::Button* __pUpdateBindingButton; + Osp::Ui::Controls::Button* __pTargetButton; + Osp::Ui::Controls::Button* __pBindButton; +}; + + * @endcode + * + * @code + +// Sample code for DataBindingSample.cpp +#include "DataBindingSample.h" + +using namespace Tizen::App; +using namespace Tizen::Graphics; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; + +bool +DataBindingSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL| FORM_STYLE_INDICATOR| FORM_STYLE_HEADER| FORM_STYLE_FOOTER); + SetFooter(); + return true; +} + +result +DataBindingSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + Header* pHeader = GetHeader(); + pHeader->SetTitleText(L"DataBinding"); + + Rectangle rect; + rect = GetClientAreaBounds(); + + __pUpdateBindingButton = new (std::nothrow) Button(); + __pUpdateBindingButton->Construct(Rectangle(10, rect.height / 6, rect.width - 20, rect.height / 6), L"BindingTarget"); + __pUpdateBindingButton->SetName("Target"); + AddControl(*__pUpdateBindingButton); + + __pTargetButton = new (std::nothrow) Button(); + __pTargetButton->Construct(Rectangle(10, (rect.height / 3) + 10 , (rect.width - 20), rect.height / 6), L"Update Binding"); + __pTargetButton->SetActionId(ID_BUTTON_UPDATE_BINDING); + __pTargetButton->AddActionEventListener(*this); + AddControl(*__pTargetButton); + + __pUnbindButton = new (std::nothrow) Button(); + __pUnbindButton->Construct(Rectangle(10, (rect.height * 2 / 3), (rect.width / 2) - 10, rect.height / 6), L"Unbind"); + __pUnbindButton->SetActionId(ID_BUTTON_UNBIND); + __pUnbindButton->AddActionEventListener(*this); + AddControl(*__pUnbindButton); + + __pBindButton = new (std::nothrow) Button(); + __pBindButton->Construct(Rectangle((rect.width / 2) + 10 , (rect.height * 2 / 3), (rect.width / 2) - 20 , rect.height / 6), L"Bind"); + __pBindButton->SetActionId(ID_BUTTON_BIND); + __pBindButton->AddActionEventListener(*this); + AddControl(*__pBindButton); + + DataBindingContext* pContext = GetDataBindingContextN(); + r = pContext->Bind(L"bindingcount", L"Target", L"text", __bindIntegerToButtonText, DATA_BINDING_DATA_TYPE_INTEGER, DATA_BINDING_FLOW_ONE_WAY, DATA_BINDING_TRIGGER_EXPLICIT, null, null, null); + delete pContext; + + return r; +} + +void +DataBindingSample::OnActionPerformed(const Control& source, int actionId) +{ + DataBindingContext* pContext = GetDataBindingContextN(); + result r = E_SUCCESS; + switch (actionId) + { + case ID_BUTTON_UNBIND: + { + pContext->Unbind(L"bindingcount"); + break; + } + case ID_BUTTON_BIND: + { + pContext->Bind(L"bindingcount", L"Target", L"text", __bindIntegerToButtonText, DATA_BINDING_DATA_TYPE_INTEGER, DATA_BINDING_FLOW_ONE_WAY, DATA_BINDING_TRIGGER_EXPLICIT, null, null, null); + break; + } + case ID_BUTTON_UPDATE_BINDING: + { + r = pContext->UpdateBinding(L"bindingcount", DATA_BINDING_DESTINATION_TYPE_TARGET); + if (r == E_SUCCESS) + { + __bindIntegerToButtonText = __bindIntegerToButtonText.ToInt() + 1; + } + break; + } + default: + break; + } + delete pContext; + Invalidate(true); +} + * @endcode + * + */ +class _OSP_EXPORT_ DataBindingContext + : public Tizen::Base::Object +{ +public: + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~DataBindingContext(void); + +public: + /** + * Gets the owner of this data binding context. + * + * @since 2.0 + * + * @return The context owner + */ + Control* GetContextOwner(void) const; + + /** + * Binds the specified control's property and data source. + * + * @since 2.0 + * + * @return An error code + * @param[in] bindingId The binding ID + * @param[in] controlName The name of target property owner + * @param[in] propertyName The target property name + * @param[in] dataSource The data binding source + * @param[in] sourceType The data type of the @c dataSource + * @param[in] flow The data flow type + * @param[in] trigger The data binding trigger type + * @param[in] pListener The data binding listener + * @param[in] pValidator The data validator + * @param[in] pTransformer The data transformer + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @exception E_INVALID_ARG 1. sourceType is not of a supported type. + * 2. flow is not of a supported type. + * 3. trigger is not of a supported type. + * @exception E_OBJ_NOT_FOUND 1. The control named controlName does not exist. + * 2. The parameter "propertyName" is not found in control properties. + * @exception E_UNSUPPORTED_FORMAT The given transformer does not supported changing source type to target type. + * @exception E_UNSUPPORTED_OPERATION In this system, binding with the given trigger and flow is not supported. + * @remarks The propertyName parameter is defined in "UI Builder Guide". @n + * There is no duplication check for each binding ID. @n + * Please use a unique binding ID for each binding setting. + */ + result Bind(const Tizen::Base::String& bindingId, const Tizen::Base::String& controlName, const Tizen::Base::String& propertyName, Tizen::Base::Object& dataSource, DataBindingDataType sourceType, DataBindingFlow flow, DataBindingTrigger trigger, const IDataBindingListener* pListener, const IDataBindingDataValidator* pValidator, const IDataBindingDataTransformer* pTransformer = null); + + /** + * Sets the binding listener for the specified data binding. + * + * @since 2.0 + * + * @return An error code + * @param[in] bindingId The binding ID + * @param[in] pListener The data binding listener + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @exception E_OBJ_NOT_FOUND The given binding ID is not registered. + * @exception E_INVALID_ARG The given listener is not valid. + * @remarks If you give pListener parameter as 'null', the existing dataBindingEventListener will be removed. + */ + result SetDataBindingEventListener(const Tizen::Base::String& bindingId, IDataBindingListener* pListener); + + /** + * Unbinds all bindings that exist in this context. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result UnbindAll(void); + + /** + * Unbinds a binding that exists in this context. + * + * @since 2.0 + * + * @return An error code + * @param[in] bindingId The binding ID + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @exception E_OBJ_NOT_FOUND The given binding ID is not registered. + */ + result Unbind(const Tizen::Base::String& bindingId); + + /** + * Updates all 'explicit' data bindings. + * + * @since 2.0 + * + * @return An error code + * @param[in] destType The destination type + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @exception E_INVALID_ARG The specified @c destType is not of a supported type. + * @remarks If you have set a data binding listener, @n + * this function is returned after that listener is called. + * @see IDataBindingListener + */ + result UpdateAllBindings(DataBindingDestinationType destType); + + /** + * Updates the specified data binding. + * + * @since 2.0 + * + * @param[in] bindingId The binding ID + * @param[in] destType The destination type + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @exception E_OBJ_NOT_FOUND The given binding ID is not registered. + * @exception E_INVALID_OPERATION The given binding's trigger is not 'explicit' type. + * @exception E_INVALID_ARG The specified @c destType is not supported in binding ID. + * @remarks If you have set a data binding listener, @n + * this function is returned after that listener is called. + * @see IDataBindingListener + */ + result UpdateBinding(const Tizen::Base::String& bindingId, DataBindingDestinationType destType); + +private: + // + // This default constructor is intentionally declared as private so that only the platform can create an instance. + // + DataBindingContext(void); + + // + // This destructor is intentionally declared as private so that only the platform can delete an instance. + // + DataBindingContext(const Control& contextOwner); + + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + DataBindingContext(const DataBindingContext& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + DataBindingContext& operator =(const DataBindingContext& rhs); + +private: + _DataBindingContextImpl* __pDataBindingContextImpl; + + friend class _DataBindingContextImpl; + +}; // DataBindingContext + +} } // Tizen::Ui +#endif // _FUI_DATA_BINDING_CONTEXT_H_ diff --git a/inc/FUiDataBindingTypes.h b/inc/FUiDataBindingTypes.h new file mode 100644 index 0000000..2fb3bcb --- /dev/null +++ b/inc/FUiDataBindingTypes.h @@ -0,0 +1,92 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiDataBindingTypes.h + * @brief This is the header file for the data binding enumerations. + * + * This header file contains the declarations of the data binding enumerations. + */ + +#ifndef _FUI_DATA_BINDING_TYPES_H_ +#define _FUI_DATA_BINDING_TYPES_H_ + +namespace Tizen { namespace Ui +{ +/** + * @enum DataBindingFlow + * + * Defines the possible data flow types. + * + * @since 2.0 + */ +enum DataBindingFlow +{ + DATA_BINDING_FLOW_ONE_WAY = 0, /**< The data flow is one way from source to target */ + DATA_BINDING_FLOW_ONE_WAY_TO_SOURCE = 1, /**< The data flow is one way from target to source */ + DATA_BINDING_FLOW_TWO_WAY = 2 /**< The data flow is two way */ +}; + +/** + * @enum DataBindingTrigger + * + * Defines the possible data binding trigger types. + * + * @since 2.0 + */ +enum DataBindingTrigger +{ + DATA_BINDING_TRIGGER_IMMEDIATE = 0, /**< Immediate trigger */ + DATA_BINDING_TRIGGER_EXPLICIT = 1, /**< Explicit trigger */ +}; + +/** + * @enum DataBindingDataType + * + * Defines the possible data types for data binding source. + * + * @since 2.0 + */ +enum DataBindingDataType +{ + DATA_BINDING_DATA_TYPE_BOOLEAN = 0, /**< Boolean type */ + DATA_BINDING_DATA_TYPE_COLOR = 1, /**< Color type */ + DATA_BINDING_DATA_TYPE_DIMENSION = 2, /**< Dimension type */ + DATA_BINDING_DATA_TYPE_DOUBLE = 3, /**< Double type */ + DATA_BINDING_DATA_TYPE_FLOAT = 4, /**< Float type */ + DATA_BINDING_DATA_TYPE_INTEGER = 5, /**< Integer type */ + DATA_BINDING_DATA_TYPE_LONG = 6, /**< Long type */ + DATA_BINDING_DATA_TYPE_POINT = 7, /**< Point type */ + DATA_BINDING_DATA_TYPE_RECTANGLE = 8, /**< Rectangle type */ + DATA_BINDING_DATA_TYPE_STRING = 9 /**< String type */ +}; + +/** + * @enum DataBindingDestinationType + * + * Defines the possible destination types for explicit data bindings. + * + * @since 2.0 + */ +enum DataBindingDestinationType +{ + DATA_BINDING_DESTINATION_TYPE_SOURCE = 0, /**< Update source with latest data of associated target */ + DATA_BINDING_DESTINATION_TYPE_TARGET = 1 /**< Update target with latest data of associated source */ +}; + +}}// Tizen::Ui +#endif // _FUI_DATA_BINDING_TYPES_H_ diff --git a/inc/FUiEffects.h b/inc/FUiEffects.h new file mode 100644 index 0000000..345b69d --- /dev/null +++ b/inc/FUiEffects.h @@ -0,0 +1,60 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiEffects.h + * @brief This is the header file for the %Effects namespace. + * + * This header file contains the declarations and descriptions of the %Effects namespace. + */ +#ifndef _FUI_EFFECTS_H_ +#define _FUI_EFFECTS_H_ + +#include "FUiEffectsEffect.h" +#include "FUiEffectsEffectManager.h" +#include "FUiEffectsIEffectEventListener.h" +#include "FUiEffectsIEffectResourceProvider.h" +#include "FUiEffectsTypes.h" + +namespace Tizen +{ +namespace Ui +{ + +/** + * @namespace Tizen::Ui::Effects + * @brief This namespace contains the classes and interfaces for the effect-related functionalities. + * @since 2.0 + * + * @remarks @b Header @b %file: @b \#include @b @n + * @b Library : @b osp-uifw + * + * The %Effects namespace provides effect capabilities. + * + * For more information on the %Effects namespace features, see Effects Guide. + * + * The following diagram illustrates the relationships between the classes belonging to the %Effects namespace. + * + * @image html effects_namespace_classdiagram.png + * + */ + +namespace Effects +{ +}}} // Tizen::Ui::Effects + +#endif //_FUI_EFFECTS_H_ + diff --git a/inc/FUiEffectsEffect.h b/inc/FUiEffectsEffect.h new file mode 100644 index 0000000..322cc2d --- /dev/null +++ b/inc/FUiEffectsEffect.h @@ -0,0 +1,377 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** +* @file FUiEffectsEffect.h +* @brief This is the header file for the %Effect class. +* +* This header file contains the declarations of the %Effect class. +*/ + +#ifndef _FUI_EFFECTS_EFFECT_H_ +#define _FUI_EFFECTS_EFFECT_H_ + +#include +#include + + +namespace Tizen { namespace Base { +class String; +}} // Tizen::Base + +namespace Tizen { namespace Ui { +class TouchEventInfo; +class Control; +}} // Tizen::Ui + +namespace Tizen { namespace Graphics { +class Bitmap; +class Point; +}} // Tizen::Graphics + +namespace Tizen { namespace Base { namespace Collection { +class IList; +}}} // Tizen::Base::Collection + +namespace Tizen { namespace Ui { namespace Effects +{ +class IEffectEventListener; +class IEffectResourceProvider; +class _EffectImpl; + +/** +* @class Effect +* @brief This class contains API for managing effects. +* +* @since 2.0 +* +* The %Effect class contains API for managing effects. +*/ +class _OSP_EXPORT_ Effect + : public Tizen::Base::Object +{ +public: + /** + * Binds the effect to Tizen::UI::Control for rendering effect. + * + * @since 2.0 + * + * @return An error code + * @param [in] pControl Tizen::UI::Control whose content is filled by the effect + * @exception E_SUCCESS The specified effect is bound with @c control successfully. + * @exception E_OPERATION_FAILED The system has failed to initialize the 3D system. + * @exception E_IN_PROGRESS The specified effect is running now, setting, changing or resetting render target is impossible + */ + result SetRenderTarget(Tizen::Ui::Control* pControl); + + /** + * Starts the effect. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The specified effect is started successfully. + * @exception E_INVALID_STATE The specified effect has already started. + * @exception E_OPERATION_FAILED The specified effect has a runtime error in the script. + * @exception E_ALREADY_SET Other effects which use the same control as a render target are currently running. + */ + result Start(void); + + /** + * Starts the effect. + * + * @since 2.0 + * + * @return An error code + * @param [in] effectStartInfo A list of input arguments to be passed to the OnEffectStarted() method of the scripts @n + * All arguments must be represented in @c float data type. + * @exception E_SUCCESS The specified effect is started successfully. + * @exception E_INVALID_STATE The specified effect has already started. + * @exception E_OPERATION_FAILED The specified effect has a runtime error in the script. + * @exception E_ALREADY_SET Other effects which use the same control as a render target are currently running. + */ + result Start(const Tizen::Base::Collection::IList& effectStartInfo); + + /** + * Stops the effect. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The specified effect is stopped successfully. + * @exception E_INVALID_STATE The specified effect has not started as yet. + */ + result Stop(void); + + /** + * Informs the effect of a TouchPress event. + * + * @since 2.0 + * + * @return An error code + * @param [in] touchEventInfo The touch event information + * @param [in] offset The effect will regard the touch position in @c touchEventInfo translated by @c offset + * @exception E_SUCCESS The specified effect is successfully sent with a TouchPress event. + * @exception E_INVALID_STATE The specified effect has not started as yet. + * @exception E_OPERATION_FAILED There is a runtime error in the OnTouchPressed() script method or the effect is time-based. + */ + result FeedTouchPressEvent(const Tizen::Ui::TouchEventInfo& touchEventInfo, const Tizen::Graphics::Point& offset); + + /** + * Informs the effect of a TouchPress event. + * + * @since 2.0 + * + * @return An error code + * @param [in] touchEventInfo The touch event information + * @exception E_SUCCESS The specified effect is successfully sent with a TouchPress event. + * @exception E_INVALID_STATE The specified effect has not started as yet. + * @exception E_OPERATION_FAILED There is a runtime error in the OnTouchPressed() script method or the effect is time-based. + */ + result FeedTouchPressEvent(const Tizen::Ui::TouchEventInfo& touchEventInfo); + + /** + * Informs the effect of a TouchMove event. + * + * @since 2.0 + * + * @return An error code + * @param [in] touchEventInfo The touch event information + * @param [in] offset The effect will regard the touch position in @c touchEventInfo translated by @c offset + * @exception E_SUCCESS The specified effect is successfully sent with a TouchMove event. + * @exception E_INVALID_STATE The specified effect has not started as yet. + * @exception E_OPERATION_FAILED There is a runtime error in the OnTouchMoved() script method or the effect is time-based. + */ + result FeedTouchMoveEvent(const Tizen::Ui::TouchEventInfo& touchEventInfo, const Tizen::Graphics::Point& offset); + + /** + * Informs the effect of a TouchMove event. + * + * @since 2.0 + * + * @return An error code + * @param [in] touchEventInfo The touch event information + * @exception E_SUCCESS The specified effect is successfully sent with a TouchMove event. + * @exception E_INVALID_STATE The specified effect has not started as yet. + * @exception E_OPERATION_FAILED There is a runtime error in the OnTouchMoved() script method or the effect is time-based. + */ + result FeedTouchMoveEvent(const Tizen::Ui::TouchEventInfo& touchEventInfo); + + /** + * Informs the effect of a TouchRelease event. + * + * @since 2.0 + * + * @return An error code + * @param [in] touchEventInfo The touch event information + * @param [in] offset The effect will regard the touch position in @c touchEventInfo translated by @c offset + * @exception E_SUCCESS The specified effect is successfully sent with a TouchRelease event. + * @exception E_INVALID_STATE The specified effect has not started as yet. + * @exception E_OPERATION_FAILED There is a runtime error in the OnTouchReleased() script method or the effect is time-based. + */ + result FeedTouchReleaseEvent(const Tizen::Ui::TouchEventInfo& touchEventInfo, const Tizen::Graphics::Point& offset); + + /** + * Informs the effect of a TouchRelease event. + * + * @since 2.0 + * + * @return An error code + * @param [in] touchEventInfo The touch event information + * @exception E_SUCCESS The specified effect is successfully sent with a TouchRelease event. + * @exception E_INVALID_STATE The specified effect has not started as yet. + * @exception E_OPERATION_FAILED There is a runtime error in the OnTouchReleased() script method or the effect is time-based. + */ + result FeedTouchReleaseEvent(const Tizen::Ui::TouchEventInfo& touchEventInfo); + + /** + * Informs the effect of a TouchDoublePress event. + * + * @since 2.0 + * + * @return An error code + * @param [in] touchEventInfo The touch event information + * @param [in] offset The effect will regard the touch position in @c touchEventInfo translated by @c offset + * @exception E_SUCCESS The specified effect is successfully sent with a TouchDoublePress event. + * @exception E_INVALID_STATE The specified effect has not started as yet. + * @exception E_OPERATION_FAILED There is a runtime error in the OnTouchDoublePressed() script method or the effect is time-based. + */ + result FeedTouchDoublePressEvent(const Tizen::Ui::TouchEventInfo& touchEventInfo, const Tizen::Graphics::Point& offset); + + /** + * Informs the effect of a TouchDoublePress event. + * + * @since 2.0 + * + * @return An error code + * @param [in] touchEventInfo The touch event information + * @exception E_SUCCESS The specified effect is successfully sent with a TouchDoublePress event. + * @exception E_INVALID_STATE The specified effect has not started as yet. + * @exception E_OPERATION_FAILED There is a runtime error in the OnTouchDoublePressed() script method or the effect is time-based. + */ + result FeedTouchDoublePressEvent(const Tizen::Ui::TouchEventInfo& touchEventInfo); + + /** + * Sets the effect's bitmap that is used as a graphical surface in scripts. + * + * @since 2.0 + * + * @return An error code + * @param [in] bitmapId The bitmap ID to be updated + * @param [in] bitmap The bitmap content + * @exception E_SUCCESS The bitmap is updated successfully. + * @exception E_OPERATION_FAILED Updating the bitmap contents has failed. + */ + result SetBitmap(long bitmapId, const Tizen::Graphics::Bitmap& bitmap); + + /** + * Checks whether the effect is running. + * + * @since 2.0 + * + * @return @c true if the effect is running, @n + * else @c false + */ + bool IsRunning(void) const; + + /** + * Gets the effect type. + * + * @since 2.0 + * + * @return The type of effect + */ + EffectType GetType(void) const; + + /** + * Gets the name of the effect. + * + * @since 2.0 + * + * @return The name of the effect. + */ + Tizen::Base::String GetName(void) const; + + /** + * Sets the IEffectsEventListener instance to get notified when the state of the effect is changed. + * + * @since 2.0 + * + * @param [in] pListener The event listener to be set @n + * If @c pListener is @c null, the status changes of this instance are not notified anymore. + * @see GetEffectEventListener + */ + void SetEffectEventListener(IEffectEventListener* pListener); + + /** + * Gets the IEffectsEventListener instance that is registered to the instance. + * + * @since 2.0 + * + * @return The event listener + * + * @see SetEffectEventListener + */ + IEffectEventListener* GetEffectEventListener(void) const; + + /** + * Sets the IEffectsResourceProvider instance to get notified when resources are needed by the effect. + * + * @since 2.0 + * + * @param [in] pProvider The resource provider to provide the effect with bitmap resources @n + * If @c pProvider is @c null, this instance will not display effects correctly. + * + * @see GetResourceProvider + */ + void SetResourceProvider(IEffectResourceProvider* pProvider); + + /** + * Gets the IEffectsResourceProvider instance that is registered to the instance. + * + * @since 2.0 + * + * @return The resource provider + * + * @see SetResourceProvider + */ + IEffectResourceProvider* GetResourceProvider(void) const; + +protected: + /** + * This default constructor is intentionally declared as protected so that only the platform can create an instance. + * + * @since 2.0 + */ + Effect(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~Effect(void); + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void Effect_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void Effect_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void Effect_Reserved3(void) {} + +private: + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + Effect(const Effect& rhs); + + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + Effect& operator=(const Effect& rhs); + +private: + friend class _EffectManagerImpl; + friend class _EffectImpl; + _EffectImpl* __pEffectImpl; +}; //Effect + +}}} // Tizen::Ui::Effects + +#endif // _FUI_EFFECTS_EFFECT_H_ + diff --git a/inc/FUiEffectsEffectManager.h b/inc/FUiEffectsEffectManager.h new file mode 100644 index 0000000..9565c2d --- /dev/null +++ b/inc/FUiEffectsEffectManager.h @@ -0,0 +1,154 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** +* @file FUiEffectsEffectManager.h +* @brief This is the header file for the %EffectManager class. +* +* This header file contains the declarations of the %EffectManager class. +*/ + +#ifndef _FUI_EFFECTS_EFFECT_MANAGER_H_ +#define _FUI_EFFECTS_EFFECT_MANAGER_H_ + +#include +#include + + +namespace Tizen { namespace Base { +class String; +}} // Tizen::Base + + +namespace Tizen { namespace Ui { namespace Effects +{ + +class _EffectManagerImpl; +class Effect; + +/** + * @class EffectManager + * @brief This class contains API for managing effects. + * + * @since 2.0 + * + * The %EffectManager class contains API for managing effects. + */ +class _OSP_EXPORT_ EffectManager + : public Tizen::Base::Object +{ +public: + /** + * Gets the effect manager instance. + * + * @since 2.0 + * + * @return A pointer to the %EffectManager instance + * @exception E_SUCCESS The %EffectManager instance is constructed successfully. + * @exception E_OPERATION_FAILED The system has failed to initialize the 3D system. + */ + static EffectManager* GetInstance(void); + + /** + * Destroys all previously created effects and their resources. @n + * Application can use OpenGL APIs only after invoking this method. + * + * @since 2.0 + */ + static void DestroyInstance(void); + + /** + * Creates a new effect from the specified effect file. + * + * @since 2.0 + * + * @return A pointer to the Effect instance, @n + * else @c null if an error occurs + * @param [in] filePath The file path of the effect + * @exception E_SUCCESS The effect is created successfully. + * @exception E_FILE_NOT_FOUND The specified effect file does not exist. + * @exception E_PARSING_FAILED A syntax error exists in the effect file. + * @remarks The DestroyEffect() method must be used to destroy the Effect instance returned. + * @see DestroyEffect() + */ + Effect* CreateEffect(const Tizen::Base::String& filePath); + + /** + * Destroys the Effect instance. + * + * @since 2.0 + * + * @param [in] effect The Effect instance to be destroyed + * @see CreateEffect() + */ + void DestroyEffect(Effect& effect); + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void EffectManager_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void EffectManager_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void EffectManager_Reserved3(void) {} + +private: + // This default constructor is intentionally declared as private to implement the Singleton semantic. + EffectManager(void); + + // This destructor is intentionally declared as private to implement the Singleton semantic. + virtual ~EffectManager(void); + + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + EffectManager(const EffectManager& rhs); + + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + EffectManager& operator=(const EffectManager& rhs); + +private: + friend class _EffectManagerImpl; + _EffectManagerImpl* __pEffectManagerImpl; +}; //EffectManager + +}}} // Tizen::Ui::Effects + +#endif // _FUI_EFFECTS_EFFECT_MANAGER_H_ + diff --git a/inc/FUiEffectsIEffectEventListener.h b/inc/FUiEffectsIEffectEventListener.h new file mode 100644 index 0000000..e55c1c1 --- /dev/null +++ b/inc/FUiEffectsIEffectEventListener.h @@ -0,0 +1,141 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiEffectsIEffectEventListener.h + * @brief This is the header file for the %IEffectEventListener interface. + * + * This header file contains the declarations of the %IEffectEventListener interface. + */ + +#ifndef _FUI_EFFECTS_IEFFECT_LISTENER_H_ +#define _FUI_EFFECTS_IEFFECT_LISTENER_H_ + +#include +#include + +namespace Tizen { namespace Base { namespace Collection +{ +class IList; +}}} // Tizen::Base::Collection + +namespace Tizen { namespace Ui { namespace Effects +{ + +class Effect; + +/** + * @interface IEffectEventListener + * @brief This interface provides listeners for the effects. + * + * @since 2.0 + * + * This interface provides methods for notifying applications about the state change of the effects. + */ +class _OSP_EXPORT_ IEffectEventListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~IEffectEventListener(void) {} + + /** + * Called when the effect starts. + * + * @since 2.0 + * + * @param [in] effect The effect to be started. + */ + virtual void OnEffectStarted(Effect& effect) = 0; + + /** + * Called when the effect finishes. + * + * @since 2.0 + * + * @param [in] effect The effect that is finished + * @param [in] effectResult The result of the effect + * @param [in] lastShownBitmapIds A list of last shown bitmaps @n + The listener will be notified with the bitmaps shown at the last frame. + * The item type of @c lastShownBitmapIds is Tizen::Base::Long. + */ + virtual void OnEffectFinished(Effect& effect, Tizen::Ui::Effects::EffectResult effectResult, const Tizen::Base::Collection::IList& lastShownBitmapIds) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IEffectEventListener_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IEffectEventListener_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IEffectEventListener_Reserved3(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IEffectEventListener_Reserved4(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IEffectEventListener_Reserved5(void) {} +}; // IEffectEventListener + +}}} // Tizen::Ui::Effects + +#endif // _FUI_EFFECTS_IEFFECT_LISTENER_H_ + diff --git a/inc/FUiEffectsIEffectResourceProvider.h b/inc/FUiEffectsIEffectResourceProvider.h new file mode 100644 index 0000000..cc57332 --- /dev/null +++ b/inc/FUiEffectsIEffectResourceProvider.h @@ -0,0 +1,124 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiEffectsIEffectResourceProvider.h + * @brief This is the header file for the %IEffectResourceProvider interface. + * + * This header file contains the declarations of the %IEffectResourceProvider interface. + */ + +#ifndef _FUI_EFFECTS_IEFFECT_RESOURCE_PROVIDER_H_ +#define _FUI_EFFECTS_IEFFECT_RESOURCE_PROVIDER_H_ + +namespace Tizen { namespace Ui { namespace Effects +{ + +class Effect; + +/** + * @interface IEffectResourceProvider + * @brief This interface implements the listener for events on Effect to provide the effects with resources. + * + * @since 2.0 + * + * The %IEffectResourceProvider interface provides methods for notifying applications about the resources needed by the effects. + * Applications have to provide the effects with appropriate resources. + */ +class _OSP_EXPORT_ IEffectResourceProvider +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~IEffectResourceProvider(void) { } + + /** + * Called when the effect requires an image that is specified by its ID. + * + * @since 2.0 + * + * @return An error code + * @param [in,out] effect The effect that needs a bitmap. + * @param [in] bitmapId The bitmap ID needed. + * @remarks In general, EffectManager::SetBitmap should be used to provide this instance with a bitmap in this callback. + * @see Effect::SetBitmap() + */ + virtual result SetBitmap(Effect& effect, long bitmapId) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IEffectResourceProvider_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IEffectResourceProvider_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IEffectResourceProvider_Reserved3(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IEffectResourceProvider_Reserved4(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IEffectResourceProvider_Reserved5(void) {} +}; // IEffectResourceProvider + +}}} // Tizen::Ui::Effects + +#endif // _FUI_EFFECTS_IEFFECT_RESOURCE_PROVIDER_H_ + diff --git a/inc/FUiEffectsTypes.h b/inc/FUiEffectsTypes.h new file mode 100644 index 0000000..a12a62f --- /dev/null +++ b/inc/FUiEffectsTypes.h @@ -0,0 +1,63 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiEffectsTypes.h + * @brief This is the header for the effect-related types. + * + * This header file contains the declarations of the effect-related types. + */ +#ifndef _FUI_EFFECTS_TYPES_H_ +#define _FUI_EFFECTS_TYPES_H_ + +namespace Tizen { namespace Ui { namespace Effects +{ +/** + * @enum EffectType + * + * Defines the types of effects. + * + * @since 2.0 + */ +enum EffectType +{ + EFFECT_TYPE_TIME_BASED, /**< The effect model is not managed by user, that is, at the start of the effect @n + the final results and duration are known @n + For example, pressing the button leads to new form appearance with animation. */ + + EFFECT_TYPE_INTERACTIVE /**< The effect model is managed by user, that is, at the start of the effect it is @n + unknown when and how it will be finished */ +}; + + +/** + * @enum EffectResult + * + * Defines the result of effects. + * + * @since 2.0 + */ +enum EffectResult +{ + EFFECT_RESULT_INTERRUPTED = 1, /**< The effect is interrupted (stopped) with EffectsManager::StopEffect() */ + EFFECT_RESULT_FINISHED, /**< The effect is finished normally */ + EFFECT_RESULT_ERROR /**< There is an error during the execution of the effect */ +}; + +}}} // Tizen::Ui::Effects + +#endif // _FUI_EFFECTS_TYPES_H_ + diff --git a/inc/FUiFocusManager.h b/inc/FUiFocusManager.h new file mode 100644 index 0000000..1a9fa2a --- /dev/null +++ b/inc/FUiFocusManager.h @@ -0,0 +1,102 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiFocusManager.h + * @brief This is the header file for the %FocusManager class. + * + * This header file contains the declarations of the %FocusManager class. + */ + +#ifndef _FUI_FOCUS_MANAGER_H_ +#define _FUI_FOCUS_MANAGER_H_ + +#include + +namespace Tizen { namespace Ui +{ + +class Control; +class Window; + + +/** + * @class FocusManager + * @brief This class manages the current focus of the application owned by the UI control and its ancestor Window. + * + * @since 2.0 + * + * The %FocusManager class is used to query the application's current focus owner. + */ +class _OSP_EXPORT_ FocusManager + : public Tizen::Base::Object +{ +public: + /** + * Gets the pointer to the current focus manager. + * + * @since 2.0 + * + * @return The current focus manager instance + */ + static FocusManager* GetInstance(void); + + /** + * Gets the current focus owner. + * + * @since 2.0 + * + * @return The current focus owner + * @remarks The method returns the current focus owner of this application. + */ + Control* GetCurrentFocusOwner(void) const; + + /** + * Gets the current focused Window. + * + * @since 2.0 + * + * @return The current focused Window + * @remarks The method returns the application's current focus owner's ancestor Window or the %Window that is currently focused. + */ + Window* GetCurrentFocusedWindow(void) const; + +private: + // + // This default constructor is intentionally declared as private so that only the platform can create an instance. + // + FocusManager(void); + + // + // This destructor is intentionally declared as private so that only the platform can delete an instance. + // + virtual ~FocusManager(void); + + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + FocusManager(const FocusManager& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + FocusManager& operator=(const FocusManager& rhs); +}; // FocusManager + +}} // Tizen::Ui + +#endif // _FUI_FOCUS_MANAGER_H_ diff --git a/inc/FUiGridLayout.h b/inc/FUiGridLayout.h new file mode 100755 index 0000000..c6ee3ff --- /dev/null +++ b/inc/FUiGridLayout.h @@ -0,0 +1,460 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiGridLayout.h + * @brief This is the header file for the %GridLayout class. + * + * This header file contains the declarations of the %GridLayout class. + */ + +#ifndef _FUI_GRID_LAYOUT_H_ +#define _FUI_GRID_LAYOUT_H_ + +#include + +namespace Tizen { namespace Ui +{ +class Control; + +/** + * @class GridLayout + * @brief The grid layout positions the children of a container in a rectangular grid. + * + * @since 2.0 + * + * The %GridLayout class defines the grid layout for a Container. The layout positions the children of the %Container in a rectangular grid. + * @n + * For more information on the class features, see Grid Layout. + * + * @code +// Sample code for GridLayoutSample.h +#include + +class GridLayoutSample + : public Tizen::Ui::Controls::Form +{ +public: + bool Initialize(void); + virtual result OnInitializing(void); +}; + * @endcode + * + * @code +// Sample code for GridLayoutSample.cpp +#include + +#include "GridLayoutSample.h" + +using namespace Tizen::Graphics; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; + +bool +GridLayoutSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +GridLayoutSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of GridLayout + GridLayout gridPanelLayout; + gridPanelLayout.Construct(2, 3); + + // Creates an instance of Panel and applies it to grid layout + Panel* pPanel = new Panel(); + pPanel->Construct(gridPanelLayout, Rectangle((GetClientAreaBounds().width - 440)/2, (GetClientAreaBounds().height - 700)/2, 440, 700)); + { + // Creates instances of Label and an instanceo of Button + Label* pLabel1 = new Label(); + pLabel1->Construct(Rectangle(0, 0, 100, 200), L"Label1\n(0, 0)"); + pLabel1->SetBackgroundColor(Color(0x00, 0x10, 0x80, 0xFF)); + pPanel->AddControl(*pLabel1); + + Label* pLabel2 = new Label(); + pLabel2->Construct(Rectangle(0, 0, 100, 200), L"Label2\n(0, 1)"); + pLabel2->SetBackgroundColor(Color(0x00, 0x20, 0xA0, 0xFF)); + pPanel->AddControl(*pLabel2); + + Label* pLabel3 = new Label(); + pLabel3->Construct(Rectangle(0, 0, 100, 200), L"Label3\n(0, 2)"); + pLabel3->SetBackgroundColor(Color(0x00, 0x30, 0xC0, 0xFF)); + pPanel->AddControl(*pLabel3); + + Label* pLabel4 = new Label(); + pLabel4->Construct(Rectangle(0, 0, 100, 200), L"Label4\n(1, 0)"); + pLabel4->SetBackgroundColor(Color(0x00, 0x40, 0xE0, 0xFF)); + pPanel->AddControl(*pLabel4); + + Button* pButton = new Button(); + pButton->Construct(Rectangle(0, 0, 100, 200), L"Button\n(1, 1)"); + pPanel->AddControl(*pButton); + + // Sets position to each label and button in grid layout + gridPanelLayout.SetPosition(*pLabel1, 0, 0, 1, 1); + gridPanelLayout.SetPosition(*pLabel2, 0, 1, 1, 1); + gridPanelLayout.SetPosition(*pLabel3, 0, 2, 1, 1); + gridPanelLayout.SetPosition(*pLabel4, 1, 0, 1, 1); + gridPanelLayout.SetPosition(*pButton, 1, 1, 1, 2); + + // Sets stretchability each label and button in grid layout + gridPanelLayout.SetColumnStretchable(0, true); + gridPanelLayout.SetColumnStretchable(1, true); + gridPanelLayout.SetColumnStretchable(2, true); + gridPanelLayout.SetRowStretchable(1, true); + + // Sets spacing + gridPanelLayout.SetColumnSpacing(1, 10); + gridPanelLayout.SetRowSpacing(1, 10); + } + + // Adds the top panel to the form + AddControl(*pPanel); + + return r; +} + * @endcode + * + */ + +class _OSP_EXPORT_ GridLayout + : public Layout +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + * + * @remarks After creating an instance of this class, the Construct() method must be called explicitly to initialize this instance. + */ + GridLayout(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~GridLayout(void); + + /** + * Initializes this instance of %GridLayout with the specified parameters. + * + * @since 2.0 + * + * @return An error code + * @param[in] rowCount The number of rows + * @param[in] columnCount The number of columns + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified index is out of range. @n + * Either @c rowCount or @c columnCount is @c 0 or negative. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(int rowCount, int columnCount); + + /** + * Gets the type of the layout. + * + * @since 2.0 + * + * @return The layout type + */ + virtual LayoutType GetLayoutType(void) const; + + /** + * Gets the number of rows in a grid layout. + * + * @since 2.0 + * + * @return The number of rows + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + int GetRowCount(void) const; + + /** + * Gets the number of columns in a grid layout. + * + * @since 2.0 + * + * @return The number of columns + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + int GetColumnCount(void) const; + + /** + * Sets the stretching ability of the specified column. + * + * @since 2.0 + * + * @return An error code + * @param[in] columnIndex The column index + * @param[in] stretchable Set to @c true to make the column stretchable, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified index is out of range. + * @exception E_SYSTEM A system error has occurred. + */ + result SetColumnStretchable(int columnIndex, bool stretchable); + + /** + * Sets the shrinking ability of the specified column. + * + * @since 2.0 + * + * @return An error code + * @param[in] columnIndex The column index + * @param[in] shrinkable Set to @c true to make the column shrinkable, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified index is out of range. + * @exception E_SYSTEM A system error has occurred. + */ + result SetColumnShrinkable(int columnIndex, bool shrinkable); + + /** + * Sets the collapsibility of a column. + * + * @since 2.0 + * + * @return An error code + * @param[in] columnIndex The column index + * @param[in] collapsed Set to @c true to make the column collapsible, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified index is out of range. + * @exception E_SYSTEM A system error has occurred. + */ + result SetColumnCollapsed(int columnIndex, bool collapsed); + + /** + * Sets the stretching ability of all the columns. + * + * @since 2.0 + * + * @return An error code + * @param[in] stretchable Set to @c true to set all columns as stretchable, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetAllColumnsStretchable(bool stretchable); + + /** + * Sets the shrinking ability of all the columns. + * + * @since 2.0 + * + * @return An error code + * @param[in] shrinkable Set to @c true to set all columns as shrinkable, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetAllColumnsShrinkable(bool shrinkable); + + /** + * Sets the space before the specified column index. + * + * @since 2.0 + * + * @return An error code + * @param[in] columnIndex The column index + * @param[in] space An @c int representing the space + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_OUT_OF_RANGE The specified index is out of range. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method does not perform any operation if the value of @c columnIndex is 0. + * @remarks The column spacing cannot be applied to the first column. + */ + result SetColumnSpacing(int columnIndex, int space); + + /** + * Sets the stretching ability of the specified row. + * + * @since 2.0 + * + * @return An error code + * @param[in] rowIndex The row index + * @param[in] stretchable Set to @c true to make the row stretchable, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified index is out of range. + * @exception E_SYSTEM A system error has occurred. + */ + result SetRowStretchable(int rowIndex, bool stretchable); + + /** + * Sets the shrinking ability of the specified row. + * + * @since 2.0 + * + * @return An error code + * @param[in] rowIndex The row index + * @param[in] shrinkable Set to @c true to make the row shrinkable, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified index is out of range. + * @exception E_SYSTEM A system error has occurred. + */ + result SetRowShrinkable(int rowIndex, bool shrinkable); + + /** + * Sets the collapsibility of the specified row. + * + * @since 2.0 + * + * @return An error code + * @param[in] rowIndex The row index + * @param[in] collapsed Set to @c true to make the row as collapsible, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_RANGE The specified index is out of range. + * @exception E_SYSTEM A system error has occurred. + */ + result SetRowCollapsed(int rowIndex, bool collapsed); + + /** + * Sets the stretching ability of all the rows. + * + * @since 2.0 + * + * @return An error code + * @param[in] stretchable Set to @c true to set all the rows as stretchable, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetAllRowsStretchable(bool stretchable); + + /** + * Sets the shrinking ability of all the rows. + * + * @since 2.0 + * + * @return An error code + * @param[in] shrinkable Set to @c true to set all the rows as shrinkable, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result SetAllRowsShrinkable(bool shrinkable); + + /** + * Sets the space before the specified column index. + * + * @since 2.0 + * + * @return An error code + * @param[in] rowIndex The row index + * @param[in] space An @c int representing the space + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_OUT_OF_RANGE The specified index is out of range. + * @exception E_SYSTEM A system error has occurred. + * @remarks This method does not perform any operation if the value of @c rowIndex is @c 0. + * @remarks The row spacing cannot be applied to the first column. + */ + result SetRowSpacing(int rowIndex, int space); + + /** + * Sets the position and span of the control. @n + * Adds the control at the specified position. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control for which the position is set + * @param[in] rowStartIndex The row index + * @param[in] columnStartIndex The column index + * @param[in] rowSpan The row span specifies the total number of cells in a row that are to be merged into a cell + * @param[in] columnSpan The column span specifies the total number of cells in a column that are to be merged into a cell + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG Either of the following conditions has occurred: @n + * - A specified input parameter is invalid. @n + * - Either @c rowSpan or @c columnSpan is @c 0 or negative. @n + * - The specified @c childControl parameter is not a child of the container that owns the layout. @n + * - The specified span has tried to include a cell, which is already included in another span. + * @exception E_OUT_OF_RANGE The specified index is out of range, or @n + * the calculated range of the cell is out of the grid. + * @exception E_SYSTEM A system error has occurred. + */ + result SetPosition(Control& childControl, int rowStartIndex, int columnStartIndex, int rowSpan, int columnSpan); + + /** + * Sets the horizontal alignment and the vertical alignment. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control for which the alignment is set + * @param[in] horizontalAlignment The horizontal alignment + * @param[in] verticalAlignment The vertical alignment + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The specified @c childControl parameter is not a child of the container that owns the layout. + * @exception E_SYSTEM A system error has occurred. + * @remarks By default, the value of @c horizontalAlignment is HORIZONTAL_ALIGN_LEFT and the value of @c verticalAlignment is + * VERTICAL_ALIGN_TOP. + * The column width is set to the largest width amongst controls in the column, and the row height is set to the largest + * height amongst controls in the row. + * Therefore, the smaller controls have vertical or horizontal margins around them, and they are repositioned in cells + * according to the alignment options. + */ + result SetAlignment(Control& childControl, LayoutHorizontalAlignment horizontalAlignment, LayoutVerticalAlignment verticalAlignment); + + /** + * Sets the margins of the specified control. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control for which the margins are set + * @param[in] left The left margin + * @param[in] right The right margin + * @param[in] top The top margin + * @param[in] bottom The bottom margin + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. @n + * The specified @c childControl parameter is not a child of the container that owns the layout. + * @exception E_SYSTEM A system error has occurred. + * @remarks By default, the margins are set to @c 0. + */ + result SetMargin(Control& childControl, int left, int right, int top, int bottom); + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + GridLayout(const GridLayout& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + GridLayout& operator =(const GridLayout& rhs); +}; // GridLayout + +}} // Tizen::Ui + +#endif // _FUI_GRID_LAYOUT_H_ diff --git a/inc/FUiHorizontalBoxLayout.h b/inc/FUiHorizontalBoxLayout.h new file mode 100755 index 0000000..275b2c1 --- /dev/null +++ b/inc/FUiHorizontalBoxLayout.h @@ -0,0 +1,361 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiHorizontalBoxLayout.h + * @brief This is the header file for the %HorizontalBoxLayout class. + * + * This header file contains the declarations of the %HorizontalBoxLayout class. + */ + +#ifndef _FUI_HORIZONTAL_BOX_LAYOUT_H_ +#define _FUI_HORIZONTAL_BOX_LAYOUT_H_ + +#include + +namespace Tizen { namespace Ui +{ +class Control; + +/** + * @class HorizontalBoxLayout + * @brief The horizontal box layout positions the children of a container horizontally. + * + * @since 2.0 + * + * The %HorizontalBoxLayout class defines the horizontal box layout for a Container. The layout positions the children of the %Container horizontally. + * @n + * For more information on the class features, see Vertical and Horizontal Box Layouts. + * + * @code +// Sample code for HorizontalBoxLayoutSample.h +#include + +class HorizontalBoxLayoutSample + : public Tizen::Ui::Controls::Form +{ +public: + bool Initialize(void); + virtual result OnInitializing(void); +}; + * @endcode + * + * @code +// Sample code for HorizontalBoxLayoutSample.cpp +#include + +#include "HorizontalBoxLayoutSample.h" + +using namespace Tizen::Ui::Controls; +using namespace Tizen::Ui; +using namespace Tizen::Graphics; + +bool +HorizontalBoxLayoutSample::Initialize(void) +{ + //Creates an instance of VerticalBoxLayout + VerticalBoxLayout formLayout; + formLayout.Construct(VERTICAL_DIRECTION_DOWNWARD); + + // Applies the vertical box layout to the form + Construct(formLayout, FORM_STYLE_NORMAL); + return true; +} + +result +HorizontalBoxLayoutSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of HorizontalBoxLayout for the top panel + HorizontalBoxLayout topPanelLayout; + topPanelLayout.Construct(HORIZONTAL_DIRECTION_RIGHTWARD); + + // Creates an instance of Panel and applies it to the horizontal box layout + Panel* pTopPanel = new Panel(); + pTopPanel->Construct(topPanelLayout, Rectangle(0, 0, GetClientAreaBounds().width, 450)); + { + // Creates instances of Label and an instance of Button + Label* pLabel1 = new Label(); + pLabel1->Construct(Rectangle(0,0,GetClientAreaBounds().width/4,100), L"TOP"); + pLabel1->SetTextConfig(20, LABEL_TEXT_STYLE_NORMAL); + pLabel1->SetBackgroundColor(Color(0x00, 0x10, 0x80, 0xFF)); + pTopPanel->AddControl(*pLabel1); + + Label* pLabel2 = new Label(); + pLabel2->Construct(Rectangle(0,0,GetClientAreaBounds().width/4,100), L"MIDDLE"); + pLabel2->SetTextConfig(20, LABEL_TEXT_STYLE_NORMAL); + pLabel2->SetBackgroundColor(Color(0x00, 0x20, 0xA0, 0xFF)); + pTopPanel->AddControl(*pLabel2); + + Label* pLabel3 = new Label(); + pLabel3->Construct(Rectangle(0,0,GetClientAreaBounds().width/4,100), L"BOTTOM"); + pLabel3->SetTextConfig(20, LABEL_TEXT_STYLE_NORMAL); + pLabel3->SetBackgroundColor(Color(0x00, 0x30, 0xC0, 0xFF)); + pTopPanel->AddControl(*pLabel3); + + Button* pButton = new Button(); + pButton->Construct(Rectangle(0,0,GetClientAreaBounds().width/4 - 10,100), L"FIT\nTO\nPARENT"); + pButton->SetTextSize(20); + pTopPanel->AddControl(*pButton); + + // Sets relations each label and button + topPanelLayout.SetVerticalAlignment(*pLabel1, LAYOUT_VERTICAL_ALIGN_TOP); + topPanelLayout.SetVerticalAlignment(*pLabel2, LAYOUT_VERTICAL_ALIGN_MIDDLE); + topPanelLayout.SetVerticalAlignment(*pLabel3, LAYOUT_VERTICAL_ALIGN_BOTTOM); + topPanelLayout.SetSpacing(*pButton, 10); + topPanelLayout.SetVerticalFitPolicy(*pButton, FIT_POLICY_PARENT); + } + // Adds the top panel to the form + AddControl(*pTopPanel); + + // Creates an instance of HorizontalBoxLayout for bottom panel + HorizontalBoxLayout bottomPanelLayout; + bottomPanelLayout.Construct(HORIZONTAL_DIRECTION_RIGHTWARD); + + // Creates an instance of Panel and applies it to the horizontal box layout + Panel* pBottomPanel = new Panel(); + pBottomPanel->Construct(bottomPanelLayout, Rectangle(0, 0, 400, 500)); + { + // Creates instances of Label + Label* pLabel1 = new Label(); + pLabel1->Construct(Rectangle(0,0,30,100), L"W\n1.0f"); + pLabel1->SetBackgroundColor(Color(0x00, 0x10, 0x80, 0xFF)); + pBottomPanel->AddControl(*pLabel1); + + Label* pLabel2 = new Label(); + pLabel2->Construct(Rectangle(0,0,30,100), L"W\n2.0f"); + pLabel2->SetBackgroundColor(Color(0x00, 0x20, 0xA0, 0xFF)); + pBottomPanel->AddControl(*pLabel2); + + Label* pLabel3 = new Label(); + pLabel3->Construct(Rectangle(0,0,30,100), L"W\n3.0f"); + pLabel3->SetBackgroundColor(Color(0x00, 0x30, 0xC0, 0xFF)); + pBottomPanel->AddControl(*pLabel3); + + // Sets relations each label + bottomPanelLayout.SetVerticalFitPolicy(*pLabel1, FIT_POLICY_PARENT); + bottomPanelLayout.SetVerticalFitPolicy(*pLabel2, FIT_POLICY_PARENT); + bottomPanelLayout.SetVerticalFitPolicy(*pLabel3, FIT_POLICY_PARENT); + bottomPanelLayout.SetWeight(*pLabel1, 1.0f); + bottomPanelLayout.SetWeight(*pLabel2, 2.0f); + bottomPanelLayout.SetWeight(*pLabel3, 3.0f); + } + + // Adds the bottom panel to the form + AddControl(*pBottomPanel); + + //Gets the layout of the form + VerticalBoxLayout* pFormLayout = dynamic_cast(this->GetLayoutN()); + + // Sets relations between panels + pFormLayout->SetHorizontalFitPolicy(*pTopPanel, FIT_POLICY_PARENT); + pFormLayout->SetSpacing(*pBottomPanel, 30); + pFormLayout->SetHorizontalFitPolicy(*pBottomPanel, FIT_POLICY_PARENT); + + return r; +} + * @endcode + * + */ + +class _OSP_EXPORT_ HorizontalBoxLayout + : public Layout +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + * + * @remarks After creating an instance of this class, the Construct() method must be called explicitly to initialize this instance. + */ + HorizontalBoxLayout(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~HorizontalBoxLayout(void); + + /** + * Initializes this instance of %HorizontalBoxLayout with the specified parameter. + * + * @since 2.0 + * + * @return An error code + * @param[in] direction The direction in which the children are attached + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(HorizontalDirection direction); + + /** + * Gets the direction of %HorizontalBoxLayout. + * + * @since 2.0 + * + * @return An error code + * @param[out] direction The direction in which the children are attached + * @exception E_SUCCESS The method is successful. + */ + result GetDirection(HorizontalDirection& direction) const; + + /** + * Gets the type of the layout. + * + * @since 2.0 + * + * @return The layout type + */ + virtual LayoutType GetLayoutType(void) const; + + /** + * Sets the vertical alignment of the specified control. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control for which the alignment is set + * @param[in] alignment The vertical alignment + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c childControl parameter is not a child of the container that owns the layout. + * @exception E_SYSTEM A system error has occurred. + * @remarks By default, the horizontal alignment is VERTICAL_ALIGN_TOP. + */ + result SetVerticalAlignment(Control& childControl, LayoutVerticalAlignment alignment); + + /** + * Sets the space between the specified control and its predecessor. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control for which the space is set + * @param[in] space The space + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c childControl parameter is not a child of the container that owns the layout. + * @exception E_SYSTEM A system error has occurred. + * @remarks By default, the spacing is set to @c 0. + */ + result SetSpacing(Control& childControl, int space); + + /** + * Sets the vertical margins of the specified control. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control for which the margins are set + * @param[in] top The top margin + * @param[in] bottom The bottom margin + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c childControl parameter is not a child of the container that owns the layout. + * @exception E_SYSTEM A system error has occurred. + * @remarks By default, the margins are set to @c 0. + */ + result SetVerticalMargin(Control& childControl, int top, int bottom); + + /** + * Sets the width of the specified control with the fixed length. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control for which the width is set + * @param[in] width The value of the width + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c childControl parameter is not a child of the container that owns the layout. + * @exception E_SYSTEM A system error has occurred. + */ + result SetWidth(Control& childControl, int width); + + /** + * Sets the width of the specified control with the fitting policy. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control for which the width is set + * @param[in] policy The fitting policy for the width + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c childControl parameter is not a child of the container that owns the layout. + * @exception E_SYSTEM A system error has occurred. + * @remarks Setting FIT_POLICY_PARENT as @c policy does not cause the width of control to change. + */ + result SetHorizontalFitPolicy(Control& childControl, FitPolicy policy); + + /** + * Sets the height of the specified control with a fixed length. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control for which the height is set + * @param[in] height The value of the height + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c childControl parameter is not a child of the container that owns the layout. + * @exception E_SYSTEM A system error has occurred. + */ + result SetHeight(Control& childControl, int height); + + /** + * Sets the height of the specified control with the fitting policy. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control for which the height is set + * @param[in] policy The fitting policy for the height + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c childControl parameter is not a child of the container that owns the layout. + * @exception E_SYSTEM A system error has occurred. + */ + result SetVerticalFitPolicy(Control& childControl, FitPolicy policy); + + /** + * Sets the weight of the specified control. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control for which the weight is set + * @param[in] weight The weight that indicates how much extra space the control occupies in proportion to it, in the %HorizontalBoxLayout + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c childControl parameter is not a child of the container that owns the layout. + * @exception E_SYSTEM A system error has occurred. + * @remarks By default, the weight is set to @c 0.0f. + */ + result SetWeight(Control& childControl, float weight); + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + HorizontalBoxLayout(const HorizontalBoxLayout& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + HorizontalBoxLayout& operator =(const HorizontalBoxLayout& rhs); +}; // HorizontalBoxLayout + +}} // Tizen::Ui + +#endif // _FUI_HORIZONTAL_BOX_LAYOUT_H_ diff --git a/inc/FUiIAccessibilityListener.h b/inc/FUiIAccessibilityListener.h new file mode 100644 index 0000000..5103004 --- /dev/null +++ b/inc/FUiIAccessibilityListener.h @@ -0,0 +1,142 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiIAccessibilityListener.h + * @brief This is the header file for the IAccessibilityListener interface. + * + * This header file contains the declarations of the IAccessibilityListener interface.. + */ + +#ifndef _FUI_IACCESSIBILITY_LISTENER_H_ +#define _FUI_IACCESSIBILITY_LISTENER_H_ + +#include +#include +#include + +namespace Tizen { namespace Ui +{ +class AccessibilityElement; +class Control; + +/** + * @interface IAccessibilityListener + * @brief This interface is the listener interface for accessibility screen reader + * + * @since 2.0 + * + * This %IAccessibilityListener defines methods for accessibility screen reader + * + */ +class _OSP_EXPORT_ IAccessibilityListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~IAccessibilityListener(void) {} + + /** + * Notifies when the accessibility element gets a focus. + * + * @since 2.0 + * @param[in] control The control that has a accessibility element. + * @param[in] element The element. + */ + virtual void OnAccessibilityFocusIn(const Control& control, const AccessibilityElement& element) = 0; + + /** + * Notifies when the accessibility element losts a focus. + * + * @since 2.0 + * @param[in] control The control that has a accessibility element. + * @param[in] element The element. + */ + virtual void OnAccessibilityFocusOut(const Control& control, const AccessibilityElement& element) = 0; + + /** + * Notifies when the accessibility element is operated. + * + * @since 2.0 + * @param[in] control The control that has a accessibility element. + * @param[in] element The element. + */ + virtual void OnAccessibilityActionPerformed(const Control& control, const AccessibilityElement& element) = 0; + + /** + * Notifies when the accessibility screen status is changed. + * + * @since 2.0 + * @param[in] control The control that has a accessibility element. + * @param[in] element The focused element. + * @param[in] status The changed status. + */ + virtual void OnAccessibilityScreenReaderStatusChanged(const Control& control, const AccessibilityElement& element, AccessibilityScreenReaderStatus status) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Following method is reserved and may change its name at any time without + // prior notice. + // + virtual void IAccessibilityListener_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Following method is reserved and may change its name at any time without + // prior notice. + // + virtual void IAccessibilityListener_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Following method is reserved and may change its name at any time without + // prior notice. + // + virtual void IAccessibilityListener_Reserved3(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Following method is reserved and may change its name at any time without + // prior notice. + // + virtual void IAccessibilityListener_Reserved4(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Following method is reserved and may change its name at any time without + // prior notice. + // + virtual void IAccessibilityListener_Reserved5(void) {} +}; // IAccessibilityListener + +}} // Tizen::Ui +#endif // _FUI_IACCESSIBILITY_LISTENER_H_ diff --git a/inc/FUiIActionEventListener.h b/inc/FUiIActionEventListener.h new file mode 100644 index 0000000..23ab583 --- /dev/null +++ b/inc/FUiIActionEventListener.h @@ -0,0 +1,109 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiIActionEventListener.h + * @brief This is the header file for the %IActionEventListener interface. + * + * This header file contains the declarations of the IActionEventListener interface. @n + * If an action event is generated, a method of this interface is called. @n + * So, for tasks related to the action event, use the methods of this interface. + * + */ +#ifndef _FUI_IACTION_EVENT_LISTENER_H_ +#define _FUI_IACTION_EVENT_LISTENER_H_ + +#include "FBaseRtIEventListener.h" + +namespace Tizen { namespace Ui +{ +class Control; +}} // Tizen::Ui + +namespace Tizen {namespace Ui +{ +/** + * @interface IActionEventListener + * @brief This interface implements the listener for action event. + * + * @since 2.0 + * + * The %IActionEventListener interface is the listener interface for receiving action events, for example, from Buttons. + * The class that processes an action event + * implements this interface, and the instance created with that class is registered with a UI control, using the control's + * AddActionEventListener() method. When the action event occurs, the OnActionPerformed() method of that instance is invoked. + * @n + * For more information on the class features, see in individual control topics under UI Controls. + */ +class _OSP_EXPORT_ IActionEventListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~IActionEventListener(void) {} + + /** + * Called when an action event occurs. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] actionId The information about the action event + */ + virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IActionEventListener_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IActionEventListener_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IActionEventListener_Reserved3(void) {} +}; // IActionEventListener + +}} // Tizen::Ui + +#endif // _FUI_IACTION_EVENT_LISTENER_H_ diff --git a/inc/FUiIAdjustmentEventListener.h b/inc/FUiIAdjustmentEventListener.h new file mode 100644 index 0000000..49771e0 --- /dev/null +++ b/inc/FUiIAdjustmentEventListener.h @@ -0,0 +1,110 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiIAdjustmentEventListener.h + * @brief This is the header file for the %IAdjustmentEventListener interface. + * + * This header file contains the declarations of the %IAdjustmentEventListener interface. @n + * If a change event is generated, a method of this interface is called. @n + * So, for tasks related to change events, use the methods of this interface. + * + */ +#ifndef _FUI_IADJUSTMENT_EVENT_LISTENER_H_ +#define _FUI_IADJUSTMENT_EVENT_LISTENER_H_ + +#include +#include + +namespace Tizen {namespace Ui +{ +class Control; + +/** + * @interface IAdjustmentEventListener + * @brief This interface implements the listener for adjustment events. + * + * @since 2.0 + * + * The %IAdjustmentEventListener interface is the listener interface for receiving adjustment events, which + * are fired when the knob of a Slider moves. The class that processes an adjustment event implements this interface, and the + * instance created with that class is registered with a UI control, using the control's AddAdjustmentEventListener() method. + * When the adjustment event occurs, the OnAdjustmentValueChanged() method of that instance is invoked. + * @n + * For more information on the class features, see Slider. + + */ +class IAdjustmentEventListener + : public Tizen::Base::Runtime::IEventListener +{ +// Operation +public: + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~IAdjustmentEventListener(void) {} + + /** + * Called when a change event occurs. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] adjustment The adjustment value + */ + virtual void OnAdjustmentValueChanged(const Tizen::Ui::Control& source, int adjustment) = 0; + +protected: + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // without prior notice. + // + // @since 2.0 + // + virtual void IAdjustmentEventListener_Reserved1(void) {} + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // without prior notice. + // + // @since 2.0 + // + virtual void IAdjustmentEventListener_Reserved2(void) {} + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // without prior notice. + // + // @since 2.0 + // + virtual void IAdjustmentEventListener_Reserved3(void) {} + +}; // IAdjustmentEventListener + +}} // Tizen::Ui + +#endif // _FUI_IADJUSTMENT_EVENT_LISTENER_H_ diff --git a/inc/FUiIAnimationEventListener.h b/inc/FUiIAnimationEventListener.h new file mode 100644 index 0000000..4151466 --- /dev/null +++ b/inc/FUiIAnimationEventListener.h @@ -0,0 +1,111 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiIAnimationEventListener.h + * @brief This is the header file for the %IAnimationEventListener interface. + * + * This header file contains the declarations of the %IAnimationEventListener interface. + * If a change event is generated, a method of this interface is called. + * So, for tasks related to change events, use the methods of this interface. + * + */ +#ifndef _FUI_IANIMATION_EVENT_LISTENER_H_ +#define _FUI_IANIMATION_EVENT_LISTENER_H_ + +#include +#include + +namespace Tizen { namespace Ui +{ + +class Control; + +/** + * @interface IAnimationEventListener + * @brief This interface implements the listener for animation events. + * + * @since 2.0 + * + * The %IAnimationEventListener interface is the listener interface for receiving animation events. + * The class that processes an animation event implements this interface, and the instance created with that class is registered + * with a UI control, using the control's @ref Tizen::Ui::Controls::Animation::AddAnimationEventListener() method. When the animation event occurs, the + * @ref OnAnimationStopped() method of that instance is invoked. + * @n + * For more information on the class features, see Animation. + * + * + */ +class IAnimationEventListener + : public Tizen::Base::Runtime::IEventListener +{ + +public: + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~IAnimationEventListener(void) {} + + /** + * Called when the animation is stopped. + * + * @since 2.0 + * + * @param[in] source The source of the event + */ + virtual void OnAnimationStopped(const Tizen::Ui::Control& source) = 0; + +protected: + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // without prior notice. + // + // @since 2.0 + // + virtual void IAnimationEventListener_Reserved1(void) {} + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // without prior notice. + // + // @since 2.0 + // + virtual void IAnimationEventListener_Reserved2(void) {} + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // without prior notice. + // + // @since 2.0 + // + virtual void IAnimationEventListener_Reserved3(void) {} + +}; // IAnimationEventListener + +}} // Tizen::Ui + +#endif // _FUI_IANIMATION_EVENT_LISTENER_H_ diff --git a/inc/FUiIClipboard.h b/inc/FUiIClipboard.h new file mode 100644 index 0000000..0b5f2cf --- /dev/null +++ b/inc/FUiIClipboard.h @@ -0,0 +1,152 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiIClipboard.h + * @brief This is the header file for the %IClipboard interface. + * + * This header file contains the declarations of the %IClipboard interface and its helper classes. + */ + +#ifndef _FUI_ICLIPBOARD_H_ +#define _FUI_ICLIPBOARD_H_ + +#include + +namespace Tizen { namespace Ui +{ +// +// This class is for internal use only. Using this method can cause behavioral, security-related, +// and consistency-related issues in the application. +// +// @interface IClipboard +// @brief This interface defines the operations of %IClipboard. +// +// @since 2.0 +// +// The %IClipboard interface defines the operations of clipboard. +class _OSP_EXPORT_ IClipboard +{ +public: + // + // This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + // + // @since 2.0 + // + virtual ~IClipboard(void) {} + +public: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Copies the specified item to the system Clipboard. + // + // @since 2.0 + // + // @return An error code + // @param[in] item The item to be saved in the system clipboard + // @exception E_SUCCESS The method is successful. + // @exception E_INVALID_ARG A specified input parameter is invalid. + // @exception E_SYSTEM A system error has occurred. + // @remarks The method returns E_INVALID_ARG if the specified item is + // not constructed.@n + // For the text and image data type, the data itself is copied + // by the method and kept by the system clipboard. + // + virtual result CopyItem(const ClipboardItem& item) = 0; + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Gets a collection of items that matches the specified data types from the + // system clipboard. + // + // @since 2.0 + // + // @return The pointer to an IList which contains a collection of ClipboardItem, @n + // else @c null if an error occurs + // @param[in] dataTypes The types of items. Multiple data types can be + // combined using bitwise OR (Tizen::Ui::ClipboardDataType). + // @exception E_SUCCESS The method is successful. + // @exception E_OBJ_NOT_FOUND The items of the specified data are not found. + // @exception E_SYSTEM A system error has occurred. + // @remarks The specific error code can be accessed using the GetLastResult() method. @n + // This method returns the pointer to an IList which contains + // a collection of ClipboardItem. The returned pointer to IList + // and all elements in IList must be deleted by applications.@n + // The items in IList are sorted in the reverse order in which + // they are copied to the system clipboard. So, the first + // item in IList is the latest one among them. @n + // @c dataType can be a combination of ClipboardDataType. + // + virtual Tizen::Base::Collection::IList* RetrieveItemsN(unsigned long dataTypes) = 0; + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Gets the latest item for the specified data types from the system clipboard. + // + // @since 2.0 + // + // @return The pointer to a ClipboardItem, @n + // else @c null if an error occurs + // @param[in] dataTypes The types of items. Multiple data types can be + // combined using bitwise OR (Tizen::Ui::ClipboardDataType). + // @exception E_SUCCESS The method is successful. + // @exception E_OBJ_NOT_FOUND The item of the specified data types is not found. + // @exception E_SYSTEM A system error has occurred. + // @remarks The specific error code can be accessed using the GetLastResult() method. @n + // This method returns the pointer to a ClipboardItem. The + // returned ClipboardItem must be deleted by applications.@n + // If there is no matched item in the system clipboard, this method + // returns @c null. @n + // @c dataType can be a combination of ClipboardDataType. + // + virtual Tizen::Ui::ClipboardItem* RetrieveLatestItemN(unsigned long dataTypes) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void IClipboard_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void IClipboard_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void IClipboard_Reserved3(void) {} +}; // IClipboard + +}} // Tizen::Ui + +#endif //_FUI_ICLIPBOARD_H_ diff --git a/inc/FUiIClipboardPopupEventListener.h b/inc/FUiIClipboardPopupEventListener.h new file mode 100644 index 0000000..b6ab9cc --- /dev/null +++ b/inc/FUiIClipboardPopupEventListener.h @@ -0,0 +1,97 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiIClipboardPopupEventListener.h + * @brief This is the header file for the %IClipboardPopupEventListener interface. + * + * This header file contains the declarations of the %IClipboardPopupEventListener interface. @n + * If the item event is generated, a method of this interface will be called. @n + * The applications that perform tasks related to the item event, must call methods of this interface. + */ + +#ifndef _FUI_ICLIPBOARD_POPUP_EVENT_LISTENER_H_ +#define _FUI_ICLIPBOARD_POPUP_EVENT_LISTENER_H_ + +#include + +namespace Tizen { namespace Ui +{ +class ClipboardItem; + +/** + * @interface IClipboardPopupEventListener + * @brief This interface defines the listener for clipboard pop-up events. + * + * @since 2.0 + * + * The %IClipboardPopupEventListener interface is the listener interface for receiving clipboard pop-up events. + * @n + * For more information on the class features, see Clipboard. + */ +class _OSP_EXPORT_ IClipboardPopupEventListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~IClipboardPopupEventListener(void) {} + + /** + * Called when the clipboard popup is closed by user interaction. + * + * @since 2.0 + * + * @param[in] pClipboardItem The pointer to ClipboardItem that + * is selected, @n + * else @c null if no item is selected + * @remarks @c pClipboardItem is deleted by the system after this method call. + */ + virtual void OnClipboardPopupClosed(const ClipboardItem* pClipboardItem) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void IClipboardPopupEventListener_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void IClipboardPopupEventListener_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void IClipboardPopupEventListener_Reserved3(void) {} +}; // IClipboardPopupEventListener + +}} // Tizen::Ui + +#endif //_FUI_ICLIPBOARD_POPUP_EVENT_LISTENER_H_ diff --git a/inc/FUiIColorChangeEventListener.h b/inc/FUiIColorChangeEventListener.h new file mode 100644 index 0000000..06634f3 --- /dev/null +++ b/inc/FUiIColorChangeEventListener.h @@ -0,0 +1,114 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiIColorChangeEventListener.h + * @brief This is the header file for the %IColorChangeEventListener interface. + * + * This header file contains the declarations of the %IColorChangeEventListener interface. + * If a change event is generated, a method of this interface is called. + * So, for tasks related to change events, use the methods of this interface. + * + */ +#ifndef _FUI_ICOLOR_CHANGE_EVENT_LISTENER_H_ +#define _FUI_ICOLOR_CHANGE_EVENT_LISTENER_H_ + +#include +#include + +namespace Tizen { namespace Graphics +{ +class Color; +}} // Tizen::Graphics; + +namespace Tizen { namespace Ui +{ + +class Control; + +/** + * @interface IColorChangeEventListener + * @brief This interface implements the listener for the color change events. + * + * @since 2.0 + * + * The %IColorChangeEventListener interface is the listener interface for receiving color change events. + * The class that processes a color change event implements this interface, and the instance created with that class is + * registered with a UI control, using the control's AddColorChangeEventListener() method. When the color change event occurs, + * the OnColorChanged() method of that instance is invoked. + * @n + * For more information on the class features, see ColorPicker. + */ +class IColorChangeEventListener + : public Tizen::Base::Runtime::IEventListener +{ +public: + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~IColorChangeEventListener(void) {} + + /** + * Called when there is a change in Color. @n + * The %Color instance is passed as an input parameter. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] color The color + */ + virtual void OnColorChanged(const Tizen::Ui::Control& source, const Tizen::Graphics::Color& color) = 0; + +protected: + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IColorChangeEventListener_Reserved1(void) {} + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IColorChangeEventListener_Reserved2(void) {} + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IColorChangeEventListener_Reserved3(void) {} +}; // IColorChangeEventListener + +}} // Tizen::Ui + +#endif // _FUI_ICOLOR_CHANGE_EVENT_LISTENER_H_ diff --git a/inc/FUiICustomItemEventListener.h b/inc/FUiICustomItemEventListener.h new file mode 100644 index 0000000..46bb675 --- /dev/null +++ b/inc/FUiICustomItemEventListener.h @@ -0,0 +1,115 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiICustomItemEventListener.h + * @brief This is the header file for the %ICustomItemEventListener interface. + * + * This header file contains the declarations of the ICustomItemEventListener interface. @n + * If an item event is generated, a method of this interface is called. @n + * Application doing tasks related to the item event use the methods of this interface. + * + */ +#ifndef _FUI_ICUSTOM_ITEM_EVENT_LISTENER_H_ +#define _FUI_ICUSTOM_ITEM_EVENT_LISTENER_H_ + +#include +#include + +namespace Tizen { namespace Ui +{ +class Control; +} } + +namespace Tizen {namespace Ui +{ + +/** + * @if OSPDEPREC + * @interface ICustomItemEventListener + * @brief [Deprecated] This interface implements the listener for the item event. + * + * @deprecated This class is deprecated. Instead of using this class, use IListViewItemEventListener class. + * @since 2.0 + * + * The %ICustomItemEventListener interface is the listener interface for receiving item events. The class that processes an item event + * implements this interface, and the instance created with that class is registered with a UI control, using the control's + * AddCustomItemEventListener() method. When the item event occurs, the OnItemStateChanged() method of that object is invoked. + * @endif + */ +class _OSP_EXPORT_ ICustomItemEventListener + : public Tizen::Base::Runtime::IEventListener +{ +// Operation +public: + /** + * @if OSPDEPREC + * This is the destructor for this class. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use IListViewItemEventListener class. + * @since 2.0 + * @endif + */ + virtual ~ICustomItemEventListener(void) {} + + /** + * @if OSPDEPREC + * Called when the state of CustomListItem is changed. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use IListViewItemEventListener class. + * @since 2.0 + * + * @param[in] source The source control from which the event is fired + * @param[in] index The index of the item + * @param[in] itemId The item ID + * @param[in] status The state of the item + * @remarks Implement this method in a class which derives %ICustomItemEventListener to handle the user interaction at the CustomListItem. + * @remarks If CustomList is constructed with CUSTOM_LIST_STYLE_RADIO_WITH_DIVIDER, this method is called when the radio button is selected. + * @endif + */ + virtual void OnItemStateChanged(const Tizen::Ui::Control& source, int index, int itemId, Tizen::Ui::ItemStatus status) = 0; + + + /** + * @if OSPDEPREC + * Called when the state of an element in the CustomListItem is changed. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use IListViewItemEventListener class. + * @since 2.0 + * + * @param[in] source The source control from which the event is fired + * @param[in] index The index of the item + * @param[in] itemId The item ID + * @param[in] elementId The element ID + * @param[in] status The state of the element + * @remarks Implement this method in a class which derives %ICustomItemEventListener to handle the user interaction at the element in + * CustomListItem. + * @remarks If CustomList is constructed with CUSTOM_LIST_STYLE_RADIO_WITH_DIVIDER, this method is not called when the radio button is selected. + * Instead, OnItemStateChanged(const Tizen::Ui::Control& source, int index, int itemId, Tizen::Ui::ItemStatus status) is called. + * @endif + */ + virtual void OnItemStateChanged(const Tizen::Ui::Control& source, int index, int itemId, int elementId, Tizen::Ui::ItemStatus status) = 0; + + +}; //ICustomItemEventListener + +}} // Tizen::Ui + +#endif // _FUI_ICUSTOM_ITEM_EVENT_LISTENER_H_ diff --git a/inc/FUiIDataBindingDataTransformer.h b/inc/FUiIDataBindingDataTransformer.h new file mode 100644 index 0000000..1c13f4a --- /dev/null +++ b/inc/FUiIDataBindingDataTransformer.h @@ -0,0 +1,138 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiIDataBindingDataTransformer.h + * @brief This is the header file for the %IDataBindingDataTransformer interface. + * + * This header file contains the declarations of the %IDataBindingDataTransformer interface. + */ + +#ifndef _FUI_IDATA_BINDING_DATA_TRANSFORMER_H_ +#define _FUI_IDATA_BINDING_DATA_TRANSFORMER_H_ + +#include + +namespace Tizen { namespace Base +{ +class String; +class Object; +}} + +namespace Tizen { namespace Ui +{ + +/** + * @interface IDataBindingDataTransformer + * @brief This interface defines methods for transforming the value of the data that will be updated to the binding target or source. + * + * @since 2.0 + * + * The %IDataBindingDataTransformer interface defines methods for transforming the value of source type to the value of destination type. + */ +class _OSP_EXPORT_ IDataBindingDataTransformer +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~IDataBindingDataTransformer(void) {}; + + /** + * Transforms the value of the data of source type to value of target type. + * @since 2.0 + * @return @c true if it is successful to convert source to target @n + * else @c false + * @param[in] bindingId the specified binding id + * @param[in] sourceType The source data type + * @param[in] sourceData The data source + * @param[in] targetType The target data type + * @param[out] targetData The data target + */ + virtual bool TransformSourceToTarget(const Tizen::Base::String& bindingId, DataBindingDataType sourceType, const Tizen::Base::Object& sourceData, DataBindingDataType targetType, Tizen::Base::Object& targetData) = 0; + + /** + * Transforms the value of the data of target type to value of source type. + * @since 2.0 + * @return @c true if it is successful to convert target to source @n + * else @c false + * @param[in] bindingId the specified binding id + * @param[in] targetType The target data type + * @param[in] targetData The data target + * @param[in] sourceType The source data type + * @param[out] sourceData The data source + */ + virtual bool TransformTargetToSource(const Tizen::Base::String& bindingId, DataBindingDataType targetType, const Tizen::Base::Object& targetData, DataBindingDataType sourceType, Tizen::Base::Object& sourceData) = 0; + + /** + * Checks whether the this transformer can convert the source type to target type + * + * @since 2.0 + * @return @c true It is possible to transform source type to target type, @n + * else @c It's not possible + * @param[in] bindingId the specified binding id + * @param[in] sourceType The source data type + * @param[in] targetType The taret data type + */ + virtual bool IsSourceToTargetTransformable(const Tizen::Base::String& bindingId, DataBindingDataType sourceType, DataBindingDataType targetType) = 0; + + /** + * Checks whether the this transformer can convert the target type to source type + * + * @since 2.0 + * @return @c true It is possible to transform target type to source type, @n + * else @c It's not possible + * @param[in] bindingId the specified binding id + * @param[in] targetType The taret data type + * @param[in] sourceType The source data type + */ + virtual bool IsTargetToSourceTransformable(const Tizen::Base::String& bindingId, DataBindingDataType targetType, DataBindingDataType sourceType) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void IDataBingingDataTransformer_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void IDataBingingDataTransformer_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void IDataBingingDataTransformer_Reserved3(void) {} + +}; // IDataBindingDataTransformer + +}} // Tizen::Ui +#endif // _FUI_IDATA_BINDING_DATA_TRANSFORMER_H_ diff --git a/inc/FUiIDataBindingDataValidator.h b/inc/FUiIDataBindingDataValidator.h new file mode 100644 index 0000000..375d431 --- /dev/null +++ b/inc/FUiIDataBindingDataValidator.h @@ -0,0 +1,111 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiIDataBindingDataValidator.h + * @brief This is the header file for the %IDataBindingDataValidator interface. + * + * This header file contains the declarations of the %IDataBindingDataValidator interface. + */ + +#ifndef _FUI_IDATA_BINDING_DATA_VALIDATOR_H_ +#define _FUI_IDATA_BINDING_DATA_VALIDATOR_H_ + +#include + +namespace Tizen { namespace Base +{ +class String; +class Object; +}} + +namespace Tizen { namespace Ui +{ + +/** + * @interface IDataBindingDataValidator + * @brief This interface defines methods for validating the value of transformed data that will be updated to the binding + * target or source. + * + * @since 2.0 + * + * The %IDataBindingDataValidator interface defines methods for validating the value of transformed data that will be updated to the binding. + */ +class _OSP_EXPORT_ IDataBindingDataValidator +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~IDataBindingDataValidator(void) {}; + + /** + * Validates the value of the transformed data that will be updated to the binding target. + * + * @since 2.0 + * @return @c true if the specified value is valid, @n + * else @c false + * @param[in] bindingId The binding Id to validate + * @param[in] data The data to validate + */ + virtual bool ValidateDataToTarget(const Tizen::Base::String& bindingId, const Tizen::Base::Object& data) = 0; + + /** + * Validates the value of the transformed data that will be updated to the binding source. + * + * @since 2.0 + * @return @c true if the specified value is valid, @n + * else @c false + * @param[in] bindingId The binding Id to validate + * @param[in] data The data to validate + */ + virtual bool ValidateDataToSource( const Tizen::Base::String& bindingId, const Tizen::Base::Object& data) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void IDataBindingDataValidator_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void IDataBindingDataValidator_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void IDataBindingDataValidator_Reserved3(void) {} + +}; // IDataBindingDataValidator + +}} // Tizen::Ui +#endif // _FUI_IDATA_BINDING_DATA_VALIDATOR_H_ diff --git a/inc/FUiIDataBindingListener.h b/inc/FUiIDataBindingListener.h new file mode 100644 index 0000000..c64fd75 --- /dev/null +++ b/inc/FUiIDataBindingListener.h @@ -0,0 +1,118 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiIDataBindingListener.h + * @brief This is the header file for the %IDataBindingListener interface. + * + * This header file contains the declarations of the %IDataBindingListener interface. + */ + +#ifndef _FUI_IDATA_BINDING_LISTENER_H_ +#define _FUI_IDATA_BINDING_LISTENER_H_ + +#include +#include + +namespace Tizen { namespace Ui +{ + +/** + * @interface IDataBindingListener + * @brief This interface is the listener interface for receiving data binding-related events. + * + * @since 2.0 + * + * The %IDataBindingListener interface defines methods for receiving data binding-related events. + */ +class _OSP_EXPORT_ IDataBindingListener + : public Tizen::Base::Runtime::IEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~IDataBindingListener(void) {}; + + /** + * Called when the data transfer for source is completed by the data binding. + * + * @since 2.0 + * + * @param[in] bindingId The binding ID + * @param[in] controlName The name of binding target control + * @param[in] propertyName The name of binding target property + */ + virtual void OnDataBindingSourceUpdated(const Tizen::Base::String& bindingId, const Tizen::Base::String& controlName, const Tizen::Base::String& propertyName) = 0; + + /** + * Called when the data transfer for target is completed by the data binding. + * + * @since 2.0 + * + * @param[in] bindingId The binding ID + * @param[in] controlName The name of binding target control + * @param[in] propertyName The name of binding target property + */ + virtual void OnDataBindingTargetUpdated(const Tizen::Base::String& bindingId, const Tizen::Base::String& controlName, const Tizen::Base::String& propertyName) = 0; + + /** + * Called when a validation has failed during data transfer. + * + * @since 2.0 + * + * @param[in] bindingId The binding ID + * @param[in] controlName The name of binding target control + * @param[in] propertyName The name of binding target property + * @param[in] destType The data binding destination type + */ + virtual void OnDataBindingValidationFailed(const Tizen::Base::String& bindingId, const Tizen::Base::String& controlName, const Tizen::Base::String& propertyName, DataBindingDestinationType destType) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void IDataBindingListener_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void IDataBindingListener_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void IDataBindingListener_Reserved3(void) {} + +}; // IDataBindingListener; + +}} // Tizen::Ui +#endif // _FUI_IDATA_BINDING_LISTENER_H_ diff --git a/inc/FUiIDateChangeEventListener.h b/inc/FUiIDateChangeEventListener.h new file mode 100644 index 0000000..dc3df7e --- /dev/null +++ b/inc/FUiIDateChangeEventListener.h @@ -0,0 +1,127 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiIDateChangeEventListener.h + * @brief This is the header file for the %IDateChangeEventListener interface. + * + * This header file contains the declarations of the %IDateChangeEventListener interface. + * If a change event is generated, a method of this interface is called. + * So, for tasks related to the change events, use the methods of this interface. + * + */ +#ifndef _FUI_IDATE_CHANGE_EVENT_LISTENER_H_ +#define _FUI_IDATE_CHANGE_EVENT_LISTENER_H_ + +// Includes +#include +#include + +namespace Tizen { namespace Ui +{ +class Control; +} } + +namespace Tizen {namespace Ui +{ + +/** + * @interface IDateChangeEventListener + * @brief This interface implements the listener for Date change events. + * + * @since 2.0 + * + * The %IDateChangeEventListener interface is the listener interface for receiving date change events. + * The class that processes a date change event implements this interface, and the instance created with that class is registered + * with a UI control, using the control's AddDateChangeEventListener() method. When the date change event occurs, the + * OnDateChanged() method of that instance is invoked. + * @n + * For more information on the class features, see EditDate and EditTime and DatePicker, TimePicker, and DateTimePicker. + */ +class _OSP_EXPORT_ IDateChangeEventListener + : public Tizen::Base::Runtime::IEventListener +{ +// Operation +public: + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~IDateChangeEventListener(void) {} + + /** + * Called when there is a change in the date. @n + * The changed values of the year, month, and day are passed as input parameters. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] year The year + * @param[in] month The month + * @param[in] day The day + */ + virtual void OnDateChanged(const Tizen::Ui::Control& source, int year, int month, int day) = 0; + + + /** + * Called when the change in date is canceled. + * + * @since 2.0 + * + * @param[in] source The source of the event + */ + virtual void OnDateChangeCanceled(const Tizen::Ui::Control& source) = 0; + +protected: + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IDateChangeEventListener_Reserved1(void) {} + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IDateChangeEventListener_Reserved2(void) {} + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IDateChangeEventListener_Reserved3(void) {} + +}; // IDateChangeEventListener + +}} // Tizen::Ui + +#endif // _FUI_IDATE_CHANGE_EVENT_LISTENER_H_ diff --git a/inc/FUiIDateTimeChangeEventListener.h b/inc/FUiIDateTimeChangeEventListener.h new file mode 100644 index 0000000..3f92c6c --- /dev/null +++ b/inc/FUiIDateTimeChangeEventListener.h @@ -0,0 +1,126 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiIDateTimeChangeEventListener.h + * @brief This is the header file for the %IDateTimeChangeEventListener interface. + * + * This header file contains the declarations of the %IDateTimeChangeEventListener interface. @n + * If a change event is generated, a method of this class is called. @n + * So, if applications perform jobs related to change events, they use the methods of this class. + * + */ +#ifndef _FUI_IDATETIME_CHANGE_EVENT_LISTENER_H_ +#define _FUI_IDATETIME_CHANGE_EVENT_LISTENER_H_ + +// Includes +#include +#include + +namespace Tizen { namespace Ui +{ +class Control; +} } + +namespace Tizen {namespace Ui +{ + +/** + * @interface IDateTimeChangeEventListener + * @brief This interface implements the listener for Date and Time change events. + * + * @since 2.0 + * + * The %IDateTimeChangeEventListener interface is the listener interface for receiving date and time change events. + * The class that processes a date and time change event implements this interface, and the instance created with that class is + * registered with a UI control, using the control's AddDateTimeChangeEventListener() method. When the date and time change event + * occurs, the OnDateTimeChanged() method of that instance is invoked. + * @n + * For more information on the class features, see DatePicker, TimePicker, and DateTimePicker. + */ +class _OSP_EXPORT_ IDateTimeChangeEventListener + : public Tizen::Base::Runtime::IEventListener +{ +// Operation +public: + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~IDateTimeChangeEventListener(void) {} + + /** + * Called when there is a change in DateTime. @n + * The changed values of day, month, year, hour and minute are passed as input parameters. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] year The year value + * @param[in] month The month value + * @param[in] day The day value + * @param[in] hour The hour value + * @param[in] minute The minute value + * + */ + virtual void OnDateTimeChanged(const Tizen::Ui::Control& source, int year, int month, int day, int hour, int minute) = 0; + + + /** + * Called when the date and time change is canceled. + * + * @since 2.0 + * + * @param[in] source The source of the event + */ + virtual void OnDateTimeChangeCanceled(const Tizen::Ui::Control& source) = 0; + +protected: + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IDateTimeChangeEventListener_Reserved1(void) {} + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IDateTimeChangeEventListener_Reserved2(void) {} + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + // @since 2.0 + // + virtual void IDateTimeChangeEventListener_Reserved3(void) {} +}; // IDateTimeChangeEventListener + +}} // Tizen::Ui + +#endif // _FUI_IDATETIME_CHANGE_EVENT_LISTENER_H_ diff --git a/inc/FUiIDragDropEventListener.h b/inc/FUiIDragDropEventListener.h new file mode 100644 index 0000000..dd1fbcb --- /dev/null +++ b/inc/FUiIDragDropEventListener.h @@ -0,0 +1,109 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** +* @file FUiIDragDropEventListener.h +* @brief This is the header file for the %IDragDropEventListener interface. +* +* This header file contains the declarations of the %IDragDropEventListener interface. +*/ +#ifndef _FUI_IDRAG_DROP_EVENT_LISTENER_H_ +#define _FUI_IDRAG_DROP_EVENT_LISTENER_H_ + +#include +#include +#include + +namespace Tizen { namespace Ui +{ + +class Control; + +/** + * @interface IDragDropEventListener + * @brief This interface implements the listener for a drag and drop event. + * + * @since 2.0 + * + * The %IDragDropEventListener interface is the listener interface for receiving drag and drop events. + * The class that processes a drag and drop event implements this interface, and the instance created with that class is + * registered with a UI control, using the control's AddDragDropEventListener() method. When the drag and drop event occurs, a + * method of that instance is invoked. + * @n + * For more information on the class features, see Event Listeners. + */ +class _OSP_EXPORT_ IDragDropEventListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +// Operation +public: + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This is the destructor for this class. + // + // @since 2.0 + // + virtual ~IDragDropEventListener(void) {} + + /** + * Called when an entity is dragged. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] startPosition The start position + * @param[in] currentPosition The current position + */ + virtual void OnTouchDragged(const Tizen::Ui::Control& source, + const Tizen::Graphics::Point& startPosition, const Tizen::Graphics::Point& currentPosition) = 0; + + /** + * Called when an entity is dropped. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] startPosition The start position + * @param[in] currentPosition The current position + */ + virtual void OnTouchDropped(const Tizen::Ui::Control& source, + const Tizen::Graphics::Point& startPosition, const Tizen::Graphics::Point& currentPosition) = 0; + +protected: + // Reserved virtual methods for later extension + // + // The following methods are reserved and may change its name at any time without prior notice. + // + virtual void IDragDropEventListener_Reserved1(void) {} + + // Reserved virtual methods for later extension + // + // The following methods are reserved and may change its name at any time without prior notice. + // + virtual void IDragDropEventListener_Reserved2(void) {} + + // Reserved virtual methods for later extension + // + // The following methods are reserved and may change its name at any time without prior notice. + // + virtual void IDragDropEventListener_Reserved3(void) {} +}; // IDragDropEventListener + +} } // Tizen::Ui + +#endif // _FUI_IDRAG_DROP_EVENT_LISTENER_H_ diff --git a/inc/FUiIExpandableItemEventListener.h b/inc/FUiIExpandableItemEventListener.h new file mode 100644 index 0000000..e20b8f6 --- /dev/null +++ b/inc/FUiIExpandableItemEventListener.h @@ -0,0 +1,116 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiIExpandableItemEventListener.h + * @brief This is the header file for the %IExpandableItemEventListener interface. + * + * This header file contains the declarations of the %IExpandableItemEventListener interface. @n + * If an item event is generated, a method of this interface is called. + * + */ +#ifndef _FUI_IEXPANDABLE_ITEM_EVENT_LISTENER_H_ +#define _FUI_IEXPANDABLE_ITEM_EVENT_LISTENER_H_ + +#include +#include + +namespace Tizen { namespace Ui +{ +class Control; +} } + +namespace Tizen {namespace Ui +{ + +/** + * @if OSPDEPREC + * @interface IExpandableItemEventListener + * @brief [Deprecated] This interface implements a listener for the item events. + * + * @deprecated This listener is deprecated. Instead of using this class, use IGroupedTableViewItemEventListener. + * @since 2.0 + * + * The %IExpandableItemEventListener interface implements a listener for the item events. + * A class that needs to process an item event + * must implement this interface. The object created with that class is registered with a UI Control using the controls. + * ExpandableList::AddExpandableItemEventListener() method. When the item event occurs, that instance's OnItemStateChanged() method is invoked. + * @endif + */ +class _OSP_EXPORT_ IExpandableItemEventListener + : public Tizen::Base::Runtime::IEventListener +{ +// Operation +public: + /** + * @if OSPDEPREC + * This is the destructor for this class. + * + * @brief [Deprecated] + * @deprecated This listener is deprecated. This listener is deprecated. Instead of using this class, use + * IGroupedTableViewEventListener. + * @since 2.0 + * @endif + */ + virtual ~IExpandableItemEventListener(void) {} + + /** + * @if OSPDEPREC + * Called when the state of CustomListItem in the ExpandableList is changed. @n + * If a main item is selected, the index of the sub-item is @c -1. + * + * @brief [Deprecated] + * @deprecated This listener is deprecated. Instead of using this class, use IGroupedTableViewEventListener. + * @since 2.0 + * + * @param[in] source The source control from which the event is fired + * @param[in] mainIndex The main index of the item + * @param[in] subIndex The sub index of the item + * @param[in] itemId The item ID + * @param[in] status The state of the item + * @remarks Implement this method in a class that derives %IExpandableItemEventListener to handle the user interaction at the CustomListItem of the + * ExpandableList. + * @endif + */ + virtual void OnItemStateChanged(const Tizen::Ui::Control& source, int mainIndex, int subIndex, int itemId, Tizen::Ui::ItemStatus status) = 0; + + + /** + * @if OSPDEPREC + * Called when the state of an element in CustomListItem in ExpandableList is changed. @n + * If a main item is selected, the index of the sub-item is @c -1. + * @brief [Deprecated] + * @deprecated This listener is deprecated. Instead of using this class, use IGroupedTableViewEventListener. + * @since 2.0 + * + * @param[in] source The source control from which the event is fired + * @param[in] mainIndex The main index of the item + * @param[in] subIndex The sub index of the item + * @param[in] itemId The item ID + * @param[in] elementId The element ID + * @param[in] status The state of the element + * @remarks Implement this method in a class that derives %IExpandableItemEventListener to handle the user interaction at the element in + * CustomListItem of ExpandableList. + * @endif + */ + virtual void OnItemStateChanged(const Tizen::Ui::Control& source, int mainIndex, int subIndex, int itemId, int elementId, Tizen::Ui::ItemStatus status) = 0; + +}; //IExpandableItemEventListener + +}} // Tizen::Ui + +#endif // _FUI_IEXPANDABLE_ITEM_EVENT_LISTENER_H_ diff --git a/inc/FUiIFastScrollEventListener.h b/inc/FUiIFastScrollEventListener.h new file mode 100644 index 0000000..a933728 --- /dev/null +++ b/inc/FUiIFastScrollEventListener.h @@ -0,0 +1,138 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiIFastScrollEventListener.h + * @brief This is the header file for the %IFastScrollEventListener interface. + * + * This header file contains declarations of the %IFastScrollEventListener interface. + * If item event is generated, a method of this interface will be called. + * Applications that do some jobs related to item event, call methods of this interface. + * + */ +#ifndef _FUI_IFAST_SCROLL_EVENT_LISTENER_H_ +#define _FUI_IFAST_SCROLL_EVENT_LISTENER_H_ + +#include +#include +#include + +namespace Tizen { namespace Ui +{ +class Control; +} } + +namespace Tizen {namespace Ui +{ + +/** + * @if OSPDEPREC + * @interface IFastScrollEventListener + * @brief [Deprecated] This interface implements the listener for fast scroll event. + * + * @deprecated This class is deprecated. Instead of using this class, use the IFastScrollListener class. + * @since 2.0 + * + * + * The %IFastScrollEventListener interface for receiving item events. The class that processes a fast scroll + * implements this interface, and the object created with that class is registered with a UI control, using the control's + * AddFastScrollEventListener method. When an item event occurs, the object's OnItemStateChanged() method is invoked. + * @endif + */ +class _OSP_EXPORT_ IFastScrollEventListener + : public Tizen::Base::Runtime::IEventListener +{ +// Operation +public: + /** + * @if OSPDEPREC + * This is the destructor for this class. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IFastScrollListener class. + * @since 2.0 + * @endif + */ + virtual ~IFastScrollEventListener(void) {} + + /** + * @if OSPDEPREC + * Called when a main index is selected. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IFastScrollListener class. + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] mainIndex The main index + * @endif + */ + virtual void OnMainIndexChanged(const Tizen::Ui::Control& source, Tizen::Base::Character& mainIndex) = 0; + + /** + * @if OSPDEPREC + * Called when a sub index is selected. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IFastScrollListener class. + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] mainIndex The main index + * @param[in] subIndex The sub index + * @endif + */ + virtual void OnSubIndexChanged(const Tizen::Ui::Control& source, Tizen::Base::Character& mainIndex, Tizen::Base::Character& subIndex) = 0; + + /** + * @if OSPDEPREC + * Called when a main index is expanded. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IFastScrollListener class. + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] mainIndex The main index + * @endif + */ + virtual void OnMainIndexSelected(const Tizen::Ui::Control& source, Tizen::Base::Character& mainIndex) = 0; + + /** + * @if OSPDEPREC + * Called when a sub index is expanded. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use the IFastScrollListener class. + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] mainIndex The main index + * @param[in] subIndex The sub index + * @endif + */ + virtual void OnSubIndexSelected(const Tizen::Ui::Control& source, Tizen::Base::Character& mainIndex, Tizen::Base::Character& subIndex) = 0; + +protected: + + virtual void IFastScrollEventListener_Reserved1(void) {} + virtual void IFastScrollEventListener_Reserved2(void) {} + virtual void IFastScrollEventListener_Reserved3(void) {} +}; // IFastScrollEventListener + +}} + +#endif // _FUI_IFAST_SCROLL_EVENT_LISTENER_H_ diff --git a/inc/FUiIFocusEventListener.h b/inc/FUiIFocusEventListener.h new file mode 100644 index 0000000..2b9cfbd --- /dev/null +++ b/inc/FUiIFocusEventListener.h @@ -0,0 +1,124 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiIFocusEventListener.h + * @brief This is the header file for the %IFocusEventListener interface. + * + * This header file contains the declarations of the %IFocusEventListener interface. + */ + +#ifndef _FUI_IFOCUS_EVENT_LISTENER_H_ +#define _FUI_IFOCUS_EVENT_LISTENER_H_ + +#include + +namespace Tizen { namespace Ui +{ + +class Control; + +/** + * @enum FocusStatus + * + * Defines constants used to identify focus status. + * + * @since 2.0 + * + */ + +enum FocusStatus +{ + FOCUS_GAINED = 0, // The Control has gained focus + FOCUS_LOST = 1 // The Control has lost focus +}; + +/** + * @interface IFocusEventListener + * @brief This interface is used as the argument to focus the event listener. + * + * @since 2.0 + * + * The %IFocusEventListener interface is the listener interface for receiving focus events. + * The class that processes a focus event implements this interface, and the instance created with that class is registered with a + * UI control, using the control's AddFocusEventListener() method. When the focus event occurs, a method of that instance is + * invoked. + * @n + * For more information on the class features, see Event Listeners. + */ +class _OSP_EXPORT_ IFocusEventListener + : public Tizen::Base::Runtime::IEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + * + */ + virtual ~IFocusEventListener(void) {} + + /** + * Called when Control gains the input focus. + * + * @since 2.0 + * + * @param[in] source The source of the event + */ + virtual void OnFocusGained(const Tizen::Ui::Control& source) = 0; + + /** + * Called when Control loses the input focus. + * + * @since 2.0 + * + * @param[in] source The source of the event + */ + virtual void OnFocusLost(const Tizen::Ui::Control& source) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void IFocusEventListener_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void IIFocusEventListener_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void IIFocusEventListener_Reserved3(void) {} +}; // IFocusEventListener + +}} // Tizen::Ui + +#endif // _FUI_IFOCUS_EVENT_LISTENER_H_ diff --git a/inc/FUiIGroupedItemEventListener.h b/inc/FUiIGroupedItemEventListener.h new file mode 100644 index 0000000..5111668 --- /dev/null +++ b/inc/FUiIGroupedItemEventListener.h @@ -0,0 +1,123 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiIGroupedItemEventListener.h + * @brief This is the header file for the %IGroupedItemEventListener interface. + * + * This header file contains the declarations of the %IGroupedItemEventListener interface. + */ + +#ifndef _FUI_IGROUPED_ITEM_EVENT_LISTENER_H_ +#define _FUI_IGROUPED_ITEM_EVENT_LISTENER_H_ + +#include +#include + +namespace Tizen { namespace Ui +{ +class Control; +} } + +namespace Tizen {namespace Ui +{ + +/** + * @if OSPDEPREC + * @interface IGroupedItemEventListener + * @brief [Deprecated] This interface implements the listener for the events on the items of GroupedList. + * + * @deprecated This class is deprecated. Instead of using this class, use IGroupedListViewItemEventListener class. + * @since 2.0 + * + * + * The %IGroupedItemEventListener interface implements a listener for detecting state changes on the item of the grouped list. + * The interface is registered with a GroupedList, using the control's AddGroupedItemEventListener() method. + * @endif + */ +class _OSP_EXPORT_ IGroupedItemEventListener + : public Tizen::Base::Runtime::IEventListener +{ +public: + /** + * @if OSPDEPREC + * This is the default constructor for this class. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use IGroupedListViewItemEventListener class. + * @since 2.0 + * @endif + */ + IGroupedItemEventListener(void) {}; + + /** + * @if OSPDEPREC + * This is the destructor for this class. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use IGroupedListViewItemEventListener class. + * @since 2.0 + * @endif + */ + virtual ~IGroupedItemEventListener(void) {}; + + /** + * @if OSPDEPREC + * Called when the state of an element in the CustomListItem instance in the GroupedList instance is changed. @n + * For example, this method is called when an element of %CustomListItem in %GroupedList is checked, unchecked, or selected. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use IGroupedListViewItemEventListener class. + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] groupIndex The index of the list group + * @param[in] itemIndex The index of the list item in the specified group + * @param[in] itemId The item ID + * @param[in] elementId The element ID + * @param[in] status The state of the element + * @remarks If GroupedList or SlidableGroupedList is constructed with CUSTOM_LIST_STYLE_RADIO_WITH_DIVIDER, this method is not called when the + * radio button is selected. Instead, OnItemStateChanged(const Tizen::Ui::Control &source, int groupIndex, int itemIndex, int itemId, + * Tizen::Ui::ItemStatus status) is called. + * @endif + */ + virtual void OnItemStateChanged(const Tizen::Ui::Control& source, int groupIndex, int itemIndex, int itemId, int elementId, Tizen::Ui::ItemStatus status) = 0; + + /** + * @if OSPDEPREC + * Called when the state of an item in the grouped list is changed. @n + * For example, this method is called when an item of the GroupedList control is checked, unchecked, or selected. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use IGroupedListViewItemEventListener class. + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] groupIndex The index of the list group + * @param[in] itemIndex The index of the list item in the specified group + * @param[in] itemId The item ID + * @param[in] status The state of the item + * @remarks If GroupedList or SlidableGroupedList is constructed with CUSTOM_LIST_STYLE_RADIO_WITH_DIVIDER, this method is called when the radio + * button is selected. + * @endif + */ + virtual void OnItemStateChanged(const Tizen::Ui::Control& source, int groupIndex, int itemIndex, int itemId, Tizen::Ui::ItemStatus status) = 0; +}; //IGroupedItemEventListener + +}} // Tizen::Ui + +#endif //_FUI_IGROUPED_ITEM_EVENT_LISTENER_H_ diff --git a/inc/FUiIInputConnectionEventListener.h b/inc/FUiIInputConnectionEventListener.h new file mode 100644 index 0000000..8fbc4da --- /dev/null +++ b/inc/FUiIInputConnectionEventListener.h @@ -0,0 +1,179 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiIInputConnectionEventListener.h + * @brief This is the header file for the %IInputConnectionEventListener class. + * + * This header file contains the declarations of the %IInputConnectionEventListener class. + * + * + */ + +#ifndef _FUI_IINPUT_CONNECTION_EVENT_LISTENER_H_ +#define _FUI_IINPUT_CONNECTION_EVENT_LISTENER_H_ + +#include +#include +#include + +namespace Tizen { namespace Base { +class String; +}} // Tizen::Base + +namespace Tizen { namespace Graphics { +class Rectangle; +}} // Tizen::Graphics + + +namespace Tizen { namespace Ui { + +class InputConnection; + +/** + * @class IInputConnectionEventListener + * @brief This is the header file for the %IInputConnectionEventListener class. + * This header file contains the declarations of the %IInputConnectionEventListener class. + * It's possible to not work the callback depending on the current InputMethod. + * @since 2.0 + * + * The %IInputConnectionEventListener interface defines methods for processing between the InputConnection and the input method. + */ +class _OSP_EXPORT_ IInputConnectionEventListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~IInputConnectionEventListener(void) {} + + /** + * Notifies when the show state of the InputPanel is changed. + * + * @since 2.0 + * @param[in] source The source of the event + * @param[in] showState The state + */ + virtual void OnInputConnectionPanelShowStateChanged(Tizen::Ui::InputConnection& source, Tizen::Ui::InputPanelShowState showState) = 0; + + /** + * Notifies when the language of the InputPanel is changed. + * + * @since 2.0 + * @param[in] source The source of the event + * @param[in] language The language code + */ + virtual void OnInputConnectionPanelLanguageChanged(Tizen::Ui::InputConnection& source, Tizen::Locales::LanguageCode language) = 0; + + /** + * Notifies when the size of the InputPanel is changed. + * + * @since 2.0 + * @param[in] source The source of the event + * @param[in] bounds The size + */ + virtual void OnInputConnectionPanelBoundsChanged(Tizen::Ui::InputConnection& source, const Tizen::Graphics::Rectangle& bounds) = 0; + + /** + * Notifies when the show state of the Text-Prediction is changed. + * + * @since 2.0 + * @param[in] source The source of the event + * @param[in] isShown The state + */ + virtual void OnInputConnectionTextPredictionShowStateChanged(Tizen::Ui::InputConnection& source, bool isShown) = 0; + + /** + * Notifies when the size of the Text-Prediction is changed. + * + * @since 2.0 + * @param[in] source The source of the event + * @param[in] bounds The size + */ + virtual void OnInputConnectionTextPredictionBoundsChanged(Tizen::Ui::InputConnection& source, const Tizen::Graphics::Rectangle& bounds) = 0; + + /** + * Notifies when the key of the InputPanel is selected. + * + * @since 2.0 + * @param[in] source The source of the event + * @param[in] committedText The committed text. + */ + virtual void OnInputConnectionTextCommitted(Tizen::Ui::InputConnection& source, const Tizen::Base::String& committedText) = 0; + + /** + * Notifies when the key of the InputPanel is selected during the composing. + * + * @since 2.0 + * @param[in] source The source of the event + * @param[in] composingText The composing text. + * @param[in] cursorPosition the current cursor position. + */ + virtual void OnInputConnectionComposingTextChanged(Tizen::Ui::InputConnection& source, const Tizen::Base::String& composingText, int cursorPosition) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void IInputConnectionEventListener_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void IInputConnectionEventListener_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void IInputConnectionEventListener_Reserved3(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void IInputConnectionEventListener_Reserved4(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void IInputConnectionEventListener_Reserved5(void) {} +}; // IInputConnectionEventListener + +}} // Tizen::Ui +#endif // _FUI_IINPUT_CONNECTION_EVENT_LISTENER_H_ diff --git a/inc/FUiIInputConnectionProvider.h b/inc/FUiIInputConnectionProvider.h new file mode 100644 index 0000000..7c9e2db --- /dev/null +++ b/inc/FUiIInputConnectionProvider.h @@ -0,0 +1,111 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiIInputConnectionProvider.h + * @brief This is the header file for the %IInputConnectionProvider class. + * + * This header file contains the declarations of the %IInputConnectionProvider class. + * + * + */ + +#ifndef _FUI_IINPUT_CONNECTION_PROVIDER_H_ +#define _FUI_IINPUT_CONNECTION_PROVIDER_H_ + +#include + +namespace Tizen { namespace Base { +class String; +}} // Tizen::Base + +namespace Tizen { namespace Ui { + +class InputConnection; + +/** + * @class IInputConnectionProvider + * @brief This is the header file for the %IInputConnectionProvider class. + * This header file contains the declarations of the %IInputConnectionProvider class. + * It's possible to not work the callback depending on the current active Input Method. + * @since 2.0 + * + * The %IInputConnectionProvider interface defines methods for processing between the InputConnection and the input method. + */ +class _OSP_EXPORT_ IInputConnectionProvider +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~IInputConnectionProvider(void) {} + + /** + * Called when the text needs to be deleted. + * + * @since 2.0 + * @param[in] source The source of the event + * @param[in] offset The position to be deleted before the current cursor position. + * @param[in] charCount The number of characters to be deleted. + */ + virtual void DeleteSurroundingText(Tizen::Ui::InputConnection& source, int offset, int charCount) = 0; + + /** + * Called when the input method requests the previous text. + * + * @since 2.0 + * @param[in] source The source of the event + * @param[out] text The text to be sent to the Input Method. + * @param[out] cursorPosition The current cursor position to be sent to the Input Method. + * @remarks The text will be used for processing the auto-capitalization/auto-period. At least three letters in front of the cursor are required. + */ + virtual void GetPreviousText(Tizen::Ui::InputConnection& source, Tizen::Base::String& text, int& cursorPosition) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void IInputConnectionProvider_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void IInputConnectionProvider_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void IInputConnectionProvider_Reserved3(void) {} +}; // IInputConnectionProvider + +}} // Tizen::Ui +#endif // _FUI_IINPUT_CONNECTION_PROVIDER_H_ + diff --git a/inc/FUiIItemEventListener.h b/inc/FUiIItemEventListener.h new file mode 100644 index 0000000..9d5b81a --- /dev/null +++ b/inc/FUiIItemEventListener.h @@ -0,0 +1,105 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiIItemEventListener.h + * @brief This is the header file for the %IItemEventListener interface. + * + * This header file contains the declarations of the %IItemEventListener interface. @n + * If an item event is generated, a method of this class is called. @n + * So, if an application performs tasks related to the item event, use the methods of this class. + * + */ +#ifndef _FUI_IITEM_EVENT_LISTENER_H_ +#define _FUI_IITEM_EVENT_LISTENER_H_ + +#include + +namespace Tizen { namespace Ui +{ +class Control; +} } + +namespace Tizen {namespace Ui +{ +/** + * @if OSPDEPREC + * @enum ItemStatus + * + * Defines the constants used to identify the item state. + * + * @brief [Deprecated] + * @deprecated This enumeration is deprecated. Instead of using this enumeration, use the ListItemStatus enumeration. + * @since 2.0 + * @endif + */ +enum ItemStatus +{ + ITEM_CHECKED = 0, /**< @if OSPDEPREC The item has been checked (toggle of the check area) @endif */ + ITEM_UNCHECKED, /**< @if OSPDEPREC The item has been unchecked (toggle of the check area) @endif */ + ITEM_SELECTED, /**< @if OSPDEPREC The item has been selected (non-check area of the item) @endif */ + ITEM_HIGHLIGHTED /**< @if OSPDEPREC The item has been highlighted (non-check area of the item) @endif */ +}; + +/** + * @if OSPDEPREC + * @interface IItemEventListener + * @brief [Deprecated] This interface implements the listener for the item event. + * @deprecated This class is deprecated. Instead of using this class, use IListViewItemEventListener class. + * @since 2.0 + * + * The %IItemEventListener interface is the listener interface for receiving item events. The class that processes an item event + * implements this interface, and the instance created with that class is registered with a UI control, using the control's + * AddItemEventListener() method. When the item event occurs, the OnItemStateChanged() method of that instance is invoked. + * @endif + */ +class _OSP_EXPORT_ IItemEventListener + : public Tizen::Base::Runtime::IEventListener +{ +// Operation +public: + /** + * @if OSPDEPREC + * This is the destructor for this class. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use IListViewItemEventListener class. + * @since 2.0 + * @endif + */ + virtual ~IItemEventListener(void) {} + + /** + * @if OSPDEPREC + * Called when an item event occurs. + * + * @brief [Deprecated] + * @deprecated This class is deprecated. Instead of using this class, use IListViewItemEventListener class. + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] index The index of the item + * @param[in] itemId The item ID + * @param[in] status The item status + * @endif + */ + virtual void OnItemStateChanged(const Tizen::Ui::Control& source, int index, int itemId, Tizen::Ui::ItemStatus status) = 0; +}; //IItemEventListener + +}} // Tizen::Ui + +#endif // _FUI_IITEM_EVENT_LISTENER_H_ diff --git a/inc/FUiIKeyEventListener.h b/inc/FUiIKeyEventListener.h new file mode 100644 index 0000000..ec1917f --- /dev/null +++ b/inc/FUiIKeyEventListener.h @@ -0,0 +1,580 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiIKeyEventListener.h + * @brief This is the header file for the %IKeyEventListener interface. + * + * This header file contains the declarations of the %IKeyEventListener interface. @n + * If a key event is generated, a method of this interface is called. @n + * If an application performs tasks related to the key event, use the methods of this interface. + */ + +#ifndef _FUI_IKEY_EVENT_LISTENER_H_ +#define _FUI_IKEY_EVENT_LISTENER_H_ + +#include +#include + +namespace Tizen {namespace Ui +{ +class Control; +/** + * @enum KeyCode + * + * Defines the list of keys supported by the system. @n + * Note that certain keys may not be available on all devices. @n + * Please use the Tizen::Ui::KeyboardMap class to query the availability of a specific key on the target device. + * + * @since 2.0 + */ +enum KeyCode +{ + /** + * The invalid key + */ + KEY_INVALID = 0x0000, + + /** + * The up side key + */ + KEY_SIDE_UP, + + /** + * The down side key + */ + KEY_SIDE_DOWN, + + /** + * The Ok key + */ + KEY_OK, + + /** + * The clear key + */ + KEY_CLEAR, + + /** + * The camera key + */ + KEY_CAMERA, + + /** + * The task switcher key + */ + KEY_SWITCH, + + /** + * The 0 key + */ + KEY_0, + + /** + * The 1 key + */ + KEY_1, + + /** + * The 2 key + */ + KEY_2, + + /** + * The 3 key + */ + KEY_3, + + /** + * The 4 key + */ + KEY_4, + + /** + * The 5 key + */ + KEY_5, + + /** + * The 6 key + */ + KEY_6, + + /** + * The 7 key + */ + KEY_7, + + /** + * The 8 key + */ + KEY_8, + + /** + * The 9 key + */ + KEY_9, + + /** + * The asterisk key + */ + KEY_ASTERISK, + + /** + * The sharp key + */ + KEY_SHARP, + + /** + * The left directional key + */ + KEY_LEFT, + + /** + * The up directional key + */ + KEY_UP, + + /** + * The down directional key + */ + KEY_DOWN, + + /** + * The right directional key + */ + KEY_RIGHT, + + /* + * The Placeholder + */ + KEY_MAX, + + /** + * The A key + */ + KEY_A, + + /** + * The B key + */ + KEY_B, + + /** + * The C key + */ + KEY_C, + + /** + * The D key + */ + KEY_D, + + /** + * The E key + */ + KEY_E, + + /** + * The F key + */ + KEY_F, + + /** + * The G key + */ + KEY_G, + + /** + * The H key + */ + KEY_H, + + /** + * The I key + */ + KEY_I, + + /** + * The J key + */ + KEY_J, + + /** + * The K key + */ + KEY_K, + + /** + * The L key + */ + KEY_L, + + /** + * The M key + */ + KEY_M, + + /** + * The N key + */ + KEY_N, + + /** + * The O key + */ + KEY_O, + + /** + * The P key + */ + KEY_P, + + /** + * The Q key + */ + KEY_Q, + + /** + * The R key + */ + KEY_R, + + /** + * The S key + */ + KEY_S, + + /** + * The T key + */ + KEY_T, + + /** + * The U key + */ + KEY_U, + + /** + * The V key + */ + KEY_V, + + /** + * The W key + */ + KEY_W, + + /** + * The Y key + */ + KEY_Y, + + /** + * The X key + */ + KEY_X, + + /** + * The Z key + */ + KEY_Z, + + /** + * The backspace key + */ + KEY_BACKSPACE, + + /** + * The comma key + */ + KEY_COMMA, + + /** + * The enter key + */ + KEY_ENTER, + + /** + * The Caps Lock key + */ + KEY_CAPSLOCK, + + /** + * The Question key + */ + KEY_QUESTION, + + /** + * The Alt key + */ + KEY_ALT, + + /** + * The Language Symbol key + */ + KEY_SYM, + + /** + * The Language Setting key + */ + KEY_SETTING, + + /** + * The Space key + */ + KEY_SPACE, + + /** + * The Dot key + */ + KEY_DOT, + + /** + * The Function key + */ + KEY_FN, + + /** + * The camera half shutter key + */ + KEY_CAMERA_HALF_SHUTTER, + + /** + * The Character symbol 1 key + */ + KEY_CHAR_SYM_1, + + /** + * The Character symbol 2 key + */ + KEY_CHAR_SYM_2, + + /** + * The Character symbol 3 key + */ + KEY_CHAR_SYM_3, + + /** + * The Character symbol 4 key + */ + KEY_CHAR_SYM_4, + + /** + * The Character symbol 5 key + */ + KEY_CHAR_SYM_5, + + /** + * The Character symbol 6 key + */ + KEY_CHAR_SYM_6, + + /** + * The Character symbol 7 key + */ + KEY_CHAR_SYM_7, + + /** + * The Character symbol 8 key + */ + KEY_CHAR_SYM_8, + + /** + * The Character symbol 9 key + */ + KEY_CHAR_SYM_9, + + /** + * The Character symbol A key + */ + KEY_CHAR_SYM_A, + + /** + * The Character symbol B key + */ + KEY_CHAR_SYM_B, + + /** + * The Character symbol C key + */ + KEY_CHAR_SYM_C, + + /** + * The Character symbol D key + */ + KEY_CHAR_SYM_D, + + /** + * The Character symbol E key + */ + KEY_CHAR_SYM_E, + + /** + * The Character symbol F key + */ + KEY_CHAR_SYM_F, + + /** + * The Special function 1 key + */ + KEY_FN_1, + + /** + * The Special function 2 key + */ + KEY_FN_2, + + /** + * The Special function 3 key + */ + KEY_FN_3, + + /** + * The Special function 4 key + */ + KEY_FN_4, + + /** + * The Special function 5 key + */ + KEY_FN_5, + + /** + * The power key + */ + KEY_POWER_HOLD, + + /** + * The delete key + */ + KEY_DELETE, + + /* + * placeholder key + */ + KEY_HARDWARE_MAX +}; + + +/** + * @enum KeyState + * + * Defines the state of the key. + * + * @since 2.0 + */ +enum KeyState +{ + KEY_PRESSED = 0x0001, /**< The key is pressed */ + KEY_RELEASED = 0x0002, /**< The key is released */ + KEY_LONGPRESSED = 0x0003 /**< The key pressed and held down over a predefined duration */ +}; + +/** + * @interface IKeyEventListener + * @brief This interface implements the listener for the key event. + * + * @since 2.0 + * + * @remarks Use the ITextEventListener interface to listen to key events related to the virtual keypad used with EditField and EditArea. + * + * The %IKeyEventListener interface is the listener interface for receiving key events, which are fired when hardware keyboard keys are pressed or + * released. The class that processes a key event implements this interface, and the instance created with that class is + * registered with a UI control, using the control's AddKeyEventListener() method. When the key event occurs, a method of that + * instance is invoked. + * + * For more information on the class features, see Event Listeners. + * + * + */ +class _OSP_EXPORT_ IKeyEventListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + * + */ + virtual ~IKeyEventListener(void) {} + + /** + * Called when a key is pressed. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] keyCode The key code + */ + virtual void OnKeyPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode) = 0; + + /** + * Called when a key is released. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] keyCode The key code + */ + virtual void OnKeyReleased(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode) = 0; + + /** + * Called when a key is pressed and held down for some time. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] keyCode The key code + * @remarks The key long pressed event is fired after the key pressed event is initially generated. + */ + virtual void OnKeyLongPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void IKeyEventListener_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void IKeyEventListener_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void IKeyEventListener_Reserved3(void) {} + +}; // IKeyEventListener + +}} // Tizen::Ui + +#endif //_FUI_IKEY_EVENT_LISTENER_H_ diff --git a/inc/FUiIKeypadEventListener.h b/inc/FUiIKeypadEventListener.h new file mode 100644 index 0000000..6871ec1 --- /dev/null +++ b/inc/FUiIKeypadEventListener.h @@ -0,0 +1,181 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiIKeypadEventListener.h + * @brief This is the header file for the %IKeypadEventListener interface. + * + * This header file contains the declarations of the %IKeypadEventListener interface. + */ +#ifndef _FUI_IKEYPAD_EVENT_LISTENER_H_ +#define _FUI_IKEYPAD_EVENT_LISTENER_H_ + +// Includes +#include +#include + +namespace Tizen { namespace Graphics +{ +class Dimension; +}} // Tizen::Graphics + +// Namespace declaration +namespace Tizen { namespace Ui +{ + +class Control; + +/** + * @enum KeypadAction + * + * Defines the possible keypad action types. + * + * @since 2.0 + */ +enum KeypadAction +{ + KEYPAD_ACTION_ENTER, /**< The Enter key */ + KEYPAD_ACTION_GO, /**< The Go key */ + KEYPAD_ACTION_NEXT, /**< The Next key */ + KEYPAD_ACTION_SEND, /**< The Send key */ + KEYPAD_ACTION_SEARCH, /**< The Search key */ + KEYPAD_ACTION_LOGIN, /**< The Login key */ + KEYPAD_ACTION_SIGN_IN, /**< The Sign-In key */ + KEYPAD_ACTION_JOIN, /**< The Join key */ + KEYPAD_ACTION_DONE /**< The Done key */ +}; + +/** + * @interface IKeypadEventListener + * @brief This interface implements the listener for the keypad events. + * + * @since 2.0 + * + * The %IKeypadEventListener interface is the listener interface for receiving software keypad events. + * The class that processes a software keypad event implements this interface, and the instance created with that class is + * registered with a UI control, using the control's AddKeypadEventListener() method. When the software keypad event occurs, a + * method of that instance is invoked. + * @n + * For more information on the class features, see EditArea and EditField, SearchBar and ExpandableEditArea. + + */ +class _OSP_EXPORT_ IKeypadEventListener + : public Tizen::Base::Runtime::IEventListener +{ +// Lifecycle +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~IKeypadEventListener(void) {} + + +// Operation +public: + /** + * Called when the keypad is about to be shown on the screen. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @remarks When the software keypad appears on the screen, the client area of the current Form is adjusted to account for the space that is taken + * up by the software keypad. + * @see Tizen::Ui::Controls::Form::GetClientAreaBounds() + */ + virtual void OnKeypadWillOpen(Tizen::Ui::Control& source) = 0; + + /** + * Called when the keypad is shown on the screen. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @remarks When the software keypad appears on the screen, the client area of the current Form is adjusted to account for the space that is taken + * up by the software keypad. + * @see Tizen::Ui::Controls::Form::GetClientAreaBounds() + */ + virtual void OnKeypadOpened(Tizen::Ui::Control& source) = 0; + + /** + * Called when the keypad is hidden from the screen. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @see Tizen::Ui::Controls::Form::GetClientAreaBounds() + */ + virtual void OnKeypadClosed(Tizen::Ui::Control& source) = 0; + + /** + * Called when the keypad action button is pressed. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] keypadAction The keypad action + * @see KeypadAction + */ + virtual void OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction) = 0; + + /** + * Called when the keypad bounds are changed, for instance when the predictive text window which is located in the upper side of the keypad is shown. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @see Tizen::Ui::Controls::Form::GetClientAreaBounds() + */ + virtual void OnKeypadBoundsChanged(Tizen::Ui::Control& source) {}; + +// Reserves +protected: + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void IKeypadEventListener_Reserved1(void) { } + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void IKeypadEventListener_Reserved2(void) { } + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void IKeypadEventListener_Reserved3(void) { } + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void IKeypadEventListener_Reserved4(void) { } +}; // IKeypadEventListener +}} // Tizen::Ui + +#endif // _FUI_IKEYPAD_EVENT_LISTENER_H_ diff --git a/inc/FUiILanguageEventListener.h b/inc/FUiILanguageEventListener.h new file mode 100644 index 0000000..102fd1f --- /dev/null +++ b/inc/FUiILanguageEventListener.h @@ -0,0 +1,110 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiILanguageEventListener.h + * @brief This is the header file for the %ILanguageEventListener class. + * + * This header file contains the declarations of the %ILanguageEventListener class. + */ + +#ifndef _FUI_ILANGUAGE_EVENT_LISTENER_H_ +#define _FUI_ILANGUAGE_EVENT_LISTENER_H_ + +#include +#include + +namespace Tizen {namespace Ui +{ + +class Control; + +/** + * @interface ILanguageEventListener + * @brief This interface implements the listener for the language event. + * + * @since 2.0 + * + * The %ILanguageEventListener interface receives language events. The class that processes a language event + * implements this interface, and the instance created with that class is registered with a UI control, using the control's + * AddLanguageEventListener() method. + * + * When the current input language is changed (for example, when the user toggles the input language from the virtual + * keypad, the listener's OnLanguageChanged() method is invoked. + */ + +class _OSP_EXPORT_ ILanguageEventListener + : public Tizen::Base::Runtime::IEventListener +{ + +// Operation + +public: + /** + * This is the default constructor for this class. + * + * @since 2.0 + */ + ILanguageEventListener(void) {}; + + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~ILanguageEventListener(void) {} + + /** + * Called when the input language is changed. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] oldLanguage The previous input language + * @param[in] newLanguage The current input language + */ + virtual void OnLanguageChanged(const Tizen::Ui::Control& source, Tizen::Locales::LanguageCode oldLanguage, Tizen::Locales::LanguageCode newLanguage) = 0; + +// Reserves +protected: + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void ILanguageEventListener_Reserved1(void) { } + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void ILanguageEventListener_Reserved2(void) { } + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void ILanguageEventListener_Reserved3(void) { } +}; // ILanguageEventListener + +}} // Tizen::Ui + +#endif diff --git a/inc/FUiIOrientationEventListener.h b/inc/FUiIOrientationEventListener.h new file mode 100644 index 0000000..d2701e1 --- /dev/null +++ b/inc/FUiIOrientationEventListener.h @@ -0,0 +1,136 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiIOrientationEventListener.h + * @brief This is the header file for the %IOrientationEventListener interface. + * + * This header file contains the declarations of the %IOrientationEventListener interface. @n + * If an orientation event is generated, a method of this class is called. @n + * So, if an application performs tasks related to the orientation event, use the methods of this class. + * + */ + +#ifndef _FUI_IORIENTATION_EVENT_LISTENER_H_ +#define _FUI_IORIENTATION_EVENT_LISTENER_H_ + +#include + +namespace Tizen { namespace Ui +{ +class Control; + +/** + * @enum Orientation + * + * Defines the constants used to identify the orientations that a control supports. + * + * @since 2.0 + */ +enum Orientation +{ + ORIENTATION_NONE, /**< The control has no orientation style */ + ORIENTATION_PORTRAIT, /**< The control has vertical orientation style */ + ORIENTATION_LANDSCAPE, /**< The control has horizontal orientation style */ + ORIENTATION_PORTRAIT_REVERSE, /**< The control has vertical upside-down orientation style */ + ORIENTATION_LANDSCAPE_REVERSE, /**< The control has horizontal reverse orientation style */ + ORIENTATION_AUTOMATIC = 6, /**< The control has vertical, horizontal, and horizontal reverse orientation styles */ + ORIENTATION_AUTOMATIC_FOUR_DIRECTION = 8, /**< The control has four-directional orientation style */ +}; + +/** + * @enum OrientationStatus + * + * Defines the constants used to identify the current orientation of a control. + * + * @since 2.0 + */ +enum OrientationStatus +{ + ORIENTATION_STATUS_NONE = 0, /**< The control orientation status is not determined @if OSPCOMPAT @b Since: @b 2.0 @endif */ + ORIENTATION_STATUS_PORTRAIT = ORIENTATION_PORTRAIT, /**< The control is set to vertical orientation */ + ORIENTATION_STATUS_LANDSCAPE = ORIENTATION_LANDSCAPE, /**< The control is set to horizontal orientation */ + ORIENTATION_STATUS_PORTRAIT_REVERSE = ORIENTATION_PORTRAIT_REVERSE, /**< The control is set to vertical upside-down orientation */ + ORIENTATION_STATUS_LANDSCAPE_REVERSE = ORIENTATION_LANDSCAPE_REVERSE, /**< The control is set to horizontal reverse orientation */ +}; + +/** + * @interface IOrientationEventListener + * @brief This interface implements the listener for orientation events. + * + * @since 2.0 + * + * The %IOrientationEventListener interface is the listener interface for receiving orientation events. + * The class that processes an orientation event implements this interface, and the instance created with that class is registered + * with a UI control, using the control's AddOrientationEventListener() method. When the orientation event occurs, the + * OnOrientationChanged() method of that instance is invoked. + * @n + * For more information on the class features, see Form. + */ +class _OSP_EXPORT_ IOrientationEventListener + : public Tizen::Base::Runtime::IEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~IOrientationEventListener(void) {} + + /** + * Called when an orientation event occurs. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] orientationStatus The information about the orientation event + * @remarks The orientation changed event is fired on %Control for which orientation mode change has been enabled by calling SetOrientation(). + * @see Tizen::Ui::Controls::Frame + * @see Tizen::Ui::Controls::Form + */ + virtual void OnOrientationChanged(const Tizen::Ui::Control& source, Tizen::Ui::OrientationStatus orientationStatus) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void IOrientationEventListener_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void IOrientationEventListener_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void IOrientationEventListener_Reserved3(void) {} +}; // IOrientationEventListener + +}} // Tizen::Ui + +#endif // _FUI_IORIENTATION_EVENT_LISTENER_H_ diff --git a/inc/FUiIScrollPanelEventListener.h b/inc/FUiIScrollPanelEventListener.h new file mode 100644 index 0000000..ab0291f --- /dev/null +++ b/inc/FUiIScrollPanelEventListener.h @@ -0,0 +1,145 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiIScrollPanelEventListener.h + * @brief This is the header file for the %IScrollPanelEventListener interface. + * + * This header file contains the declarations of the %IScrollPanelEventListener interface. @n + * If a change event is generated, a method of this interface is called. @n + * Applications that do jobs related to change events call the methods of this interface. + * + */ +#ifndef _FUI_ISCROLL_PANEL_EVENT_LISTENER_H_ +#define _FUI_ISCROLL_PANEL_EVENT_LISTENER_H_ + +// Includes +#include +#include + +namespace Tizen { namespace Ui +{ +class Control; +}} // Tizen::Ui + +namespace Tizen {namespace Ui +{ + +/** + * @interface IScrollPanelEventListener + * @brief This interface implements a listener for %ScrollPanel events. + * + * @since 2.0 + * + * The %IScrollPanelEventListener interface is the listener interface for receiving change events related to controls (especially an overlay keypad) within the + * ScrollPanel. The class that processes a change event implements this interface, and the instance created with that class is + * registered with a UI control, using the control's AddScrollPanelEventListener() method. When the change event occurs, a method + * of that instance is invoked. + * @n + * For more information on the class features, see Panels and Using EditArea or EditField Overlay Keypad with ScrollPanel. + + */ +class _OSP_EXPORT_ IScrollPanelEventListener + : public Tizen::Base::Runtime::IEventListener +{ +// Operation +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~IScrollPanelEventListener(void) {} + + /** + * Called when an overlay keypad is created on the ScrollPanel control. + * + * @since 2.0 + * + * @param[in] source The source of the event + */ + virtual void OnOverlayControlCreated(const Tizen::Ui::Control& source) = 0; + + /** + * Called when an overlay keypad is opened on the ScrollPanel control. + * + * @since 2.0 + * + * @param[in] source The source of the event + */ + virtual void OnOverlayControlOpened(const Tizen::Ui::Control& source) = 0; + + /** + * Called when an overlay keypad is closed on the ScrollPanel control. + * + * @since 2.0 + * + * @param[in] source The source of the event + */ + virtual void OnOverlayControlClosed(const Tizen::Ui::Control& source) = 0; + + /** + * Called when a control is selected on the ScrollPanel control . + * + * @since 2.0 + * + * @param[in] source The source of the event + */ + virtual void OnOtherControlSelected(const Tizen::Ui::Control& source) = 0; + + // Reserves +protected: + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IScrollPanelEventListener_Reserved1(void) { } + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IScrollPanelEventListener_Reserved2(void) { } + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // @since 2.0 + // + virtual void IScrollPanelEventListener_Reserved3(void) { } + +}; // IScrollPanelEventListener + + +}} // Tizen::Ui + +#endif // _FUI_ISCROLL_PANEL_EVENT_LISTENER_H_ diff --git a/inc/FUiISlidableGroupedListEventListener.h b/inc/FUiISlidableGroupedListEventListener.h new file mode 100644 index 0000000..9c22671 --- /dev/null +++ b/inc/FUiISlidableGroupedListEventListener.h @@ -0,0 +1,131 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiISlidableGroupedListEventListener.h + * @brief This is the header file for the %ISlidableGroupedListEventListener interface. + * + * This header file contains the declarations of the %ISlidableGroupedListEventListener interface. @n + * If an event is generated, a method of this class is called. @n + * So, if an application performs tasks related to item events, it uses the methods of this class. + * + */ +#ifndef _FUI_ISLIDABLE_GROUPED_LIST_EVENT_LISTENER_H_ +#define _FUI_ISLIDABLE_GROUPED_LIST_EVENT_LISTENER_H_ + +#include + +namespace Tizen { namespace Ui +{ +class Control; +} } + +namespace Tizen {namespace Ui +{ + +/** + * @if OSPDEPREC + * @interface ISlidableGroupedListEventListener + * @brief [Deprecated] This interface implements the listener for events on SlidableGroupedList. + * @deprecated This class is deprecated. Instead of using this class, use IGroupedListViewItemEventListener class. + * @since 2.0 + * + * The %ISlidableGroupedListEventListener interface implements a listener for receiving scroll events on %SlidableGroupedList. @n + * The role of this interface is similar to ISlidableListEventListener. + * The class is registered with a %SlidableGroupedList, using the control's AddSlidableGroupedListEventListener() method. + * @endif + */ +class _OSP_EXPORT_ ISlidableGroupedListEventListener + : public Tizen::Base::Runtime::IEventListener +{ +// Operation +public: + /** + * @if OSPDEPREC + * This is the destructor for this class. + * + * @brief [Deprecated] This interface implements the listener for events on SlidableGroupedList. + * @deprecated This class is deprecated. Instead of using this class, use IGroupedListViewItemEventListener class. + * @since 2.0 + * @endif + */ + virtual ~ISlidableGroupedListEventListener(void) {} + + /** + * @if OSPDEPREC + * Called when the %SlidableGroupedList is about to be drawn and requests the listener to set the properties of the list such as the total height and the + * number of items in each group. + * + * @brief [Deprecated] This interface implements the listener for events on SlidableGroupedList. + * @deprecated This class is deprecated. Instead of using this class, use IGroupedListViewItemEventListener class. + * @since 2.0 + * @param[in] source The source of the event + * @endif + */ + virtual void OnListPropertyRequested(const Tizen::Ui::Control& source) = 0; + + /** + * @if OSPDEPREC + * Called when the items need to be loaded to the top. + * + * @brief [Deprecated] This interface implements the listener for events on SlidableGroupedList. + * @deprecated This class is deprecated. Instead of using this class, use IGroupedListViewItemEventListener class. + * @since 2.0 + * @param[in] source The source of the event + * @param[in] groupIndex The index of the list group + * @param[in] itemIndex The index of the list item in the specified group + * @param[in] numItems The number of items + * @endif + */ + virtual void OnLoadToTopRequested(const Tizen::Ui::Control& source, int groupIndex, int itemIndex, int numItems) = 0; + + /** + * @if OSPDEPREC + * Called when the items need to be loaded to the bottom. + * + * @brief [Deprecated] This interface implements the listener for events on SlidableGroupedList. + * @deprecated This class is deprecated. Instead of using this class, use IGroupedListViewItemEventListener class. + * @since 2.0 + * @param[in] source The source of the event + * @param[in] groupIndex The index of the list group + * @param[in] itemIndex The index of the list item in the specified group + * @param[in] numItems The number of items + * @endif + */ + virtual void OnLoadToBottomRequested(const Tizen::Ui::Control& source, int groupIndex, int itemIndex, int numItems) = 0; + + /** + * @if OSPDEPREC + * Called when an item is about to be unloaded from memory. @n + * The user-allocated resources associated with the item to be unloaded need to be freed when OnUnloadItemRequested() is called. + * + * @brief [Deprecated] This interface implements the listener for events on SlidableGroupedList. + * @deprecated This class is deprecated. Instead of using this class, use IGroupedListViewItemEventListener class. + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] groupIndex The index of the list group + * @param[in] itemIndex The index of the list item in the specified group + * @endif + */ + virtual void OnUnloadItemRequested(const Tizen::Ui::Control& source, int groupIndex, int itemIndex) = 0; + +}; //ISlidableGroupedListEventListener + +}} //Tizen::Ui + +#endif // _FUI_ISLIDABLE_GROUPED_LIST_EVENT_LISTENER_H_ diff --git a/inc/FUiISlidableListEventListener.h b/inc/FUiISlidableListEventListener.h new file mode 100644 index 0000000..3674979 --- /dev/null +++ b/inc/FUiISlidableListEventListener.h @@ -0,0 +1,131 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiISlidableListEventListener.h + * @brief This is the header file for the %ISlidableListEventListener interface. + * + * This header file contains the declarations of the %ISlidableListEventListener interface. @n + * If the event is generated, a method of this class is called. @n + * So, if applications do jobs related to item events, use the methods of this class. + * + */ +#ifndef _FUI_ISLIDABLE_LIST_EVENT_LISTENER_H_ +#define _FUI_ISLIDABLE_LIST_EVENT_LISTENER_H_ + +#include + +namespace Tizen { namespace Ui +{ +class Control; +} } + +namespace Tizen {namespace Ui +{ + +/** + * @if OSPDEPREC + * @interface ISlidableListEventListener + * @brief [Deprecated] This interface implements the listener for events on %SlidableList. + * @deprecated This class is deprecated. Instead of using this class, use IListViewItemEventListener class. + * @since 2.0 + * + * + * The %ISlidableListEventListener interface implements a listener for receiving scroll events on SlidableList. This listener is implemented + * to allow the application to load the items as needed, as the user scrolls through the list. + * The class is registered with a SlidableList, using the control's AddSlidableListEventListener() method. + * @endif + */ +class _OSP_EXPORT_ ISlidableListEventListener + : public Tizen::Base::Runtime::IEventListener +{ +// Operation +public: + /** + * @if OSPDEPREC + * This is the destructor for this class. + * + * @brief [Deprecated] This interface implements the listener for events on %SlidableList. + * @deprecated This class is deprecated. Instead of using this class, use IListViewItemEventListener class. + * @since 2.0 + * @endif + */ + virtual ~ISlidableListEventListener(void) {} + + /** + * @if OSPDEPREC + * Called when the slidable list is about to be drawn and requests to set the properties of the list such as the total height. + * + * @brief [Deprecated] This interface implements the listener for events on %SlidableList. + * @deprecated This class is deprecated. Instead of using this class, use IListViewItemEventListener class. + * @since 2.0 + * + * @param[in] source The source of the event + * @endif + */ + virtual void OnListPropertyRequested(const Tizen::Ui::Control& source) = 0; + + /** + * @if OSPDEPREC + * Called when the items need to be loaded to the top. + * + * @brief [Deprecated] This interface implements the listener for events on %SlidableList. + * @deprecated This class is deprecated. Instead of using this class, use IListViewItemEventListener class. + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] index The index of the item + * @param[in] numItems The number of items + * @endif + */ + virtual void OnLoadToTopRequested(const Tizen::Ui::Control& source, int index, int numItems) = 0; + + /** + * @if OSPDEPREC + * Called when the items need to be loaded to the bottom. + * + * @brief [Deprecated] This interface implements the listener for events on %SlidableList. + * @deprecated This class is deprecated. Instead of using this class, use IListViewItemEventListener class. + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] index The index of the item + * @param[in] numItems The number of items + * @endif + */ + virtual void OnLoadToBottomRequested(const Tizen::Ui::Control& source, int index, int numItems) = 0; + + /** + * @if OSPDEPREC + * Called when an item is about to be unloaded from memory. @n + * The user-allocated resources associated with the item must be freed before unloading, when OnUnloadItemRequested() is called. + * + * @brief [Deprecated] This interface implements the listener for events on %SlidableList. + * @deprecated This class is deprecated. Instead of using this class, use IListViewItemEventListener class. + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] index The index of the item + * @endif + */ + virtual void OnUnloadItemRequested(const Tizen::Ui::Control& source, int index) = 0; + +}; //ISlidableListEventListener + +}} //Tizen::Ui + +#endif // _FUI_ISLIDABLE_LIST_EVENT_LISTENER_H_ diff --git a/inc/FUiITextBlockEventListener.h b/inc/FUiITextBlockEventListener.h new file mode 100644 index 0000000..07e034a --- /dev/null +++ b/inc/FUiITextBlockEventListener.h @@ -0,0 +1,125 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiITextBlockEventListener.h + * @brief This is the header file for the %ITextBlockEventListener interface. + * + * This header file contains the declarations of the %ITextBlockEventListener interface. + */ +#ifndef _FUI_ITEXT_BLOCK_EVENT_LISTENER_H_ +#define _FUI_ITEXT_BLOCK_EVENT_LISTENER_H_ + +// Includes +#include + +// Forward declaration +namespace Tizen { namespace Ui +{ +class Control; +}} // Tizen::Ui + +// Namespace declaration +namespace Tizen { namespace Ui +{ +/** + * @interface ITextBlockEventListener + * @brief This interface implements the listener for the text block events. + * + * @since 2.0 + * + * The %ITextBlockEventListener interface is the listener interface for receiving text block selection events, for example, from EditFields. + * The class that processes a text block selection event implements this interface, and the instance created with that class is + * registered with a UI control, using the control's AddTextBlockEventListener() method. When the text block selection event + * occurs, the OnTextBlockSelected() method of that instance is invoked. + * + * For more information on the class features, see EditArea and EditField. + + */ +class _OSP_EXPORT_ ITextBlockEventListener + : public Tizen::Base::Runtime::IEventListener +{ +// Lifecycle +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~ITextBlockEventListener(void) {} + + +// Operation +public: + /** + * Called when a text block is selected. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] start The start index of the selected text block + * @param[in] end The end index of the selected text block + */ + virtual void OnTextBlockSelected(Tizen::Ui::Control& source, int start, int end) = 0; + + +// Reserves +protected: + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void ITextBlockEventListener_Reserved1(void) { } + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void ITextBlockEventListener_Reserved2(void) { } + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void ITextBlockEventListener_Reserved3(void) { } + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void ITextBlockEventListener_Reserved4(void) { } + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void ITextBlockEventListener_Reserved5(void) { } +}; // ITextBlockEventListener + +}} //Tizen::Ui + +#endif // _FUI_ITEXT_BLOCK_EVENT_LISTENER_H_ diff --git a/inc/FUiITextEventListener.h b/inc/FUiITextEventListener.h new file mode 100644 index 0000000..3b2130c --- /dev/null +++ b/inc/FUiITextEventListener.h @@ -0,0 +1,120 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiITextEventListener.h + * @brief This is the header file for the %ITextEventListener interface. + * + * This header file contains the declarations of the %ITextEventListener interface. @n + * If a change event is generated, a method of this interface is called. @n + * So, if the applications perform tasks related to change events, use the methods of this interface. + * + */ +#ifndef _FUI_ITEXT_EVENT_LISTENER_H_ +#define _FUI_ITEXT_EVENT_LISTENER_H_ + +// Includes +#include +#include + +namespace Tizen { namespace Ui +{ +class Control; +}} // Tizen::Ui + +namespace Tizen {namespace Ui +{ + +/** + * @interface ITextEventListener + * @brief This interface implements the listener for text events. + * + * @since 2.0 + * + * The %ITextEventListener interface is the listener interface for receiving text events, for example, from EditFields. + * The class that processes a text event implements this interface, and the instance created with that class is registered with a + * UI control, using the control's AddTextEventListener() method. When the text event occurs, the OnTextValueChanged() method of + * that instance is invoked. + * + * For more information on the class features, see EditArea and EditField, ExpandableEditArea, TextBox, and SearchBar. + + */ +class ITextEventListener + : public Tizen::Base::Runtime::IEventListener +{ +// Operation +public: + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~ITextEventListener(void) {} + + /** + * Called when a text is changed. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @remarks For EditField or EditArea with INPUT_STYLE_FULLSCREEN input style, this listener method is invoked when the user presses "Done" + * soft-key. Whereas, for %EditField or %EditArea with INPUT_STYLE_OVERLAY input style, this method is called whenever the user presses a + * key. + * @remarks Note that when a non-character key is pressed, OnTextValueChanged() callback is invoked. + */ + virtual void OnTextValueChanged(const Tizen::Ui::Control& source) = 0; + + /** + * Called when a change made to the text is canceled. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @remarks This listener method is called when the user presses "Cancel" soft-key for EditField or EditArea with INPUT_STYLE_FULLSCREEN input + * style. + */ + virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source) = 0; + +// Reserves +protected: + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void ITextEventListener_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void ITextEventListener_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void ITextEventListener_Reserved3(void) {} +}; // ITextEventListener + +}} // Tizen::Ui + +#endif // _FUI_ITEXT_EVENT_LISTENER_H_ diff --git a/inc/FUiITimeChangeEventListener.h b/inc/FUiITimeChangeEventListener.h new file mode 100644 index 0000000..4051676 --- /dev/null +++ b/inc/FUiITimeChangeEventListener.h @@ -0,0 +1,125 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiITimeChangeEventListener.h + * @brief This is the header file for the %ITimeChangeEventListener interface. + * + * This header file contains the declarations of the %ITimeChangeEventListener interface. @n + * If a change event is generated, a method of this class is called. @n + * So, for tasks related to change events, use the methods of this class. + * + */ +#ifndef _FUI_ITIME_CHANGE_EVENT_LISTENER_H_ +#define _FUI_ITIME_CHANGE_EVENT_LISTENER_H_ + +// Includes +#include +#include + +namespace Tizen { namespace Ui +{ +class Control; +} } + +namespace Tizen {namespace Ui +{ + +/** + * @interface ITimeChangeEventListener + * @brief This interface implements the listener for the time change events. + * + * @since 2.0 + * + * The %ITimeChangeEventListener interface is the listener interface for receiving time change events. + * The class that processes a time change event implements this interface, and the instance created with that class is registered + * with a UI control, using the control's AddTimeChangeEventListener() method. When the time change event occurs, the + * OnTimeChanged() method of that instance is invoked. + * + * For more information on the class features, see EditDate and EditTime and DatePicker, TimePicker, and DateTimePicker. + + */ +class _OSP_EXPORT_ ITimeChangeEventListener + : public Tizen::Base::Runtime::IEventListener +{ +// Operation +public: + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~ITimeChangeEventListener(void) {} + + /** + * Called when there is a change in time. @n + * The changed hour and minute values are passed as input parameters. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] hour The hour + * @param[in] minute The minute + */ + virtual void OnTimeChanged(const Tizen::Ui::Control& source, int hour, int minute) = 0; + + /** + * Called when a time change is canceled. + * + * @since 2.0 + * + * @param[in] source The source of the event + */ + virtual void OnTimeChangeCanceled(const Tizen::Ui::Control& source) = 0; + +protected: + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // The following method is reserved, and their names can be changed + // at any time without prior notice. + // + // @since 2.0 + // + virtual void ITimeChangeEventListener_Reserved1(void) {} + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // The following method is reserved, and their names can be changed + // at any time without prior notice. + // + // @since 2.0 + // + virtual void ITimeChangeEventListener_Reserved2(void) {} + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // The following method is reserved, and their names can be changed + // at any time without prior notice. + // + // @since 2.0 + // + virtual void ITimeChangeEventListener_Reserved3(void) {} +}; // ITimeChangeEventListener + +}} // Tizen::Ui + +#endif // _FUI_ITIME_CHANGE_EVENT_LISTENER_H_ diff --git a/inc/FUiITouchCustomGestureEventListener.h b/inc/FUiITouchCustomGestureEventListener.h new file mode 100644 index 0000000..0309340 --- /dev/null +++ b/inc/FUiITouchCustomGestureEventListener.h @@ -0,0 +1,122 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** +* @file FUiITouchCustomGestureEventListener.h +* @brief This is the header file for the %ITouchCustomGestureEventListener interface. +* +* This header file contains the declarations of the %ITouchCustomGestureEventListener interface. +*/ + +#ifndef _FUI_ITOUCH_CUSTOM_GESTURE_EVENT_LISTENER_H_ +#define _FUI_ITOUCH_CUSTOM_GESTURE_EVENT_LISTENER_H_ + +#include + +namespace Tizen { namespace Ui +{ + +/** + * @class ITouchCustomGestureEventListener + * @brief This interface is used as the argument to the touch custom gesture event listener. + * @since 2.0 + * + * The %ITouchCustomGestureEventListener interface is the listener interface for receiving custom gesture events. + * The class that processes a custom gesture event implements this interface, and the instance created with that class is registered with a + * gesture detector, using the gesture detector's AddGestureEventListener() method. When the custom gesture event occurs, a method of that instance is + * invoked. + * + */ +class _OSP_EXPORT_ ITouchCustomGestureEventListener + : virtual public ITouchGestureEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~ITouchCustomGestureEventListener(void) {} + + /** + * Called when a custom gesture detection is started. + * + * @since 2.0 + * + * @param[in] gestureDetector The custom gesture detector instance + */ + virtual void OnCustomGestureStarted(Tizen::Ui::TouchGestureDetector& gestureDetector) = 0; + + /** + * Called when a custom gesture is detected and is in progress. + * + * @since 2.0 + * + * @param[in] gestureDetector The custom gesture detector instance + */ + virtual void OnCustomGestureChanged(Tizen::Ui::TouchGestureDetector& gestureDetector) = 0; + + /** + * Called when a custom gesture detection is finished. + * + * @since 2.0 + * + * @param[in] gestureDetector The custom gesture detector instance + */ + virtual void OnCustomGestureFinished(Tizen::Ui::TouchGestureDetector& gestureDetector) = 0; + + /** + * Called when a custom gesture detection is canceled. + * + * @since 2.0 + * + * @param[in] gestureDetector The custom gesture detector instance + */ + virtual void OnCustomGestureCanceled(Tizen::Ui::TouchGestureDetector& gestureDetector) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Following method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchCustomGestureEventListener_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Following method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchCustomGestureEventListener_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Following method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchCustomGestureEventListener_Reserved3(void) {} +}; // ITouchCustomGestureEventListener + +}} // Tizen::Ui + +#endif // _FUI_ITOUCH_CUSTOM_GESTURE_EVENT_LISTENER_H_ diff --git a/inc/FUiITouchEventListener.h b/inc/FUiITouchEventListener.h new file mode 100644 index 0000000..f230acf --- /dev/null +++ b/inc/FUiITouchEventListener.h @@ -0,0 +1,193 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** +* @file FUiITouchEventListener.h +* @brief This is the header file for the %ITouchEventListener interface. +* +* This header file contains the declarations of the %ITouchEventListener interface. +*/ + +#ifndef _FUI_ITOUCH_EVENT_LISTENER_H_ +#define _FUI_ITOUCH_EVENT_LISTENER_H_ + +#include +#include +#include +#include + +namespace Tizen { namespace Ui +{ + +class Control; + +/** + * @interface ITouchEventListener + * @brief This interface is used as the argument to the touch event listener. + * + * @since 2.0 + * + * The %ITouchEventListener interface is the listener interface for receiving touch events. + * The class that processes a touch event implements this interface, and the instance created with that class is registered with a + * UI control, using the control's AddTouchEventListener() method. When the touch event occurs, a method of that instance is + * invoked. + * @n + * For more information on the class features, see Event Listeners. + */ +class _OSP_EXPORT_ ITouchEventListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + * + */ + virtual ~ITouchEventListener(void) {} + + /** + * Called when an entity is touch pressed. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] currentPosition The current position + * @param[in] touchInfo The touch event information + */ + virtual void OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo & touchInfo) = 0; + + /** + * @if OSPDEPREC + * Called when an entity is touched and held for a long time. + * + * @brief [Deprecated] + * @deprecated This callback is deprecated. + * If you want to listen to "long press" touch event, it is recommended to use TouchLongPressGestureDetector class. + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] currentPosition The current position + * @param[in] touchInfo The touch event information + * @endif + */ + virtual void OnTouchLongPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo) {} + + /** + * Called when an entity is touch released. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] currentPosition The current position + * @param[in] touchInfo The touch event information + */ + virtual void OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo) = 0; + + /** + * Called when an entity is touch moved. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] currentPosition The current position + * @param[in] touchInfo The touch event information + */ + virtual void OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo) = 0; + + /** + * @if OSPDEPREC + * Called when an entity is touched and double-pressed. + * + * @brief [Deprecated] + * @deprecated This callback is deprecated. + * If you want to listen to "double press" touch event, it is recommended to use TouchTapGestureDetector class. + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] currentPosition The current position + * @param[in] touchInfo The touch event information + * @endif + */ + virtual void OnTouchDoublePressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo) {} + + /** + * Called when the user has touched down on a control, drags finger out of control's bounds, and then drags finger back in to the control's bounds. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] currentPosition The current position + * @param[in] touchInfo The touch event information + */ + virtual void OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo) = 0; + + /** + * Called when the user touches down on a control and drags finger out of control's bounds + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] currentPosition The current position + * @param[in] touchInfo The touch event information + */ + virtual void OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo) = 0; + + /** + * Called when the touch is canceled. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] currentPosition The current position + * @param[in] touchInfo The touch event information + */ + virtual void OnTouchCanceled(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo) {} + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchEventListener_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchEventListener_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchEventListener_Reserved3(void) {} + +}; // ITouchEventListener + +}} // Tizen::Ui + +#endif // _FUI_ITOUCH_EVENT_LISTENER_H_ diff --git a/inc/FUiITouchFlickGestureEventListener.h b/inc/FUiITouchFlickGestureEventListener.h new file mode 100644 index 0000000..df3f7ce --- /dev/null +++ b/inc/FUiITouchFlickGestureEventListener.h @@ -0,0 +1,105 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiITouchFlickGestureEventListener.h + * @brief This is the header file for the %ITouchFlickGestureEventListener interface. + * + * This header file contains the declarations of the %ITouchFlickGestureEventListener interface. + */ + +#ifndef _FUI_ITOUCH_FLICK_GESTURE_EVENT_LISTENER_H_ +#define _FUI_ITOUCH_FLICK_GESTURE_EVENT_LISTENER_H_ + +#include +#include + +namespace Tizen { namespace Ui +{ + +/** + * @class ITouchFlickGestureEventListener + * @brief This interface implements the listener for the touch flick gesture events. + * @since 2.0 + * + * The %ITouchFlickGestureEventListener interface is the listener interface for receiving flick gesture events. + * The class that processes a flick gesture event implements this interface, and the instance created with that class is registered with a + * flick gesture detector, using the gesture detector's AddFlickGestureEventListener() method. When the flick gesture event occurs, a method of that instance is + * invoked. + * + */ +class _OSP_EXPORT_ ITouchFlickGestureEventListener + : virtual public ITouchGestureEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~ITouchFlickGestureEventListener(void) {} + + /** + * Called when a flick gesture is detected. + * + * @since 2.0 + * + * @param[in] gestureDetector The flick gesture detector instance + */ + virtual void OnFlickGestureDetected(Tizen::Ui::TouchFlickGestureDetector& gestureDetector) = 0; + + /** + * Called when a flick gesture detection is canceled. + * + * @since 2.0 + * + * @param[in] gestureDetector The flick gesture detector instance + */ + virtual void OnFlickGestureCanceled(Tizen::Ui::TouchFlickGestureDetector& gestureDetector) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Following method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchFlickGestureEventListener_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Following method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchFlickGestureEventListener_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // Following method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchFlickGestureEventListener_Reserved3(void) {} +}; // ITouchFlickGestureEventListener + +}} // Tizen::Ui + +#endif // _FUI_ITOUCH_FLICK_GESTURE_EVENT_LISTENER_H_ diff --git a/inc/FUiITouchGestureEventListener.h b/inc/FUiITouchGestureEventListener.h new file mode 100644 index 0000000..0218a11 --- /dev/null +++ b/inc/FUiITouchGestureEventListener.h @@ -0,0 +1,86 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiITouchGestureEventListener.h + * @brief This is the header file for the %ITouchGestureEventListener interface. + * + * This header file contains the declarations of the %ITouchGestureEventListener interface. + */ + +#ifndef _FUI_ITOUCH_GESTURE_EVENT_LISTENER_H_ +#define _FUI_ITOUCH_GESTURE_EVENT_LISTENER_H_ + +#include + +namespace Tizen { namespace Ui +{ + +/** + * @class ITouchGestureEventListener + * @brief This is a base interface that all gesture event listeners must implement. + * + * @since 2.0 + * + * The %ITouchGestureEventListener interface is a base interface that all gesture event listeners must implement. + * The event listener can listen when the specific event occurs. The event listener + * has several methods, and each method is called when a specific event occurs. + * + */ +class _OSP_EXPORT_ ITouchGestureEventListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~ITouchGestureEventListener(void) {} + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchGestureEventListener_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchGestureEventListener_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchGestureEventListener_Reserved3(void) {} +}; // ITouchGestureEventListener + +}} // Tizen::Ui + +#endif // _FUI_ITOUCH_GESTURE_EVENT_LISTENER_H_ diff --git a/inc/FUiITouchLongPressGestureEventListener.h b/inc/FUiITouchLongPressGestureEventListener.h new file mode 100644 index 0000000..3b9bcf3 --- /dev/null +++ b/inc/FUiITouchLongPressGestureEventListener.h @@ -0,0 +1,106 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiITouchLongPressGestureEventListener.h + * @brief This is the header file for the %ITouchLongPressGestureEventListener interface. + * + * This header file contains the declarations of the %ITouchLongPressGestureEventListener interface. + */ + +#ifndef _FUI_ITOUCH_LONG_PRESS_GESTURE_EVENT_LISTENER_H_ +#define _FUI_ITOUCH_LONG_PRESS_GESTURE_EVENT_LISTENER_H_ + +#include +#include + +namespace Tizen { namespace Ui +{ + +/** + * @class ITouchLongPressGestureEventListener + * @brief This interface implements the listener for the touch long press gesture events. + * + * @since 2.0 + * + * The %ITouchLongPressGestureEventListener interface is the listener interface for receiving long press gesture events. + * The class that processes a long press gesture event implements this interface, and the instance created with that class is registered with a + * long press gesture detector, using the gesture detector's AddLongPressGestureEventListener() method. When the long press gesture event occurs, a method of that instance is + * invoked. + */ +class _OSP_EXPORT_ ITouchLongPressGestureEventListener + : virtual public ITouchGestureEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~ITouchLongPressGestureEventListener(void) {} + + /** + * Called when a long press gesture is detected. + * + * @since 2.0 + * + * @param[in] gestureDetector The long press gesture detector instance + */ + virtual void OnLongPressGestureDetected(Tizen::Ui::TouchLongPressGestureDetector& gestureDetector) = 0; + + /** + * Called when a long press detection is canceled. + * + * @since 2.0 + * + * @param[in] gestureDetector The long press gesture detector instance + */ + virtual void OnLongPressGestureCanceled(Tizen::Ui::TouchLongPressGestureDetector& gestureDetector) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchLongPressGestureEventListener_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchLongPressGestureEventListener_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchLongPressGestureEventListener_Reserved3(void) {} +}; // ITouchLongPressGestureEventListener + +}} // Tizen::Ui + +#endif // _FUI_ITOUCH_LONG_PRESS_GESTURE_EVENT_LISTENER_H_ diff --git a/inc/FUiITouchModeChangedEventListener.h b/inc/FUiITouchModeChangedEventListener.h new file mode 100644 index 0000000..2b0b995 --- /dev/null +++ b/inc/FUiITouchModeChangedEventListener.h @@ -0,0 +1,101 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiITouchModeChangedEventListener.h + * @brief This is the header file for the %ITouchModeChangedEventListener interface. + * + * This header file contains the declarations of the %ITouchModeChangedEventListener interface. @n + * If the touch mode of a device is changed, a method of this interface is called. + * Therefore, if an application performs tasks related to the touch mode event, use the methods of this interface. + * + */ + +#ifndef _FUI_ITOUCH_MODE_CHANGED_EVENT_LISTENER_H_ +#define _FUI_ITOUCH_MODE_CHANGED_EVENT_LISTENER_H_ + +#include + +namespace Tizen {namespace Ui +{ +class Control; + +/** + * @interface ITouchModeChangedEventListener + * @brief This interface implements the listener for the touch mode changed event. + * + * @since 2.0 + * + * The %ITouchModeChangedEventListener interface is the listener interface for receiving touch mode change events. + * @n + * For more information on the class features, see Event Listeners. + */ +class _OSP_EXPORT_ ITouchModeChangedEventListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. + * This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~ITouchModeChangedEventListener(void) {}; + + /** + * Called when an action event occurs. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] isInTouchMode The current mode + */ + virtual void OnTouchModeChanged(const Tizen::Ui::Control& source, bool isInTouchMode) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchModeChangedEventListener_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchModeChangedEventListener_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchModeChangedEventListener_Reserved3(void) {} + +}; // ITouchModeChangedEventListener + +}} // Tizen::Ui + +#endif // _FUI_ITOUCH_MODE_CHANGED_EVENT_LISTENER_H_ diff --git a/inc/FUiITouchPanningGestureEventListener.h b/inc/FUiITouchPanningGestureEventListener.h new file mode 100644 index 0000000..bf6c2f0 --- /dev/null +++ b/inc/FUiITouchPanningGestureEventListener.h @@ -0,0 +1,124 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiITouchPanningGestureEventListener.h + * @brief This is the header file for the %ITouchPanningGestureEventListener interface. + * + * This header file contains the declarations of the %ITouchPanningGestureEventListener interface. + */ +#ifndef _FUI_ITOUCH_PANNING_GESTURE_EVENT_LISTENER_H_ +#define _FUI_ITOUCH_PANNING_GESTURE_EVENT_LISTENER_H_ + +#include +#include + +namespace Tizen { namespace Ui +{ + +/** + * @class ITouchPanningGestureEventListener + * @brief This interface implements the listener for the touch panning gesture events. + * + * @since 2.0 + * + * The %ITouchPanningGestureEventListener interface is the listener interface for receiving panning gesture events. + * The class that processes a panning gesture event implements this interface, and the instance created with that class is registered with a + * panning gesture detector, using the gesture detector's AddPanningGestureEventListener() method. When the panning gesture event occurs, a method of that instance is + * invoked. + * + */ +class _OSP_EXPORT_ ITouchPanningGestureEventListener + : virtual public ITouchGestureEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. + * This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~ITouchPanningGestureEventListener(void) {} + + /** + * Called when a panning gesture detection is started. + * + * @since 2.0 + * + * @param[in] gestureDetector The panning gesture detector instance + */ + virtual void OnPanningGestureStarted(Tizen::Ui::TouchPanningGestureDetector& gestureDetector) = 0; + + /** + * Called when a panning gesture is detected and is in progress. + * + * @since 2.0 + * + * @param[in] gestureDetector The panning gesture detector instance + */ + virtual void OnPanningGestureChanged(Tizen::Ui::TouchPanningGestureDetector& gestureDetector) = 0; + + /** + * Called when a panning gesture detection is finished. + * + * @since 2.0 + * + * @param[in] gestureDetector The panning gesture detector instance + */ + virtual void OnPanningGestureFinished(Tizen::Ui::TouchPanningGestureDetector& gestureDetector) = 0; + + /** + * Called when a panning gesture detection is canceled. + * + * @since 2.0 + * + * @param[in] gestureDetector The panning gesture detector instance + */ + virtual void OnPanningGestureCanceled(Tizen::Ui::TouchPanningGestureDetector& gestureDetector) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchPanningGestureEventListener_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchPanningGestureEventListener_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchPanningGestureEventListener_Reserved3(void) {} +}; //ITouchPanningGestureEventListener + +}} // Tizen::Ui + +#endif //_FUI_ITOUCH_PANNING_GESTURE_EVENT_LISTENER_H_ diff --git a/inc/FUiITouchPinchGestureEventListener.h b/inc/FUiITouchPinchGestureEventListener.h new file mode 100644 index 0000000..aea1cc8 --- /dev/null +++ b/inc/FUiITouchPinchGestureEventListener.h @@ -0,0 +1,125 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiITouchPinchGestureEventListener.h + * @brief This is the header file for the %ITouchPinchGestureEventListener interface. + * + * This header file contains the declarations of the %ITouchPinchGestureEventListener interface. + */ + +#ifndef _FUI_ITOUCH_PINCH_GESTURE_EVENT_LISTENER_H_ +#define _FUI_ITOUCH_PINCH_GESTURE_EVENT_LISTENER_H_ + +#include +#include + +namespace Tizen { namespace Ui +{ + +/** + * @class ITouchPinchGestureEventListener + * @brief This interface implements the listener for the touch pinch gesture events. + * + * @since 2.0 + * + * The %ITouchPinchGestureEventListener interface is the listener interface for receiving pinch gesture events. + * The class that processes a pinch gesture event implements this interface, and the instance created with that class is registered with a + * pinch gesture detector, using the gesture detector's AddPinchGestureEventListener() method. When the pinch gesture event occurs, a method of that instance is + * invoked. + * + */ +class _OSP_EXPORT_ ITouchPinchGestureEventListener + : virtual public ITouchGestureEventListener +{ + +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~ITouchPinchGestureEventListener(void) {} + + /** + * Called when a pinch gesture detection is started. + * + * @since 2.0 + * + * @param[in] gestureDetector The pinch gesture detector instance + */ + virtual void OnPinchGestureStarted(Tizen::Ui::TouchPinchGestureDetector& gestureDetector) = 0; + + /** + * Called when a pinch gesture is detected and is in progress. + * + * @since 2.0 + * + * @param[in] gestureDetector The pinch gesture detector instance + */ + virtual void OnPinchGestureChanged(Tizen::Ui::TouchPinchGestureDetector& gestureDetector) = 0; + + /** + * Called when a pinch gesture detection is finished. + * + * @since 2.0 + * + * @param[in] gestureDetector The pinch gesture detector instance + */ + virtual void OnPinchGestureFinished(Tizen::Ui::TouchPinchGestureDetector& gestureDetector) = 0; + + /** + * Called when a pinch gesture detection is canceled. + * + * @since 2.0 + * + * @param[in] gestureDetector The pinch gesture detector instance + */ + virtual void OnPinchGestureCanceled(Tizen::Ui::TouchPinchGestureDetector& gestureDetector) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchPinchGestureEventListener_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchPinchGestureEventListener_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchPinchGestureEventListener_Reserved3(void) {} +}; // ITouchPinchGestureEventListener + +}} // Tizen::Ui + +#endif // _FUI_ITOUCH_PINCH_GESTURE_EVENT_LISTENER_H_ diff --git a/inc/FUiITouchRotationGestureEventListener.h b/inc/FUiITouchRotationGestureEventListener.h new file mode 100644 index 0000000..6a53c7c --- /dev/null +++ b/inc/FUiITouchRotationGestureEventListener.h @@ -0,0 +1,124 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiITouchRotationGestureEventListener.h + * @brief This is the header file for the %ITouchRotationGestureEventListener interface. + * + * This header file contains the declarations of the %ITouchRotationGestureEventListener interface. + */ +#ifndef _FUI_ITOUCH_ROTATION_GESTURE_EVENT_LISTENER_H_ +#define _FUI_ITOUCH_ROTATION_GESTURE_EVENT_LISTENER_H_ + +#include +#include + +namespace Tizen { namespace Ui +{ + +/** + * @class ITouchRotationGestureEventListener + * @brief This interface implements the listener for the touch rotation gesture events. + * + * @since 2.0 + * + * The %ITouchRotationGestureEventListener interface is the listener interface for receiving pinch gesture events. + * The class that processes a rotation gesture event implements this interface, and the instance created with that class is registered with a + * rotation gesture detector, using the gesture detector's AddRotationGestureEventListener() method. When the rotation gesture event occurs, a method of that instance is + * invoked. + * + */ +class _OSP_EXPORT_ ITouchRotationGestureEventListener + : virtual public ITouchGestureEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. + * This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~ITouchRotationGestureEventListener(void) {} + + /** + * Called when a rotation gesture detection is started. + * + * @since 2.0 + * + * @param[in] gestureDetector The rotation gesture detector instance + */ + virtual void OnRotationGestureStarted(Tizen::Ui::TouchRotationGestureDetector& gestureDetector) = 0; + + /** + * Called when a rotation gesture is detected and is in progress. + * + * @since 2.0 + * + * @param[in] gestureDetector The rotation gesture detector instance + */ + virtual void OnRotationGestureChanged(Tizen::Ui::TouchRotationGestureDetector& gestureDetector) = 0; + + /** + * Called when a rotation gesture detection is finished. + * + * @since 2.0 + * + * @param[in] gestureDetector The rotation gesture detector instance + */ + virtual void OnRotationGestureFinished(Tizen::Ui::TouchRotationGestureDetector& gestureDetector) = 0; + + /** + * Called when a rotation gesture detection is canceled. + * + * @since 2.0 + * + * @param[in] gestureDetector The rotation gesture detector instance + */ + virtual void OnRotationGestureCanceled(Tizen::Ui::TouchRotationGestureDetector& gestureDetector) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchRotationGestureEventListener_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchRotationGestureEventListener_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchRotationGestureEventListener_Reserved3(void) {} +}; // ITouchRotationGestureEventListener + +}} // Tizen::Ui + +#endif //_FUI_ITOUCH_ROTATION_GESTURE_EVENT_LISTENER_H_ diff --git a/inc/FUiITouchTapGestureEventListener.h b/inc/FUiITouchTapGestureEventListener.h new file mode 100644 index 0000000..154304b --- /dev/null +++ b/inc/FUiITouchTapGestureEventListener.h @@ -0,0 +1,106 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiITouchTapGestureEventListener.h + * @brief This is the header file for the %ITouchTapGestureEventListener interface. + * + * This header file contains the declarations of the %ITouchTapGestureEventListener interface. + */ + +#ifndef _FUI_ITOUCH_TAP_GESTURE_EVENT_LISTENER_H_ +#define _FUI_ITOUCH_TAP_GESTURE_EVENT_LISTENER_H_ + +#include +#include + +namespace Tizen { namespace Ui +{ + +/** + * @class ITouchTapGestureEventListener + * @brief This interface implements the listener for the touch tap gesture events. + * + * @since 2.0 + * + * The %ITouchTapGestureEventListener interface is the listener interface for receiving tap gesture events. + * The class that processes a tap gesture event implements this interface, and the instance created with that class is registered with a + * tap gesture detector, using the gesture detector's AddTapGestureEventListener() method. When the tap gesture event occurs, a method of that instance is + * invoked. + * + */ +class _OSP_EXPORT_ ITouchTapGestureEventListener + : virtual public ITouchGestureEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~ITouchTapGestureEventListener(void) {} + + /** + * Called when a tap gesture is detected. + * + * @since 2.0 + * + * @param[in] gestureDetector The tap gesture detector instance + */ + virtual void OnTapGestureDetected(Tizen::Ui::TouchTapGestureDetector& gestureDetector) = 0; + + /** + * Called when a tap gesture detection is canceled. + * + * @since 2.0 + * + * @param[in] gestureDetector The tap gesture detector instance + */ + virtual void OnTapGestureCanceled(Tizen::Ui::TouchTapGestureDetector& gestureDetector) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchTapGestureEventListener_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchTapGestureEventListener_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void ITouchTapGestureEventListener_Reserved3(void) {} +}; // ITouchTapGestureEventListener + +}} // Tizen::Ui + +#endif //_FUI_ITOUCH_TAP_GESTURE_EVENT_LISTENER_H_ diff --git a/inc/FUiIUiLinkEventListener.h b/inc/FUiIUiLinkEventListener.h new file mode 100644 index 0000000..f0f06b6 --- /dev/null +++ b/inc/FUiIUiLinkEventListener.h @@ -0,0 +1,112 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiIUiLinkEventListener.h + * @brief This is the header file for the %IUiLinkEventListener interface. + * + * This header file contains the declarations of the %IUiLinkEventListener interface. + */ +#ifndef _FUI_IUI_LINK_EVENT_LISTENER_H_ +#define _FUI_IUI_LINK_EVENT_LISTENER_H_ + +// Includes +#include +#include + +namespace Tizen { namespace Base +{ +class String; +}} // Tizen::Base + +// Namespace declaration +namespace Tizen { namespace Ui +{ + +class Control; + +/** + * @interface IUiLinkEventListener + * @brief This interface implements the listener for link events. + * + * @since 2.0 + * + * The %IUiLinkEventListener interface is the listener interface for receiving link click events, for example, from EditFields. + * The class that processes a link click event implements this interface, and the instance created with that class is registered + * with a UI control, using the control's AddUiLinkEventListener() method. When the link click event occurs, the OnLinkClicked() + * method of that instance is invoked. + * @n + * For more information on the class features, see EditArea and EditField, TextBox, and ListViews. + + */ +class _OSP_EXPORT_ IUiLinkEventListener + : public Tizen::Base::Runtime::IEventListener +{ +// Lifecycle +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~IUiLinkEventListener(void) {} + + // Operation +public: + /** + * Called when a link is clicked. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] text The text + * @param[in] linkType The link type + * @param[in] link The optional link text + * @remarks If the clicked link does not contain an optional link text, then the value of @c text and @c link will be the same. + */ + virtual void OnLinkClicked(Tizen::Ui::Control& source, const Tizen::Base::String& text, Tizen::Base::Utility::LinkType linkType, const Tizen::Base::String& link) = 0; + +// Reserves +protected: + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void IUiLinkEventListener_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void IUiLinkEventListener_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void IUiLinkEventListener_Reserved3(void) {} +}; // IUiLinkEventListener + +} } // Tizen::Ui + +#endif // _FUI_IUI_LINK_EVENT_LISTENER_H_ diff --git a/inc/FUiIWindowEventListener.h b/inc/FUiIWindowEventListener.h new file mode 100644 index 0000000..db8a608 --- /dev/null +++ b/inc/FUiIWindowEventListener.h @@ -0,0 +1,113 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiIWindowEventListener.h + * @brief This is the header file for the %IWindowEventListener interface. + * + * This header file contains the declarations of the %IWindowEventListener interface. @n + * If a window event is generated, a method of this interface is called. @n + * So, if an application does some jobs related to the window event, use the methods of this interface. + * + */ + +#ifndef _FUI_IWINDOW_EVENT_LISTENER_H_ +#define _FUI_IWINDOW_EVENT_LISTENER_H_ + +#include +#include + +namespace Tizen {namespace Ui +{ + +class Window; + +/** + * @interface IWindowEventListener + * @brief This interface implements the listener for the window event. + * + * @since 2.0 + * + * The %IWindowEventListener interface for receiving window events. The class that processes a window event + * implements this interface, and the instance created with that class is registered with a Window using Window's + * AddWindowEventListener() method. When the window event occurs, the OnWindowActivated(), or OnWindowDeactivated() method of that instance is invoked. + */ +class _OSP_EXPORT_ IWindowEventListener + : public Tizen::Base::Runtime::IEventListener +{ +// Operation +public: + /** + * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + * + */ + virtual ~IWindowEventListener(void) {} + + /** + * Called when a window becomes the topmost window. + * + * @since 2.0 + * + * @param[in] source The source of the event + * + */ + virtual void OnWindowActivated(const Tizen::Ui::Window& source) = 0; + + /** + * Called when the window is no longer the topmost window. + * + * @since 2.0 + * + * @param[in] source The source of the event + * + */ + virtual void OnWindowDeactivated(const Tizen::Ui::Window& source) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void IWindowEventListener_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void IWindowEventListener_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + virtual void IWindowEventListener_Reserved3(void) {} +}; + +}}; // Tizen::Ui + +#endif // _FUI_IWINDOW_EVENT_LISTENER_H_ diff --git a/inc/FUiInputConnection.h b/inc/FUiInputConnection.h new file mode 100644 index 0000000..facaadb --- /dev/null +++ b/inc/FUiInputConnection.h @@ -0,0 +1,384 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiInputConnection.h + * @brief This is the header file for the %InputConnection class. + * + * This header file contains the declarations of the %InputConnection class. + */ + +#ifndef _FUI_INPUT_CONNECTION_H_ +#define _FUI_INPUT_CONNECTION_H_ + +#include +#include +#include +#include + +namespace Tizen { namespace Ui { + +class _InputConnectionImpl; +class Control; + + +/** + * @class InputConnection + * @brief This is the header file for the %InputConnection class. + * This header file contains the declarations of the %InputConnection class. + * @since 2.0 + * + * @final This class is not intended for extension. + * + * Example: + * + * This is a simple editor that uses an %InputConnection. + * + * + * @code +// Sample code for EditorSample.h +#include +#include +#include + +namespace Tizen { namespace Ui { + +class EditorSample : +public Tizen::Ui::Control, +public Tizen::Ui::IInputConnectionEventListener, +public Tizen::Ui::IInputConnectionProvider +{ +protected: + +public: + virtual result OnInitializing(); + + result ShowKeypad(); + result HideKeypad(); + virtual void OnInputConnectionPanelShowStateChanged(Tizen::Ui::InputConnection& source, Tizen::Ui::InputPanelShowState showState); + virtual void OnInputConnectionPanelLanguageChanged(Tizen::Ui::InputConnection& source, Tizen::Locales::LanguageCode language); + virtual void OnInputConnectionPanelBoundsChanged(Tizen::Ui::InputConnection& source, const Tizen::Graphics::Rectangle& bounds); + virtual void OnInputConnectionTextPredictionShowStateChanged(Tizen::Ui::InputConnection& source, bool isShown); + virtual void OnInputConnectionTextPredictionBoundsChanged(Tizen::Ui::InputConnection& source, const Tizen::Graphics::Rectangle& bounds); + virtual void OnInputConnectionTextCommitted(Tizen::Ui::InputConnection& source, const Tizen::Base::String& committedText); + virtual void OnInputConnectionComposingTextChanged(Tizen::Ui::InputConnection& source, const Tizen::Base::String& preEditText, int cursorPosition){}; + virtual void DeleteSurroundingText(Tizen::Ui::InputConnection& source, int offset, int chars){}; + virtual void GetPreviousText(Tizen::Ui::InputConnection& source, Tizen::Base::String& text, int& cursorPosition){}; + +private: + InputConnection* __pImf; + bool __bindStatus; +}; + +}} + * @endcode + * + * @code +// Sample code for EditorSample.cpp +#include "EditorSample.h" + +using namespace Tizen::Graphics; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; + +void +EditorSample::OnInputConnectionPanelShowStateChanged(InputConnection& source, InputPanelShowState showState) + { + // .... + } + +void +EditorSample::OnInputConnectionPanelLanguageChanged(InputConnection& source, Tizen::Locales::LanguageCode language) +{ + // .... +} + +void +EditorSample::OnInputConnectionPanelBoundsChanged(InputConnection& source, const Tizen::Graphics::Rectangle& bounds) +{ + // .... +} + +void +EditorSample::OnInputConnectionTextPredictionShowStateChanged(InputConnection& source, bool isShown) +{ + // .... +} + +void +EditorSample::OnInputConnectionTextPredictionBoundsChanged(InputConnection& source, const Tizen::Graphics::Rectangle& bounds) +{ + // .... +} + +void +EditorSample::OnInputConnectionTextCommitted(InputConnection& source, const Tizen::Base::String& committedText) +{ + // .... +} + +result +EditorSample::OnInitializing() +{ + result r = E_SUCCESS; + + __bindStatus = false; + + // Creates an instance of InputConnection + __pImf = new (std::nothrow) InputConnection(); + __pImf->Construct(this, *this, *this); + + return r; +} + +result +EditorSample::ShowKeypad() +{ + result r = E_SUCCESS; + + if(!__bindStatus) + { + __pImf->BindInputMethod(); + __bindStatus = true; + __pImf->ShowInputPanel(); + } + + return r; +} + +result +EditorSample::HideKeypad() +{ + result r = E_SUCCESS; + + if (__bindStatus != false) + { + __pImf->HideInputPanel(); + __pImf->UnbindInputMethod(); + __bindStatus = false; + } + + return r; +} + + * @endcode + * + */ + +class _OSP_EXPORT_ InputConnection + : public Tizen::Base::Object +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + InputConnection(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~InputConnection(void); + + /** + * Initializes this instance of the %InputConnection with the specified parameter. + * + * @since 2.0 + * @return An error code + * @param[in] pControl The source object for connecting the Input Method. + * @param[in] listener An instance of the %IInputConnectionEventListener for processing the event + * @param[in] provider The %InputConnection provider + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_SYSTEM The method cannot proceed due to a severe system error. + */ + result Construct(const Control* pControl, IInputConnectionEventListener& listener, IInputConnectionProvider& provider); + + /** + * Binds the %InputConnection to the current active Input Method + * + * @since 2.0 + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. + * @see UnbindInputMethod() + * @remarks This method should be called when the %Control object has the input focus. + */ + result BindInputMethod(void); + + /** + * Unbinds the %InputConnection from the current active Input Method. It will no longer be valid for the Input Method. + * + * @since 2.0 + * @see BindInputMethod() + */ + void UnbindInputMethod(void); + + /** + * Asks the current active Input Method to show the Input Panel which contains the keyboard. + * + * @since 2.0 + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This exception is thrown when BindInputMethod is not called before calling this method. + * @see HideInputPanel() + */ + result ShowInputPanel(void); + + /** + * Asks the current active Input Method to hide the active Input Panel which contains the keyboard. + * + * @since 2.0 + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This exception is thrown when BindInputMethod is not called before calling this method. + * @see ShowInputPanel() + */ + result HideInputPanel(void); + + /** + * Sets the style of the current active Input Panel. + * + * @since 2.0 + * @param[in] style The style of the Input Panel. + * @remarks This method may not work, depending on the current active Input Method. + */ + void SetInputPanelStyle(InputPanelStyle style); + + /** + * Sets the auto-capitalization mode. + * + * @since 2.0 + * @param[in] autoCapitalizationMode The auto-capitalization mode. + * @remarks This method may not work, depending on the current active Input Method. + */ + void SetAutoCapitalizationMode(AutoCapitalizationMode autoCapitalizationMode); + + /** + * Finishes text composition. + * This will typically cause the Input Method to exit the composing state. + * + * @since 2.0 + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This exception is thrown when BindInputMethod is not called before calling this method. + */ + result FinishTextComposition(void); + + /** + * Sets the type of ActionKey. + * + * @since 2.0 + * @param[in] inputPanelAction The InputPanel action + * @remarks This method may not work, depending on the current active Input Method. + */ + void SetInputPanelAction(InputPanelAction inputPanelAction); + + /** + * Enables or disables the ActionKey. + * + * @since 2.0 + * @param[in] enable Set to @c true to enable the ActionKey, @n + * else @c false + * @remarks This method may not work, depending on the current active Input Method. + */ + void SetInputPanelActionEnabled(bool enable); + + /** + * Sets the language of the current active Input Panel. + * + * @since 2.0 + * @param[in] languageCode The language to set + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks This method may not work, depending on the current active Input Method. + */ + result SetInputPanelLanguage(Tizen::Locales::LanguageCode languageCode); + + /** + * Sets the cursor at the specified position. + * + * @since 2.0 + * @param[in] position The cursor position that is to be set + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_INVALID_STATE This exception is thrown when BindInputMethod is not called before calling this method. + */ + result SetCursorPosition(int position); + + /** + * Sets the bounds of the cursor + * + * @since 2.0 + * @param[in] rect the rectangle to be set + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_INVALID_STATE This exception is thrown when BindInputMethod is not called before calling this method. + */ + result SetCursorBounds(const Tizen::Graphics::Rectangle& rect); + + /** + * Gets the bounds of the current active Input Panel. + * + * @since 2.0 + * @return An instance of the rectangle that represents the position of the top-left corner, + * the width, and the height of the Input Panel. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_STATE This exception is thrown when BindInputMethod is not called before calling this method. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Graphics::Rectangle GetInputPanelBounds(void) const; + + /** + * Enables or disables text prediction. + * + * @since 2.0 + * @param[in] enable Set to @c true to enable text prediction, @n + * else @c false + * @remarks This method may not work, depending on the current active Input Method. + */ + void SetTextPredictionEnabled(bool enable); + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + // @since 2.0 + // + InputConnection(const InputConnection& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + // @since 2.0 + // + InputConnection& operator=(const InputConnection& rhs); + +private: + friend class _InputConnectionImpl; + _InputConnectionImpl* __pInputConnectionImpl; + +}; // InputConnection + +}} // Tizen::Ui + +#endif // _FUI_INPUT_CONNECTION_H_ diff --git a/inc/FUiInputConnectionTypes.h b/inc/FUiInputConnectionTypes.h new file mode 100644 index 0000000..9b371f2 --- /dev/null +++ b/inc/FUiInputConnectionTypes.h @@ -0,0 +1,96 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * @file FUiInputConnectionTypes.h + * @brief This is the header file for the data types. + * + * This header file contains the declarations of commonly used types. + * + */ + + +#ifndef _FUI_INPUT_CONNECTION_TYPES_H_ +#define _FUI_INPUT_CONNECTION_TYPES_H_ + +namespace Tizen { namespace Ui { + + +/** + * @enum InputPanelStyle + * Defines the style of the InputPanel. + * + * @since 2.0 + */ +enum InputPanelStyle +{ + INPUT_PANEL_STYLE_NORMAL, /**< Default style */ + INPUT_PANEL_STYLE_EMAIL, /**< Email style */ + INPUT_PANEL_STYLE_URL, /**< URL style */ + INPUT_PANEL_STYLE_NUMBER, /**< Number style */ + INPUT_PANEL_STYLE_NUMBER_ONLY, /**< Number Only style */ + INPUT_PANEL_STYLE_PHONE_NUMBER, /**< Phone Number style */ + INPUT_PANEL_STYLE_IP /**< IP style */ +}; + +/** + * @enum InputPanelShowState + * Defines the state of the InputPanel + * + * @since 2.0 + */ +enum InputPanelShowState +{ + INPUT_PANEL_SHOW_STATE_SHOW, /**< Show State */ + INPUT_PANEL_SHOW_STATE_HIDE /**< Hide State */ +}; + +/** + * @enum AutoCapitalizationMode + * Defines the type of the AutoCapitalization + * + * @since 2.0 + */ +enum AutoCapitalizationMode +{ + AUTO_CAPITALIZATION_MODE_NONE, /**< AutoCapitalization None Mode */ + AUTO_CAPITALIZATION_MODE_WORD, /**< AutoCapitalization WORD Mode */ + AUTO_CAPITALIZATION_MODE_SENTENCE, /**< AutoCapitalization Sentence Mode */ + AUTO_CAPITALIZATION_MODE_ALL /**< AutoCapitalization All Mode */ +}; + +/** + * @enum InputPanelAction + * + * Defines the possible keypad action types. + * @since 2.0 + */ +enum InputPanelAction +{ + INPUT_PANEL_ACTION_ENTER, /**< The Enter key */ + INPUT_PANEL_ACTION_GO, /**< The Go key */ + INPUT_PANEL_ACTION_NEXT, /**< The Next key */ + INPUT_PANEL_ACTION_SEND, /**< The Send key */ + INPUT_PANEL_ACTION_SEARCH, /**< The Search key */ + INPUT_PANEL_ACTION_LOGIN, /**< The Login key */ + INPUT_PANEL_ACTION_SIGN_IN, /**< The Sign-In key */ + INPUT_PANEL_ACTION_JOIN, /**< The Join key */ + INPUT_PANEL_ACTION_DONE /**< The Done key */ +}; + +}} // Tizen::Ui + +#endif // _FUI_INPUT_CONNECTION_TYPES_H_ diff --git a/inc/FUiKeyEventManager.h b/inc/FUiKeyEventManager.h new file mode 100644 index 0000000..a08bed1 --- /dev/null +++ b/inc/FUiKeyEventManager.h @@ -0,0 +1,135 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiKeyEventManager.h + * @brief This is the header file for the %KeyEventManager class. + * + * This header file contains the declarations of the %KeyEventManager class. + */ + +#ifndef _FUI_KEY_EVENT_MANAGER_H_ +#define _FUI_KEY_EVENT_MANAGER_H_ + +#include +#include +#include + +namespace Tizen { namespace Base { namespace Runtime +{ +class _IEvent; +class IEventArg; +}}} + +namespace Tizen {namespace Ui +{ +class Control; + +/** + * @class KeyEventManager + * @brief This class manages the key events that are fired within the context of this application. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %KeyEventManager class listens to all key events that are generated within the application's context. + * @n + * For more information on the class features, see Event Listeners. + */ +class _OSP_EXPORT_ KeyEventManager + : public Tizen::Base::Object +{ +public: + /** + * This destructor overrides Osp::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~KeyEventManager(void); + + /** + * Gets the pointer to the current key event manager. + * + * @since 2.0 + * + * @return The current %KeyEventManager instance + */ + static KeyEventManager* GetInstance(void); + + /** + * Adds an application-wide %IKeyEventListener instance. @n + * The added listeners get notified when a key is pressed, released, or long pressed within the context of this application. + * + * @since 2.0 + * + * @param[in] listener The event listener to be added + * @remarks The listener is called after the key event is delivered to the focused control's key event listeners, but before the + * key event is passed onto the focused control itself. @n + * Moreover, if the key needs to be consumed by the control itself, the added listeners will not be notified. + * @see RemoveKeyEventListener () + */ + void AddKeyEventListener(IKeyEventListener& listener); + + /** + * Removes the %IKeyEventListener instance. @n + * The removed listener is not notified even when the key events are fired. + * + * @since 2.0 + * + * @return listener The current application-wide key event listener to be removed + * @see AddKeyEventListener() + */ + void RemoveKeyEventListener(IKeyEventListener& listener); + +protected: + /** + * This is the default constructor for this class. + * + * @since 2.0 + */ + KeyEventManager(void); + + /** + * Initializes this instance of %KeyEventManager. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(void); + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + KeyEventManager(const KeyEventManager& value); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + KeyEventManager& operator =(const KeyEventManager& value); + + static void InitializeInstance(void); + +}; // KeyEventManager + +}} // Tizen::Ui + +#endif // _FUI_KEY_EVENT_MANAGER_H_ diff --git a/inc/FUiKeyboardMap.h b/inc/FUiKeyboardMap.h new file mode 100644 index 0000000..4742cf4 --- /dev/null +++ b/inc/FUiKeyboardMap.h @@ -0,0 +1,308 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiKeyboardMap.h + * @brief This is the header file for the %KeyboardMap class. + * + * This header file contains the declarations of the %KeyboardMap class. + */ + +#ifndef _FUI_KEYBOARD_MAP_H_ +#define _FUI_KEYBOARD_MAP_H_ + +#include +#include +#include +#include + +namespace Tizen {namespace Ui +{ +/** + * @if OSPDEPREC + * @enum KeyboardKeyLabelType + * + * Defines the key label types. @n + * It defines the types of labels that are printed on the corresponding key of the QWERTY keyboard. Only the printing + * keys have one or more text labels. + * + * @brief [Deprecated] + * @deprecated This enum is deprecated because it is not supported by platform. + * @since 2.0 + * @endif + */ +enum KeyboardKeyLabelType +{ + /** + * @if OSPDEPREC + * The first label to be displayed + * @endif + */ + KEYBOARD_KEY_LABEL_1 = 0x0000, + + /** + * @if OSPDEPREC + * The second label to be displayed after KEY_CAPSLOCK or KEY_FN is pressed + * @endif + */ + KEYBOARD_KEY_LABEL_2, + + /** + * @if OSPDEPREC + * The third label to be displayed when the key is toggled twice (without pressing KEY_CAPSLOCK or KEY_FN) + * @endif + */ + KEYBOARD_KEY_LABEL_3, + + /** + * @if OSPDEPREC + * The fourth label to be displayed when the key is toggled the third time (without pressing KEY_CAPSLOCK or KEY_FN) + * @endif + */ + KEYBOARD_KEY_LABEL_4, + + /* + * @if OSPDEPREC + * The max value + * @endif + */ + KEYBOARD_KEY_LABEL_MAX = 255 +}; + + +/** + * @if OSPDEPREC + * @class KeyboardMap + * @brief [Deprecated] This class manages the hardware keyboard key mapping. + * @deprecated This class is deprecated because it is not supported by platform. + * @since 2.0 + * + * The %KeyboardMap class maintains a map of hardware keys. You can query the current + * hardware keyboard type of the device and check the availability of a + * specific key. Furthermore, you can query the labels that are printed on the + * hardware keyboard of a specific key. + * + * The following example demonstrates how to get the type of the keyboard and the property of each key: + * + * @code + * KeyboardMap* pKeyboardMap = KeyboardMap::GetInstance(); + * if (pKeyboardMap != null) + * { + * // Gets the keyboard type + * String type = pKeyboardMap->GetKeyboardType(); + * AppLog("The current hardware keyboard type = %ls", type.GetPointer()); + * + * // Checks properties of the hardware key + * bool available = pKeyboardMap->IsKeyAvailable(KEY_A); + * bool printing = pKeyboardMap->IsPrintingKey(KEY_A); + * String l1 = pKeyboardMap->GetDisplayableLabel(KEY_A); + * String l2 = pKeyboardMap->GetDisplayableLabel(KEY_A, KEYBOARD_KEY_LABEL_2); + * String l3 = pKeyboardMap->GetDisplayableLabel(KEY_A, KEYBOARD_KEY_LABEL_3); + * String l4 = pKeyboardMap->GetDisplayableLabel(KEY_A, KEYBOARD_KEY_LABEL_4); + * } + * @endcode + * @endif + */ +class _OSP_EXPORT_ KeyboardMap + : public Tizen::Base::Object +{ +public: + /** + * @if OSPDEPREC + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @brief [Deprecated] + * @deprecated This class is deprecated because it is not supported by platform. + * @since 2.0 + * @endif + */ + virtual ~KeyboardMap(void); + + /** + * @if OSPDEPREC + * Gets the pointer to the %KeyboardMap instance. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because it is not supported by platform. + * @since 2.0 + * + * @return The current %KeyboardMap instance + * @endif + */ + static KeyboardMap* GetInstance(void); + +public: + /** + * @if OSPDEPREC + * Checks whether the specified key is a printing key (the key has one or more labels printed on the corresponding key). + * + * @brief [Deprecated] + * @deprecated This class is deprecated because it is not supported by platform. + * @since 2.0 + * + * @return @c true if the specified key is a printing key, @n + * else @c false + * @param[in] keyCode The key + * @endif + */ + bool IsPrintingKey(KeyCode keyCode) const; + + /** + * @if OSPDEPREC + * Checks whether the specified key is available on the current keyboard. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because it is not supported by platform. + * @since 2.0 + * + * @return @c true if the specified key is available on the current keyboard, @n + * else @c false + * @param[in] keyCode The key + * @endif + */ + bool IsKeyAvailable(KeyCode keyCode) const; + + /** + * @if OSPDEPREC + * Gets the name of the keyboard type. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because it is not supported by platform. + * @since 2.0 + * + * @return The name of the keyboard type + * @remarks The name of the keyboard type follows the following naming convention: @n + * GENERAL-TYPE_KEY-LAYOUT_LANGUAGE/COUNTRY/REGION (for example, QWERTY_11x4_EUROPE, + * NUMERIC_3x4_EUROPE). @n If the device does not have a keyboard, the method returns "NONE". @n + * @remarks + * Supported keyboard types + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Keyboard Type Languages
QWERTY_11x4_GLOBAL English
QWERTY_11x4_EUROPE English
QWERTY_11x4_UK English
QWERTY_11x4_FRANCE French, English
QWERTY_11x4_GERMAN German, English
QWERTY_11x4_GREECE Greek, English
QWERTY_11x4_ITALY Italian, English
QWERTY_11x4_NORDIC North Germanic
QWERTY_11x4_RUSSIA Russian, English
QWERTY_11x4_SPAIN Spanish, English
QWERTY_11x4_TURKEY English
QWERTY_11x4_NORTH-AFRICA English, English
QWERTY_11x4_ARAB Arabic, English
QWERTY_11x4_IRAN Farsi, English
QWERTY_11x4_PARKISTAN Urdu, English
QWERTY_11x4_ISRAEL Hebrew, English
QWERTY_11x4_CHINA English
QWERTY_11x4_HONGKONG Chinese Traditional, English
QWERTY_11x4_SINGAPORE English
QWERTY_11x4_THAILAND Thai, English
QWERTY_11x4_TAIWAN Chinese Traditional, English
QWERTY_11x4_VIETNAM Vietnamese, English
QWERTY_11x4_JAPAN Japanese, English
QWERTY_11x4_KOREA Korean, English
QWERTY_11x4_NORTH-AMERICA English
+ * @endif + */ + Tizen::Base::String GetKeyboardType(void) const; + + /** + * @if OSPDEPREC + * Gets the label of the specified key. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because it is not supported by platform. + * @since 2.0 + * + * @return The text of the label, @n + * else an empty string if the specified key is not a printing key or the secondary/tertiary character label is not defined + * @param[in] keyCode The key + * @param[in] type The keyboard key label type + * @endif + */ + Tizen::Base::String GetDisplayableLabel(KeyCode keyCode, KeyboardKeyLabelType type = KEYBOARD_KEY_LABEL_1) const; + +protected: + /** + * @if OSPDEPREC + * This is the default constructor for this class. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because it is not supported by platform. + * @since 2.0 + * @endif + */ + KeyboardMap(void); + + /** + * @if OSPDEPREC + * Initializes this instance of %KeyboardMap. + * + * @brief [Deprecated] + * @deprecated This class is deprecated because it is not supported by platform. + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_IO An IO error has occurred. + * @exception E_SYSTEM A system error has occurred. + * @endif + */ + result Construct(void); + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // Gets KeyCode of the specified system key. + // + // @since 2.0 + // @return The key code + // @param[in] systemKeyCode The system key + // + KeyCode GetKeyCode(int systemKeyCode) const; + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, + // and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without + // prior notice. + // + // Loads keyboard map table from file. + // + // @since 2.0 + // @return An error code + // @exception E_SUCCESS The method is successful. + // @exception E_IO An unexpected IO error has occurred. + // @exception E_SYSTEM A system error has occurred. + // + result LoadKeyboarMapFromFile(void); +private: + static void InitializeInstance(void); + +}; // KeyboardMap + +}} // Tizen::Ui + +#endif // _FUI_KEYBOARD_MAP_H_ diff --git a/inc/FUiLayout.h b/inc/FUiLayout.h new file mode 100644 index 0000000..5764303 --- /dev/null +++ b/inc/FUiLayout.h @@ -0,0 +1,101 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiLayout.h + * @brief This is the header file for the %Layout class. + * + * This header file contains the declarations of the %Layout class. + */ + +#ifndef _FUI_LAYOUT_H_ +#define _FUI_LAYOUT_H_ + +#include +#include + +namespace Tizen { namespace Ui +{ + +/** + * @class Layout + * @brief This class is the abstract base class of all the %Layout classes. + * + * @since 2.0 + * + * The %Layout class is the abstract base class of all the %Layout classes. + * @n + * For more information on the class features, see Layout. + */ +class _OSP_EXPORT_ Layout + : public Tizen::Base::Object +{ +public: + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~Layout(void); + + /** + * Gets the type of the layout. + * + * @since 2.0 + * + * @return The layout type + */ + virtual LayoutType GetLayoutType(void) const = 0; + + /** + * Updates the layout. + * + * @since 2.0 + * + * @return An error code + * + * @exception E_SUCCESS The method is successful. + */ + result Update(void); + +protected: + /** + * This is the default constructor for this class. + * + * @since 2.0 + */ + Layout(void); + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + Layout(const Layout& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + Layout& operator =(const Layout& rhs); + +protected: + void* _pImpl; + friend class _LayoutImpl; +}; // Layout + +}} // Tizen::Ui + +#endif // _FUI_LAYOUT_H_ diff --git a/inc/FUiLayoutTypes.h b/inc/FUiLayoutTypes.h new file mode 100644 index 0000000..891b8e4 --- /dev/null +++ b/inc/FUiLayoutTypes.h @@ -0,0 +1,163 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiLayoutTypes.h + * @brief This is the header file for the layout enumerations. + * + * This header file contains the declarations of the layout enumerations. + */ +#ifndef _FUI_LAYOUT_ENUM_H_ +#define _FUI_LAYOUT_ENUM_H_ + +namespace Tizen { namespace Ui +{ + +/** + * @enum LayoutType + * + * Defines the layout type. + * + * @since 2.0 + */ +enum LayoutType +{ + LAYOUT_RELATIVE, /**< The relative layout */ + LAYOUT_VERTICAL_BOX, /**< The vertical box layout */ + LAYOUT_HORIZONTAL_BOX, /**< The horizontal box layout */ + LAYOUT_GRID, /**< The grid layout */ + LAYOUT_CARD /**< The card layout */ +}; + +/** + * @enum RectangleEdgeRelation + * + * Defines the relative relation between the source control and the target control. + * + * @since 2.0 + */ +enum RectangleEdgeRelation +{ + RECT_EDGE_RELATION_LEFT_TO_LEFT, /**< The left edge of the source control is aligned with the left edge of the target control */ + RECT_EDGE_RELATION_LEFT_TO_RIGHT, /**< The left edge of the source control is aligned with the right edge of the target control */ + RECT_EDGE_RELATION_RIGHT_TO_RIGHT, /**< The right edge of the source control is aligned with the right edge of the target control */ + RECT_EDGE_RELATION_RIGHT_TO_LEFT, /**< The right edge of the source control is aligned with the left edge of the target control */ + RECT_EDGE_RELATION_TOP_TO_TOP, /**< The top edge of the source control is aligned with the top edge of the target control */ + RECT_EDGE_RELATION_TOP_TO_BOTTOM, /**< The top edge of the source control is aligned with the bottom edge of the target control */ + RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM, /**< The bottom edge of the source control is aligned with the bottom edge of the target control */ + RECT_EDGE_RELATION_BOTTOM_TO_TOP /**< The bottom edge of the source control is aligned with the top edge of the target control */ +}; + +/** + * @enum RectangleEdgeType + * + * Defines the edges of a rectangle. + * + * @since 2.0 + */ +enum RectangleEdgeType +{ + RECT_EDGE_LEFT, /**< The left edge of a rectangle */ + RECT_EDGE_RIGHT, /**< The right edge of a rectangle */ + RECT_EDGE_TOP, /**< The top edge of a rectangle */ + RECT_EDGE_BOTTOM /**< The bottom edge of a rectangle */ +}; + +/** + * @enum CenterAlignmentType + * + * Defines the center alignment for a control. + * + * @since 2.0 + */ +enum CenterAlignmentType +{ + CENTER_ALIGN_HORIZONTAL, /**< Centers the child control horizontally with respect to the left and right side of its parent control */ + CENTER_ALIGN_VERTICAL /**< Centers the child control vertically with respect to the top and bottom side of its parent control */ +}; + +/** + * @enum FitPolicy + * + * Defines the fitting policy for a control. + * + * @since 2.0 + */ +enum FitPolicy +{ + FIT_POLICY_FIXED, /**< The fixed size of a control */ + FIT_POLICY_CONTENT, /**< The size of the control that is large enough to fit its internal content */ + FIT_POLICY_PARENT /**< The size of the control that is as large as its parent control */ +}; + +/** + * @enum VerticalDirection + * + * Defines the direction for the vertical box layout. + * + * @since 2.0 + */ +enum VerticalDirection +{ + VERTICAL_DIRECTION_DOWNWARD, /**< The direction that runs from top to bottom */ + VERTICAL_DIRECTION_UPWARD /**< The direction that runs from bottom to top */ +}; + +/** + * @enum HorizontalDirection + * + * Defines the direction for the horizontal box layout. + * + * @since 2.0 + */ +enum HorizontalDirection +{ + HORIZONTAL_DIRECTION_RIGHTWARD, /**< The direction that runs from left to right */ + HORIZONTAL_DIRECTION_LEFTWARD /**< The direction that runs from right to left */ +}; + +/** + * @enum LayoutHorizontalAlignment + * + * Defines the horizontal alignment for the grid layout. + * + * @since 2.0 + */ +enum LayoutHorizontalAlignment +{ + LAYOUT_HORIZONTAL_ALIGN_LEFT, /**< The horizontal left alignment of the control */ + LAYOUT_HORIZONTAL_ALIGN_CENTER, /**< The horizontal center alignment of the control */ + LAYOUT_HORIZONTAL_ALIGN_RIGHT /**< The horizontal right alignment of the control */ +}; + +/** + * @enum LayoutVerticalAlignment + * + * Defines the vertical alignment for the grid layout. + * + * @since 2.0 + */ +enum LayoutVerticalAlignment +{ + LAYOUT_VERTICAL_ALIGN_TOP, /**< The vertical top alignment of the control */ + LAYOUT_VERTICAL_ALIGN_MIDDLE, /**< The vertical middle alignment of the control */ + LAYOUT_VERTICAL_ALIGN_BOTTOM /**< The vertical bottom alignment of the control */ +}; + +}} // Tizen::Ui + +#endif // _FUI_LAYOUT_ENUM_H_ diff --git a/inc/FUiRelativeLayout.h b/inc/FUiRelativeLayout.h new file mode 100755 index 0000000..48c4e70 --- /dev/null +++ b/inc/FUiRelativeLayout.h @@ -0,0 +1,389 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiRelativeLayout.h + * @brief This is the header file for the %RelativeLayout class. + * + * This header file contains the declarations of the %RelativeLayout class. + */ + +#ifndef _FUI_RELATIVE_LAYOUT_H_ +#define _FUI_RELATIVE_LAYOUT_H_ + +#include + +namespace Tizen { namespace Ui +{ +class Control; +}} + +namespace Tizen { namespace Ui +{ + +/** + * @class RelativeLayout + * @brief The relative layout positions the children of a container in a manner that is relative to other children or its parent container. + * + * @since 2.0 + * + * The %RelativeLayout class defines the relative layout for a Container. The layout positions the children of the %Container relative to the + * Container or its other children. @n + * + * For more information on the class features, see Relative Layout. + * + * @code +// Sample code for RelativeLayoutSample.h +#include + +class RelativeLayoutSample + : public Tizen::Ui::Controls::Form +{ +public: + bool Initialize(void); + virtual result OnInitializing(void); +}; + * @endcode + * + * @code +// Sample code for RelativeLayoutSample.cpp +#include + +#include "RelativeLayoutSample.h" + +using namespace Tizen::Graphics; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; + +bool +RelativeLayoutSample::Initialize(void) +{ + // Creates an instance of RelativeLayout + RelativeLayout relativeFormLayout; + relativeFormLayout.Construct(); + + // Applies the relative layout to the form + Construct(relativeFormLayout, FORM_STYLE_NORMAL); + return true; +} + +result +RelativeLayoutSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of RelativeLayout for the top panel + RelativeLayout topPanelLayout; + topPanelLayout.Construct(); + + // Creates an instance of Panel and applies it to the relative layout + Panel* pTopRelativePanel = new Panel(); + pTopRelativePanel->Construct(topPanelLayout, Rectangle(0, 0, 300, 300)); + { + // Creates instances of Button + Button* pUpButton = new Button(); + pUpButton->Construct(Rectangle(0,0,200,100), "UP"); + pTopRelativePanel->AddControl(*pUpButton); + + Button* pMiddleButton = new Button(); + pMiddleButton->Construct(Rectangle(0,0,200,100), "CENTER"); + pTopRelativePanel->AddControl(*pMiddleButton); + + Button* pDownButton = new Button(); + pDownButton->Construct(Rectangle(0,0,200,100), "DOWN"); + pTopRelativePanel->AddControl(*pDownButton); + + // Sets relations between the pUpButton and pMiddleButton + topPanelLayout.SetRelation(*pUpButton, *pMiddleButton, RECT_EDGE_RELATION_LEFT_TO_LEFT); + topPanelLayout.SetRelation(*pUpButton, *pMiddleButton, RECT_EDGE_RELATION_BOTTOM_TO_TOP); + topPanelLayout.SetMargin(*pUpButton, 0, 0, 0, 10); + + // Sets the middle button + topPanelLayout.SetCenterAligned(*pMiddleButton, CENTER_ALIGN_HORIZONTAL); + topPanelLayout.SetCenterAligned(*pMiddleButton, CENTER_ALIGN_VERTICAL); + topPanelLayout.SetMargin(*pMiddleButton, 10, 10, 10, 10); + + // Sets relations between the pDownButton and the pMiddleButton + topPanelLayout.SetRelation(*pDownButton, *pMiddleButton, RECT_EDGE_RELATION_RIGHT_TO_RIGHT); + topPanelLayout.SetRelation(*pDownButton, *pMiddleButton, RECT_EDGE_RELATION_TOP_TO_BOTTOM); + topPanelLayout.SetMargin(*pDownButton, 0, 0, 10, 0); + } + + // Adds the top panel to the form + AddControl(*pTopRelativePanel); + + // Creates an instance of RelativeLayout for the bottom panel + RelativeLayout bottomPanelLayout; + bottomPanelLayout.Construct(); + + // Creates an instance of Panel and applies it to the relative layout + Panel* pBottomRelativePanel = new Panel(); + pBottomRelativePanel->Construct(bottomPanelLayout, Rectangle(0, 0, 300, 300)); + { + // Creates instances of Label + Label* pFixedLabel = new Label(); + pFixedLabel->Construct(Rectangle(0, 0, 150, 80), L"FIXED"); + pFixedLabel->SetBackgroundColor(Color::GetColor(COLOR_ID_YELLOW)); + pFixedLabel->SetTextColor(Color::GetColor(COLOR_ID_BLACK)); + pBottomRelativePanel->AddControl(*pFixedLabel); + + Label* pScalableLabel = new Label(); + pScalableLabel->Construct(Rectangle(0, 0, 150, 80), L"SCALABLE <=>"); + pScalableLabel->SetBackgroundColor(Color::GetColor(COLOR_ID_BLUE)); + pScalableLabel->SetTextColor(Color::GetColor(COLOR_ID_BLACK)); + pBottomRelativePanel->AddControl(*pScalableLabel); + + // Sets relations between the fixed label and the panel + bottomPanelLayout.SetCenterAligned(*pFixedLabel, CENTER_ALIGN_VERTICAL); + bottomPanelLayout.SetRelation(*pFixedLabel, *pBottomRelativePanel, RECT_EDGE_RELATION_LEFT_TO_LEFT); + bottomPanelLayout.SetRelation(*pFixedLabel, *pBottomRelativePanel, RECT_EDGE_RELATION_TOP_TO_TOP); + bottomPanelLayout.SetMargin(*pFixedLabel, 30, 30, 30, 30); + + // Sets relations between the scalable label and the panel + bottomPanelLayout.SetCenterAligned(*pScalableLabel, CENTER_ALIGN_VERTICAL); + bottomPanelLayout.SetRelation(*pScalableLabel, *pFixedLabel, RECT_EDGE_RELATION_LEFT_TO_RIGHT); + bottomPanelLayout.SetRelation(*pScalableLabel, *pFixedLabel, RECT_EDGE_RELATION_LEFT_TO_RIGHT); + bottomPanelLayout.SetRelation(*pScalableLabel, *pBottomRelativePanel, RECT_EDGE_RELATION_RIGHT_TO_RIGHT); + bottomPanelLayout.SetRelation(*pScalableLabel, *pBottomRelativePanel, RECT_EDGE_RELATION_TOP_TO_TOP); + bottomPanelLayout.SetMargin(*pScalableLabel, 30, 30, 30, 30); + } + + // Adds the bottom panel to the form + AddControl(*pBottomRelativePanel); + + //Gets the layout of the form + RelativeLayout* pFormLayout = dynamic_cast(this->GetLayoutN()); + + // Sets relations of the top relative panel + pFormLayout->SetRelation(*pTopRelativePanel, *this, RECT_EDGE_RELATION_LEFT_TO_LEFT); + pFormLayout->SetRelation(*pTopRelativePanel, *this, RECT_EDGE_RELATION_RIGHT_TO_RIGHT); + pFormLayout->SetRelation(*pTopRelativePanel, *this, RECT_EDGE_RELATION_TOP_TO_TOP); + + // Sets relations of the bottom relative panel + pFormLayout->SetRelation(*pBottomRelativePanel, *this, RECT_EDGE_RELATION_LEFT_TO_LEFT); + pFormLayout->SetRelation(*pBottomRelativePanel, *this, RECT_EDGE_RELATION_RIGHT_TO_RIGHT); + pFormLayout->SetRelation(*pBottomRelativePanel, *this, RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM); + + // Sets relations between the top relative panel and the bottom relative panel + pFormLayout->SetHorizontalFitPolicy(*pTopRelativePanel, FIT_POLICY_PARENT); + pFormLayout->SetHorizontalFitPolicy(*pBottomRelativePanel, FIT_POLICY_PARENT); + pFormLayout->SetVerticalFitPolicy(*pBottomRelativePanel, FIT_POLICY_FIXED); + pFormLayout->SetRelation(*pTopRelativePanel, *pBottomRelativePanel, RECT_EDGE_RELATION_BOTTOM_TO_TOP); + + return r; +} + * @endcode + * + */ +class _OSP_EXPORT_ RelativeLayout + : public Layout +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + * + * @remarks After creating an instance of this class, the Construct() method must be called explicitly to initialize this instance. + */ + RelativeLayout(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~RelativeLayout(void); + + /** + * Initializes this instance of %RelativeLayout. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(void); + + /** + * Gets the type of the layout. + * + * @since 2.0 + * + * @return The layout type + */ + virtual LayoutType GetLayoutType(void) const; + + /** + * Sets the relation of the specified child control for the edge with other control. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control for which the relation is set + * @param[in] targetControl The target control @n + * It must be a parent or sibling. + * @param[in] edgeRelation The edge of the specified control to be aligned with the edge of the target control + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * Either the specified @c childControl or the specified @c targetControl is not a child of the container that owns the layout. + * @exception E_SYSTEM A system error has occurred. + */ + result SetRelation(Control& childControl, const Control& targetControl, RectangleEdgeRelation edgeRelation); + + /** + * Resets the relation of the specified control for the vertical edge. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control for which the relation is reset + * @param[in] edgeType The edge type of the specified control + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The specified @c childControl parameter is not a child of the container that owns the layout. + * @exception E_SYSTEM A system error has occurred. + */ + result ResetRelation(Control& childControl, RectangleEdgeType edgeType); + + /** + * Sets the specified control at the center of the parent control. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control to be center aligned + * @param[in] alignment The center alignment for a control either vertically or horizontally + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The specified @c childControl parameter is not a child of the container that owns the layout. + * @exception E_SYSTEM A system error has occurred. + * @remarks The relation value that is set to a child control is ignored when the center-alignment is applied to the control. + */ + result SetCenterAligned(Control& childControl, CenterAlignmentType alignment); + + /** + * Resets the center position of the specified control. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control to be center aligned + * @param[in] alignment The center alignment for a control either vertically or horizontally + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The specified @c childControl parameter is not a child of the container that owns the layout. + * @exception E_SYSTEM A system error has occurred. + */ + result ResetCenterAligned(Control& childControl, CenterAlignmentType alignment); + + /** + * Sets the margins of the specified control. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control for which the margins are set + * @param[in] left The left margin + * @param[in] right The right margin + * @param[in] top The top margin + * @param[in] bottom The bottom margin + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The specified @c childControl parameter is not a child of the container that owns the layout. + * @exception E_SYSTEM A system error has occurred. + * @remarks By default, the margins are set to @c 0. + */ + result SetMargin(Control& childControl, int left, int right, int top, int bottom); + + /** + * Sets the width of the specified control to the fixed size. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control for which the width is set + * @param[in] width The value of the width + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The specified @c childControl parameter is not a child of the container that owns the layout. + * @exception E_SYSTEM A system error has occurred. + */ + result SetWidth(Control& childControl, int width); + + /** + * Sets the width of the specified control as per the fitting policy. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control for which the width is set + * @param[in] policy The fitting policy for the width + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The specified @c childControl parameter is not a child of the container that owns the layout. + * @exception E_SYSTEM A system error has occurred. + */ + result SetHorizontalFitPolicy(Control& childControl, FitPolicy policy); + + /** + * Sets the height of the specified control to the fixed size. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control for which the height is set + * @param[in] height The value of the height + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The specified @c childControl parameter is not a child of the container that owns the layout. + * @exception E_SYSTEM A system error has occurred. + */ + result SetHeight(Control& childControl, int height); + + /** + * Sets the height of the specified control as per the fitting policy. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control for which the height is set + * @param[in] policy The fitting policy for the height + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. @n + * The specified @c childControl parameter is not a child of the container that owns the layout. + * @exception E_SYSTEM A system error has occurred. + */ + result SetVerticalFitPolicy(Control& childControl, FitPolicy policy); + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + RelativeLayout(const RelativeLayout& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + RelativeLayout& operator =(const RelativeLayout& rhs); + +}; // RelativeLayout + +}} // Tizen::Ui + +#endif // _FUI_RELATIVE_LAYOUT_H_ diff --git a/inc/FUiScenes.h b/inc/FUiScenes.h new file mode 100644 index 0000000..21d2404 --- /dev/null +++ b/inc/FUiScenes.h @@ -0,0 +1,66 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiScenes.h + * @brief This is the header file for the %Scenes namespace. + * + * This header file contains the declarations and descriptions of the %Tizen::Ui::Scenes namespace. + */ + +#ifndef _FUI_SCENES_H_ +#define _FUI_SCENES_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +namespace Tizen { namespace Ui +{ +/** + * @namespace Tizen::Ui::Scenes + * @brief This namespace contains the classes for the scene management and its related functions. + * @since 2.0 + * + * @remarks @b Header @b %file: @b \#include @b @n + * @b Library : @b osp-uifw + * + * The %Scenes namespace provides easy and simplified screen transition methods for form-based UI applications using the scene management feature. + * @n + * For more information on the class features, see Scene Management. + * + * The following diagram illustrates the relationships between the classes belonging to the %Scenes namespace. + * + * @image html ui_scenes_namespace_classdiagram.png + */ + +namespace Scenes +{ +} +} } // Tizen::Ui + +#endif //_FUI_SCENES_H_ diff --git a/inc/FUiScenesBackwardSceneTransition.h b/inc/FUiScenesBackwardSceneTransition.h new file mode 100644 index 0000000..8978001 --- /dev/null +++ b/inc/FUiScenesBackwardSceneTransition.h @@ -0,0 +1,123 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiScenesBackwardSceneTransition.h + * @brief This is the header file for the %BackwardSceneTransition class. + * + * This header file contains the declarations of the %BackwardSceneTransition class. + */ + +#ifndef _FUI_SCENES_BACKWARD_SCENE_TRANSITION_H_ +#define _FUI_SCENES_BACKWARD_SCENE_TRANSITION_H_ + +#include + + +namespace Tizen { namespace Ui { namespace Scenes +{ + +/** + * @class BackwardSceneTransition + * @brief This class is the %BackwardSceneTransition class of a Tizen native application. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %BackwardSceneTransition class contains transition information, such as transition direction, transition destination, + * animation type, history option, and destroy option. By default, the transition direction is set as SCENE_TRANSITION_DIRECTION_BACKWARD + * and the history option is set as SCENE_HISTORY_OPTION_NO_HISTORY. @n + * + * For more information on the class features, see Scene Management. + */ +class _OSP_EXPORT_ BackwardSceneTransition + : public Tizen::Ui::Scenes::SceneTransition +{ +public: + /** + * This is the default constructor for this class. + * + * @since 2.0 + * + * @remarks Use this constructor for adjacent backward transition with default options + * (SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_DESTROY_OPTION_DESTROY). + */ + BackwardSceneTransition(void); + + /** + * Initializes this instance of %BackwardSceneTransition with the specified parameters. + * + * @since 2.0 + * + * @param[in] animationType The transition animation type + * @param[in] destroyOption The destroy option whether to destroy the current scene or not + * @remarks Use this constructor for adjacent backward transition. + */ + BackwardSceneTransition(SceneTransitionAnimationType animationType, + SceneDestroyOption destroyOption = SCENE_DESTROY_OPTION_DESTROY); + + /** + * Initializes this instance of %BackwardSceneTransition with the specified parameters. + * + * @since 2.0 + * + * @param[in] destinationSceneId The scene ID of transition destination + * @param[in] animationType The transition animation type + * @param[in] destroyOption The destroy option whether to destroy the current scene or not + * @remarks Use this constructor for non-adjacent backward transition. + */ + BackwardSceneTransition(const SceneId& destinationSceneId, + SceneTransitionAnimationType animationType = SCENE_TRANSITION_ANIMATION_TYPE_NONE, + SceneDestroyOption destroyOption = SCENE_DESTROY_OPTION_DESTROY); + + /** + * This destructor overrides Tizen::Ui::Scenes::SceneTransition::~SceneTransition(). + * + * @since 2.0 + */ + virtual ~BackwardSceneTransition(void); + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void BackwardSceneTransition_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void BackwardSceneTransition_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void BackwardSceneTransition_Reserved3(void) {} + +}; // BackwardSceneTransition +} } } // Tizen::Ui::Scenes + +#endif // _FUI_SCENES_BACKWARD_SCENE_TRANSITION_H_ diff --git a/inc/FUiScenesForwardSceneTransition.h b/inc/FUiScenesForwardSceneTransition.h new file mode 100644 index 0000000..44405f8 --- /dev/null +++ b/inc/FUiScenesForwardSceneTransition.h @@ -0,0 +1,126 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiScenesForwardSceneTransition.h + * @brief This is the header file for the %ForwardSceneTransition class. + * + * This header file contains the declarations of the %ForwardSceneTransition class. + */ + +#ifndef _FUI_SCENES_FORWARD_SCENE_TRANSITION_H_ +#define _FUI_SCENES_FORWARD_SCENE_TRANSITION_H_ + +#include + + +namespace Tizen { namespace Ui { namespace Scenes +{ + +/** + * @class ForwardSceneTransition + * @brief This class is the %ForwardSceneTransition class of a Tizen native application. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %ForwardSceneTransition class contains transition information, such as transition direction, transition destination, + * animation type, history option, and destroy option. By default, the transition direction is set as SCENE_TRANSITION_DIRECTION_FORWARD. @n + * + * For more information on the class features, see Scene Management. + */ +class _OSP_EXPORT_ ForwardSceneTransition + : public Tizen::Ui::Scenes::SceneTransition +{ +public: + /** + * This is the default constructor for this class. + * + * @since 2.0 + * + * @remarks Use this constructor for transition through the policy provider with default options + * (SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_ADD_HISTORY, SCENE_DESTROY_OPTION_KEEP). + */ + ForwardSceneTransition(void); + + /** + * Initializes this instance of %ForwardSceneTransition with the specified parameters. + * + * @since 2.0 + * + * @param[in] destinationSceneId The scene ID of transition destination + * @param[in] animationType The transition animation type + * @param[in] historyOption The history option whether to add the current scene to the history or not + * @param[in] destroyOption The destroy option whether to destroy the current scene or not + * @remarks Use this constructor for transition to the specified @c destinationSceneId with options. + */ + ForwardSceneTransition(const SceneId& destinationSceneId, + SceneTransitionAnimationType animationType = SCENE_TRANSITION_ANIMATION_TYPE_NONE, + SceneHistoryOption historyOption = SCENE_HISTORY_OPTION_ADD_HISTORY, + SceneDestroyOption destroyOption = SCENE_DESTROY_OPTION_KEEP); + + /** + * Initializes this instance of %ForwardSceneTransition with the specified parameters. + * + * @since 2.0 + * + * @param[in] animationType The transition animation type + * @param[in] historyOption The history option whether to add the current scene to the history or not + * @param[in] destroyOption The destroy option whether to destroy the current scene or not + * @remarks Use this constructor for transition through the policy provider. + */ + ForwardSceneTransition(SceneTransitionAnimationType animationType, + SceneHistoryOption historyOption = SCENE_HISTORY_OPTION_ADD_HISTORY, + SceneDestroyOption destroyOption = SCENE_DESTROY_OPTION_KEEP); + + /** + * This destructor overrides Tizen::Ui::Scenes::SceneTransition::~SceneTransition(). + * + * @since 2.0 + */ + virtual ~ForwardSceneTransition(void); + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void ForwardSceneTransition_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void ForwardSceneTransition_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void ForwardSceneTransition_Reserved3(void) {} + +}; // ForwardSceneTransition +} } } // Tizen::Ui::Scenes + +#endif // _FUI_SCENES_FORWARD_SCENE_TRANSITION_H_ diff --git a/inc/FUiScenesIFormFactory.h b/inc/FUiScenesIFormFactory.h new file mode 100644 index 0000000..1f11cb4 --- /dev/null +++ b/inc/FUiScenesIFormFactory.h @@ -0,0 +1,103 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiScenesIFormFactory.h + * @brief This is the header file for the %IFormFactory interface. + * + * This header file contains the declarations of the %IFormFactory interface. + */ + +#ifndef _FUI_SCENES_IFORM_FACTORY_H_ +#define _FUI_SCENES_IFORM_FACTORY_H_ + +#include +#include + + +namespace Tizen { namespace Ui { namespace Controls +{ +class Form; +}}} + + +namespace Tizen { namespace Ui { namespace Scenes +{ + +/** + * @interface IFormFactory + * @brief This interface is the factory interface for creating the Form control instance. + * + * @since 2.0 + * + * The %IFormFactory interface is the factory interface for creating the Form control instance. + * The SceneManager calls CreateFormN() with form ID string when an instance of %Form control is required. + * + * For more information on the class features, see Scene Management. + */ +class _OSP_EXPORT_ IFormFactory +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, + * the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~IFormFactory(void) {} + + /** + * Creates a Form instance. + * + * @since 2.0 + * + * @return A pointer to a new Form instance + * @param[in] formId The form ID string that specifies the ID of the Form to create + * @param[in] sceneId The scene ID corresponding to the Form + * @remarks The new instance managed by the SceneManager class must not be deleted manually. + */ + virtual Tizen::Ui::Controls::Form* CreateFormN(const Tizen::Base::String& formId, const Tizen::Ui::Scenes::SceneId& sceneId) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void IFormFactory_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void IFormFactory_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void IFormFactory_Reserved3(void) {} + +}; // IFormFactory +} } } // Tizen::Ui::Scenes + +#endif //_FUI_SCENES_IFORM_FACTORY_H_ diff --git a/inc/FUiScenesIPanelFactory.h b/inc/FUiScenesIPanelFactory.h new file mode 100644 index 0000000..d4f652e --- /dev/null +++ b/inc/FUiScenesIPanelFactory.h @@ -0,0 +1,103 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiScenesIPanelFactory.h + * @brief This is the header file for the %IPanelFactory interface. + * + * This header file contains the declarations of the %IPanelFactory interface. + */ + +#ifndef _FUI_SCENES_IPANEL_FACTORY_H_ +#define _FUI_SCENES_IPANEL_FACTORY_H_ + +#include +#include + + +namespace Tizen { namespace Ui { namespace Controls +{ +class Panel; +}}} + + +namespace Tizen { namespace Ui { namespace Scenes +{ + +/** + * @interface IPanelFactory + * @brief This interface is the factory interface for creating the Panel control instance. + * + * @since 2.0 + * + * The %IPanelFactory interface is the factory interface for creating the Panel control instance. + * The SceneManager class calls CreatePanelN() with panel ID string when an instance of %Panel control is required. + * + * For more information on the class features, see Scene Management. + */ +class _OSP_EXPORT_ IPanelFactory +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, + * the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~IPanelFactory(void) {} + + /** + * Creates a Panel instance. + * + * @since 2.0 + * + * @return A pointer to a new Panel instance + * @param[in] panelId The panel ID string that specifies the ID of the Panel to create + * @param[in] sceneId The scene ID corresponding to the Panel + * @remarks The new instance managed by the SceneManager class must not be deleted manually. + */ + virtual Tizen::Ui::Controls::Panel* CreatePanelN(const Tizen::Base::String& panelId, const Tizen::Ui::Scenes::SceneId& sceneId) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void IPanelFactory_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void IPanelFactory_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void IPanelFactory_Reserved3(void) {} + +}; // IPanelFactory +} } } // Tizen::Ui::Scenes + +#endif //_FUI_SCENES_IPANEL_FACTORY_H_ diff --git a/inc/FUiScenesISceneAnimationProvider.h b/inc/FUiScenesISceneAnimationProvider.h new file mode 100644 index 0000000..c4f0b85 --- /dev/null +++ b/inc/FUiScenesISceneAnimationProvider.h @@ -0,0 +1,109 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiScenesISceneAnimationProvider.h + * @brief This is the header file for the %ISceneAnimationProvider interface. + * + * This header file contains the declarations of the %ISceneAnimationProvider interface. + */ + +#ifndef _FUI_SCENES_ISCENE_ANIMATION_PROVIDER_H_ +#define _FUI_SCENES_ISCENE_ANIMATION_PROVIDER_H_ + +#include + + +namespace Tizen { namespace Base { namespace Collection +{ +class IList; +}}} + + +namespace Tizen { namespace Ui { namespace Scenes +{ + +/** + * @interface ISceneAnimationProvider + * @brief This interface is the interface for providing custom animation operation on scene transition. + * + * @since 2.0 + * + * The %ISceneAnimationProvider interface is the interface for providing custom animation operation on scene transition. + * + * For more information on the class features, see Transition Animations. + */ +class _OSP_EXPORT_ ISceneAnimationProvider +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, + * the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~ISceneAnimationProvider(void) {} + + /** + * Called on scene transition exactly before current Form (form to form transition) is changed or show state + * (panel to panel transition) is changed. + * + * @since 2.0 + * + * @param[in] sceneId The scene ID that requires the animator settings + * @param[in] pArgs A pointer to an argument list + * @param[in] type The animation type + * @param[in] formTransition Set to @c true if the transition is form to form transition, @n + * else @c false if the transition is panel to panel transition (Based on same Form) + * @remarks To show custom scene transition animation, add animator modification code in this callback. @n + * Animation is initiated by SceneManager after this method is called. + * The form to form transition animation is triggered by Tizen::Ui::Animations::FrameAnimator::SetCurrentForm(), + * and the panel to panel transition animation is triggered by Tizen::Ui::Animations::ControlAnimator::SetShowState(). + * + */ + virtual void PrepareAnimation(const Tizen::Ui::Scenes::SceneId& sceneId, Tizen::Base::Collection::IList* pArgs, + Tizen::Ui::Scenes::SceneTransitionAnimationType type, bool formTransition) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void ISceneAnimationProvider_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void ISceneAnimationProvider_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void ISceneAnimationProvider_Reserved3(void) {} + +}; // ISceneAnimationProvider +} } } // Tizen::Ui::Scenes + +#endif //_FUI_SCENES_ISCENE_ANIMATION_PROVIDER_H_ diff --git a/inc/FUiScenesISceneEventListener.h b/inc/FUiScenesISceneEventListener.h new file mode 100644 index 0000000..e401399 --- /dev/null +++ b/inc/FUiScenesISceneEventListener.h @@ -0,0 +1,123 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiScenesISceneEventListener.h + * @brief This is the header file for the %ISceneEventListener interface. + * + * This header file contains the declarations of the %ISceneEventListener interface. + */ + +#ifndef _FUI_SCENES_ISCENE_EVENT_LISTENER_H_ +#define _FUI_SCENES_ISCENE_EVENT_LISTENER_H_ + +#include +#include +#include +#include + + +namespace Tizen { namespace Base { namespace Collection +{ +class IList; +}}} + + +namespace Tizen { namespace Ui { namespace Scenes +{ + +/** + * @interface ISceneEventListener + * @brief This interface is the listener interface for receiving the scene transition events. + * + * @since 2.0 + * + * The %ISceneEventListener interface is the listener interface for receiving the scene transition events. + * The class that processes a scene transition event implements this interface and registers using + * the SceneManager::AddSceneEventListener() method. + * + * For more information on the class features, see Scene Management. + */ +class _OSP_EXPORT_ ISceneEventListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, + * the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~ISceneEventListener(void) {} + + /** + * Called after setting as current scene. @n + * The UI element (Tizen::Ui::Controls::Form or Tizen::Ui::Controls::Panel) + * has been added to a container (Frame or Form) and is ready to update. + * + * @since 2.0 + * + * @param[in] previousSceneId The scene ID of the deactivated scene + * @param[in] currentSceneId The scene ID of the newly activated scene + * @param[in] pArgs A pointer to an argument list that is user-specified + * @remarks The argument list must be cleaned up to free memory. + */ + virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, + const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs) = 0; + + /** + * Called when the current scene is deactivated. + * + * @since 2.0 + * + * @param[in] currentSceneId The scene ID of the scene being deactivated + * @param[in] nextSceneId The scene ID of the next active scene + * + */ + virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, + const Tizen::Ui::Scenes::SceneId& nextSceneId) = 0; + + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void ISceneEventListener_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void ISceneEventListener_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void ISceneEventListener_Reserved3(void) {} + +}; // ISceneEventListener +} } } // Tizen::Ui::Scenes + +#endif //_FUI_SCENES_ISCENE_EVENT_LISTENER_H_ diff --git a/inc/FUiScenesISceneManagerEventListener.h b/inc/FUiScenesISceneManagerEventListener.h new file mode 100644 index 0000000..c5c0cfa --- /dev/null +++ b/inc/FUiScenesISceneManagerEventListener.h @@ -0,0 +1,109 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiScenesISceneManagerEventListener.h + * @brief This is the header file for the %ISceneManagerEventListener interface. + * + * This header file contains the declarations of the %ISceneManagerEventListener interface. + */ + +#ifndef _FUI_SCENES_ISCENE_MANAGER_EVENT_LISTENER_H_ +#define _FUI_SCENES_ISCENE_MANAGER_EVENT_LISTENER_H_ + +#include +#include + + +namespace Tizen { namespace Ui { namespace Scenes +{ + +/** + * @interface ISceneManagerEventListener + * @brief This interface provides listeners for managing scenes and scene states. + * + * @since 2.0 + * + * The %ISceneManagerEventListener interface provides listeners for managing scenes and scene states. + * + * For more information on the class features, see Scene Management. + */ +class _OSP_EXPORT_ ISceneManagerEventListener + : virtual public Tizen::Base::Runtime::IEventListener +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, + * the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~ISceneManagerEventListener(void) {} + + /** + * Called when the scene transition is started. + * + * @since 2.0 + * + * @param[in] currentSceneId The scene ID of the scene being deactivated + * @param[in] nextSceneId The scene ID of the next active scene + * + */ + virtual void OnSceneTransitionStarted(const Tizen::Ui::Scenes::SceneId& currentSceneId, + const Tizen::Ui::Scenes::SceneId& nextSceneId) = 0; + + /** + * Called after the scene transition is completed. + * + * @since 2.0 + * + * @param[in] previousSceneId The scene ID of the deactivated scene + * @param[in] currentSceneId The scene ID of the newly activated scene + * @remarks This method is called after the scene is activated using the ISceneEventListener::OnSceneActivatedN() callback method. + */ + virtual void OnSceneTransitionCompleted(const Tizen::Ui::Scenes::SceneId& previousSceneId, + const Tizen::Ui::Scenes::SceneId& currentSceneId) = 0; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void ISceneManagerEventListener_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void ISceneManagerEventListener_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void ISceneManagerEventListener_Reserved3(void) {} + +}; // ISceneManagerEventListener +} } } // Tizen::Ui::Scenes + +#endif //_FUI_SCENES_ISCENE_MANAGER_EVENT_LISTENER_H_ diff --git a/inc/FUiScenesISceneTransitionPolicyProvider.h b/inc/FUiScenesISceneTransitionPolicyProvider.h new file mode 100644 index 0000000..c2f7e1d --- /dev/null +++ b/inc/FUiScenesISceneTransitionPolicyProvider.h @@ -0,0 +1,104 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiScenesISceneTransitionPolicyProvider.h + * @brief This is the header file for the %ISceneTransitionPolicyProvider interface. + * + * This header file contains the declarations of the %ISceneTransitionPolicyProvider interface. + */ + +#ifndef _FUI_SCENES_ISCENE_TRANSITION_POLICY_PROVIDER_H_ +#define _FUI_SCENES_ISCENE_TRANSITION_POLICY_PROVIDER_H_ + +#include + + +namespace Tizen { namespace Base { namespace Collection +{ +class IList; +}}} + + +namespace Tizen { namespace Ui { namespace Scenes +{ + +/** + * @interface ISceneTransitionPolicyProvider + * @brief This interface provides the scene transition policies. + * + * @since 2.0 + * + * The %ISceneTransitionPolicyProvider interface is used to provide the scenario logic for scene transitions. + * + * For more information on the class features, see Scene Management. + */ +class _OSP_EXPORT_ ISceneTransitionPolicyProvider +{ +public: + /** + * This polymorphic destructor should be overridden if required. This way, + * the destructors of the derived classes are called when the destructor of this interface is called. + * + * @since 2.0 + */ + virtual ~ISceneTransitionPolicyProvider(void) {} + + /** + * Gets the next scene. @n + * Called on SceneManager#GoForward(const Tizen::Base::Collection::IList*,SceneTransitionAnimationType,SceneHistoryOption,SceneDestroyOption) + * to determine the next scene. + * + * @since 2.0 + * + * @return A scene ID + * @param[in] currentSceneId The scene ID of the active Scene + * @param[in] pArgs A pointer to an argument list + */ + virtual Tizen::Ui::Scenes::SceneId GetNextScene(const Tizen::Ui::Scenes::SceneId& currentSceneId, + const Tizen::Base::Collection::IList* pArgs) = 0; + + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void ISceneTransitionPolicyProvider_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void ISceneTransitionPolicyProvider_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void ISceneTransitionPolicyProvider_Reserved3(void) {} + +}; // ISceneTransitionPolicyProvider +} } } // Tizen::Ui::Scenes + +#endif //_FUI_SCENES_ISCENE_TRANSITION_POLICY_PROVIDER_H_ diff --git a/inc/FUiScenesScene.h b/inc/FUiScenesScene.h new file mode 100644 index 0000000..8299c95 --- /dev/null +++ b/inc/FUiScenesScene.h @@ -0,0 +1,193 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiScenesScene.h + * @brief This is the header file for the %Scene class. + * + * This header file contains the declarations of the %Scene class. + */ + +#ifndef _FUI_SCENES_SCENE_H_ +#define _FUI_SCENES_SCENE_H_ + +#include +#include + + +namespace Tizen { namespace Ui { namespace Controls +{ +class Form; +class Panel; +}}} + + +namespace Tizen { namespace Ui { namespace Scenes +{ + +class ISceneEventListener; + +/** + * @class Scene + * @brief This class is the %Scene class of a Tizen native applications. + * + * @since 2.0 + * + * The %Scene is the basic unit of UI switching. @n + * The %Scene class is the item class for scene management. It represents individual UI scene. + * A scene is combination of form and panel, panel can be omitted. + * + * For more information on the class features, see Scene Management. + */ +class _OSP_EXPORT_ Scene + : public Tizen::Base::Object +{ +public: + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~Scene(void); + + /** + * Checks whether the specified instance of %Scene equals the current instance. + * + * @since 2.0 + * + * @return @c true if the specified instance equals the current instance, @n + * else @c false + * @param[in] rhs An instance of %Scene + * @remarks The method returns @c false if the specified object is not %Scene. + */ + virtual bool Equals(const Object& rhs) const; + + /** + * Gets the hash value of the current instance. + * + * @since 2.0 + * + * @return The hash value of the current instance + */ + virtual int GetHashCode(void) const; + + /** + * Gets the string ID of %Scene. + * + * @since 2.0 + * + * @return The name of %Scene + * @see SetSceneId() + */ + SceneId GetSceneId(void) const; + + /** + * Gets the string ID of Form. + * + * @since 2.0 + * + * @return The name of Form + */ + Tizen::Base::String GetFormId(void) const; + + /** + * Gets the string ID of Panel. + * + * @since 2.0 + * + * @return The name of Panel, @n + * else an empty string if the Panel is not specified + */ + Tizen::Base::String GetPanelId(void) const; + + /** + * Gets the associated Form instance pointer. + * + * @since 2.0 + * + * @return The Form instance pointer + * @see SetForm() + */ + Tizen::Ui::Controls::Form* GetForm(void) const; + + /** + * Gets the associated Panel instance pointer. + * + * @since 2.0 + * + * @return The Panel instance pointer, @n + * else a @c null pointer if the %Panel is not specified + * @remarks The Panel is optional component of %Scene so it may not be always valid. + * @see SetPanel() + */ + Tizen::Ui::Controls::Panel* GetPanel(void) const; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void Scene_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void Scene_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void Scene_Reserved3(void) {} + +private: + /** + * This default constructor is intentionally declared as private so that only the platform can create an instance. + * + * @since 2.0 + */ + Scene(void); + + /** + * The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + * + * @since 2.0 + */ + Scene(const Scene& rhs); + + /** + * The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + * + * @since 2.0 + */ + Scene& operator =(const Scene& rhs); + +private: + friend class _SceneImpl; + class _SceneImpl* __pSceneImpl; + +}; // Scene +} } } // Tizen::Ui::Scenes + +#endif //_FUI_SCENES_SCENE_H_ diff --git a/inc/FUiScenesSceneManager.h b/inc/FUiScenesSceneManager.h new file mode 100644 index 0000000..97ad0f6 --- /dev/null +++ b/inc/FUiScenesSceneManager.h @@ -0,0 +1,525 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiScenesSceneManager.h + * @brief This is the header file for the %SceneManager class. + * + * This header file contains the declarations of the %SceneManager class. + */ + +#ifndef _FUI_SCENES_SCENE_MANAGER_H_ +#define _FUI_SCENES_SCENE_MANAGER_H_ + +#include +#include +#include +#include + + +namespace Tizen { namespace Ui { namespace Controls +{ +class Form; +class Panel; +}}} +namespace Tizen { namespace Base { namespace Collection +{ +class IList; +template class IListT; +}}} + + +namespace Tizen { namespace Ui { namespace Scenes +{ + +class Scene; +class ForwardSceneTransition; +class BackwardSceneTransition; +class IFormFactory; +class IPanelFactory; +class ISceneEventListener; +class ISceneManagerEventListener; +class ISceneAnimationProvider; +class ISceneTransitionPolicyProvider; + +/** + * @class SceneManager + * @brief This class provides methods to manage scenes and scene states. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %SceneManager class provides methods to manage scenes and scene states. This class is simplified to a single method call for UI Scene transition that changes the GUI, such as + * form to form transition or tab to tab transition. @n + * + * For more information on the class features, see Scene Management and Transition Animations. + */ +class _OSP_EXPORT_ SceneManager + : public Tizen::Base::Object +{ +public: + /** + * Gets the %SceneManager instance. + * + * @since 2.0 + * + * @return A pointer to the %SceneManager instance if successful, @n + * else @c null if it fails + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + static SceneManager* GetInstance(void); + + /** + * Registers a form factory. @n + * The IFormFactory::CreateFormN() is called when a new form is required. + * + * @since 2.0 + * + * @return An error code + * @param[in] formFactory The user-defined form factory instance + * @exception E_SUCCESS The method is successful. + * @see IFormFactory, IFormFactory::CreateFormN() + */ + result RegisterFormFactory(const IFormFactory& formFactory); + + /** + * Registers a panel factory. @n + * The IPanelFactory::CreatePanelN() is called when a new panel is required. + * + * @since 2.0 + * + * @return An error code + * @param[in] panelFactory The user-defined panel factory instance + * @exception E_SUCCESS The method is successful. + * @see IPanelFactory, IPanelFactory::CreatePanelN() + */ + result RegisterPanelFactory(const IPanelFactory& panelFactory); + + /** + * Registers a scene. + * A scene is combination of a form and a panel. + * + * @since 2.0 + * + * @return An error code + * @param[in] sceneId The scene ID + * @param[in] formId The form ID string + * @param[in] panelId The panel ID string + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_OBJ_ALREADY_EXIST The specified @c sceneId already exists. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * + */ + result RegisterScene(const SceneId& sceneId, const Tizen::Base::String& formId, const Tizen::Base::String& panelId); + + /** + * Registers scene(s) with the specified resource ID. + * This method does not remove a scene that is already registered. + * + * @since 2.0 + * + * @return An error code + * @param[in] resourceId The resource ID of the scene(s) + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @exception E_FILE_NOT_FOUND The corresponding resource file is not found. + * @exception E_OBJ_ALREADY_EXIST A scene ID already exists. + * @exception E_SYSTEM A system error has occurred. + * @remarks A duplicated scene (scene ID) will not be registered. Also it throws the E_OBJ_ALREADY_EXIST exception. + * @see UnregisterScene() + * + */ + result RegisterScene(const Tizen::Base::String& resourceId); + + /** + * Unregisters the specified scene. + * + * @since 2.0 + * + * @return An error code + * @param[in] sceneId The scene ID + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_OBJ_NOT_FOUND The specified @c sceneId does not exist. + * @see RegisterScene() + */ + result UnregisterScene(const SceneId& sceneId); + + /** + * Adds a %SceneManager event listener. + * + * @since 2.0 + * + * @return An error code + * @param[in] sceneManagerEventListener An instance of ISceneManagerEventListener to add + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @exception E_OBJ_ALREADY_EXIST The listener with the specified type is already added. + * @see RemoveSceneManagerEventListener(), ISceneManagerEventListener, + * ISceneManagerEventListener::OnSceneTransitionCompleted(), + * ISceneManagerEventListener::OnSceneTransitionStarted() + */ + result AddSceneManagerEventListener(ISceneManagerEventListener& sceneManagerEventListener); + + /** + * Removes a %SceneManager event listener. + * + * @since 2.0 + * + * @return An error code + * @param[in] sceneManagerEventListener An instance of ISceneManagerEventListener to remove + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND The specified listener is not found. + * @see AddSceneManagerEventListener(), ISceneManagerEventListener + */ + result RemoveSceneManagerEventListener(ISceneManagerEventListener& sceneManagerEventListener); + + /** + * Adds a Scene event listener. + * + * @since 2.0 + * + * @return An error code + * @param[in] sceneId The target scene ID + * @param[in] sceneEventListener An instance of ISceneEventListener to add + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @exception E_INVALID_ARG The specified @c sceneId is invalid. + * @exception E_OBJ_ALREADY_EXIST The listener with the specified type is already added. + * @see RemoveSceneEventListener, ISceneEventListener, + * ISceneEventListener::OnSceneActivatedN(), ISceneEventListener::OnSceneDeactivated() + */ + result AddSceneEventListener(const SceneId& sceneId, ISceneEventListener& sceneEventListener); + + /** + * Removes a Scene event listener. + * + * @since 2.0 + * + * @return An error code + * @param[in] sceneId The target scene ID + * @param[in] sceneEventListener An instance of ISceneEventListener to remove + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c sceneId is invalid. + * @exception E_OBJ_NOT_FOUND The specified @c sceneId is not found. + * @see AddSceneEventListener, ISceneEventListener + */ + result RemoveSceneEventListener(const SceneId& sceneId, ISceneEventListener& sceneEventListener); + + /** + * Sets a Scene animation provider. + * + * @since 2.0 + * + * @return An error code + * @param[in] sceneId The target scene ID + * @param[in] pSceneAnimationProvider An instance of ISceneAnimationProvider to set, or null to clear previous one. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c sceneId is invalid. + * @exception E_OBJ_NOT_FOUND The specified scene is not found. + * @see ISceneAnimationProvider + */ + result SetSceneAnimationProvider(const SceneId& sceneId, ISceneAnimationProvider* pSceneAnimationProvider); + + /** + * Sets a Scene transition policy provider. + * + * @since 2.0 + * + * @return An error code + * @param[in] pSceneTransitionPolicyProvider An instance of ISceneTransitionPolicyProvider to set, + * or null to clear previous one. + * @exception E_SUCCESS The method is successful. + * @see ISceneTransitionPolicyProvider, ISceneTransitionPolicyProvider::GetNextScene(), GoForward() + */ + result SetSceneTransitionPolicyProvider(ISceneTransitionPolicyProvider* pSceneTransitionPolicyProvider); + + /** + * Sets the default values for the individual animation types. + * + * @since 2.0 + * + * @return An error code + * @param[in] animationType The target animation type + * @param[in] duration The duration of the animation in milliseconds @n The maximum duration is one second. + * @param[in] interpolatorType The type of interpolator used for the intermediate value calculation of the animation + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @remarks It throws an E_INVALID_ARG exception if the animationType is SCENE_TRANSITION_ANIMATION_TYPE_NONE + * or SCENE_TRANSITION_ANIMATION_TYPE_CUSTOM. + * @see GoForward(), GoBackward() + */ + result SetFormTransitionAnimationDefaultValues(SceneTransitionAnimationType animationType, long duration, + Tizen::Ui::Animations::AnimationInterpolatorType interpolatorType); + + /** + * Requests forward scene transition with the specified scene transition. + * + * @since 2.0 + * + * @return An error code + * @param[in] sceneTransition The scene transition that describes the destination and options + * @param[in] pArgs A pointer to an IList that contains the scene transition parameters + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_IN_PROGRESS A previous transition is in progress. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @exception E_OBJ_NOT_FOUND The destination scene ID is not found in the registered scenes. + * @exception E_INVALID_STATE The factory instance ( @ref IFormFactory, @ref IPanelFactory ) or + * ISceneTransitionPolicyProvider is not set. + * @exception E_SYSTEM A system error has occurred. @n + * (Internal logic or failed to create control from a factory). + * @remarks To use the policy provider operation, SceneTransition's destinationSceneId must be of length 0, + * also you must register the user-defined ISceneTransitionPolicyProvider and implement the + * ISceneTransitionPolicyProvider::GetNextScene() callback method. + **/ + result GoForward(const ForwardSceneTransition& sceneTransition, const Tizen::Base::Collection::IList* pArgs = null); + + /** + * Requests forward scene transition with the specified transition ID. + * + * @since 2.0 + * + * @return An error code + * @param[in] transitionId The transition ID that describes the destination and options + * @param[in] pArgs A pointer to an IList that contains the scene transition parameters + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_IN_PROGRESS A previous transition is in progress. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @exception E_OBJ_NOT_FOUND The destination scene ID is not found in the registered scenes. + * @exception E_INVALID_STATE The factory instance ( @ref IFormFactory, @ref IPanelFactory ) or + * ISceneTransitionPolicyProvider is not set. + * @exception E_SYSTEM A system error has occurred. @n + * (Internal logic or failed to create control from a factory). + * @remarks To use the policy provider operation, SceneTransition's destinationSceneId must be of length 0, + * also you must register the user-defined ISceneTransitionPolicyProvider and implement the + * ISceneTransitionPolicyProvider::GetNextScene() callback method. + **/ + result GoForward(const SceneTransitionId& transitionId, const Tizen::Base::Collection::IList* pArgs = null); + + /** + * Requests backward scene transition with the specified scene transition. + * + * @since 2.0 + * + * @return An error code + * @param[in] sceneTransition The scene transition that describes the destination and options + * @param[in] pArgs A pointer to an IList that contains the scene transition parameters + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_IN_PROGRESS A previous transition is in progress. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @exception E_OBJ_NOT_FOUND The scene ID of the previous scene in the internal history is not found in + * the current registered scenes. + * @exception E_INVALID_STATE The factory instance ( @ref IFormFactory, @ref IPanelFactory ) or + * ISceneTransitionPolicyProvider is not set. + * @exception E_UNDERFLOW The scene history is empty. + * @exception E_SYSTEM A system error has occurred. @n + * (Internal logic or failed to create control from a factory). + * @remarks An item removed from the internal history except the E_SYSTEM exception case. @n + * For non-adjacent backward transition, the current scene and the scenes between the current scene and + * the requested scene would be destroyed if SCENE_DESTROY_OPTION_KEEP is not specified as destroyOption. @n + * If the destroy option is selected then the sibling panel scenes (sharing same base form) are also destroyed. + */ + result GoBackward(const BackwardSceneTransition& sceneTransition, const Tizen::Base::Collection::IList* pArgs = null); + + /** + * Requests backward scene transition with the specified transition ID. + * + * @since 2.0 + * + * @return An error code + * @param[in] transitionId The transition ID that describes the destination and options + * @param[in] pArgs A pointer to an IList that contains the scene transition parameters + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @exception E_IN_PROGRESS A previous transition is in progress. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @exception E_OBJ_NOT_FOUND The scene ID of the previous scene in the internal history is not found in + * the current registered scenes. + * @exception E_INVALID_STATE The factory instance ( @ref IFormFactory, @ref IPanelFactory ) or + * ISceneTransitionPolicyProvider is not set. + * @exception E_UNDERFLOW The scene history is empty. + * @exception E_SYSTEM A system error has occurred. @n + * (Internal logic or failed to create control from a factory). + * @remarks An item removed from the internal history except the E_SYSTEM exception case. @n + * For non-adjacent backward transition, the current scene and the scenes between the current scene and + * the requested scene would be destroyed if SCENE_DESTROY_OPTION_KEEP is not specified as destroyOption. @n + * If the destroy option is selected then the sibling panel scenes (sharing same base form) are also destroyed. + */ + result GoBackward(const SceneTransitionId& transitionId, const Tizen::Base::Collection::IList* pArgs = null); + + /** + * Gets a pointer to the current Scene instance. + * + * @since 2.0 + * + * @return A pointer to the current Scene instance + * @see GetCurrentSceneId() + */ + Scene* GetCurrentScene(void) const; + + /** + * Gets the current scene ID string. + * + * @since 2.0 + * + * @return The scene ID + * @see GetCurrentScene() + */ + SceneId GetCurrentSceneId(void) const; + + /** + * Checks whether the Scene instance with the specified sceneId has been destroyed or not. + * + * @since 2.0 + * + * @return @c true if the scene instance has not been destroyed, @n + * else @c false + * @param[in] sceneId The scene ID + * @remarks This function is useful to check state of the scene, because the scene lifetime is determined + * by scene transition option and user can destroy the scene in real time. + */ + bool IsSceneAlive(const SceneId& sceneId) const; + + /** + * Destroys the specified scene. + * + * @since 2.0 + * + * @return An error code + * @param[in] sceneId The scene ID + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The current scene cannot be destroyed. + * @exception E_OBJ_NOT_FOUND The specified @c sceneId does not exist. + * @exception E_SYSTEM A system error has occurred. + */ + result DestroyScene(const SceneId& sceneId); + + /** + * Brings the current scene to the topmost to get back the control of scene management. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_OPERATION_FAILED The current scene is invalid. + * @exception E_SYSTEM A system error has occurred. + * @remarks If a user sets a form as a current form on a frame by calling SetCurrentForm(), + * they will no longer be under the control of %SceneManager. In this case, + * they can get back the control of scene management easily by calling this method. + * @see Tizen::Ui::Controls::Frame::SetCurrentForm + */ + result BringCurrentSceneToTop(void); + + /** + * Clears the scene history. + * + * @since 2.0 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @see AddSceneHistory() + */ + result ClearSceneHistory(void); + + /** + * Adds the scene to the scene history. + * + * @since 2.0 + * + * @return An error code + * @param[in] sceneId The scene ID + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_OBJ_NOT_FOUND The specified @c sceneId is not found in the registered scenes. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @see ClearSceneHistory() + */ + result AddToSceneHistory(const SceneId& sceneId); + + /** + * Gets the scene history list. + * + * @since 2.0 + * + * @return A pointer to the list that contains the scene history + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + Tizen::Base::Collection::IListT* GetSceneHistoryN(void) const; + +private: + /** + * This default constructor is intentionally declared as private to implement the Singleton semantic. + * + * @since 2.0 + */ + SceneManager(void); + + /** + * The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + * + * @since 2.0 + */ + SceneManager(const SceneManager& rhs); + + /** + * The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + * + * @since 2.0 + */ + SceneManager& operator =(const SceneManager& rhs); + + /** + * This destructor is intentionally declared as private to implement the Singleton semantic. + * + * @since 2.0 + */ + virtual ~SceneManager(void); + + /** + * Initializes the instance of the this class. + * + * @since 2.0 + * + * @return An error code. + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * + */ + result Construct(void); + + static void InitSingleton(void); + static void DestroySingleton(void); + +private: + friend class _SceneManagerImpl; + class _SceneManagerImpl* __pSceneManagerImpl; + static SceneManager* __pSceneManagerInstance; + +}; // SceneManager +} } } // Tizen::Ui::Scenes + +#endif //_FUI_SCENES_SCENE_MANAGER_H_ diff --git a/inc/FUiScenesSceneTransition.h b/inc/FUiScenesSceneTransition.h new file mode 100644 index 0000000..6f42834 --- /dev/null +++ b/inc/FUiScenesSceneTransition.h @@ -0,0 +1,268 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiScenesSceneTransition.h + * @brief This is the header file for the %SceneTransition class. + * + * This header file contains the declarations of the %SceneTransition class. + */ + +#ifndef _FUI_SCENES_SCENE_TRANSITION_H_ +#define _FUI_SCENES_SCENE_TRANSITION_H_ + +#include +#include + + +namespace Tizen { namespace Ui { namespace Scenes +{ + +/** + * @class SceneTransition + * @brief This class is the %SceneTransition class of a Tizen native application. + * + * @since 2.0 + * + * The %SceneTransition class contains transition information, such as transition direction, transition destination, + * animation type, history option, and destroy option. @n + * + * For more information on the class features, see Scene Management. + */ +class _OSP_EXPORT_ SceneTransition + : public Tizen::Base::Object +{ +public: + /** + * This is the default constructor for this class. + * + * @since 2.0 + */ + SceneTransition(void); + + /** + * Copying of objects using this copy constructor is allowed. + * + * @since 2.0 + * + * @param[in] rhs An instance of %SceneTransition + */ + SceneTransition(const SceneTransition& rhs); + + /** + * Initializes this instance of %SceneTransition with the specified parameters. + * + * @since 2.0 + * + * @param[in] direction The transition direction + * @param[in] destinationSceneId The scene ID of transition destination + * @param[in] animationType The transition animation type + * @param[in] historyOption The history option whether to add the current scene to the history or not + * @param[in] destroyOption The destroy option whether to destroy the current scene or not + */ + SceneTransition(SceneTransitionDirection direction, const SceneId& destinationSceneId, + SceneTransitionAnimationType animationType, + SceneHistoryOption historyOption, SceneDestroyOption destroyOption); + + /** + * Assigns the value of the specified instance to the current instance of %SceneTransition. + * + * @since 2.0 + * + * @param[in] rhs An instance of %SceneTransition + */ + SceneTransition& operator =(const SceneTransition& rhs); + + /** + * Checks whether the specified instance of %SceneTransition equals the current instance. + * + * @since 2.0 + * + * @return @c true if the specified instance equals the current instance, @n + * else @c false + * @param[in] rhs An instance of %SceneTransition + * @remarks The method returns @c false if the specified object is not Scene. + */ + virtual bool Equals(const Object& rhs) const; + + /** + * Gets the hash value of the current instance. + * + * @since 2.0 + * + * @return The hash value of the current instance + */ + virtual int GetHashCode(void) const; + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~SceneTransition(void); + + +// result SetTransitionId(TransitionId& transitionId); + + /** + * Sets the scene transition direction. + * + * @since 2.0 + * + * @return An error code + * @param[in] direction The transition direction + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * + */ + result SetDirection(SceneTransitionDirection direction); + + /** + * Gets the scene transition direction. + * + * @since 2.0 + * + * @return The direction of scene transition + * + */ + SceneTransitionDirection GetDirection(void) const; + + /** + * Sets the scene transition destination scene. + * + * @since 2.0 + * + * @return An error code + * @param[in] sceneId The scene ID of transition destination + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * + */ + result SetDestinationSceneId(const SceneId& sceneId); + + /** + * Gets the scene transition destination scene. + * + * @since 2.0 + * + * @return The scene ID of transition destination + * + */ + SceneId GetDestinationSceneId(void) const; + + /** + * Sets the scene transition animation type. + * + * @since 2.0 + * + * @return An error code + * @param[in] animationType The transition animation type + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * + */ + result SetAnimationType(SceneTransitionAnimationType animationType); + + /** + * Gets the scene transition animation type. + * + * @since 2.0 + * + * @return The transition animation type + * + */ + SceneTransitionAnimationType GetAnimationType(void) const; + + /** + * Sets the scene transition history option. + * + * @since 2.0 + * + * @return An error code + * @param[in] historyOption The history option whether to add the current scene to the history or not + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * + */ + result SetHistoryOption(SceneHistoryOption historyOption); + + /** + * Gets the scene transition history option. + * + * @since 2.0 + * + * @return The history option + * + */ + SceneHistoryOption GetHistoryOption(void) const; + + /** + * Sets the scene transition destroy option. + * + * @since 2.0 + * + * @return An error code + * @param[in] destroyOption The destroy option whether to destroy the current scene or not + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * + */ + result SetDestroyOption(SceneDestroyOption destroyOption); + + /** + * Gets the scene transition destroy option. + * + * @since 2.0 + * + * @return The destroy option + * + */ + SceneDestroyOption GetDestroyOption(void) const; + +protected: + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void SceneTransition_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void SceneTransition_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // @since 2.0 + // + virtual void SceneTransition_Reserved3(void) {} + +private: + friend class _SceneTransitionImpl; + class _SceneTransitionImpl* __pSceneTransitionImpl; + +}; // SceneTransition +} } } // Tizen::Ui::Scenes + +#endif // _FUI_SCENES_SCENE_TRANSITION_H_ diff --git a/inc/FUiScenesTypes.h b/inc/FUiScenesTypes.h new file mode 100644 index 0000000..57a722c --- /dev/null +++ b/inc/FUiScenesTypes.h @@ -0,0 +1,111 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiScenesTypes.h + * @brief This is the header file for the common data types used by the scene management. + * + * This header file contains the declarations of the common data types and constants used by the scene management. + */ + +#ifndef _FUI_SCENES_TYPES_H_ +#define _FUI_SCENES_TYPES_H_ + + +#include + + +namespace Tizen { namespace Ui { namespace Scenes +{ + +/** + * The scene ID. + * + * @since 2.0 + */ +typedef Tizen::Base::String SceneId; + +/** + * The transition ID. + * + * @since 2.0 + */ +typedef Tizen::Base::String SceneTransitionId; + +/** + * @enum SceneTransitionDirection + * + * Defines the scene transition directions whether forward or backward. + * + * @since 2.0 + */ +enum SceneTransitionDirection +{ + SCENE_TRANSITION_DIRECTION_FORWARD, /**< The transition is forward */ + SCENE_TRANSITION_DIRECTION_BACKWARD, /**< The transition is backward */ +}; + +/** + * @enum SceneHistoryOption + * + * Defines the scene history operation options whether to add to history or not. + * + * @since 2.0 + */ +enum SceneHistoryOption +{ + SCENE_HISTORY_OPTION_ADD_HISTORY, /**< The current scene would be added to history */ + SCENE_HISTORY_OPTION_NO_HISTORY, /**< The current scene would not be added to history */ +}; + +/** + * @enum SceneDestroyOption + * + * Defines the scene destroy options. + * + * @since 2.0 + */ +enum SceneDestroyOption +{ + SCENE_DESTROY_OPTION_KEEP, /**< The current scene will not be destroyed */ + SCENE_DESTROY_OPTION_DESTROY, /**< The current scene will be destroyed after the transition is completed */ +}; + +/** + * @enum SceneTransitionAnimationType + * + * Defines the scene transition animation types. + * + * @since 2.0 + * + * @see Tizen::Ui::Animations::FrameAnimatorFormTransitionAnimation + */ +enum SceneTransitionAnimationType +{ + SCENE_TRANSITION_ANIMATION_TYPE_NONE, /**< No transition animation */ + SCENE_TRANSITION_ANIMATION_TYPE_CUSTOM, /**< The custom transition animation with ISceneAnimationProvider */ + SCENE_TRANSITION_ANIMATION_TYPE_LEFT, /**< The transition animation using translate left animation */ + SCENE_TRANSITION_ANIMATION_TYPE_RIGHT, /**< The transition animation using translate right animation */ + SCENE_TRANSITION_ANIMATION_TYPE_FADE_IN_OUT, /**< The transition animation using alpha animation */ + SCENE_TRANSITION_ANIMATION_TYPE_ZOOM_IN, /**< The transition animation using scale animation */ + SCENE_TRANSITION_ANIMATION_TYPE_ZOOM_OUT, /**< The transition animation using scale animation */ + SCENE_TRANSITION_ANIMATION_TYPE_DEPTH_IN, /**< The transition animation using scale and alpha animation */ + SCENE_TRANSITION_ANIMATION_TYPE_DEPTH_OUT, /**< The transition animation using scale and alpha animation */ +}; +} } } // Tizen::Ui::Scenes + +#endif //_FUI_SCENES_TYPES_H_ diff --git a/inc/FUiSystemUtil.h b/inc/FUiSystemUtil.h new file mode 100755 index 0000000..edec3aa --- /dev/null +++ b/inc/FUiSystemUtil.h @@ -0,0 +1,167 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiSystemUtil.h + * @brief This is the header file for the SystemUtil + * + * This header file contains the declarations of the SystemUtil class. + * + */ + +#ifndef _FUI_SYSTEM_UTIL_H_ +#define _FUI_SYSTEM_UTIL_H_ + +#include + +namespace Tizen { namespace Graphics +{ +class Bitmap; +class Point; +}} + +namespace Tizen { namespace Ui +{ + +/** + * @enum KeyEventType + * + * Defines key event types. + * + * @since 2.0 + */ +enum KeyEventType +{ + KEY_EVENT_TYPE_PRESSED, /**< Key pressed event type */ + KEY_EVENT_TYPE_RELEASED, /**< Key released event type */ +}; + +/** + * @enum TouchEventType + * + * Defines touch event types. + * + * @since 2.0 + */ +enum TouchEventType +{ + TOUCH_EVENT_TYPE_PRESSED, /**< Touch pressed event type */ + TOUCH_EVENT_TYPE_RELEASED, /**< Touch released event type */ + TOUCH_EVENT_TYPE_MOVED /**< Touch moved event type */ +}; + +/** + * @if VISPARTNER-MANUFACTURER + * @class SystemUtil + * @brief This is a class for system utililty such as touch, key, and capturing screen. It provides + * functionalities to simulate user inputs. + * @since 2.0 + * @final This class is not intended for extension. + * @visibility partner-manufacturer + * + * This class provides methods to generate user's input events such as + * touch and key events for helping test application and to capture current screen. + * @endif + */ +class _OSP_EXPORT_ SystemUtil +{ +public: + /** + * @if VISPARTNER-MANUFACTURER + * Generates a key event + * + * @since 2.0 + * @visibility partner-manufacturer + * @privilege %http://tizen.org/privilege/inputmanager + * + * @return An error code + * @param[in] keyEvent The event type of the key to be generated + * @param[in] keyCode The code of the key + * @exception E_SUCCESS The method was successful. + * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. + * @exception E_OPERATION_FAILED An error occurred in the underlying system. + * @exception E_INVALID_ARG The specified @c keyEvent or @c keyCode is not supported. + * @endif + */ + static result GenerateKeyEvent(KeyEventType keyEvent, KeyCode keyCode); + + /** + * @if VISPARTNER-MANUFACTURER + * Generates a touch event + * + * @since 2.0 + * @visibility partner-manufacturer + * @privilege %http://tizen.org/privilege/inputmanager + * + * @return An error code + * @param[in] touchEvent The event type of the touch to be generated + * @param[in] point The point on which the touch occurs + * @exception E_SUCCESS The method was successful. + * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. + * @exception E_OPERATION_FAILED An error occurred in the underlying system. + * @exception E_INVALID_ARG The specified @c touchEvent is not supported. + * @endif + */ + static result GenerateTouchEvent(TouchEventType touchEvent, const Tizen::Graphics::Point& point); + + /** + * @if VISPARTNER-MANUFACTURER + * Captures a screen + * + * @since 2.0 + * @visibility partner-manufacturer + * @privilege %http://tizen.org/privilege/inputmanager + * + * @return A pointer to the captured screen bitmap, @n + * else @c null if it fails to capture screen + * @exception E_SUCCESS The method was successful. + * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. + * @exception E_OPERATION_FAILED An error occurred in the underlying system. + * @remarks There is a high probability for an occurrence of an out-of-memory exception. If possible, check whether the exception is E_OUT_OF_MEMORY or not. For more information on how to handle the out-of-memory exception, refer here. + * @remarks The specific error code can be accessed using the GetLastResult() method. @n + * The returned bitmap should be deleted by the application after use. + * @endif + */ + static Tizen::Graphics::Bitmap* CaptureScreenN(void); + +private: + // + // This default constructor is intentionally declared as private because this class cannot be constructed. + // + SystemUtil(void); + + // + // This destructor is intentionally declared as private because this class cannot be constructed. + // + SystemUtil(const SystemUtil& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + SystemUtil& operator =(const SystemUtil& rhs); + + // + // This is a destructor for this class. + // This destructor is intentionally declared as private because this class cannot be constructed. + // + ~SystemUtil(void); + +}; //SystemUtil + +}} //Tizen::Ui +#endif + diff --git a/inc/FUiTouch.h b/inc/FUiTouch.h new file mode 100644 index 0000000..2f00f60 --- /dev/null +++ b/inc/FUiTouch.h @@ -0,0 +1,387 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiTouch.h + * @brief This is the header file for the %Touch class. + * + * This header file contains the declarations of the %Touch class.get + * + */ + +#ifndef _FUI_TOUCH_H_ +#define _FUI_TOUCH_H_ + +#include +#include +#include + +namespace Tizen { namespace Ui +{ + +class Control; +/** + * @if OSPDEPREC + * @class Touch + * @brief [Deprecated] This class supports multi-point touch for %Touch devices. + * + * @deprecated This class is deprecated because the use of the %Touch is no longer recommended. Instead of using this class, use Tizen::Ui::TouchEventManager class. + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %Touch class supports multi-point touch, and provides information about touch events. + * + * The following example demonstrates how to use the %Touch class. + * @code +// Sample code for TouchSample.h +#include + +class TouchSample + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::ITouchEventListener +{ +public: + bool Initialize(void); + virtual result OnInitializing(void); + void DisplayMultipointTouchInfo(const Tizen::Ui::Control &source); + + // ITouchEventListener + virtual void OnTouchDoublePressed(const Tizen::Ui::Control &source, const Tizen::Graphics::Point ¤tPosition, const Tizen::Ui::TouchEventInfo &touchInfo); + virtual void OnTouchFocusIn(const Tizen::Ui::Control &source, const Tizen::Graphics::Point ¤tPosition, const Tizen::Ui::TouchEventInfo &touchInfo); + virtual void OnTouchFocusOut(const Tizen::Ui::Control &source, const Tizen::Graphics::Point ¤tPosition, const Tizen::Ui::TouchEventInfo &touchInfo); + virtual void OnTouchLongPressed(const Tizen::Ui::Control &source, const Tizen::Graphics::Point ¤tPosition, const Tizen::Ui::TouchEventInfo &touchInfo); + virtual void OnTouchMoved(const Tizen::Ui::Control &source, const Tizen::Graphics::Point ¤tPosition, const Tizen::Ui::TouchEventInfo &touchInfo); + virtual void OnTouchPressed(const Tizen::Ui::Control &source, const Tizen::Graphics::Point ¤tPosition, const Tizen::Ui::TouchEventInfo &touchInfo); + virtual void OnTouchReleased(const Tizen::Ui::Control &source, const Tizen::Graphics::Point ¤tPosition, const Tizen::Ui::TouchEventInfo &touchInfo); +}; + * @endcode + * + * @code +// Sample code for TouchSample.cpp +#include +#include + +#include "TouchSample.h" + +using namespace Tizen::Base::Collection; +using namespace Tizen::Graphics; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; + +bool +TouchSample::Initialize(void) +{ + Construct(FORM_STYLE_NORMAL); + return true; +} + +result +TouchSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of Touch + Touch touch; + touch.SetMultipointEnabled(*this, true); + AddTouchEventListener(*this); + + return r; +} + +void +TouchSample::DisplayMultipointTouchInfo(const Control &source) +{ + Touch touch; + IList *pList = touch.GetTouchInfoListN(source); + if (pList) + { + for(int i = 0; i < pList->GetCount(); i++ ) + { + TouchInfo *pTouchInfo = static_cast(pList->GetAt(i)); + AppLog("OnTouchMoved : [%d]%d,%d - %d", pTouchInfo->id, pTouchInfo->position.x, pTouchInfo->position.y, pTouchInfo->status); + } + pList->RemoveAll(true); + delete pList; + } +} + +// ITouchEventListeners implementation +void +TouchSample::OnTouchDoublePressed(const Control &source, const Point ¤tPosition, const TouchEventInfo &touchInfo) +{ + AppLog("OnTouchDoublePressed is called. [%d]%d,%d", touchInfo.GetPointId(), currentPosition.x, currentPosition.y); + DisplayMultipointTouchInfo(source); +} + +void +TouchSample::OnTouchFocusIn(const Control &source, const Point ¤tPosition, const TouchEventInfo &touchInfo) +{ + AppLog("OnTouchFocusIn is called. [%d]%d,%d", touchInfo.GetPointId(), currentPosition.x, currentPosition.y); + DisplayMultipointTouchInfo(source); +} + +void +TouchSample::OnTouchFocusOut(const Control &source, const Point ¤tPosition, const TouchEventInfo &touchInfo) +{ + AppLog("OnTouchFocusOut is called. [%d]%d,%d", touchInfo.GetPointId(), currentPosition.x, currentPosition.y); + DisplayMultipointTouchInfo(source); +} + +void +TouchSample::OnTouchLongPressed(const Control &source, const Point ¤tPosition, const TouchEventInfo &touchInfo) +{ + AppLog("OnTouchLongPressed is called. [%d]%d,%d", touchInfo.GetPointId(), currentPosition.x, currentPosition.y); + DisplayMultipointTouchInfo(source); +} + +void +TouchSample::OnTouchMoved(const Control &source, const Point ¤tPosition, const TouchEventInfo &touchInfo) +{ + AppLog("OnTouchMoved is called. [%d]%d,%d", touchInfo.GetPointId(), currentPosition.x, currentPosition.y); + DisplayMultipointTouchInfo(source); +} + +void +TouchSample::OnTouchPressed(const Control &source, const Point ¤tPosition, const TouchEventInfo &touchInfo) +{ + AppLog("OnTouchPressed is called. [%d]%d,%d", touchInfo.GetPointId(), currentPosition.x, currentPosition.y); + DisplayMultipointTouchInfo(source); +} + +void +TouchSample::OnTouchReleased(const Control &source, const Point ¤tPosition, const TouchEventInfo &touchInfo) +{ + AppLog("OnTouchReleased is called. [%d]%d,%d", touchInfo.GetPointId(), currentPosition.x, currentPosition.y); + DisplayMultipointTouchInfo(source); +} + * @endcode + * @endif + */ +class _OSP_EXPORT_ Touch + : public Tizen::Base::Object +{ +public: + /** + * @if OSPDEPREC + * This is the default constructor for this class. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the %Touch class is not supported any more. Instead, use the Tizen::Ui::TouchEventManager class. + * @since 2.0 + * @endif + */ + Touch(void); + + /** + * @if OSPDEPREC + * This destructor overrides Osp::Base::Object::~Object(). + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the %Touch class is not supported any more. Instead, use the Tizen::Ui::TouchEventManager class. + * @since 2.0 + * @endif + */ + virtual ~Touch(void); + +public: + /** + * @if OSPDEPREC + * Enables or disables the multi-point touch of the Control. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the %Touch class is not supported any more. Instead, use the Tizen::Ui::Control::SetMultipointTouchEnabled() method. + * @since 2.0 + * + * @return An error code + * @param[in] control The control + * @param[in] enable A Boolean flag indicating whether to enable to the multi-point touch + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @see IsMultipointEnabled() + * @endif + */ + result SetMultipointEnabled(const Tizen::Ui::Control& control, bool enable); + + /** + * @if OSPDEPREC + * Checks whether the multi-point touch is enabled. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the %Touch class is not supported any more. Instead, use the Tizen::Ui::Control::IsMultipointTouchEnabled() method. + * @since 2.0 + * + * @return @c true if the multi-point touch is enabled, @n + * else @c false + * @see IsMultipointEnabled() + * @endif + */ + bool IsMultipointEnabled(const Tizen::Ui::Control& control) const; + + + /** + * @if OSPDEPREC + * Gets the touch position. + * If there is only a single touch, that is returned. If there are multi-point touches, then the position of the last touch is returned. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the %Touch class is not supported any more. + * Instead, get the Tizen::Ui::TouchEventManager::GetTouchInfoListN() and use the Tizen::Ui::TouchEventInfo::GetCurrentPosition() method. + * @since 2.0 + * + * @return The coordinates of the touch + * @remarks If an error occurs, this method returns Point(-1, -1). + * @endif + */ + Tizen::Graphics::Point GetPosition(void) const; + + /** + * @if OSPDEPREC + * Gets the touch position by ID. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the %Touch class is not supported any more. + * Instead, get the Tizen::Ui::TouchEventManager::GetTouchInfoListN() and use the Tizen::Ui::TouchEventInfo::GetCurrentPosition() method. + * @since 2.0 + * + * @return The coordinates of the touch + * @param[in] id The ID of the touch + * @remarks If an error occurs, this method returns Point(-1, -1). + * @endif + */ + Tizen::Graphics::Point GetPosition(unsigned long id) const; + + /** + * @if OSPDEPREC + * Gets the touch position relative to the specified control. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the %Touch class is not supported any more. + * Instead, get the Tizen::Ui::TouchEventManager::GetTouchInfoListN() and use the Tizen::Ui::TouchEventInfo::GetCurrentPosition() method. + * @since 2.0 + * + * @return The coordinates of the touch + * @param[in] control The source control + * @remarks If an error occurs, this method returns Point(-1, -1). + * @endif + */ + Tizen::Graphics::Point GetPosition(const Tizen::Ui::Control& control) const; + + /** + * @if OSPDEPREC + * Gets the touch position relative to the specified control by ID. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the %Touch class is not supported any more. + * Instead, get the Tizen::Ui::TouchEventManager::GetTouchInfoListN() and use the Tizen::Ui::TouchEventInfo::GetCurrentPosition() method. + * @since 2.0 + * + * @return The coordinates of the touch + * @param[in] control The source control + * @param[in] id The ID of the touch + * @remarks If an error occurs, this method returns Point(-1, -1). + * @endif + */ + Tizen::Graphics::Point GetPosition(const Tizen::Ui::Control& control, unsigned long id) const; + + /** + * @if OSPDEPREC + * Gets the status of the touch by ID. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the %Touch class is not supported any more. + * Instead, get the Tizen::Ui::TouchEventManager::GetTouchInfoListN() and use the Tizen::Ui::TouchEventInfo::GetTouchStatus() method. + * @since 2.0 + * + * @param[in] id The ID of the touch + * @return The touch status + * @endif + */ + TouchStatus GetTouchStatus(unsigned long id) const; + + /** + * @if OSPDEPREC + * Gets the list of the multi-point touches, each represented by TouchInfo. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the %Touch class is not supported any more. Instead, use the Tizen::Ui::TouchEventManager::GetTouchInfoListN() method. + * @since 2.0 + * + * @return List of the TouchInfo + * @see Tizen::Ui::TouchInfo + * @endif + */ + Tizen::Base::Collection::IList* GetTouchInfoListN(void) const; + + /** + * @if OSPDEPREC + * Gets the list of the multi-point touch positions relative to the specified control, each represented by TouchInfo. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the %Touch class is not supported any more. Instead, use the Tizen::Ui::TouchEventManager::GetTouchInfoListN() method. + * @since 2.0 + * + * @return A list of the TouchInfo instances + * @param[in] control The source object for calculating the coordinates + * @see Tizen::Ui::TouchInfo + * @endif + */ + Tizen::Base::Collection::IList* GetTouchInfoListN(const Tizen::Ui::Control& control) const; + + /** + * @if OSPDEPREC + * Gets the count of the multi-point touches. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the %Touch class is not supported any more. Instead, get the count of Tizen::Ui::TouchEventManager::GetTouchInfoListN() method. + * @since 2.0 + * + * @return The number of the multi-point touches + * @endif + */ + int GetPointCount(void) const; + + /** + * @if OSPDEPREC + * Gets the point ID at the given index. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the %Touch class is not supported any more. + * Instead, get the Tizen::Ui::TouchEventManager::GetTouchInfoListN() and use the Tizen::Ui::TouchEventInfo::GetPointId() method. + * @since 2.0 + * + * @return The touch point ID + * @param[in] index The index of the touch + * @endif + */ + unsigned long GetPointId(int index) const; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + Touch(const Touch&); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + Touch& operator =(const Touch&); +}; // Touch + +}} // Tizen::Ui + +#endif // _FUI_TOUCH_H_ diff --git a/inc/FUiTouchEventInfo.h b/inc/FUiTouchEventInfo.h new file mode 100644 index 0000000..3c5d0d9 --- /dev/null +++ b/inc/FUiTouchEventInfo.h @@ -0,0 +1,166 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiTouchEventInfo.h + * @brief This is the header file for the %TouchEventInfo class. + * + * This header file contains the declarations of the %TouchEventInfo class. + * + */ + +#ifndef _FUI_TOUCH_EVENT_INFO_H_ +#define _FUI_TOUCH_EVENT_INFO_H_ + +#include +#include + +namespace Tizen { namespace Base { namespace Runtime +{ +class IEventArg; +}}} + +namespace Tizen { namespace Ui +{ + +class _TouchEventInfoImpl; + +/** + * @enum TouchStatus + * + * Defines constants used to identify touch status. + * + * @since 2.0 + */ +enum TouchStatus +{ + TOUCH_PRESSED, /**< The touch pressed event type */ + TOUCH_LONG_PRESSED, /**< The touch long pressed event type */ + TOUCH_RELEASED, /**< The touch released event type */ + TOUCH_MOVED, /**< The touch moved event type */ + TOUCH_DOUBLE_PRESSED, /**< The touch double pressed event type */ + TOUCH_FOCUS_IN, /**< The touch focus-in event type */ + TOUCH_FOCUS_OUT, /**< The touch focus-out event type */ + TOUCH_CANCELED, /**< The touch canceled event type */ +}; + +/** + * @class TouchEventInfo + * @brief This class stores the information of each touch events. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %TouchEventInfo class provides the touch event information: touch position, status, ID, and so on. + * @see ITouchEventListener, ITouchEventListener::OnTouchPressed(), @if OSPDEREC ITouchEventListener::OnTouchLongPressed(), @endif ITouchEventListener::OnTouchReleased(), ITouchEventListener::OnTouchMoved(), @if OSPDEPREC ITouchEventListener::OnTouchDoublePressed(), @endif ITouchEventListener::OnTouchFocusIn(), ITouchEventListener::OnTouchFocusOut() + * + */ +class _OSP_EXPORT_ TouchEventInfo + : public Tizen::Base::Object +{ +public: + /** + * This is the default constructor for this class. + * + * @since 2.0 + */ + TouchEventInfo(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~TouchEventInfo(void); + + // + // This method is for internal use only. Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // + // Initializes this instance of %TouchEventInfo with the specified parameters. + // + // @since 2.0 + // @return An error code + // @param[in] eventArg The touch event argument + // + result Construct(const Tizen::Base::Runtime::IEventArg& eventArg); + + /** + * Gets the ID of the current touch event. + * + * @since 2.0 + * + * @return The ID of the current touch event + */ + unsigned long GetPointId(void) const; + + /** + * Gets the start position of the touch event. + * + * @since 2.0 + * + * @return The start position of the touch event + */ + Tizen::Graphics::Point GetStartPosition(void) const; + + /** + * Gets the current position of the touch event. + * + * @since 2.0 + * + * @return The current position of the touch event + */ + Tizen::Graphics::Point GetCurrentPosition(void) const; + + /** + * Gets the touch status. + * + * @since 2.0 + * + * @return The touch status + */ + TouchStatus GetTouchStatus(void) const; + + /** + * Checks whether the touch status is flick. + * + * @since 2.0 + * + * @return @c true if the touch status is flick, @n + * else @c false + */ + bool IsFlicked(void) const; + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + TouchEventInfo(const TouchEventInfo&); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + TouchEventInfo& operator =(const TouchEventInfo&); + +private: + _TouchEventInfoImpl* __pTouchEventInfoImpl; +}; // TouchEventInfo + +}} //Tizen::Ui + +#endif // _FUI_TOUCH_EVENT_INFO_H_ diff --git a/inc/FUiTouchEventManager.h b/inc/FUiTouchEventManager.h new file mode 100644 index 0000000..3fa286a --- /dev/null +++ b/inc/FUiTouchEventManager.h @@ -0,0 +1,103 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiTouchEventManager.h + * @brief This is the header file for the %TouchEventManager class. + * + * This header file contains the declarations of the %TouchEventManager class. + * + */ + +#ifndef _FUI_TOUCH_EVENT_MANAGER_H_ +#define _FUI_TOUCH_EVENT_MANAGER_H_ + +#include +#include +#include +#include + +namespace Tizen { namespace Ui +{ + +class _TouchEventManagerImpl; +/** + * @class TouchEventManager + * @brief This class stores the information of each touch events. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %TouchEventManager class provides the touch event information: touch position, status, ID, and so on. + * @see TouchEventInfo + * + */ +class _OSP_EXPORT_ TouchEventManager + : public Tizen::Base::Object +{ +public: + /** + * Gets the instance of the %TouchEventManager. + * + * @since 2.0 + * @return A instance of the %TouchEventManager + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + * @remarks This method provides a global point of access to the TouchEventManager. And the specific error code can be accessed using the + * GetLastResult() method. + */ + static TouchEventManager* GetInstance(void); + + /** + * Gets the list of the multi-point touches, each represented by TouchEventInfo. + * + * @since 2.0 + * @return List of the TouchEventInfo + * @see Tizen::Ui::TouchEventInfo + * + */ + Tizen::Base::Collection::IListT* GetTouchInfoListN(void) const; + +private: + // + // This default constructor is intentionally declared as private to implement the Singleton semantic. + // + TouchEventManager(void); + + // + // This destructor is intentionally declared as private to implement the Singleton semantic. + // + virtual ~TouchEventManager(void); + + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + TouchEventManager(const TouchEventManager& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + TouchEventManager& operator =(const TouchEventManager& rhs); + +private: + _TouchEventManagerImpl* __pTouchEventManagerImpl; +}; // TouchEventManager + +}} //Tizen::Ui + +#endif // _FUI_TOUCH_EVENT_MANAGER_H_ diff --git a/inc/FUiTouchFlickGestureDetector.h b/inc/FUiTouchFlickGestureDetector.h new file mode 100644 index 0000000..e05256b --- /dev/null +++ b/inc/FUiTouchFlickGestureDetector.h @@ -0,0 +1,168 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiTouchFlickGestureDetector.h + * @brief This is the header file for the %TouchFlickGestureDetector class. + * + * This header file contains the declarations of the %TouchFlickGestureDetector class. + * + */ +#ifndef _FUI_TOUCH_FLICK_GESTURE_DETECTOR_H_ +#define _FUI_TOUCH_FLICK_GESTURE_DETECTOR_H_ + +#include + +namespace Tizen { namespace Ui +{ + +class ITouchFlickGestureEventListener; + +/** + * @enum FlickDirection + * + * Defines the direction of a flick gesture. + * + * @since 2.0 + */ +enum FlickDirection +{ + FLICK_DIRECTION_NONE = -1, /**< Undefined flick direction */ + FLICK_DIRECTION_RIGHT, /**< Rightward flick */ + FLICK_DIRECTION_UP, /**< Upward flick */ + FLICK_DIRECTION_LEFT, /**< Leftward flick */ + FLICK_DIRECTION_DOWN /**< Downward flick */ +}; + +/** + * @class TouchFlickGestureDetector + * @brief This class stores the information of a flick gesture detector. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %TouchFlickGestureDetector class supports flicking of touches, and provides information about flick gesture detector. + * + */ +class _OSP_EXPORT_ TouchFlickGestureDetector + : public Tizen::Ui::TouchGestureDetector +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + TouchFlickGestureDetector(void); + + /** + * This destructor overrides Osp::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~TouchFlickGestureDetector(void); + +public: + /** + * Initializes this instance of %TouchFlickGestureDetector. + * + * @since 2.0 + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + */ + result Construct(void); + + /** + * Adds the ITouchFlickGestureEventListener instance to the flick gesture detector instance. @n + * The added listener gets notified when a gesture is recognized. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The event listener to add + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_ALREADY_EXIST The listener is already added. + * @see RemoveFlickGestureEventListener() + */ + result AddFlickGestureEventListener(Tizen::Ui::ITouchFlickGestureEventListener& listener); + + /** + * Removes the IFlickGestureEventListener instance from the flick gesture detector instance. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The listener to remove + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND The specified @c listener is not found. + * @see AddFlickGestureEventListener() + */ + result RemoveFlickGestureEventListener(Tizen::Ui::ITouchFlickGestureEventListener& listener); + + /** + * Gets the distance of flick. + * + * @since 2.0 + * + * @return An error code + * @param[out] xDistance The distance in x direction + * @param[out] yDistance The distance in y direction + * @exception E_SUCCESS The method is successful. + * @remarks If an error occurs, this method returns the x distance of -1 and the y distance of -1. + */ + result GetDistance(int& xDistance, int& yDistance) const; + + /** + * Gets the duration of flick. + * + * @since 2.0 + * + * @return The duration of flick + * @exception E_SUCCESS The method is successful. + * @remarks If an error occurs, this method returns -1. + */ + int GetDuration(void) const; + + /** + * Gets the direction of flick. + * + * @since 2.0 + * + * @return The direction of flick + * @exception E_SUCCESS The method is successful. + * @remarks If an error occurs, this method returns FLICK_DIRECTION_NONE. + */ + Tizen::Ui::FlickDirection GetDirection(void) const; +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + TouchFlickGestureDetector(const TouchFlickGestureDetector& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + TouchFlickGestureDetector& operator =(const TouchFlickGestureDetector& rhs); + +private: + friend class _TouchFlickGestureDetectorImpl; +}; // TouchFlickGestureDetector + +}} // Tizen::Ui + +#endif //_FUI_TOUCH_FLICK_GESTURE_DETECTOR_H_ diff --git a/inc/FUiTouchGestureDetector.h b/inc/FUiTouchGestureDetector.h new file mode 100644 index 0000000..9033d49 --- /dev/null +++ b/inc/FUiTouchGestureDetector.h @@ -0,0 +1,292 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiTouchGestureDetector.h + * @brief This is the header file for the %TouchGestureDetector class. + * + * This header file contains the declarations of the %TouchGestureDetector class. + * + */ +#ifndef _FUI_TOUCH_GESTURE_DETECTOR_H_ +#define _FUI_TOUCH_GESTURE_DETECTOR_H_ + +#include +#include + +namespace Tizen { namespace Ui +{ + +/** + * @enum TouchGestureDetectorState + * + * Defines the state of a gesture detector. + * + * @since 2.0 + */ +enum TouchGestureDetectorState +{ + GESTURE_DETECTOR_STATE_READY, /**< The gesture detector is ready to recognize the gesture */ + GESTURE_DETECTOR_STATE_STARTED, /**< The gesture detector first recognizes the continuous gesture */ + GESTURE_DETECTOR_STATE_CHANGED, /**< A subsequent change happens to the continuous gesture */ + GESTURE_DETECTOR_STATE_FINISHED, /**< The discrete gesture is recognized or the continuous gesture ends */ + GESTURE_DETECTOR_STATE_FAILED, /**< The gesture detector fails in recognizing the gesture */ +}; + +class Control; +class ITouchGestureEventListener; +class _TouchGestureDetectorImpl; + +/** + * @class TouchGestureDetector + * @brief This class stores the information of a gesture detector. + * + * @since 2.0 + * + * The %TouchGestureDetector class defines a common behavior for gesture detectors and provides information about gesture detector. + * + */ + class _OSP_EXPORT_ TouchGestureDetector + : public Tizen::Base::Object +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + TouchGestureDetector(void); + + /** + * This destructor overrides Osp::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~TouchGestureDetector(void); + +public: + /** + * Initializes this instance of %TouchGestureDetector. + * + * @since 2.0 + * + * @exception E_SUCCESS The method is successful. + */ + result Construct(void); + + /** + * Gets the control which the gesture detector is attached to. + * If an error occurs, this method returns @c null. + * + * @since 2.0 + * + * @return The control which the gesture detector is attached to. + * @exception E_SUCCESS The method is successful. + */ + Control* GetControl(void) const; + + /** + * Enables or disables delaying touch event on Control. + * The %TouchGestureDetector receives touch events prior to a UI control to which it is added. + * Depending on a gesture that it tries to recognize, it is decided whether touch events need to be delivered to the UI control. + * If touch events must not be delivered to the UI control while gesture recognition is in progress, call this method with @c false argument. + * When the recognition finishes as success, delivering delayed touch events is dependent on IsCancelTouchEventOnSuccessEnabled(). + * When the recognition finishes as fail, all delayed touch events are fired sequentially. + * The default value is @c false. + * + * @since 2.0 + * + * @return An error code + * @param[in] enable Whether to delay events + * @exception E_SUCCESS The method is successful. + * @see IsDelayTouchEventEnabled() + * @see SetCancelTouchEventOnSuccessEnabled() + */ + result SetDelayTouchEventEnabled(bool enable); + + /** + * Checks whether delaying touch event to Control is enabled. + * + * @since 2.0 + * + * @return @c true if delaying touch event is enabled, @n + * else @c false if delaying touch event is disabled + * @exception E_SUCCESS The method is successful. + * @see SetDelayTouchEventEnabled() + */ + bool IsDelayTouchEventEnabled(void) const; + + /** + * Enables or disables canceling touch event after a gesture is recognized. + * If canceling touch event is enabled and a gesture is recognized, touch events which have been queued are not delivered to a UI control and discarded. + * The default value is @c false. + * + * @since 2.0 + * + * @return An error code + * @param[in] enable Whether to cancel touch event + * @exception E_SUCCESS The method is successful. + * @see IsCancelTouchEventOnSuccessEnabled() + * @see SetDelayTouchEventEnabled() + */ + result SetCancelTouchEventOnSuccessEnabled(bool enable); + + /** + * Checks whether touch events are canceled after a gesture is recognized. + * + * @since 2.0 + * + * @return @c true if canceling touch event is enabled, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @see SetCancelTouchEventOnSuccessEnabled() + */ + bool IsCancelTouchEventOnSuccessEnabled(void) const; + + /** + * Sets priority between gesture detectors. + * + * @since 2.0 + * + * @return An error code + * @param[in] gestureDetector The gesture detector + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The @c gestureDetector is invalid. + * @remarks If you want to set relationship between gesture detectors, call this method. + * If @c gestureDetector fails in recognizing a gesture, the gesture detector which waits for it starts the processing of recognizing. + * If @c gestureDetector succeeds in recognizing a gesture, + * the state of the gesture detector which waits for it changes to GESTURE_DETECTOR_STATE_FAIL. + */ + result StartOnFailureOf(const TouchGestureDetector& gestureDetector); + + /** + * Called when touch is pressed in the Control which the gesture detector is attached to. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] touchInfo The touch event information + */ + virtual void OnTouchPressed(Tizen::Ui::Control& source, const Tizen::Ui::TouchEventInfo& touchInfo); + + /** + * Called when touch is moved in the Control which the gesture detector is attached to. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] touchInfo The touch event information + */ + virtual void OnTouchMoved(Tizen::Ui::Control& source, const Tizen::Ui::TouchEventInfo& touchInfo); + + /** + * Called when touch is released in the Control which the gesture detector is attached to. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] touchInfo The touch event information + */ + virtual void OnTouchReleased(Tizen::Ui::Control& source, const Tizen::Ui::TouchEventInfo& touchInfo); + + /** + * Called when touch is canceled in the Control which the gesture detector is attached to. + * + * @since 2.0 + * + * @param[in] source The source of the event + * @param[in] touchInfo The touch event information + */ + virtual void OnTouchCanceled(Tizen::Ui::Control& source, const Tizen::Ui::TouchEventInfo& touchInfo); + +protected: + /** + * Sets the current state of gesture detector. + * You can call this method only inherit %TouchGestureDetector directly. + * + * @since 2.0 + * + * @return An error code + * @param[in] state Gesture detector state + * @exception E_SUCCESS The method is successful. + * @see GetDetectorState() + */ + result SetDetectorState(Tizen::Ui::TouchGestureDetectorState state); + + /** + * Gets the current state of gesture detector. + * If an error occurs, this method returns @c GESTURE_DETECTOR_STATE_READY. + * + * @since 2.0 + * + * @return The current state of gesture detector + * @exception E_SUCCESS The method is successful. + * @see SetDetectorState() + */ + Tizen::Ui::TouchGestureDetectorState GetDetectorState(void) const; + + /** + * Adds the IGestureEventListener instance to the gesture detector instance. @n + * The added listener gets notified when a gesture is recognized. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The event listener to add + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_ALREADY_EXIST The listener is already added. + * @see RemoveGestureEventListener() + */ + result AddGestureEventListener(Tizen::Ui::ITouchGestureEventListener& listener); + + /** + * Removes the gesture listener instance. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The listener to remove + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND The @c listener is not found. + * @see AddGestureEventListener() + */ + result RemoveGestureEventListener(Tizen::Ui::ITouchGestureEventListener& listener); + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + TouchGestureDetector(const TouchGestureDetector& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + TouchGestureDetector& operator =(const TouchGestureDetector& rhs); + +protected: + friend class _TouchGestureDetectorImpl; + + // + // This variable is for internal use only. Using this variable can cause behavioral, + // security-related, and consistency-related issues in the application. + // + _TouchGestureDetectorImpl* __pTouchGestureDetectorImpl; +}; // TouchGestureDetector + +}} // Tizen::Ui + +#endif //_FUI_TOUCH_GESTURE_DETECTOR_H_ \ No newline at end of file diff --git a/inc/FUiTouchInfo.h b/inc/FUiTouchInfo.h new file mode 100644 index 0000000..03bc75b --- /dev/null +++ b/inc/FUiTouchInfo.h @@ -0,0 +1,109 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiTouchInfo.h + * @brief This is the header file for the %TouchInfo class. + * + * This header file contains the declarations of the %TouchInfo class. + * + */ + +#ifndef _FUI_TOUCH_INFO_H_ +#define _FUI_TOUCH_INFO_H_ + +#include +#include + +namespace Tizen { namespace Ui +{ + +class Control; + +/** + * @if OSPDEPREC + * @class TouchInfo + * @brief [Deprecated] This class stores the information of a touch event. + * + * @deprecated This class is deprecated because the use of the %TouchInfo is no longer recommended. Instead of using this class, use Tizen::Ui::TouchEventInfo class. + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %TouchInfo class provides touch-related information to support multi-point touch. + * @endif + */ +class _OSP_EXPORT_ TouchInfo + : public Tizen::Base::Object +{ +public: + /** + * @if OSPDEPREC + * This is the default constructor for this class. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the %TouchInfo class is not supported any more. Instead, use the Tizen::Ui::TouchEventInfo class. + * @since 2.0 + * @endif + */ + TouchInfo(void) + : id(0) + , position(0, 0) + , status(TOUCH_PRESSED) + { + } + + /** + * @if OSPDEPREC + * The ID of the Touch instance. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the %TouchInfo class is not supported any more. Instead, get the Tizen::Ui::TouchEventManager::GetTouchInfoListN() + * and use the Tizen::Ui::TouchEventInfo::GetPointId() method. + * @since 2.0 + * @endif + */ + unsigned long id; + + /** + * @if OSPDEPREC + * The position of the Touch instance. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the %TouchInfo class is not supported any more. Instead, get the Tizen::Ui::TouchEventManager::GetTouchInfoListN() + * and use the Tizen::Ui::TouchEventInfo::GetCurrentPosition() method. + * @since 2.0 + * @endif + */ + Tizen::Graphics::Point position; + + /** + * @if OSPDEPREC + * The status of the Touch instance, using only the @c TOUCH_PRESSED and @c TOUCH_RELEASED states. + * + * @brief [Deprecated] + * @deprecated This method is deprecated because the %TouchInfo class is not supported any more. Instead, get the Tizen::Ui::TouchEventManager::GetTouchInfoListN() + * and use the Tizen::Ui::TouchEventInfo::GetTouchStatus() method. + * @since 2.0 + * @endif + */ + TouchStatus status; +}; // TouchInfo + +}} // Tizen::Ui + +#endif // _FUI_TOUCH_INFO_H_ diff --git a/inc/FUiTouchLongPressGestureDetector.h b/inc/FUiTouchLongPressGestureDetector.h new file mode 100644 index 0000000..9074119 --- /dev/null +++ b/inc/FUiTouchLongPressGestureDetector.h @@ -0,0 +1,201 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiTouchLongPressGestureDetector.h + * @brief This is the header file for the %TouchLongPressGestureDetector class. + * + * This header file contains the declarations of the %TouchLongPressGestureDetector class. + * + */ + +#ifndef _FUI_TOUCH_LONG_PRESS_GESTURE_DETECTOR_H_ +#define _FUI_TOUCH_LONG_PRESS_GESTURE_DETECTOR_H_ + +#include + +namespace Tizen { namespace Ui +{ + +class ITouchLongPressGestureEventListener; + +/** + * @class TouchLongPressGestureDetector + * @brief This class stores the information of a long press gesture detector. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %TouchLongPressGestureDetector class supports changing conditions of long press gesture, and provides information about long press gesture detector. + * + */ +class _OSP_EXPORT_ TouchLongPressGestureDetector + : public Tizen::Ui::TouchGestureDetector +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + TouchLongPressGestureDetector(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~TouchLongPressGestureDetector(void); + + /** + * Initializes this instance of %TouchLongPressGestureDetector. + * + * @since 2.0 + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + */ + result Construct(void); + + /** + * Adds the ITouchLongPressGestureEventListener instance to the long press gesture detector instance. @n + * The added listener gets notified when a gesture is recognized. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The event listener to add + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_ALREADY_EXIST The listener is already added. + * @see RemoveLongPressGestureEventListener() + */ + result AddLongPressGestureEventListener(Tizen::Ui::ITouchLongPressGestureEventListener& listener); + + /** + * Removes the ITouchLongPressGestureEventListener instance from the long press gesture detector instance. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The listener to remove + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND The specified @c listener is not found. + * @see AddLongPressGestureEventListener() + */ + result RemoveLongPressGestureEventListener(Tizen::Ui::ITouchLongPressGestureEventListener& listener); + + /** + * Sets the duration needed for the recognition of long press gesture. + * + * @since 2.0 + * + * @param[in] duration The time duration + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c duration is less than @c 0. + * @remarks The default value is @c 500 milliseconds. + * @see GetDuration() + * + */ + result SetDuration(int duration); + + /** + * Gets the duration needed for the recognition of long press gesture. + * + * @since 2.0 + * + * @return The time duration + * @exception E_SUCCESS The method is successful. + * @remarks If an error occurs, this method returns -1. + * @see SetDuration() + */ + int GetDuration(void) const; + + /** + * Sets the allowed displacement of touch move for the recognition of long press gesture. + * + * @since 2.0 + * + * @param[in] allowance The allowed move displacement + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c allowance is less than @c 0. + * @remarks The long press gesture is recognized when touch is pressed and moved within the given allowed displacement from the first touch point for the given duration. + * The default allowance is @c 10. + * @see GetMoveAllowance() + * + */ + result SetMoveAllowance(int allowance); + + /** + * Gets the allowed move bounds. + * + * @since 2.0 + * + * @return The allowed move bounds + * @exception E_SUCCESS The method is successful. + * @remarks If an error occurs, this method returns -1. + * @see SetMoveAllowance() + * + */ + int GetMoveAllowance(void) const; + + /** + * Sets the finger count for the recognition of long press gesture at the same time. + * + * @since 2.0 + * + * @param[in] count The finger count for long press gesture + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c count is less than @c 0. + * @remarks The default value is @c 1. + * It is recommended to check the maximum touch count of a device before changing the touch count of a gesture detector. + * You can set the gesture touch count to more than the maximum device touch count, but the gesture recognition may not work as you expected. + * @see GetTouchCount() + * + */ + result SetTouchCount(int count); + + /** + * Gets the finger count for the recognition of long press gesture at the same time. + * + * @since 2.0 + * + * @return The finger count for long press gesture + * @exception E_SUCCESS The method is successful. + * @remarks If an error occurs, this method returns -1. + * @see GetTouchCount() + * + */ + int GetTouchCount(void) const; + +private: + // + // This is the copy constructor for this class. + // + TouchLongPressGestureDetector(const TouchLongPressGestureDetector& rhs); + + // + // Assigns the value of the specified instance to the current instance of %TouchLongPressGestureDetector. + // + TouchLongPressGestureDetector& operator =(const TouchLongPressGestureDetector& rhs); + +protected: + friend class _TouchLongPressGestureDetectorImpl; +}; // TouchLongPressGestureDetector + +}} // Tizen::Ui + +#endif //_FUI_TOUCH_LONG_PRESS_GESTURE_DETECTOR_H_ diff --git a/inc/FUiTouchPanningGestureDetector.h b/inc/FUiTouchPanningGestureDetector.h new file mode 100644 index 0000000..92abf7f --- /dev/null +++ b/inc/FUiTouchPanningGestureDetector.h @@ -0,0 +1,159 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiTouchPanningGestureDetector.h + * @brief This is the header file for the %TouchPanningGestureDetector class. + * + * This header file contains the declarations of the %TouchPanningGestureDetector class. + * + */ + +#ifndef _FUI_TOUCH_PANNING_GESTURE_DETECTOR_H_ +#define _FUI_TOUCH_PANNING_GESTURE_DETECTOR_H_ + +#include + +namespace Tizen { namespace Ui +{ + +class ITouchPanningGestureEventListener; + +/** + * @class TouchPanningGestureDetector + * @brief This class stores the information of a panning gesture detector. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %TouchPanningGestureDetector class supports changing condition of panning gesture, and provides information about panning gesture detector. + * + */ +class _OSP_EXPORT_ TouchPanningGestureDetector + : public Tizen::Ui::TouchGestureDetector +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + TouchPanningGestureDetector(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~TouchPanningGestureDetector(void); + + /** + * Initializes this instance of %TouchPanningGestureDetector. + * + * @since 2.0 + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + */ + result Construct(void); + + /** + * Adds the ITouchPanningGestureEventListener instance to the panning gesture detector instance. @n + * The added listener gets notified when a gesture is recognized. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The event listener to add + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_ALREADY_EXIST The listener is already added. + * @see RemoveRotationGestureEventListener() + */ + result AddPanningGestureEventListener(Tizen::Ui::ITouchPanningGestureEventListener& listener); + + /** + * Removes the ITouchPanningGestureEventListener instance from the panning gesture detector instance. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The listener to remove + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND The specified @c listener is not found. + * @see AddRotationGestureEventListener() + */ + result RemovePanningGestureEventListener(Tizen::Ui::ITouchPanningGestureEventListener& listener); + + /** + * Gets the list of the touched points represented by TouchInfo. + * + * @since 2.0 + * + * @return A list of the TouchInfo + * @exception E_SUCCESS The method is successful. + * @remarks If an error occurs, this method returns @c null. + * @see Tizen::Ui::TouchInfo + */ + Tizen::Base::Collection::IList* GetTouchInfoListN(void) const; + + /** + * Sets the finger count for the recognition of panning gesture at the same time. + * + * @since 2.0 + * + * @param[in] count The finger count for panning gesture + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c count is less than @c 0. + * @remarks The default value is @c 1. + * It is recommended to check the maximum touch count of a device before changing the touch count of a gesture detector. + * You can set the gesture touch count to more than the maximum device touch count, but the gesture recognition may not work as you expected. + * @see GetTouchCount() + * + */ + result SetTouchCount(int count); + + /** + * Gets the finger count for the recognition of panning gesture at the same time. + * + * @since 2.0 + * + * @return The finger count for panning gesture + * @exception E_SUCCESS The method is successful. + * @remarks If an error occurs, this method returns -1. + * @see SetTouchCount() + * + */ + int GetTouchCount(void) const; + +private: + // + // This is the copy constructor for this class. + // + TouchPanningGestureDetector(const TouchPanningGestureDetector& rhs); + + // + // Assigns the value of the specified instance to the current instance of %TouchPanningGestureDetector. + // + TouchPanningGestureDetector& operator =(const TouchPanningGestureDetector& rhs); + +protected: + friend class _TouchPanningGestureDetectorImpl; +}; // TouchPanningGestureDetector + +}} // Tizen::Ui + +#endif //_FUI_TOUCH_PANNING_GESTURE_DETECTOR_H_ diff --git a/inc/FUiTouchPinchGestureDetector.h b/inc/FUiTouchPinchGestureDetector.h new file mode 100644 index 0000000..b59d09b --- /dev/null +++ b/inc/FUiTouchPinchGestureDetector.h @@ -0,0 +1,140 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiTouchPinchGestureDetector.h + * @brief This is the header file for the %TouchPinchGestureDetector class. + * + * This header file contains the declarations of the %TouchPinchGestureDetector class. + * + */ + +#ifndef _FUI_TOUCH_PINCH_GESTURE_DETECTOR_H_ +#define _FUI_TOUCH_PINCH_GESTURE_DETECTOR_H_ + +#include +#include + +namespace Tizen { namespace Ui +{ + +class ITouchPinchGestureEventListener; + +/** + * @class TouchPinchGestureDetector + * @brief This class stores the information of a pinch gesture detector. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %TouchPinchGestureDetector class provides information about pinch gesture detector. + * + */ +class _OSP_EXPORT_ TouchPinchGestureDetector + : public Tizen::Ui::TouchGestureDetector +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + TouchPinchGestureDetector(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~TouchPinchGestureDetector(void); + + /** + * Initializes this instance of %TouchPinchGestureDetector. + * + * @since 2.0 + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + */ + result Construct(void); + + /** + * Adds the ITouchPinchGestureEventListener instance to the pinch gesture detector instance. @n + * The added listener gets notified when a gesture is recognized. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The event listener to add + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_ALREADY_EXIST The listener is already added. + * @see RemoveRotationGestureEventListener() + */ + result AddPinchGestureEventListener(Tizen::Ui::ITouchPinchGestureEventListener& listener); + + /** + * Removes the ITouchPinchGestureEventListener instance from the pinch gesture detector instance. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The listener to remove + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND The specified @c listener is not found. + * @see AddRotationGestureEventListener() + */ + result RemovePinchGestureEventListener(Tizen::Ui::ITouchPinchGestureEventListener& listener); + + /** + * Gets the center position of two touch points. + * + * @since 2.0 + * + * @return The center point + * @exception E_SUCCESS The method is successful. + * @remarks If an error occurs, this method returns Point(-1, -1). + */ + Tizen::Graphics::Point GetCenterPoint(void) const; + + /** + * Gets the scale factor among touched point + * + * @since 2.0 + * + * @return The scale factor among touched points + * @remarks Get scale factor for a pinch gesture in progress + */ + int GetScale(void) const; + +private: + // + // This is the copy constructor for this class. + // + TouchPinchGestureDetector(const TouchPinchGestureDetector& rhs); + + // + // Assigns the value of the specified instance to the current instance of %TouchPinchGestureDetector. + // + TouchPinchGestureDetector& operator =(const TouchPinchGestureDetector& rhs); + +protected: + friend class _TouchPinchGestureDetectorImpl; +}; // TouchPinchGestureDetector + +}} // Tizen::Ui + +#endif //_FUI_TOUCH_PINCH_GESTURE_DETECTOR_H_ diff --git a/inc/FUiTouchRotationGestureDetector.h b/inc/FUiTouchRotationGestureDetector.h new file mode 100644 index 0000000..6ef0bc5 --- /dev/null +++ b/inc/FUiTouchRotationGestureDetector.h @@ -0,0 +1,140 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiTouchRotationGestureDetector.h + * @brief This is the header file for the %TouchRotationGestureDetector class. + * + * This header file contains the declarations of the %TouchRotationGestureDetector class. + * + */ + +#ifndef _FUI_TOUCH_ROTATION_GESTURE_DETECTOR_H_ +#define _FUI_TOUCH_ROTATION_GESTURE_DETECTOR_H_ + +#include + +namespace Tizen { namespace Ui +{ + +class ITouchRotationGestureEventListener; + +/** + * @class TouchRotationGestureDetector + * @brief This class stores the information of a rotation gesture detector. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %TouchRotationGestureDetector class provides information about rotation gesture detector. + * + */ +class _OSP_EXPORT_ TouchRotationGestureDetector + : public Tizen::Ui::TouchGestureDetector +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + TouchRotationGestureDetector(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~TouchRotationGestureDetector(void); + + /** + * Initializes this instance of %TouchRotationGestureDetector. + * + * @since 2.0 + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + */ + result Construct(void); + + /** + * Adds the ITouchRotationGestureEventListener instance to the rotation gesture detector instance. @n + * The added listener gets notified when a gesture is recognized. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The event listener to add + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_ALREADY_EXIST The listener is already added. + * @see RemoveRotationGestureEventListener() + */ + result AddRotationGestureEventListener(Tizen::Ui::ITouchRotationGestureEventListener& listener); + + /** + * Removes the ITouchRotationGestureEventListener instance from the rotation gesture detector instance. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The listener to remove + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND The specified @c listener is not found. + * @see AddRotationGestureEventListener() + */ + result RemoveRotationGestureEventListener(Tizen::Ui::ITouchRotationGestureEventListener& listener); + + /** + * Gets the angle between the previous touch points and the current touch points. + * + * @since 2.0 + * + * @return The angle between two touch points + * @exception E_SUCCESS The method is successful. + * @remarks If an error occurs, this method returns -1. + */ + float GetAngle(void) const; + + /** + * Gets the distance between two touch points. + * + * @since 2.0 + * + * @return The distance between two touch points + * @exception E_SUCCESS The method is successful. + * @remarks If an error occurs, this method returns -1. + */ + int GetDistance(void) const; + +private: + // + // This is the copy constructor for this class. + // + TouchRotationGestureDetector(const TouchRotationGestureDetector& rhs); + + // + // Assigns the value of the specified instance to the current instance of %TouchRotationGestureDetector. + // + TouchRotationGestureDetector& operator =(const TouchRotationGestureDetector& rhs); + +protected: + friend class _TouchRotationGestureDetectorImpl; +}; // TouchRotationGestureDetector + +}} // Tizen::Ui + +#endif //_FUI_TOUCH_ROTATION_GESTURE_DETECTOR_H_ diff --git a/inc/FUiTouchTapGestureDetector.h b/inc/FUiTouchTapGestureDetector.h new file mode 100644 index 0000000..8eb92f2 --- /dev/null +++ b/inc/FUiTouchTapGestureDetector.h @@ -0,0 +1,229 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiTouchTapGestureDetector.h + * @brief This is the header file for the %TouchTapGestureDetector class. + * + * This header file contains the declarations of the %TouchTapGestureDetector class. + * + */ + +#ifndef _FUI_TOUCH_TAP_GESTURE_DETECTOR_H_ +#define _FUI_TOUCH_TAP_GESTURE_DETECTOR_H_ + +#include + +namespace Tizen { namespace Ui +{ + +class ITouchTapGestureEventListener; + +/** + * @class TouchTapGestureDetector + * @brief This class stores the information of a tap gesture detector. + * + * @since 2.0 + * + * @final This class is not intended for extension. + * + * The %TouchTapGestureDetector class supports changing conditions of tap gesture, and provides information about tap gesture detector. + * + */ +class _OSP_EXPORT_ TouchTapGestureDetector + : public Tizen::Ui::TouchGestureDetector +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + TouchTapGestureDetector(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~TouchTapGestureDetector(void); + + /** + * Initializes this instance of %TouchTapGestureDetector. + * + * @since 2.0 + * @exception E_SUCCESS The method is successful. + * @exception E_OUT_OF_MEMORY The memory is insufficient. + */ + result Construct(void); + + /** + * Adds the ITouchTapGestureEventListener instance to the tap gesture detector instance. @n + * The added listener gets notified when a gesture is recognized. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The event listener to add + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_ALREADY_EXIST The listener is already added. + * @see RemoveTapGestureEventListener() + */ + result AddTapGestureEventListener(Tizen::Ui::ITouchTapGestureEventListener& listener); + + /** + * Removes the ITouchTapGestureEventListener instance from the tap gesture detector instance. + * + * @since 2.0 + * + * @return An error code + * @param[in] listener The listener to remove + * @exception E_SUCCESS The method is successful. + * @exception E_OBJ_NOT_FOUND The specified @c listener is not found. + * @see AddTapGestureEventListener() + */ + result RemoveTapGestureEventListener(Tizen::Ui::ITouchTapGestureEventListener& listener); + + /** + * Sets the tap count required for the recognition of tap gesture. + * + * @since 2.0 + * + * @param[in] count The tap count + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c tap count is less than @c 0. + * @remarks The default value is @c 2. + * @see GetTapCount() + * + */ + result SetTapCount(int count); + + /** + * Gets the tap count required for the recognition of tap gesture. + * + * @since 2.0 + * + * @return The tap count + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks If an error occurs, this method returns @c -1. + * @see SetTapCount() + */ + int GetTapCount(void) const; + + /** + * Sets the time interval between taps. + * + * @since 2.0 + * + * @param[in] interval The time interval between taps + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c interval is less than @c 0. + * @remarks If the interval between touches is longer than @c interval, the sequence of touch actions is not recognized as a tap gesture. The default value is @c 330. + * @see GetTapInterval() + * + */ + result SetTapInterval(int interval); + + /** + * Gets the time interval between taps. + * + * @since 2.0 + * + * @return The time interval between taps + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks If an error occurs, this method returns @c -1. + * @see SetTapInterval() + */ + int GetTapInterval(void) const; + + /** + * Sets the finger count for the recognition of tap gesture at the same time. + * + * @since 2.0 + * + * @param[in] count The finger count for long press gesture + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c count is less than @c 0. + * @remarks If the touch count at the same time is less than @c count, the sequence of touch actions is not recognized as a tap gesture. The default value is @c 1. @n + * It is recommended to check the maximum touch count of a device before changing the touch count of a gesture detector. + * You can set the gesture touch count to more than the maximum device touch count, but the gesture recognition may not work as you expected. + * @see GetTouchCount() + * + */ + result SetTouchCount(int count); + + /** + * Gets the finger count for the recognition of tap gesture at the same time. + * + * @since 2.0 + * + * @return The finger count for tap gesture + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks If an error occurs, this method returns @c -1. + * @see GetTouchCount() + * + */ + int GetTouchCount(void) const; + + /** + * Sets the allowed displacement between touches for the recognition of tap gesture. + * + * @since 2.0 + * + * @param[in] allowance The allowed displacement between touches + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c allowance is less than @c 0. + * @exception E_INVALID_CONDITION %Touch count is more than @c 2. + * @remarks The tap gesture is recognized when touches are pressed within the given allowed displacement from the first touch point. The default allowance is @c 10. @n + * MoveAllowance is effective only when touch count is @c 1. If touch count is more than 1, MoveAllowance is ignored. + * @see GetMoveAllowance() + * + */ + result SetMoveAllowance(int allowance); + + /** + * Gets ths allowed displacement between touches for the recognition of tap gesture. + * + * @since 2.0 + * + * @return The allowed displacement between touches + * @exception E_SUCCESS The method is successful. + * @remarks If an error occurs, this method returns @c -1. + * @see SetMoveAllowance() + */ + int GetMoveAllowance(void) const; +private: + // + // This is the copy constructor for this class. + // + TouchTapGestureDetector(const TouchTapGestureDetector& rhs); + + // + // Assigns the value of the specified instance to the current instance of %TouchTapGestureDetector. + // + TouchTapGestureDetector& operator =(const TouchTapGestureDetector& rhs); + +protected: + friend class _TouchTapGestureDetectorImpl; +}; // TouchTapGestureDetector + +}} // Tizen::Ui + +#endif //_FUI_TOUCH_TAP_GESTURE_DETECTOR_H_ diff --git a/inc/FUiUiConfiguration.h b/inc/FUiUiConfiguration.h new file mode 100644 index 0000000..4ca8538 --- /dev/null +++ b/inc/FUiUiConfiguration.h @@ -0,0 +1,93 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiUiConfiguration.h + * @brief This is the header file for the %UiConfiguration class. + * + * This header file contains the declarations of the %UiConfiguration class. + */ + +#ifndef _FUI_UI_CONFIGURATION_H_ +#define _FUI_UI_CONFIGURATION_H_ + +namespace Tizen { namespace Base { +class String; +}} // Tizen::Base + +namespace Tizen { namespace Ui { + +class _OSP_EXPORT_ UiConfiguration +{ +public: + /** + * Sets the default font to all the Controls. + * + * @since 2.0 + * + * @return An error code + * @param[in] fontName The app font name or system font name @n + * The app font name is retrieved using Tizen::Graphics::GetFaceName(Tizen::Base::String& filepath). + * The system font name is retrieved using Tizen::Graphics::Font::GetSystemFontListN(). + * Sets an empty string if you want to reset + * @exception E_SUCCESS The method is successful. + * @exception E_FILE_NOT_FOUND The specified font cannot be found or accessed. + * @remarks At First, the value of fontName is considered app font name if it matches one of the face names of the font files which is located in '/res/font'. + * If not, the value of fontName is considered system font name if it matches one of the retrieved values using GetSystemFontListN(). + * @remarks The control first attempt to find the control font. If it fails, then it searches for the application default font and the system font, in sequence. + * @see GetDefaultFont() + */ + static result SetDefaultFont(const Tizen::Base::String& fontName); + + /** + * Gets the default font for all the Controls. + * + * @since 2.0 + * + * @return The app font name or system font name @n + * else an empty string if the default font is not set + * @see SetDefaultFont() + */ + static Tizen::Base::String GetDefaultFont(void); + + +private: + // + // This default constructor is intentionally declared as private because this class cannot be constructed. + // + UiConfiguration(void); + + // + // This destructor is intentionally declared as private because this class cannot be constructed. + // + ~UiConfiguration(void); + + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + UiConfiguration(const UiConfiguration& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + UiConfiguration& operator =(const UiConfiguration& rhs); + +}; // UiConfiguration + +}} // Tizen::Ui + +#endif // _FUI_UI_CONFIGURATION_H_ diff --git a/inc/FUiVariant.h b/inc/FUiVariant.h new file mode 100644 index 0000000..b73bcc8 --- /dev/null +++ b/inc/FUiVariant.h @@ -0,0 +1,894 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiVariant.h + * @brief This is the header file for the %Variant class. + * + * This header file contains the declarations of the %Variant class. + */ +#ifndef _FUI_VARIANT_H_ +#define _FUI_VARIANT_H_ + +#include +#include + +namespace Tizen { namespace Base +{ + class DateTime; +} } + +namespace Tizen { namespace Graphics +{ + class Rectangle; + class Dimension; + class Point; + class Color; + class FloatPoint; + class FloatRectangle; + class FloatDimension; + class FloatMatrix4; +} } + +namespace Tizen { namespace Ui +{ + +class _VariantImpl; + +/** + * @enum VariantType + * + * Defines the types which %Variant can hold. + * + * @since 2.0 + */ +enum VariantType +{ + VARIANT_TYPE_NONE = 0, /**< The type for invalid variant */ + VARIANT_TYPE_INT, /**< The @c int type */ + VARIANT_TYPE_UINT, /**< The unsigned @c int type */ + VARIANT_TYPE_BOOL, /**< The @c bool type */ + VARIANT_TYPE_FLOAT, /**< The @c float type */ + VARIANT_TYPE_DOUBLE, /**< The @c double type */ + VARIANT_TYPE_LONG, /**< The @c long type */ + VARIANT_TYPE_ULONG, /**< The unsigned @c long type */ + VARIANT_TYPE_LONGLONG, /**< The @c long @c long type */ + VARIANT_TYPE_ULONGLONG, /**< The unsigned @c long @c long type */ + VARIANT_TYPE_STRING, /**< The String type */ + VARIANT_TYPE_DATETIME, /**< The DateTime type */ + VARIANT_TYPE_COLOR, /**< The Color type */ + VARIANT_TYPE_POINT, /**< The Point type */ + VARIANT_TYPE_FLOAT_POINT, /**< The FloatPoint type */ + VARIANT_TYPE_RECTANGLE, /**< The Rectangle type */ + VARIANT_TYPE_FLOAT_RECTANGLE, /**< The FloatRectangle type */ + VARIANT_TYPE_DIMENSION, /**< The Dimension type */ + VARIANT_TYPE_FLOAT_DIMENSION, /**< The FloatDimension type */ + VARIANT_TYPE_FLOAT_MATRIX4 /**< The FloatMatrix4 type */ +}; + +/** + * @class Variant + * @brief This class abstracts a %Variant value. + * + * @since 2.0 + * + * The %Variant class represents a %Variant type which can hold any of the basic type values. + * + */ +class _OSP_EXPORT_ Variant + : public Tizen::Base::Object +{ +public: + /** + * This is the default constructor for this class. + * + * @since 2.0 + */ + Variant(void); + + /** + * This is the copy constructor for the %Variant class. + * + * @since 2.0 + * + * @param[in] value A reference to the %Variant instance to copy + */ + Variant(const Variant& value); + + /** + * Initializes this instance of %Variant with the specified @c int value. + * + * @since 2.0 + * + * @param[in] value An @c int value + */ + Variant(int value); + + /** + * Initializes this instance of %Variant with the specified unsigned @c int value. + * + * @since 2.0 + * + * @param[in] value An unsigned @c int value + */ + Variant(unsigned int value); + + /** + * Initializes this instance of %Variant with the specified bool value. + * + * @since 2.0 + * + * @param[in] value A bool value + */ + Variant(bool value); + + /** + * Initializes this instance of %Variant with the specified @c float value. + * + * @since 2.0 + * + * @param[in] value A @c float value + */ + Variant(float value); + + /** + * Initializes this instance of %Variant with the specified @c double value. + * + * @since 2.0 + * + * @param[in] value A @c double value + */ + Variant(double value); + + /** + * Initializes this instance of %Variant with the specified @c long value. + * + * @since 2.0 + * + * @param[in] value A @c long value + */ + Variant(long value); + + /** + * Initializes this instance of %Variant with the specified unsigned @c long value. + * + * @since 2.0 + * + * @param[in] value An unsigned @c long value + */ + Variant(unsigned long value); + + /** + * Initializes this instance of %Variant with the specified @c long @c long value. + * + * @since 2.0 + * + * @param[in] value A @c long @c long value + */ + Variant(long long value); + + /** + * Initializes this instance of %Variant with the specified unsigned @c long @c long value. + * + * @since 2.0 + * + * @param[in] value An unsigned @c long @c long value + */ + Variant(unsigned long long value); + + /** + * Initializes this instance of %Variant with the specified array of characters. + * + * @since 2.0 + * + * @param[in] pValue An array of characters value + */ + Variant(const char* pValue); + + /** + * Initializes this instance of %Variant with the specified array of Unicode characters. + * + * @since 2.0 + * + * @param[in] pValue An array of Unicode characters value + */ + Variant(const wchar_t* pValue); + + /** + * Initializes this instance of %Variant with the specified unsigned string value. + * + * @since 2.0 + * + * @param[in] value An unsigned string value + */ + Variant(const Tizen::Base::String& value); + + /** + * Initializes this instance of %Variant with the specified unsigned datetime value. + * + * @since 2.0 + * + * @param[in] value An unsigned datetime value + */ + Variant(const Tizen::Base::DateTime& value); + + /** + * Initializes this instance of %Variant with the specified unsigned color value. + * + * @since 2.0 + * + * @param[in] value An unsigned color value + */ + Variant(const Tizen::Graphics::Color& value); + + /** + * Initializes this instance of %Variant with the specified unsigned point value. + * + * @since 2.0 + * + * @param[in] value An unsigned point value + */ + Variant(const Tizen::Graphics::Point& value); + + /** + * Initializes this instance of %Variant with the specified floatpoint value. + * + * @since 2.0 + * + * @param[in] value A floatpoint value + */ + Variant(const Tizen::Graphics::FloatPoint& value); + + /** + * Initializes this instance of %Variant with the specified rectangle value. + * + * @since 2.0 + * + * @param[in] value A rectangle value + */ + Variant(const Tizen::Graphics::Rectangle& value); + + /** + * Initializes this instance of %Variant with the specified float-rectangle value. + * + * @since 2.0 + * + * @param[in] value A float-rectangle value + */ + Variant(const Tizen::Graphics::FloatRectangle& value); + + /** + * Initializes this instance of %Variant with the specified dimension value. + * + * @since 2.0 + * + * @param[in] value A dimension value + */ + Variant(const Tizen::Graphics::Dimension& value); + + /** + * Initializes this instance of %Variant with the specified float-dimension value. + * + * @since 2.0 + * + * @param[in] value A float-dimension value + */ + Variant(const Tizen::Graphics::FloatDimension& value); + + /** + * Initializes this instance of %Variant with the specified float-matrix4 value. + * + * @since 2.0 + * + * @param[in] value A float-matrix4 value + */ + Variant(const Tizen::Graphics::FloatMatrix4& value); + + /** + * This is the destructor for this class. + * + * @since 2.0 + */ + virtual ~Variant(void); + + /** + * Assigns the value of the specified instance to the current instance of %Variant. + * + * @since 2.0 + * + * @return A reference to the %Variant instance + * @param[in] rhs An instance of %Variant to copy + */ + Variant& operator =(const Variant& rhs); + + /** + * Assigns the value of the specified instance to the current instance of %Variant. + * + * @since 2.0 + * + * @return A reference to the %Variant instance + * @param[in] rhs An @c int value + */ + Variant& operator =(int rhs); + + /** + * Assigns the value of the specified instance to the current instance of %Variant. + * + * @since 2.0 + * + * @return A reference to the %Variant instance + * @param[in] rhs An unsigned @c int value + * + */ + Variant& operator =(unsigned int rhs); + + /** + * Assigns the value of the specified instance to the current instance of %Variant. + * + * @since 2.0 + * @return A reference to the %Variant instance + * @param[in] rhs A @c bool value + * + */ + Variant& operator =(bool rhs); + + /** + * Assigns the value of the specified instance to the current instance of %Variant. + * + * @since 2.0 + * + * @return A reference to the %Variant instance + * @param[in] rhs A @c float value + * + */ + Variant& operator =(float rhs); + + /** + * Assigns the value of the specified instance to the current instance of %Variant. + * + * @since 2.0 + * + * @return A reference to the %Variant instance + * @param[in] rhs A @c double value + * + */ + Variant& operator =(double rhs); + + /** + * Assigns the value of the specified instance to the current instance of %Variant. + * + * @since 2.0 + * + * @return A reference to the %Variant instance + * @param[in] rhs A @c long value + * + */ + Variant& operator =(long rhs); + + /** + * Assigns the value of the specified instance to the current instance of %Variant. + * + * @since 2.0 + * + * @return A reference to the %Variant instance + * @param[in] rhs An unsigned @c long value + * + */ + Variant& operator =(unsigned long rhs); + + /** + * Assigns the value of the specified instance to the current instance of %Variant. + * + * @since 2.0 + * + * @return A reference to the %Variant instance + * @param[in] rhs A @c long @c long value + * + */ + Variant& operator =(long long rhs); + + /** + * Assigns the value of the specified instance to the current instance of %Variant. + * + * @since 2.0 + * @return A reference to the %Variant instance + * @param[in] rhs An unsigned @c long @c long value + * + */ + Variant& operator =(unsigned long long rhs); + + /** + * Assigns the value of the pointer to the current instance of %Variant. + * + * @since 2.0 + * + * @return A reference to the %Variant instance + * @param[in] pRhs A pointer to an array of characters + * + */ + Variant& operator =(const char* pRhs); + + /** + * Assigns the value of the pointer to the current instance of %Variant. + * + * @since 2.0 + * + * @return A reference to the %Variant instance + * @param[in] pRhs A pointer to an array of Unicode characters + * + */ + Variant& operator =(const wchar_t* pRhs); + + /** + * Assigns the value of the specified instance of Tizen::Base::String to the current instance of %Variant. + * + * @since 2.0 + * + * @return A reference to the %Variant instance + * @param[in] rhs An instance of Tizen::Base::String + */ + Variant& operator =(const Tizen::Base::String& rhs); + + /** + * Assigns the value of the specified instance of Tizen::Base::DateTime to the current instance of %Variant. + * + * @since 2.0 + * + * @return A reference to the %Variant instance + * @param[in] rhs An instance of Tizen::Base::DateTime + */ + Variant& operator =(const Tizen::Base::DateTime& rhs); + + /** + * Assigns the value of the specified instance of Tizen::Graphics::Color to the current instance of %Variant. + * + * @since 2.0 + * @return A reference to the %Variant instance + * @param[in] rhs An instance of Tizen::Graphics::Color + */ + Variant& operator =(const Tizen::Graphics::Color& rhs); + + /** + * Assigns the value of the specified instance of Tizen::Graphics::Point to the current instance of %Variant. + * + * @since 2.0 + * @return A reference to the %Variant instance + * @param[in] rhs An instance of Tizen::Graphics::Point + */ + Variant& operator =(const Tizen::Graphics::Point& rhs); + + /** + * Assigns the value of the specified instance of Tizen::Graphics::FloatPoint to the current instance of %Variant. + * + * @since 2.0 + * @return A reference to the %Variant instance + * @param[in] rhs An instance of Tizen::Graphics::FloatPoint + */ + Variant& operator =(const Tizen::Graphics::FloatPoint& rhs); + + /** + * Assigns the value of the specified instance of Tizen::Graphics::Rectangle to the current instance of %Variant. + * + * @since 2.0 + * @return A reference to the %Variant instance + * @param[in] rhs An instance of Tizen::Graphics::Rectangle + */ + Variant& operator =(const Tizen::Graphics::Rectangle& rhs); + + /** + * Assigns the value of the specified instance of Tizen::Graphics::FloatRectangle to the current instance of %Variant. + * + * @since 2.0 + * @return A reference to the %Variant instance + * @param[in] rhs An instance of Tizen::Graphics::FloatRectangle + */ + Variant& operator =(const Tizen::Graphics::FloatRectangle& rhs); + + /** + * Assigns the value of the specified instance of Tizen::Graphics::Dimension to the current instance of %Variant. + * + * @since 2.0 + * @return A reference to the %Variant instance + * @param[in] rhs An instance of Tizen::Graphics::Dimension + */ + Variant& operator =(const Tizen::Graphics::Dimension& rhs); + + /** + * Assigns the value of the specified instance of Tizen::Graphics::FloatDimension to the current instance of %Variant. + * + * @since 2.0 + * @return A reference to the %Variant instance + * @param[in] rhs An instance of Tizen::Graphics::FloatDimension + */ + Variant& operator =(const Tizen::Graphics::FloatDimension& rhs); + + /** + * Assigns the value of the specified instance of Tizen::Graphics::FloatMatrix4 to the current instance of %Variant. + * + * @since 2.0 + * @return A reference to the %Variant instance + * @param[in] rhs An instance of Tizen::Graphics::FloatMatrix4 + */ + Variant& operator =(const Tizen::Graphics::FloatMatrix4& rhs); + + /** + * Checks whether the specified instance and current instance of %Variant have equal values. + * + * @since 2.0 + * @return @c true if the two instances of %Variant are equal, @n + * else @c false + * @param[in] lhs An instance of %Variant + * @param[in] rhs An instance of %Variant + */ + _OSP_EXPORT_ friend bool operator ==(const Variant& lhs, const Variant& rhs); + + /** + * Checks whether the specified instance and current instance of %Variant have different values. + * @since 2.0 + * + * @return @c true if the values of the two instances of %Variant are not equal, @n + * else @c false + * @param[in] lhs An instance of %Variant + * @param[in] rhs An instance of %Variant + * + */ + _OSP_EXPORT_ friend bool operator !=(const Variant& lhs, const Variant& rhs); + + /** + * Gets the signed @c int equivalent of the current instance. + * + * @since 2.0 + * + * @return Signed @c int equivalent of the current instance + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current variant type is not @c VARIANT_TYPE_INT. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * The method returns @c 0 and generates @c E_INVALID_OPERATION exception if the current variant type is not @c VARIANT_TYPE_INT. + * + */ + int ToInt(void) const; + + /** + * Gets the unsigned @c int equivalent of the current instance. + * + * @since 2.0 + * + * @return Unsigned @c int equivalent of the current instance + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current variant type is not @c VARIANT_TYPE_UINT. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * The method returns @c 0 and generates @c E_INVALID_OPERATION exception if the current variant type is not @c VARIANT_TYPE_UINT. + * + */ + unsigned int ToUInt(void) const; + + /** + * Gets the @c bool equivalent of the current instance. + * + * @since 2.0 + * + * @return @c bool equivalent of the current instance + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current variant type is not @c VARIANT_TYPE_BOOL. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * The method returns @c false and generates @c E_INVALID_OPERATION exception if the current variant type is not @c VARIANT_TYPE_BOOL. + * + */ + bool ToBool(void) const; + + /** + * Gets the @c float equivalent of the current instance. + * + * @since 2.0 + * + * @return @c float equivalent of the current instance + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current variant type is not @c VARIANT_TYPE_FLOAT. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * The method returns @c 0 and generates @c E_INVALID_OPERATION exception if the current variant type is not @c VARIANT_TYPE_FLOAT. + * + */ + float ToFloat(void) const; + + /** + * Gets the @c double equivalent of the current instance. + * + * @since 2.0 + * + * @return @c double equivalent of the current instance + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current variant type is not @c VARIANT_TYPE_DOUBLE. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * The method returns @c 0 and generates @c E_INVALID_OPERATION exception if the current variant type is not @c VARIANT_TYPE_DOUBLE. + * + */ + double ToDouble(void) const; + + /** + * Gets the signed @c long equivalent of the current instance. + * + * @since 2.0 + * + * @return Signed @c long equivalent of the current instance + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current variant type is not @c VARIANT_TYPE_LONG. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * The method returns @c 0 and generates @c E_INVALID_OPERATION exception if the current variant type is not @c VARIANT_TYPE_LONG. + * + */ + long ToLong(void) const; + + /** + * Gets the unsigned @c int equivalent of the current instance. + * + * @since 2.0 + * + * @return Unsigned @c long equivalent of the current instance + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current variant type is not @c VARIANT_TYPE_ULONG. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * The method returns @c 0 and generates @c E_INVALID_OPERATION exception if the current variant type is not @c VARIANT_TYPE_ULONG. + * + */ + unsigned long ToULong(void) const; + + /** + * Gets the signed @c long @c long equivalent of the current instance. + * + * @since 2.0 + * + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current variant type is not @c VARIANT_TYPE_LONGLONG. + * + * @remarks The specific error code can be accessed using the GetLastResult() method. + * The method returns @c 0 and generates @c E_INVALID_OPERATION exception if the current variant type is not @c VARIANT_TYPE_LONGLONG. + * + */ + long long ToLongLong(void) const; + + /** + * Gets the unsigned @c long @c long equivalent of the current instance. + * + * @since 2.0 + * + * @return Unsigned @c long @c long equivalent of the current instance + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current variant type is not @c VARIANT_TYPE_ULONGLONG. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * The method returns @c 0 and generates @c E_INVALID_OPERATION exception if the current variant type is not @c VARIANT_TYPE_ULONGLONG. + * + */ + unsigned long long ToULongLong(void) const; + + /** + * Gets the Tizen::Base::String representation of the value of the current instance. + * + * @since 2.0 + * + * @return A Tizen::Base::String representing the value of the current instance + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current variant type is not @c VARIANT_TYPE_STRING. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * The method returns String("") and generates @c E_INVALID_OPERATION exception if the current variant type is not @c VARIANT_TYPE_STRING. + * + */ + Tizen::Base::String ToString(void) const; + + /** + * Gets the Tizen::Base::DateTime representation of the value of the current instance. + * + * @since 2.0 + * + * @return A Tizen::Base::DateTime representing the value of the current instance + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current variant type is not @c VARIANT_TYPE_DATETIME. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * The method returns DateTime and generates @c E_INVALID_OPERATION exception if the current variant type is not @c VARIANT_TYPE_DATETIME. + * + */ + Tizen::Base::DateTime ToDateTime(void) const; + + /** + * Gets the Tizen::Graphics::Color representation of the value of the current instance. + * + * @since 2.0 + * + * @return A Tizen::Graphics::Color representing the value of the current instance + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current variant type is not @c VARIANT_TYPE_COLOR. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * The method returns Color and generates @c E_INVALID_OPERATION exception if the current variant type is not @c VARIANT_TYPE_COLOR. + * + */ + Tizen::Graphics::Color ToColor(void) const; + + /** + * Gets the Tizen::Graphics::Point representation of the value of the current instance. + * + * @since 2.0 + * + * @return A Tizen::Graphics::Point representing the value of the current instance + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current variant type is not @c VARIANT_TYPE_POINT. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * The method returns Point and generates @c E_INVALID_OPERATION exception if the current variant type is not @c VARIANT_TYPE_POINT. + * + */ + Tizen::Graphics::Point ToPoint(void) const; + + /** + * Gets the Tizen::Graphics::FloatPoint representation of the value of the current instance. + * + * @since 2.0 + * + * @return A Tizen::Graphics::FloatPoint representing the value of the current instance + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current variant type is not @c VARIANT_TYPE_FLOATPOINT. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * The method returns FloatPoint and generates @c E_INVALID_OPERATION exception if the current variant type is not @c VARIANT_TYPE_FLOATPOINT. + * + */ + Tizen::Graphics::FloatPoint ToFloatPoint(void) const; + + /** + * Gets the Tizen::Graphics::Rectangle representation of the value of the current instance. + * + * @since 2.0 + * + * @return A Tizen::Graphics::Rectangle representing the value of the current instance + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current variant type is not @c VARIANT_TYPE_RECTANGLE. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * The method returns Rectangle and generates @c E_INVALID_OPERATION exception if the current variant type is not @c VARIANT_TYPE_RECTANGLE. + * + */ + Tizen::Graphics::Rectangle ToRectangle(void) const; + + /** + * Gets the Tizen::Graphics::FloatRectangle representation of the value of the current instance. + * + * @since 2.0 + * + * @return A Tizen::Graphics::FloatRectangle representing the value of the current instance + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current variant type is not @c VARIANT_TYPE_FLOATRECTANGLE. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * The method returns FloatRectangle and generates @c E_INVALID_OPERATION exception if the current variant type is not @c VARIANT_TYPE_FLOATRECTANGLE. + * + */ + Tizen::Graphics::FloatRectangle ToFloatRectangle(void) const; + + /** + * Gets the Tizen::Graphics::Dimension representation of the value of the current instance. + * + * @since 2.0 + * + * @return A Tizen::Graphics::Dimension representing the value of the current instance + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current variant type is not @c VARIANT_TYPE_DIMENSION. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * The method returns Dimension and generates @c E_INVALID_OPERATION exception if the current variant type is not @c VARIANT_TYPE_DIMENSION. + * + */ + Tizen::Graphics::Dimension ToDimension(void) const; + + /** + * Gets the Tizen::Graphics::FloatDimension representation of the value of the current instance. + * + * @since 2.0 + * + * @return A Tizen::Graphics::FloatDimension representing the value of the current instance + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current variant type is not @c VARIANT_TYPE_FLOATDIMENSION. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * The method returns FloatDimension and generates @c E_INVALID_OPERATION exception if the current variant type is not @c VARIANT_TYPE_FLOATDIMENSION. + * + */ + Tizen::Graphics::FloatDimension ToFloatDimension(void) const; + + /** + * Gets the Tizen::Graphics::FloatMatrix4 representation of the value of the current instance. + * + * @since 2.0 + * + * @return A Tizen::Graphics::FloatMatrix4 representing the value of the current instance + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current variant type is not @c VARIANT_TYPE_FLOATMATRIX4. + * @remarks The specific error code can be accessed using the GetLastResult() method. + * The method returns FloatMatrix4 and generates @c E_INVALID_OPERATION exception if the current variant type is not @c VARIANT_TYPE_FLOATMATRIX4. + * + */ + Tizen::Graphics::FloatMatrix4 ToFloatMatrix4(void) const; + + /** + * Checks whether the variant is empty. + * + * @since 2.0 + * + * @return @c true if the current instance is @c NULL_VARIANT, @n + * else @c false + */ + bool IsEmpty(void) const; + + /** + * Gets the type of the variant. + * + * @since 2.0 + * + * @return The variant type + */ + VariantType GetType(void) const; + + /** + * Checks whether the current instance of %Variant equals the specified instance of %Variant. + * + * @since 2.0 + * + * @return @c true if the values of the current instance is equal to the value of the specified instance, @n + * else @c false + * @param[in] obj An instance of %Variant + * @remarks This method overrides Tizen::Base::Object::Equals(). This method uses the values of the %Variant to compare the two instances. + */ + virtual bool Equals(const Object& obj) const; + + /** + * Gets the hash value of the current instance. + * + * @since 2.0 + * + * @return The hash value of the current instance + * @remarks Two equal instances must return the same hash value. For better performance, the used hash function must generate a random distribution for all inputs. + */ + virtual int GetHashCode(void) const; + +public: + /** + * A constant represents a @c null value. + * + * @since 2.0 + */ + static const Variant NULL_VARIANT; + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is prohibited. If this method is used in an application, the application can get rejected during + // the certification process. + // + // @since 2.0 + // + const _VariantImpl* GetVariantImpl(void) const; + + // + // This method is for internal use only. + // Using this method can cause behavioral, security-related, and consistency-related issues in the application. + // + // This method is prohibited. If this method is used in an application, the application can get rejected during + // the certification process. + // + // @since 2.0 + // + _VariantImpl* GetVariantImpl(void); + +private: + _VariantImpl* __pVariantImpl; +}; // Variant + +} } // Tizen::Ui + +#endif // _FUI_VARIANT_H_ diff --git a/inc/FUiVerticalBoxLayout.h b/inc/FUiVerticalBoxLayout.h new file mode 100644 index 0000000..3330f48 --- /dev/null +++ b/inc/FUiVerticalBoxLayout.h @@ -0,0 +1,356 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiVerticalBoxLayout.h + * @brief This is the header file for the %VerticalBoxLayout class. + * + * This header file contains the declarations of the %VerticalBoxLayout class. + */ +#ifndef _FUI_VERTICAL_BOX_LAYOUT_H_ +#define _FUI_VERTICAL_BOX_LAYOUT_H_ + +#include + +namespace Tizen { namespace Ui +{ +class Control; + +/** + * @class VerticalBoxLayout + * @brief The vertical box layout positions the children of a container vertically. + * + * @since 2.0 + * + * The %VerticalBoxLayout class defines the vertical box layout for a Container. The layout positions the children of the %Container vertically. + * + * For more information on the class features, see Vertical and Horizontal Box Layouts. + * + * @code +// Sample code for VerticalBoxLayoutSample.h +#include + +class VerticalBoxLayoutSample + : public Tizen::Ui::Controls::Form +{ +public: + bool Initialize(void); + virtual result OnInitializing(void); +}; + * @endcode + * + * @code +// Sample code for VerticalBoxLayoutSample.cpp +#include + +#include "VerticalBoxLayoutSample.h" + +using namespace Tizen::Graphics; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; + +bool +VerticalBoxLayoutSample::Initialize(void) +{ + //Creates an instance of VerticalBoxLayout + VerticalBoxLayout formLayout; + formLayout.Construct(VERTICAL_DIRECTION_DOWNWARD); + + // Applies the vertical box layout to the form + Construct(formLayout, FORM_STYLE_NORMAL); + return true; +} + +result +VerticalBoxLayoutSample::OnInitializing(void) +{ + result r = E_SUCCESS; + + // Creates an instance of VerticalBoxLayout for the top panel + VerticalBoxLayout topPanelLayout; + topPanelLayout.Construct(VERTICAL_DIRECTION_DOWNWARD); + + // Creates an instance of Panel and applies it to the vertical box layout + Panel* pTopPanel = new Panel(); + pTopPanel->Construct(topPanelLayout, Rectangle(0, 0, GetClientAreaBounds().width, 350)); + { + // Creates instances of Label and a instance of Button + Label* pLabel1 = new Label(); + pLabel1->Construct(Rectangle(0,0,150,80), L"RIGHT"); + pLabel1->SetBackgroundColor(Color(0x00, 0x10, 0x80, 0xFF)); + pTopPanel->AddControl(*pLabel1); + + Label* pLabel2 = new Label(); + pLabel2->Construct(Rectangle(0,0,200,80), L"CENTER"); + pLabel2->SetBackgroundColor(Color(0x00, 0x20, 0xA0, 0xFF)); + pTopPanel->AddControl(*pLabel2); + + Label* pLabel3 = new Label(); + pLabel3->Construct(Rectangle(0,0,150,80), L"LEFT"); + pLabel3->SetBackgroundColor(Color(0x00, 0x30, 0xC0, 0xFF)); + pTopPanel->AddControl(*pLabel3); + + Button* pButton = new Button(); + pButton->Construct(Rectangle(0,0,150,80), "FIT TO PARENT"); + pTopPanel->AddControl(*pButton); + + // Sets relations each label and button + topPanelLayout.SetHorizontalAlignment(*pLabel1, LAYOUT_HORIZONTAL_ALIGN_RIGHT); + topPanelLayout.SetHorizontalAlignment(*pLabel2, LAYOUT_HORIZONTAL_ALIGN_CENTER); + topPanelLayout.SetHorizontalAlignment(*pLabel3, LAYOUT_HORIZONTAL_ALIGN_LEFT); + topPanelLayout.SetSpacing(*pButton, 10); + topPanelLayout.SetHorizontalFitPolicy(*pButton, FIT_POLICY_PARENT); + } + + // Adds the top panel to the form + AddControl(*pTopPanel); + + // Creates an instance of VerticalBoxLayout for the bottom panel + VerticalBoxLayout bottomPanelLayout; + bottomPanelLayout.Construct(VERTICAL_DIRECTION_DOWNWARD); + + // Creates an instance of Panel and applies it to the vertial box layout + Panel* pBottomPanel = new Panel(); + pBottomPanel->Construct(bottomPanelLayout, Rectangle(0, 0, GetClientAreaBounds().width, 450)); + { + // Creates instances of Label + Label* pLabel1 = new Label(); + pLabel1->Construct(Rectangle(0,0,100,50), L"WEIGHT = 1.0f"); + pLabel1->SetBackgroundColor(Color(0x00, 0x10, 0x80, 0xFF)); + pBottomPanel->AddControl(*pLabel1); + + Label* pLabel2 = new Label(); + pLabel2->Construct(Rectangle(0,0,100,50), L"WEIGHT = 2.0f"); + pLabel2->SetBackgroundColor(Color(0x00, 0x20, 0xA0, 0xFF)); + pBottomPanel->AddControl(*pLabel2); + + Label* pLabel3 = new Label(); + pLabel3->Construct(Rectangle(0,0,100,50), L"WEIGHT = 3.0f"); + pLabel3->SetBackgroundColor(Color(0x00, 0x30, 0xC0, 0xFF)); + pBottomPanel->AddControl(*pLabel3); + + // Sets relations each label + bottomPanelLayout.SetHorizontalFitPolicy(*pLabel1, FIT_POLICY_PARENT); + bottomPanelLayout.SetHorizontalFitPolicy(*pLabel2, FIT_POLICY_PARENT); + bottomPanelLayout.SetHorizontalFitPolicy(*pLabel3, FIT_POLICY_PARENT); + bottomPanelLayout.SetWeight(*pLabel1, 1.0f); + bottomPanelLayout.SetWeight(*pLabel2, 2.0f); + bottomPanelLayout.SetWeight(*pLabel3, 3.0f); + } + + // Adds the bottom panel to the form + AddControl(*pBottomPanel); + + //Gets the layout of the form + VerticalBoxLayout* pFormLayout = dynamic_cast(this->GetLayoutN()); + + // Sets relations between panels + pFormLayout->SetHorizontalFitPolicy(*pTopPanel, FIT_POLICY_PARENT); + pFormLayout->SetSpacing(*pBottomPanel, 50); + pFormLayout->SetHorizontalFitPolicy(*pBottomPanel, FIT_POLICY_PARENT); + + return r; +} + * @endcode + * + */ +class _OSP_EXPORT_ VerticalBoxLayout + : public Layout +{ +public: + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + * + * @remarks After creating an instance of this class, the Construct() method must be called explicitly to initialize this instance. + */ + VerticalBoxLayout(void); + + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~VerticalBoxLayout(void); + + /** + * Initializes this instance of %VerticalBoxLayout with the specified parameter. + * + * @since 2.0 + * + * @return An error code + * @param[in] direction The direction in which the children are attached + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified input parameter is invalid. + * @exception E_SYSTEM A system error has occurred. + */ + result Construct(VerticalDirection direction); + + /** + * Gets the direction of the %VerticalBoxLayout. + * + * @since 2.0 + * + * @return An error code + * @param[out] direction The direction in which the children are attached + * @exception E_SUCCESS The method is successful. + */ + result GetDirection(VerticalDirection& direction) const; + + /** + * Gets the type of the layout. + * + * @since 2.0 + * + * @return The layout type + */ + virtual LayoutType GetLayoutType(void) const; + + /** + * Sets the horizontal alignment of the specified control. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control for which the alignment is set + * @param[in] alignment The horizontal alignment + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c childControl parameter is not a child of the container that owns the layout. + * @exception E_SYSTEM A system error has occurred. + * @remarks By default, the horizontal alignment is HORIZONTAL_ALIGNLEFT. + */ + result SetHorizontalAlignment(Control& childControl, LayoutHorizontalAlignment alignment); + + /** + * Sets the space between the specified control and its predecessor. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control for which the space is set + * @param[in] space The space + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c childControl parameter is not a child of the container that owns the layout. + * @exception E_SYSTEM A system error has occurred. + * @remarks By default, the spacing is set to @c 0. + */ + result SetSpacing(Control& childControl, int space); + + /** + * Sets the horizontal margins of the specified control. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control for which the margins are set + * @param[in] left The left margin + * @param[in] right The right margin + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c childControl parameter is not a child of the container that owns the layout. + * @exception E_SYSTEM A system error has occurred. + * @remarks By default, the margins are set to @c 0. + */ + result SetHorizontalMargin(Control& childControl, int left, int right); + + /** + * Sets the width of the specified control with the fixed length. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control for which the width is set + * @param[in] width The value of the width + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c childControl parameter is not a child of the container that owns the layout. + * @exception E_SYSTEM A system error has occurred. + */ + result SetWidth(Control& childControl, int width); + + /** + * Sets the width of the specified control with the fitting policy. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control for which the width is set + * @param[in] policy The fitting policy for the width + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c childControl parameter is not a child of the container that owns the layout. + * @exception E_SYSTEM A system error has occurred. + */ + result SetHorizontalFitPolicy(Control& childControl, FitPolicy policy); + + /** + * Sets the height of the specified control with a fixed length. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control for which the height is set + * @param[in] height The value of the height + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c childControl parameter is not a child of the container that owns the layout. + * @exception E_SYSTEM A system error has occurred. + */ + result SetHeight(Control& childControl, int height); + + /** + * Sets the height of the specified control with the fitting policy. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control for which the height is set + * @param[in] policy The fitting policy for the height + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c childControl parameter is not a child of the container that owns the layout. + * @exception E_SYSTEM A system error has occurred. + * @remarks Setting FIT_POLICY_PARENT as @c policy does not cause the height of the control to change. + */ + result SetVerticalFitPolicy(Control& childControl, FitPolicy policy); + + /** + * Sets the weight of the specified control. + * + * @since 2.0 + * + * @return An error code + * @param[in] childControl The control for which the weight is set + * @param[in] weight The weight that indicates how much extra space the control occupies in proportion to it, in the %VerticalBoxLayout. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG The specified @c childControl parameter is not a child of the container that owns the layout. + * @exception E_SYSTEM A system error has occurred. + * @remarks By default, the weight is set to @c 0.0f. + */ + result SetWeight(Control& childControl, float weight); + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + VerticalBoxLayout(const VerticalBoxLayout& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + VerticalBoxLayout& operator =(const VerticalBoxLayout& rhs); +}; // VerticalBoxLayout + +}} // Tizen::Ui + +#endif // _FUI_VERTICAL_BOX_LAYOUT_H_ diff --git a/inc/FUiWindow.h b/inc/FUiWindow.h new file mode 100755 index 0000000..3762ff1 --- /dev/null +++ b/inc/FUiWindow.h @@ -0,0 +1,306 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FUiWindow.h + * @brief This is the header file for the %Window class. + * + * This header file contains the declarations of the %Window class. + */ + +#ifndef _FUI_WINDOW_H_ +#define _FUI_WINDOW_H_ + +#include +#include +#include + +namespace Tizen { namespace Ui { namespace Animations { +class DisplayContext; +}}} + +namespace Tizen { namespace Ui +{ + +class _WindowImpl; + +/** + * @enum WindowState + * + * Defines the state of %Window. + * + * @since 2.0 + */ +enum WindowState +{ + WINDOW_STATE_INITIALIZED = 0x0000, /**< The initial state of the window */ + WINDOW_STATE_ACTIVATED = 0x0001, /**< The state indicates that the window is the topmost window */ + WINDOW_STATE_DEACTIVATED = 0x0002, /**< The state indicates that the window is not the topmost window */ +}; + +/** + * @enum WindowZOrderGroup + * + * Defines the Z order group of %Window. + * + * @since 2.0 + */ +enum WindowZOrderGroup +{ + WINDOW_Z_ORDER_GROUP_HIGHEST, /** The highest group for windows such as the call screen */ + WINDOW_Z_ORDER_GROUP_HIGH, /** The high qroup for windows such as the lock screen */ + WINDOW_Z_ORDER_GROUP_NORMAL, /** The default group of apps */ +}; + +/** + * @class Window + * @brief This class provides abstract top-level 'window' objects. + * + * @since 2.0 + * + * The %Window is a top-level window such as Controls::Frame, Controls::MessageBox, and Controls::Popup. + * The descendants of a %Window can exist outside of their applications's bounds. + * The %Window class is an abstract base class. + * + */ +class _OSP_EXPORT_ Window + : public Container +{ + +public: + /** + * This destructor overrides Tizen::Base::Object::~Object(). + * + * @since 2.0 + */ + virtual ~Window(void) = 0; + + /** + * Adds the listener instance. @n + * The added listener can listen to events on when they are fired. + * + * @since 2.0 + * + * @param[in] listener The event listener to add + * @see RemoveWindowEventListener() + */ + void AddWindowEventListener(Tizen::Ui::IWindowEventListener& listener); + + /** + * Removes a listener instance. @n + * The removed listener cannot listen to events when they are fired. + * + * @since 2.0 + * + * @param[in] listener The listener to remove + * @see AddWindowEventListener() + */ + void RemoveWindowEventListener(Tizen::Ui::IWindowEventListener& listener); + + /** + * Shows the %Window. + * + * @since 2.0 + * + * @final Although this method is virtual, it should not be overridden. + * If overridden, it may not work as expected. + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation, or + * this control is not 'displayable'. + * @exception E_SYSTEM A system error has occurred. + */ + virtual result Show(void); + + /** + * Sets the owner of the window. + * + * @since 2.0 + * + * @param[in] pControl The control + * @remarks The ownership of @c pControl is not transferred to this instance. It is the developer's responsibility to deallocate @c pControl even after calling this method. + */ + void SetOwner(Tizen::Ui::Control *pControl); + + /** + * @if VISPARTNER-OPERATOR + * Sets the Z order group of %Window. + * + * @since 2.0 + * + * @visibility partner-operator + * @privilege %http://tizen.org/privilege/uimanager + * + * @return An error code + * @param[in] windowZOrderGroup The Z order group of %Window + * @exception E_SUCCESS The method is successful. + * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. + * @remarks If this method is not explicitly called, the Z order group of %Window is set to #WINDOW_Z_ORDER_GROUP_NORMAL. + * @endif + */ + result SetZOrderGroup(WindowZOrderGroup windowZOrderGroup); + + /** + * Gets the current state of the window. + * + * @since 2.0 + * + * @return The current state of the window + */ + WindowState GetWindowState(void) const; + + /** + * Gets the display context of the window. + * + * @since 2.0 + * + * @return A pointer to the DisplayContext instance + */ + Tizen::Ui::Animations::DisplayContext* GetDisplayContext(void) const; + +protected: + /** + * Initializes this instance of %Window. + * + * @since 2.0 + * + * @return An error code + * @param[in] rect The rectangle bounds to set + * @param[in] resizable Set to @c true to make the window resizable, @n + * else @c false + * @param[in] movable Set to @c true to make the window movable, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @remarks This method must be called from the derived classes's construct methods. + * @remarks If the @c resizable is @c false, IsResizable() returns @c false. + * @see IsResizable() + */ + result Construct(const Tizen::Graphics::Rectangle& rect, bool resizable = true, bool movable = true); + + /** + * Initializes this instance of %Window with the specified layout and rectangular region. + * + * @since 2.0 + * + * @return An error code + * @param[in] layout The layout for both the portrait and landscape mode + * @param[in] rect The location and size of the %window + * @param[in] resizable Set to @c true to make the window resizable, @n + * else @c false + * @param[in] movable Set to @c true to make the window movable, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @remarks This method must be called from the derived classes's construct methods. + * @remarks If the @c resizable is @c false, IsResizable() returns @c false. + * @see IsResizable() + * @see Tizen::Ui::Layout + * @see Tizen::Ui::Container::GetLayoutN() + */ + result Construct(const Tizen::Ui::Layout& layout, const Tizen::Graphics::Rectangle& rect, bool resizable = true, bool movable = true); + + /** + * Initializes this instance of %Window with the specified layouts and rectangular region. + * + * @since 2.0 + * + * @return An error code + * @param[in] portraitLayout The layout for the portrait mode + * @param[in] landscapeLayout The layout for the landscape mode + * @param[in] rect The location and size of the %Window + * @param[in] resizable Set to @c true to make the window resizable, @n + * else @c false + * @param[in] movable Set to @c true to make the window movable, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_ARG A specified input parameter is invalid. + * @remarks If the @c resizable is @c false, IsResizable() returns @c false. + * @see IsResizable() + * @see Tizen::Ui::Layout + * @see Tizen::Ui::Container::GetLayoutN() + * @see Tizen::Ui::Container::GetPortraitLayoutN() + * @see Tizen::Ui::Container::GetLandscapeLayoutN() + */ + result Construct(const Tizen::Ui::Layout& portraitLayout, const Tizen::Ui::Layout& landscapeLayout, const Tizen::Graphics::Rectangle& rect, bool resizable = true, bool movable = true); + + /** + * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * + * @since 2.0 + */ + Window(void); + +private: + // + // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects. + // + Window(const Window& rhs); + + // + // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects. + // + Window& operator =(const Window& rhs); + +protected: + friend class _WindowImpl; + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void Window_Reserved1(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void Window_Reserved2(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void Window_Reserved3(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void Window_Reserved4(void) {} + + // + // This method is for internal use only. Using this method can cause behavioral, + // security-related, and consistency-related issues in the application. + // + // This method is reserved and may change its name at any time without prior notice. + // + virtual void Window_Reserved5(void) {} +}; // Window + +}} // Tizen::Ui + +#endif //_FUI_WINDOW_H_ diff --git a/inc/egl.h b/inc/egl.h new file mode 100644 index 0000000..301e4a3 --- /dev/null +++ b/inc/egl.h @@ -0,0 +1,570 @@ +/* $Change: 1028567 $ */ +/* -*- mode: c; tab-width: 8; -*- */ +/* vi: set sw=4 ts=8: */ +/* Reference version of egl.h for EGL 1.4. + * $Revision: #1 $ on $Date: 2011/08/12 $ + */ + +/* +** Copyright (c) 2007-2009 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are 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 Materials. +** +** THE MATERIALS ARE 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 +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +/** + * @file egl.h + * @brief This is the header file for the EGL. + * + * This header file contains the declarations of the EGL. + */ + +#ifndef __egl_h_ +#define __egl_h_ + +/* All platform-dependent types and macro boilerplate (such as EGLAPI + * and EGLAPIENTRY) should go in eglplatform.h. + */ +#include "eglplatform.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @addtogroup opengles + * + * @{ + */ + +/* EGL Types */ +/* EGLint is defined in eglplatform.h */ + +/*! \var typedef unsigned int EGLBoolean + \brief A type definition for EGLBoolean. +*/ +typedef unsigned int EGLBoolean; + +/*! \var typedef unsigned int EGLenum + \brief A type definition for EGLenum. +*/ +typedef unsigned int EGLenum; + +/*! \var typedef void *EGLConfig + \brief A type definition for EGLConfig. +*/ +typedef void* EGLConfig; + +/*! \var typedef void *EGLContext + \brief A type definition for EGLContext. +*/ +typedef void* EGLContext; + +/*! \var typedef void *EGLDisplay + \brief A type definition for EGLDisplay. +*/ +typedef void* EGLDisplay; + +/*! \var typedef void *EGLSurface + \brief A type definition for EGLSurface. +*/ +typedef void* EGLSurface; + +/*! \var typedef void *EGLClientBuffer + \brief A type definition for EGLClientBuffer. +*/ +typedef void* EGLClientBuffer; + +/* EGL Versioning */ +#define EGL_VERSION_1_0 1 +#define EGL_VERSION_1_1 1 +#define EGL_VERSION_1_2 1 +#define EGL_VERSION_1_3 1 +#define EGL_VERSION_1_4 1 + +/* EGL Enumerants. Bitmasks and other exceptional cases aside, most + * enums are assigned unique values starting at 0x3000. + */ + +/* EGL aliases */ +#define EGL_FALSE 0 +#define EGL_TRUE 1 + +/* Out-of-band handle values */ +#define EGL_DEFAULT_DISPLAY ((EGLNativeDisplayType) 0) +#define EGL_NO_CONTEXT ((EGLContext) 0) +#define EGL_NO_DISPLAY ((EGLDisplay) 0) +#define EGL_NO_SURFACE ((EGLSurface) 0) + +/* Out-of-band attribute value */ +#define EGL_DONT_CARE ((EGLint) - 1) + +/* Errors / GetError return values */ +#define EGL_SUCCESS 0x3000 +#define EGL_NOT_INITIALIZED 0x3001 +#define EGL_BAD_ACCESS 0x3002 +#define EGL_BAD_ALLOC 0x3003 +#define EGL_BAD_ATTRIBUTE 0x3004 +#define EGL_BAD_CONFIG 0x3005 +#define EGL_BAD_CONTEXT 0x3006 +#define EGL_BAD_CURRENT_SURFACE 0x3007 +#define EGL_BAD_DISPLAY 0x3008 +#define EGL_BAD_MATCH 0x3009 +#define EGL_BAD_NATIVE_PIXMAP 0x300A +#define EGL_BAD_NATIVE_WINDOW 0x300B +#define EGL_BAD_PARAMETER 0x300C +#define EGL_BAD_SURFACE 0x300D +#define EGL_CONTEXT_LOST 0x300E /* EGL 1.1 - IMG_power_management */ + +/* Reserved 0x300F-0x301F for additional errors */ + +/* Config attributes */ +#define EGL_BUFFER_SIZE 0x3020 +#define EGL_ALPHA_SIZE 0x3021 +#define EGL_BLUE_SIZE 0x3022 +#define EGL_GREEN_SIZE 0x3023 +#define EGL_RED_SIZE 0x3024 +#define EGL_DEPTH_SIZE 0x3025 +#define EGL_STENCIL_SIZE 0x3026 +#define EGL_CONFIG_CAVEAT 0x3027 +#define EGL_CONFIG_ID 0x3028 +#define EGL_LEVEL 0x3029 +#define EGL_MAX_PBUFFER_HEIGHT 0x302A +#define EGL_MAX_PBUFFER_PIXELS 0x302B +#define EGL_MAX_PBUFFER_WIDTH 0x302C +#define EGL_NATIVE_RENDERABLE 0x302D +#define EGL_NATIVE_VISUAL_ID 0x302E +#define EGL_NATIVE_VISUAL_TYPE 0x302F +#define EGL_PRESERVED_RESOURCES 0x3030 +#define EGL_SAMPLES 0x3031 +#define EGL_SAMPLE_BUFFERS 0x3032 +#define EGL_SURFACE_TYPE 0x3033 +#define EGL_TRANSPARENT_TYPE 0x3034 +#define EGL_TRANSPARENT_BLUE_VALUE 0x3035 +#define EGL_TRANSPARENT_GREEN_VALUE 0x3036 +#define EGL_TRANSPARENT_RED_VALUE 0x3037 +#define EGL_NONE 0x3038 /* Attrib list terminator */ +#define EGL_BIND_TO_TEXTURE_RGB 0x3039 +#define EGL_BIND_TO_TEXTURE_RGBA 0x303A +#define EGL_MIN_SWAP_INTERVAL 0x303B +#define EGL_MAX_SWAP_INTERVAL 0x303C +#define EGL_LUMINANCE_SIZE 0x303D +#define EGL_ALPHA_MASK_SIZE 0x303E +#define EGL_COLOR_BUFFER_TYPE 0x303F +#define EGL_RENDERABLE_TYPE 0x3040 +#define EGL_MATCH_NATIVE_PIXMAP 0x3041 /* Pseudo-attribute (not queryable) */ +#define EGL_CONFORMANT 0x3042 + +/* Reserved 0x3041-0x304F for additional config attributes */ + +/* Config attribute values */ +#define EGL_SLOW_CONFIG 0x3050 /* EGL_CONFIG_CAVEAT value */ +#define EGL_NON_CONFORMANT_CONFIG 0x3051 /* EGL_CONFIG_CAVEAT value */ +#define EGL_TRANSPARENT_RGB 0x3052 /* EGL_TRANSPARENT_TYPE value */ +#define EGL_RGB_BUFFER 0x308E /* EGL_COLOR_BUFFER_TYPE value */ +#define EGL_LUMINANCE_BUFFER 0x308F /* EGL_COLOR_BUFFER_TYPE value */ + +/* More config attribute values, for EGL_TEXTURE_FORMAT */ +#define EGL_NO_TEXTURE 0x305C +#define EGL_TEXTURE_RGB 0x305D +#define EGL_TEXTURE_RGBA 0x305E +#define EGL_TEXTURE_2D 0x305F + +/* Config attribute mask bits */ +#define EGL_PBUFFER_BIT 0x0001 /* EGL_SURFACE_TYPE mask bits */ +#define EGL_PIXMAP_BIT 0x0002 /* EGL_SURFACE_TYPE mask bits */ +#define EGL_WINDOW_BIT 0x0004 /* EGL_SURFACE_TYPE mask bits */ +#define EGL_VG_COLORSPACE_LINEAR_BIT 0x0020 /* EGL_SURFACE_TYPE mask bits */ +#define EGL_VG_ALPHA_FORMAT_PRE_BIT 0x0040 /* EGL_SURFACE_TYPE mask bits */ +#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200 /* EGL_SURFACE_TYPE mask bits */ +#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400 /* EGL_SURFACE_TYPE mask bits */ + +#define EGL_OPENGL_ES_BIT 0x0001 /* EGL_RENDERABLE_TYPE mask bits */ +#define EGL_OPENVG_BIT 0x0002 /* EGL_RENDERABLE_TYPE mask bits */ +#define EGL_OPENGL_ES2_BIT 0x0004 /* EGL_RENDERABLE_TYPE mask bits */ +#define EGL_OPENGL_BIT 0x0008 /* EGL_RENDERABLE_TYPE mask bits */ + +/* QueryString targets */ +#define EGL_VENDOR 0x3053 +#define EGL_VERSION 0x3054 +#define EGL_EXTENSIONS 0x3055 +#define EGL_CLIENT_APIS 0x308D + +/* QuerySurface / SurfaceAttrib / CreatePbufferSurface targets */ +#define EGL_HEIGHT 0x3056 +#define EGL_WIDTH 0x3057 +#define EGL_LARGEST_PBUFFER 0x3058 +#define EGL_TEXTURE_FORMAT 0x3080 +#define EGL_TEXTURE_TARGET 0x3081 +#define EGL_MIPMAP_TEXTURE 0x3082 +#define EGL_MIPMAP_LEVEL 0x3083 +#define EGL_RENDER_BUFFER 0x3086 +#define EGL_VG_COLORSPACE 0x3087 +#define EGL_VG_ALPHA_FORMAT 0x3088 +#define EGL_HORIZONTAL_RESOLUTION 0x3090 +#define EGL_VERTICAL_RESOLUTION 0x3091 +#define EGL_PIXEL_ASPECT_RATIO 0x3092 +#define EGL_SWAP_BEHAVIOR 0x3093 +#define EGL_MULTISAMPLE_RESOLVE 0x3099 + +/* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */ +#define EGL_BACK_BUFFER 0x3084 +#define EGL_SINGLE_BUFFER 0x3085 + +/* OpenVG color spaces */ +#define EGL_VG_COLORSPACE_sRGB 0x3089 /* EGL_VG_COLORSPACE value */ +#define EGL_VG_COLORSPACE_LINEAR 0x308A /* EGL_VG_COLORSPACE value */ + +/* OpenVG alpha formats */ +#define EGL_VG_ALPHA_FORMAT_NONPRE 0x308B /* EGL_ALPHA_FORMAT value */ +#define EGL_VG_ALPHA_FORMAT_PRE 0x308C /* EGL_ALPHA_FORMAT value */ + +/* Constant scale factor by which fractional display resolutions & + * aspect ratio are scaled when queried as integer values. + */ +#define EGL_DISPLAY_SCALING 10000 + +/* Unknown display resolution/aspect ratio */ +#define EGL_UNKNOWN ((EGLint) - 1) + +/* Back buffer swap behaviors */ +#define EGL_BUFFER_PRESERVED 0x3094 /* EGL_SWAP_BEHAVIOR value */ +#define EGL_BUFFER_DESTROYED 0x3095 /* EGL_SWAP_BEHAVIOR value */ + +/* CreatePbufferFromClientBuffer buffer types */ +#define EGL_OPENVG_IMAGE 0x3096 + +/* QueryContext targets */ +#define EGL_CONTEXT_CLIENT_TYPE 0x3097 + +/* CreateContext attributes */ +#define EGL_CONTEXT_CLIENT_VERSION 0x3098 + +/* Multisample resolution behaviors */ +#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A /* EGL_MULTISAMPLE_RESOLVE value */ +#define EGL_MULTISAMPLE_RESOLVE_BOX 0x309B /* EGL_MULTISAMPLE_RESOLVE value */ + +/* BindAPI/QueryAPI targets */ +#define EGL_OPENGL_ES_API 0x30A0 +#define EGL_OPENVG_API 0x30A1 +#define EGL_OPENGL_API 0x30A2 + +/* GetCurrentSurface targets */ +#define EGL_DRAW 0x3059 +#define EGL_READ 0x305A + +/* WaitNative engines */ +#define EGL_CORE_NATIVE_ENGINE 0x305B + +/* EGL 1.2 tokens renamed for consistency in EGL 1.3 */ +#define EGL_COLORSPACE EGL_VG_COLORSPACE +#define EGL_ALPHA_FORMAT EGL_VG_ALPHA_FORMAT +#define EGL_COLORSPACE_sRGB EGL_VG_COLORSPACE_sRGB +#define EGL_COLORSPACE_LINEAR EGL_VG_COLORSPACE_LINEAR +#define EGL_ALPHA_FORMAT_NONPRE EGL_VG_ALPHA_FORMAT_NONPRE +#define EGL_ALPHA_FORMAT_PRE EGL_VG_ALPHA_FORMAT_PRE + +/* EGL extensions must request enum blocks from the Khronos + * API Registrar, who maintains the enumerant registry. Submit + * a bug in Khronos Bugzilla against task "Registry". + */ + +/* +** FIXME: The EGL_SEQUENCE_ITEM_SYMB token is temporary until an +** official name and value are assigned. +*/ +#define EGL_SEQUENCE_ITEM_SYMB 0x6000 + +/* EGL Functions */ + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLint eglGetError(void); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLDisplay eglGetDisplay(EGLNativeDisplayType display_id); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLBoolean eglInitialize(EGLDisplay dpy, EGLint* major, EGLint* minor); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLBoolean eglTerminate(EGLDisplay dpy); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +const char* eglQueryString(EGLDisplay dpy, EGLint name); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLBoolean eglGetConfigs(EGLDisplay dpy, EGLConfig* configs, EGLint config_size, EGLint* num_config); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLBoolean eglChooseConfig(EGLDisplay dpy, const EGLint* attrib_list, EGLConfig* configs, EGLint config_size, EGLint* num_config); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLBoolean eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint* value); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLSurface eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint* attrib_list); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLSurface eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint* attrib_list); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLSurface eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint* attrib_list); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLBoolean eglDestroySurface(EGLDisplay dpy, EGLSurface surface); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLBoolean eglQuerySurface(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint* value); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLBoolean eglBindAPI(EGLenum api); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLenum eglQueryAPI(void); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLBoolean eglWaitClient(void); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLBoolean eglReleaseThread(void); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLSurface eglCreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint* attrib_list); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLBoolean eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLBoolean eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLBoolean eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLBoolean eglSwapInterval(EGLDisplay dpy, EGLint interval); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLContext eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint* attrib_list); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLBoolean eglDestroyContext(EGLDisplay dpy, EGLContext ctx); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLBoolean eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLContext eglGetCurrentContext(void); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLSurface eglGetCurrentSurface(EGLint readdraw); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLDisplay eglGetCurrentDisplay(void); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLBoolean eglQueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint* value); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLBoolean eglWaitGL(void); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLBoolean eglWaitNative(EGLint engine); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLBoolean eglSwapBuffers(EGLDisplay dpy, EGLSurface surface); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLBoolean eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target); + +/* This is a generic function pointer type, whose name indicates it must + * be cast to the proper type *and calling convention* before use. + */ +/*! \var typedef void (*__eglMustCastToProperFunctionPointerType)(void) + \brief A type definition for __eglMustCastToProperFunctionPointerType. +*/ +typedef void (*__eglMustCastToProperFunctionPointerType)(void); + +/* Now, define eglGetProcAddress using the generic function ptr. type */ +/** + * @page EGLeglGetProcAddress Compatibility for eglGetProcAddress. + * @section CompClassNameMethodNamePageIssueSection Issues + * Implementation of this method in API versions prior to 1.2 has the following issue: @n + * + * -# This method does not work as expected in API versions prior to 1.2. + * + * @section CompClassNameMethodNamePageSolutionSection Resolutions + * The issue mentioned above is resolved in API version 1.2, and it is recommended to use API version 1.2 or above. @n +*/ +/** + * Returns function pointer of a GL or an EGL extension function. + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + * +*/ +EGLAPI __eglMustCastToProperFunctionPointerType eglGetProcAddress(const char* procname); + +/** + * You can find more details at the Khronos Group site: http://www.khronos.org/registry/egl + * + * @since 2.0 + */ +EGLBoolean eglUpdateBufferOSP(EGLDisplay dpy, EGLSurface surface); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __egl_h_ */ diff --git a/inc/egl_macro.h b/inc/egl_macro.h new file mode 100644 index 0000000..85537b9 --- /dev/null +++ b/inc/egl_macro.h @@ -0,0 +1,57 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#ifndef _EGL_MACRO_H_ +#define _EGL_MACRO_H_ + +#define eglGetError _SglGetError +#define eglGetDisplay _SglGetDisplay +#define eglInitialize _SglInitialize +#define eglTerminate _SglTerminate +#define eglQueryString _SglQueryString +#define eglGetConfigs _SglGetConfigs +#define eglChooseConfig _SglChooseConfig +#define eglGetConfigAttrib _SglGetConfigAttrib +#define eglCreateWindowSurface _SglCreateWindowSurface +#define eglCreatePbufferSurface _SglCreatePbufferSurface +#define eglCreatePixmapSurface _SglCreatePixmapSurface +#define eglDestroySurface _SglDestroySurface +#define eglQuerySurface _SglQuerySurface +#define eglBindAPI _SglBindAPI +#define eglQueryAPI _SglQueryAPI +#define eglWaitClient _SglWaitClient +#define eglReleaseThread _SglReleaseThread +#define eglCreatePbufferFromClientBuffer _SglCreatePbufferFromClientBuffer +#define eglSurfaceAttrib _SglSurfaceAttrib +#define eglBindTexImage _SglBindTexImage +#define eglReleaseTexImage _SglReleaseTexImage +#define eglSwapInterval _SglSwapInterval +#define eglCreateContext _SglCreateContext +#define eglDestroyContext _SglDestroyContext +#define eglMakeCurrent _SglMakeCurrent +#define eglGetCurrentContext _SglGetCurrentContext +#define eglGetCurrentSurface _SglGetCurrentSurface +#define eglGetCurrentDisplay _SglGetCurrentDisplay +#define eglQueryContext _SglQueryContext +#define eglWaitGL _SglWaitGL +#define eglWaitNative _SglWaitNative +#define eglSwapBuffers _SglSwapBuffers +#define eglCopyBuffers _SglCopyBuffers +#define eglGetProcAddress _SglGetProcAddress +#define eglUpdateBufferOSP _SglUpdateBufferOSP + +#endif // _EGL_MACRO_H_ diff --git a/inc/eglext.h b/inc/eglext.h new file mode 100644 index 0000000..a9dbc86 --- /dev/null +++ b/inc/eglext.h @@ -0,0 +1,325 @@ +#ifndef __eglext_h_ +#define __eglext_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright (c) 2007-2010 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are 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 Materials. +** +** THE MATERIALS ARE 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 +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +#include + +/*************************************************************/ + +/* Header file version number */ +/* Current version at http://www.khronos.org/registry/egl/ */ +/* $Revision: 13164 $ on $Date: 2010-12-09 01:26:57 -0800 (Thu, 09 Dec 2010) $ */ +#define EGL_EGLEXT_VERSION 9 + +#ifndef EGL_KHR_config_attribs +#define EGL_KHR_config_attribs 1 +#define EGL_CONFORMANT_KHR 0x3042 /* EGLConfig attribute */ +#define EGL_VG_COLORSPACE_LINEAR_BIT_KHR 0x0020 /* EGL_SURFACE_TYPE bitfield */ +#define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR 0x0040 /* EGL_SURFACE_TYPE bitfield */ +#endif + +#ifndef EGL_KHR_lock_surface +#define EGL_KHR_lock_surface 1 +#define EGL_READ_SURFACE_BIT_KHR 0x0001 /* EGL_LOCK_USAGE_HINT_KHR bitfield */ +#define EGL_WRITE_SURFACE_BIT_KHR 0x0002 /* EGL_LOCK_USAGE_HINT_KHR bitfield */ +#define EGL_LOCK_SURFACE_BIT_KHR 0x0080 /* EGL_SURFACE_TYPE bitfield */ +#define EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100 /* EGL_SURFACE_TYPE bitfield */ +#define EGL_MATCH_FORMAT_KHR 0x3043 /* EGLConfig attribute */ +#define EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0 /* EGL_MATCH_FORMAT_KHR value */ +#define EGL_FORMAT_RGB_565_KHR 0x30C1 /* EGL_MATCH_FORMAT_KHR value */ +#define EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2 /* EGL_MATCH_FORMAT_KHR value */ +#define EGL_FORMAT_RGBA_8888_KHR 0x30C3 /* EGL_MATCH_FORMAT_KHR value */ +#define EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4 /* eglLockSurfaceKHR attribute */ +#define EGL_LOCK_USAGE_HINT_KHR 0x30C5 /* eglLockSurfaceKHR attribute */ +#define EGL_BITMAP_POINTER_KHR 0x30C6 /* eglQuerySurface attribute */ +#define EGL_BITMAP_PITCH_KHR 0x30C7 /* eglQuerySurface attribute */ +#define EGL_BITMAP_ORIGIN_KHR 0x30C8 /* eglQuerySurface attribute */ +#define EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9 /* eglQuerySurface attribute */ +#define EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA /* eglQuerySurface attribute */ +#define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB /* eglQuerySurface attribute */ +#define EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC /* eglQuerySurface attribute */ +#define EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD /* eglQuerySurface attribute */ +#define EGL_LOWER_LEFT_KHR 0x30CE /* EGL_BITMAP_ORIGIN_KHR value */ +#define EGL_UPPER_LEFT_KHR 0x30CF /* EGL_BITMAP_ORIGIN_KHR value */ +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglLockSurfaceKHR (EGLDisplay display, EGLSurface surface, const EGLint *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglUnlockSurfaceKHR (EGLDisplay display, EGLSurface surface); +#endif /* EGL_EGLEXT_PROTOTYPES */ +typedef EGLBoolean (EGLAPIENTRYP PFNEGLLOCKSURFACEKHRPROC) (EGLDisplay display, EGLSurface surface, const EGLint *attrib_list); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay display, EGLSurface surface); +#endif + +#ifndef EGL_KHR_image +#define EGL_KHR_image 1 +#define EGL_NATIVE_PIXMAP_KHR 0x30B0 /* eglCreateImageKHR target */ +typedef void *EGLImageKHR; +#define EGL_NO_IMAGE_KHR ((EGLImageKHR)0) +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image); +#endif /* EGL_EGLEXT_PROTOTYPES */ +typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image); +#endif + +#ifndef EGL_KHR_vg_parent_image +#define EGL_KHR_vg_parent_image 1 +#define EGL_VG_PARENT_IMAGE_KHR 0x30BA /* eglCreateImageKHR target */ +#endif + +#ifndef EGL_KHR_gl_texture_2D_image +#define EGL_KHR_gl_texture_2D_image 1 +#define EGL_GL_TEXTURE_2D_KHR 0x30B1 /* eglCreateImageKHR target */ +#define EGL_GL_TEXTURE_LEVEL_KHR 0x30BC /* eglCreateImageKHR attribute */ +#endif + +#ifndef EGL_KHR_gl_texture_cubemap_image +#define EGL_KHR_gl_texture_cubemap_image 1 +#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR 0x30B3 /* eglCreateImageKHR target */ +#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR 0x30B4 /* eglCreateImageKHR target */ +#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR 0x30B5 /* eglCreateImageKHR target */ +#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR 0x30B6 /* eglCreateImageKHR target */ +#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR 0x30B7 /* eglCreateImageKHR target */ +#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR 0x30B8 /* eglCreateImageKHR target */ +#endif + +#ifndef EGL_KHR_gl_texture_3D_image +#define EGL_KHR_gl_texture_3D_image 1 +#define EGL_GL_TEXTURE_3D_KHR 0x30B2 /* eglCreateImageKHR target */ +#define EGL_GL_TEXTURE_ZOFFSET_KHR 0x30BD /* eglCreateImageKHR attribute */ +#endif + +#ifndef EGL_KHR_gl_renderbuffer_image +#define EGL_KHR_gl_renderbuffer_image 1 +#define EGL_GL_RENDERBUFFER_KHR 0x30B9 /* eglCreateImageKHR target */ +#endif + +#if KHRONOS_SUPPORT_INT64 /* EGLTimeKHR requires 64-bit uint support */ +#ifndef EGL_KHR_reusable_sync +#define EGL_KHR_reusable_sync 1 + +typedef void* EGLSyncKHR; +typedef khronos_utime_nanoseconds_t EGLTimeKHR; + +#define EGL_SYNC_STATUS_KHR 0x30F1 +#define EGL_SIGNALED_KHR 0x30F2 +#define EGL_UNSIGNALED_KHR 0x30F3 +#define EGL_TIMEOUT_EXPIRED_KHR 0x30F5 +#define EGL_CONDITION_SATISFIED_KHR 0x30F6 +#define EGL_SYNC_TYPE_KHR 0x30F7 +#define EGL_SYNC_REUSABLE_KHR 0x30FA +#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001 /* eglClientWaitSyncKHR bitfield */ +#define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull +#define EGL_NO_SYNC_KHR ((EGLSyncKHR)0) +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync); +EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout); +EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode); +EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value); +#endif /* EGL_EGLEXT_PROTOTYPES */ +typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNCKHRPROC) (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync); +typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value); +#endif +#endif + +#ifndef EGL_KHR_image_base +#define EGL_KHR_image_base 1 +/* Most interfaces defined by EGL_KHR_image_pixmap above */ +#define EGL_IMAGE_PRESERVED_KHR 0x30D2 /* eglCreateImageKHR attribute */ +#endif + +#ifndef EGL_KHR_image_pixmap +#define EGL_KHR_image_pixmap 1 +/* Interfaces defined by EGL_KHR_image above */ +#endif + +#ifndef EGL_IMG_context_priority +#define EGL_IMG_context_priority 1 +#define EGL_CONTEXT_PRIORITY_LEVEL_IMG 0x3100 +#define EGL_CONTEXT_PRIORITY_HIGH_IMG 0x3101 +#define EGL_CONTEXT_PRIORITY_MEDIUM_IMG 0x3102 +#define EGL_CONTEXT_PRIORITY_LOW_IMG 0x3103 +#endif + +#ifndef EGL_KHR_lock_surface2 +#define EGL_KHR_lock_surface2 1 +#define EGL_BITMAP_PIXEL_SIZE_KHR 0x3110 +#endif + +#ifndef EGL_NV_coverage_sample +#define EGL_NV_coverage_sample 1 +#define EGL_COVERAGE_BUFFERS_NV 0x30E0 +#define EGL_COVERAGE_SAMPLES_NV 0x30E1 +#endif + +#ifndef EGL_NV_depth_nonlinear +#define EGL_NV_depth_nonlinear 1 +#define EGL_DEPTH_ENCODING_NV 0x30E2 +#define EGL_DEPTH_ENCODING_NONE_NV 0 +#define EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3 +#endif + +#if KHRONOS_SUPPORT_INT64 /* EGLTimeNV requires 64-bit uint support */ +#ifndef EGL_NV_sync +#define EGL_NV_sync 1 +#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV 0x30E6 +#define EGL_SYNC_STATUS_NV 0x30E7 +#define EGL_SIGNALED_NV 0x30E8 +#define EGL_UNSIGNALED_NV 0x30E9 +#define EGL_SYNC_FLUSH_COMMANDS_BIT_NV 0x0001 +#define EGL_FOREVER_NV 0xFFFFFFFFFFFFFFFFull +#define EGL_ALREADY_SIGNALED_NV 0x30EA +#define EGL_TIMEOUT_EXPIRED_NV 0x30EB +#define EGL_CONDITION_SATISFIED_NV 0x30EC +#define EGL_SYNC_TYPE_NV 0x30ED +#define EGL_SYNC_CONDITION_NV 0x30EE +#define EGL_SYNC_FENCE_NV 0x30EF +#define EGL_NO_SYNC_NV ((EGLSyncNV)0) +typedef void* EGLSyncNV; +typedef khronos_utime_nanoseconds_t EGLTimeNV; +#ifdef EGL_EGLEXT_PROTOTYPES +EGLSyncNV eglCreateFenceSyncNV (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list); +EGLBoolean eglDestroySyncNV (EGLSyncNV sync); +EGLBoolean eglFenceNV (EGLSyncNV sync); +EGLint eglClientWaitSyncNV (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout); +EGLBoolean eglSignalSyncNV (EGLSyncNV sync, EGLenum mode); +EGLBoolean eglGetSyncAttribNV (EGLSyncNV sync, EGLint attribute, EGLint *value); +#endif /* EGL_EGLEXT_PROTOTYPES */ +typedef EGLSyncNV (EGLAPIENTRYP PFNEGLCREATEFENCESYNCNVPROC) (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCNVPROC) (EGLSyncNV sync); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLFENCENVPROC) (EGLSyncNV sync); +typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCNVPROC) (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCNVPROC) (EGLSyncNV sync, EGLenum mode); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBNVPROC) (EGLSyncNV sync, EGLint attribute, EGLint *value); +#endif +#endif + +#if KHRONOS_SUPPORT_INT64 /* Dependent on EGL_KHR_reusable_sync which requires 64-bit uint support */ +#ifndef EGL_KHR_fence_sync +#define EGL_KHR_fence_sync 1 +/* Reuses most tokens and entry points from EGL_KHR_reusable_sync */ +#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0 +#define EGL_SYNC_CONDITION_KHR 0x30F8 +#define EGL_SYNC_FENCE_KHR 0x30F9 +#endif +#endif + +#ifndef EGL_HI_clientpixmap +#define EGL_HI_clientpixmap 1 + +/* Surface Attribute */ +#define EGL_CLIENT_PIXMAP_POINTER_HI 0x8F74 +/* + * Structure representing a client pixmap + * (pixmap's data is in client-space memory). + */ +struct EGLClientPixmapHI +{ + void* pData; + EGLint iWidth; + EGLint iHeight; + EGLint iStride; +}; + +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurfaceHI(EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI* pixmap); +#endif /* EGL_EGLEXT_PROTOTYPES */ +typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEHIPROC) (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI* pixmap); +#endif /* EGL_HI_clientpixmap */ + +#ifndef EGL_HI_colorformats +#define EGL_HI_colorformats 1 +/* Config Attribute */ +#define EGL_COLOR_FORMAT_HI 0x8F70 +/* Color Formats */ +#define EGL_COLOR_RGB_HI 0x8F71 +#define EGL_COLOR_RGBA_HI 0x8F72 +#define EGL_COLOR_ARGB_HI 0x8F73 +#endif /* EGL_HI_colorformats */ + +#ifndef EGL_MESA_drm_image +#define EGL_MESA_drm_image 1 +#define EGL_DRM_BUFFER_FORMAT_MESA 0x31D0 /* CreateDRMImageMESA attribute */ +#define EGL_DRM_BUFFER_USE_MESA 0x31D1 /* CreateDRMImageMESA attribute */ +#define EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2 /* EGL_IMAGE_FORMAT_MESA attribute value */ +#define EGL_DRM_BUFFER_MESA 0x31D3 /* eglCreateImageKHR target */ +#define EGL_DRM_BUFFER_STRIDE_MESA 0x31D4 +#define EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x00000001 /* EGL_DRM_BUFFER_USE_MESA bits */ +#define EGL_DRM_BUFFER_USE_SHARE_MESA 0x00000002 /* EGL_DRM_BUFFER_USE_MESA bits */ +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLImageKHR EGLAPIENTRY eglCreateDRMImageMESA (EGLDisplay dpy, const EGLint *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglExportDRMImageMESA (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride); +#endif /* EGL_EGLEXT_PROTOTYPES */ +typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEDRMIMAGEMESAPROC) (EGLDisplay dpy, const EGLint *attrib_list); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDRMIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride); +#endif + +#ifndef EGL_NV_post_sub_buffer +#define EGL_NV_post_sub_buffer 1 +#define EGL_POST_SUB_BUFFER_SUPPORTED_NV 0x30BE +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglPostSubBufferNV (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height); +#endif /* EGL_EGLEXT_PROTOTYPES */ +typedef EGLBoolean (EGLAPIENTRYP PFNEGLPOSTSUBBUFFERNVPROC) (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height); +#endif + +#ifndef EGL_SEC_image_map +#define EGL_SEC_image_map 1 +#define EGL_MAP_GL_TEXTURE_2D_SEC 0x3201 /* eglCreateImageKHR target */ +#define EGL_MAP_GL_TEXTURE_HEIGHT_SEC 0x3202 /* eglCreateImageKHR attribute */ +#define EGL_MAP_GL_TEXTURE_WIDTH_SEC 0x3203 /* eglCreateImageKHR attribute */ +#define EGL_MAP_GL_TEXTURE_FORMAT_SEC 0x3204 /* eglCreateImageKHR attribute, Specifies the number of color components in the mapped texture. */ +#define EGL_MAP_GL_TEXTURE_RGB_SEC 0x3205 /* More config attribute value, for EGL_MAP_GL_TEXTURE_FORMAT_SEC */ +#define EGL_MAP_GL_TEXTURE_RGBA_SEC 0x3206 /* More config attribute value, for EGL_MAP_GL_TEXTURE_FORMAT_SEC */ +#define EGL_MAP_GL_TEXTURE_BGRA_SEC 0x3207 /* More config attribute value, for EGL_MAP_GL_TEXTURE_FORMAT_SEC */ +#define EGL_MAP_GL_TEXTURE_LUMINANCE_SEC 0x3208 /* More config attribute value, for EGL_MAP_GL_TEXTURE_FORMAT_SEC */ +#define EGL_MAP_GL_TEXTURE_LUMINANCE_ALPHA_SEC 0x3209 /* More config attribute value, for EGL_MAP_GL_TEXTURE_FORMAT_SEC */ +#define EGL_MAP_GL_TEXTURE_PIXEL_TYPE_SEC 0x320a /* eglCreateImageKHR attribute, Specifies the data type of the pixel data. */ +#define EGL_MAP_GL_TEXTURE_UNSIGNED_BYTE_SEC 0x320b /* More config attribute value, for EGL_MAP_GL_TEXTURE_PIXEL_TYPE_SEC */ +#define EGL_MAP_GL_TEXTURE_STRIDE_IN_BYTES_SEC 0x320c /* GetImageAttribSEC target */ + +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI void * EGLAPIENTRY eglMapImageSEC (EGLDisplay dpy, EGLImageKHR image); +EGLAPI EGLBoolean EGLAPIENTRY eglUnmapImageSEC (EGLDisplay dpy, EGLImageKHR image); +EGLAPI EGLBoolean EGLAPIENTRY eglGetImageAttribSEC (EGLDisplay dpy, EGLImageKHR image, EGLint attribute, EGLint *value); +#endif /* EGL_EGLEXT_PROTOTYPES */ +typedef void * (EGLAPIENTRYP PFNEGLMAPIMAGESECPROC) (EGLDisplay dpy, EGLImageKHR image); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNMAPIMAGESECPROC) (EGLDisplay dpy, EGLImageKHR image); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETIMAGEATTRIBSECPROC) (EGLDisplay dpy, EGLImageKHR image, EGLint attribute, EGLint *value); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/inc/eglplatform.h b/inc/eglplatform.h new file mode 100644 index 0000000..56bd4df --- /dev/null +++ b/inc/eglplatform.h @@ -0,0 +1,180 @@ +/* $Change: 1028567 $ */ + +/** + * @file eglplatform.h + * @brief This is the header file for the eglplatform. + * + * This header file contains the declarations of the eglplatform. + */ + +#ifndef __eglplatform_h_ +#define __eglplatform_h_ + +/* +** Copyright (c) 2007-2009 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are 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 Materials. +** +** THE MATERIALS ARE 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 +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. + */ + +/* Platform-specific types and definitions for egl.h + * $Revision: #1 $ on $Date: 2011/08/12 $ + * + * Adopters may modify khrplatform.h and this file to suit their platform. + * You are encouraged to submit all modifications to the Khronos group so that + * they can be included in future versions of this file. Please submit changes + * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) + * by filing a bug against product "EGL" component "Registry". + */ + +#ifdef _FGRAPHICS_OPENGL_H_ +}}} +#endif + +namespace Tizen { namespace Ui +{ +class Control; +}; +}; +namespace Tizen { namespace Graphics +{ +class Bitmap; +}; +}; + +#ifdef _FGRAPHICS_OPENGL_H_ +namespace Tizen { namespace Graphics { namespace Opengl +{ +#endif + + +#include "khrplatform.h" + + +/* Macros used in EGL function prototype declarations. + * + * EGL functions should be prototyped as: + * + * EGLAPI return-type EGLAPIENTRY eglFunction(arguments); + * typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments); + * + * KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h + */ + +/** + * @addtogroup opengles + * + * @{ + */ + +#ifndef _WIN32 +#define EGLAPI +#define EGLAPIENTRY +#else +#ifndef EGLAPIENTRY +#define EGLAPIENTRY __stdcall +#endif +#ifndef EGLAPI +#define EGLAPI +#endif +#endif + +#define EGLAPIENTRYP KHRONOS_APIENTRY* +/* +** Types and resources +*/ + +/*! \var typedef int EGLint + \brief A type definition for EGLConfig. +*/ +typedef int EGLint; + +#ifdef _WIN32 +typedef void* EGLNativeDisplayType; +class Tizen::Ui::Control; +typedef Tizen::Ui::Control* EGLNativeWindowType; +class Tizen::Graphics::Bitmap; +typedef Tizen::Graphics::Bitmap* EGLNativePixmapType; + +#elif FEATURE_SYSLSI_S5PC110 +typedef int EGLNativeDisplayType; +typedef void* EGLNativeWindowType; +typedef struct +{ + void* pBuffer; + long lWidth; + long lHeight; + enum + { + NUEGL_PIXELFORMAT_565 = 0, + NUEGL_PIXELFORMAT_4444 = 1, + NUEGL_PIXELFORMAT_8888 = 2, + NUEGL_PIXELFORMAT_1555 = 3, + NUEGL_PIXELFORMAT_force_to_32_bits = 0x12345678 + } ePixelFormat; + enum + { + NUEGL_ROTATE_0 = 0, + NUEGL_ROTATE_90 = 1, + NUEGL_ROTATE_180 = 2, + NUEGL_ROTATE_270 = 3, + NUEGL_ROTATE_force_to_32_bits = 0x12345678 + } eRotation; +} sEGLNativePixmapType; +typedef sEGLNativePixmapType* EGLNativePixmapType; +#else + +/*! \var typedef void *EGLNativeDisplayType + \brief A type definition for EGLNativeDisplayType. +*/ +typedef void* EGLNativeDisplayType; + +/*! \var typedef void *EGLNativeWindowType + \brief A type definition for EGLNativeWindowType. +*/ +typedef void* EGLNativeWindowType; + +/*! \var typedef void *EGLNativePixmapType + \brief A type definition for EGLNativePixmapType. +*/ +typedef void* EGLNativePixmapType; +#endif + +/*! \var typedef EGLNativeDisplayType NativeDisplayType + \brief A type definition for NativeDisplayType. +*/ +typedef EGLNativeDisplayType NativeDisplayType; + +/*! \var typedef EGLNativePixmapType NativePixmapType + \brief A type definition for NativePixmapType. +*/ +typedef EGLNativePixmapType NativePixmapType; + +/*! \var typedef EGLNativeWindowType NativeWindowType + \brief A type definition for NativeWindowType. +*/ +typedef EGLNativeWindowType NativeWindowType; + +#include "egl_macro.h" + +/** + * @} + */ + +#endif /* __eglplatform_h_ */ diff --git a/inc/gl.h b/inc/gl.h new file mode 100644 index 0000000..b74e1b4 --- /dev/null +++ b/inc/gl.h @@ -0,0 +1,1530 @@ +/* $Change: 1028567 $ */ +#ifndef __gl_h_ +#define __gl_h_ + +/* $Revision: #1 $ on $Date: 2011/08/12 $ */ + +/** + * @file gl.h + * @brief This is the header file for the OpenGL(R) ES 1.1. + * + * This header file contains the declarations of the OpenGL(R) ES 1.1. + */ + +#include "glplatform.h" +#include "glmacro.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This document is licensed under the SGI Free Software B License Version + * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . + */ + +/** + * @addtogroup opengles + * + * @{ + */ + +/*------------------------------------------------------------------------- + * Data type definitions + *-----------------------------------------------------------------------*/ + +#if 0 // move to "khrplatform.h" +typedef void GLvoid; +typedef unsigned int GLenum; +typedef unsigned char GLboolean; +typedef unsigned int GLbitfield; +typedef khronos_int8_t GLbyte; +typedef short GLshort; +typedef int GLint; +typedef int GLsizei; +typedef khronos_uint8_t GLubyte; +typedef unsigned short GLushort; +typedef unsigned int GLuint; +typedef khronos_float_t GLfloat; +typedef khronos_float_t GLclampf; +typedef khronos_int32_t GLfixed; +typedef khronos_int32_t GLclampx; + +typedef khronos_intptr_t GLintptr; +typedef khronos_ssize_t GLsizeiptr; +#endif + +/*************************************************************/ + +/* OpenGL ES core versions */ +#define GL_VERSION_ES_CM_1_0 1 +#define GL_VERSION_ES_CL_1_0 1 +#define GL_VERSION_ES_CM_1_1 1 +#define GL_VERSION_ES_CL_1_1 1 + +/* ClearBufferMask */ +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_COLOR_BUFFER_BIT 0x00004000 + +/* Boolean */ +#define GL_FALSE 0 +#define GL_TRUE 1 + +/* BeginMode */ +#define GL_POINTS 0x0000 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_LINE_STRIP 0x0003 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_FAN 0x0006 + +/* AlphaFunction */ +#define GL_NEVER 0x0200 +#define GL_LESS 0x0201 +#define GL_EQUAL 0x0202 +#define GL_LEQUAL 0x0203 +#define GL_GREATER 0x0204 +#define GL_NOTEQUAL 0x0205 +#define GL_GEQUAL 0x0206 +#define GL_ALWAYS 0x0207 + +/* BlendingFactorDest */ +#define GL_ZERO 0 +#define GL_ONE 1 +#define GL_SRC_COLOR 0x0300 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_DST_ALPHA 0x0304 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 + +/* BlendingFactorSrc */ +/* GL_ZERO */ +/* GL_ONE */ +#define GL_DST_COLOR 0x0306 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_SRC_ALPHA_SATURATE 0x0308 +/* GL_SRC_ALPHA */ +/* GL_ONE_MINUS_SRC_ALPHA */ +/* GL_DST_ALPHA */ +/* GL_ONE_MINUS_DST_ALPHA */ + +/* ClipPlaneName */ +#define GL_CLIP_PLANE0 0x3000 +#define GL_CLIP_PLANE1 0x3001 +#define GL_CLIP_PLANE2 0x3002 +#define GL_CLIP_PLANE3 0x3003 +#define GL_CLIP_PLANE4 0x3004 +#define GL_CLIP_PLANE5 0x3005 + +/* ColorMaterialFace */ +/* GL_FRONT_AND_BACK */ + +/* ColorMaterialParameter */ +/* GL_AMBIENT_AND_DIFFUSE */ + +/* ColorPointerType */ +/* GL_UNSIGNED_BYTE */ +/* GL_FLOAT */ +/* GL_FIXED */ + +/* CullFaceMode */ +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_FRONT_AND_BACK 0x0408 + +/* DepthFunction */ +/* GL_NEVER */ +/* GL_LESS */ +/* GL_EQUAL */ +/* GL_LEQUAL */ +/* GL_GREATER */ +/* GL_NOTEQUAL */ +/* GL_GEQUAL */ +/* GL_ALWAYS */ + +/* EnableCap */ +#define GL_FOG 0x0B60 +#define GL_LIGHTING 0x0B50 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_CULL_FACE 0x0B44 +#define GL_ALPHA_TEST 0x0BC0 +#define GL_BLEND 0x0BE2 +#define GL_COLOR_LOGIC_OP 0x0BF2 +#define GL_DITHER 0x0BD0 +#define GL_STENCIL_TEST 0x0B90 +#define GL_DEPTH_TEST 0x0B71 +/* GL_LIGHT0 */ +/* GL_LIGHT1 */ +/* GL_LIGHT2 */ +/* GL_LIGHT3 */ +/* GL_LIGHT4 */ +/* GL_LIGHT5 */ +/* GL_LIGHT6 */ +/* GL_LIGHT7 */ +#define GL_POINT_SMOOTH 0x0B10 +#define GL_LINE_SMOOTH 0x0B20 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_COLOR_MATERIAL 0x0B57 +#define GL_NORMALIZE 0x0BA1 +#define GL_RESCALE_NORMAL 0x803A +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_VERTEX_ARRAY 0x8074 +#define GL_NORMAL_ARRAY 0x8075 +#define GL_COLOR_ARRAY 0x8076 +#define GL_TEXTURE_COORD_ARRAY 0x8078 +#define GL_MULTISAMPLE 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F +#define GL_SAMPLE_COVERAGE 0x80A0 + +/* ErrorCode */ +#define GL_NO_ERROR 0 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVALID_OPERATION 0x0502 +#define GL_STACK_OVERFLOW 0x0503 +#define GL_STACK_UNDERFLOW 0x0504 +#define GL_OUT_OF_MEMORY 0x0505 + +/* FogMode */ +/* GL_LINEAR */ +#define GL_EXP 0x0800 +#define GL_EXP2 0x0801 + +/* FogParameter */ +#define GL_FOG_DENSITY 0x0B62 +#define GL_FOG_START 0x0B63 +#define GL_FOG_END 0x0B64 +#define GL_FOG_MODE 0x0B65 +#define GL_FOG_COLOR 0x0B66 + +/* FrontFaceDirection */ +#define GL_CW 0x0900 +#define GL_CCW 0x0901 + +/* GetPName */ +#define GL_CURRENT_COLOR 0x0B00 +#define GL_CURRENT_NORMAL 0x0B02 +#define GL_CURRENT_TEXTURE_COORDS 0x0B03 +#define GL_POINT_SIZE 0x0B11 +#define GL_POINT_SIZE_MIN 0x8126 +#define GL_POINT_SIZE_MAX 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 +#define GL_POINT_DISTANCE_ATTENUATION 0x8129 +#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 +#define GL_LINE_WIDTH 0x0B21 +#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_SHADE_MODEL 0x0B54 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_MATRIX_MODE 0x0BA0 +#define GL_VIEWPORT 0x0BA2 +#define GL_MODELVIEW_STACK_DEPTH 0x0BA3 +#define GL_PROJECTION_STACK_DEPTH 0x0BA4 +#define GL_TEXTURE_STACK_DEPTH 0x0BA5 +#define GL_MODELVIEW_MATRIX 0x0BA6 +#define GL_PROJECTION_MATRIX 0x0BA7 +#define GL_TEXTURE_MATRIX 0x0BA8 +#define GL_ALPHA_TEST_FUNC 0x0BC1 +#define GL_ALPHA_TEST_REF 0x0BC2 +#define GL_BLEND_DST 0x0BE0 +#define GL_BLEND_SRC 0x0BE1 +#define GL_LOGIC_OP_MODE 0x0BF0 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_MAX_LIGHTS 0x0D31 +#define GL_MAX_CLIP_PLANES 0x0D32 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36 +#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38 +#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_MAX_TEXTURE_UNITS 0x84E2 +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_RED_BITS 0x0D52 +#define GL_GREEN_BITS 0x0D53 +#define GL_BLUE_BITS 0x0D54 +#define GL_ALPHA_BITS 0x0D55 +#define GL_DEPTH_BITS 0x0D56 +#define GL_STENCIL_BITS 0x0D57 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_VERTEX_ARRAY_SIZE 0x807A +#define GL_VERTEX_ARRAY_TYPE 0x807B +#define GL_VERTEX_ARRAY_STRIDE 0x807C +#define GL_NORMAL_ARRAY_TYPE 0x807E +#define GL_NORMAL_ARRAY_STRIDE 0x807F +#define GL_COLOR_ARRAY_SIZE 0x8081 +#define GL_COLOR_ARRAY_TYPE 0x8082 +#define GL_COLOR_ARRAY_STRIDE 0x8083 +#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088 +#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089 +#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A +#define GL_VERTEX_ARRAY_POINTER 0x808E +#define GL_NORMAL_ARRAY_POINTER 0x808F +#define GL_COLOR_ARRAY_POINTER 0x8090 +#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB + +/* GetTextureParameter */ +/* GL_TEXTURE_MAG_FILTER */ +/* GL_TEXTURE_MIN_FILTER */ +/* GL_TEXTURE_WRAP_S */ +/* GL_TEXTURE_WRAP_T */ + +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 + +/* HintMode */ +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 + +/* HintTarget */ +#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 +#define GL_POINT_SMOOTH_HINT 0x0C51 +#define GL_LINE_SMOOTH_HINT 0x0C52 +#define GL_FOG_HINT 0x0C54 +#define GL_GENERATE_MIPMAP_HINT 0x8192 + +/* LightModelParameter */ +#define GL_LIGHT_MODEL_AMBIENT 0x0B53 +#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 + +/* LightParameter */ +#define GL_AMBIENT 0x1200 +#define GL_DIFFUSE 0x1201 +#define GL_SPECULAR 0x1202 +#define GL_POSITION 0x1203 +#define GL_SPOT_DIRECTION 0x1204 +#define GL_SPOT_EXPONENT 0x1205 +#define GL_SPOT_CUTOFF 0x1206 +#define GL_CONSTANT_ATTENUATION 0x1207 +#define GL_LINEAR_ATTENUATION 0x1208 +#define GL_QUADRATIC_ATTENUATION 0x1209 + +/* DataType */ +#define GL_BYTE 0x1400 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_SHORT 0x1402 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_FLOAT 0x1406 +#define GL_FIXED 0x140C + +/* LogicOp */ +#define GL_CLEAR 0x1500 +#define GL_AND 0x1501 +#define GL_AND_REVERSE 0x1502 +#define GL_COPY 0x1503 +#define GL_AND_INVERTED 0x1504 +#define GL_NOOP 0x1505 +#define GL_XOR 0x1506 +#define GL_OR 0x1507 +#define GL_NOR 0x1508 +#define GL_EQUIV 0x1509 +#define GL_INVERT 0x150A +#define GL_OR_REVERSE 0x150B +#define GL_COPY_INVERTED 0x150C +#define GL_OR_INVERTED 0x150D +#define GL_NAND 0x150E +#define GL_SET 0x150F + +/* MaterialFace */ +/* GL_FRONT_AND_BACK */ + +/* MaterialParameter */ +#define GL_EMISSION 0x1600 +#define GL_SHININESS 0x1601 +#define GL_AMBIENT_AND_DIFFUSE 0x1602 +/* GL_AMBIENT */ +/* GL_DIFFUSE */ +/* GL_SPECULAR */ + +/* MatrixMode */ +#define GL_MODELVIEW 0x1700 +#define GL_PROJECTION 0x1701 +#define GL_TEXTURE 0x1702 + +/* NormalPointerType */ +/* GL_BYTE */ +/* GL_SHORT */ +/* GL_FLOAT */ +/* GL_FIXED */ + +/* PixelFormat */ +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A + +/* PixelStoreParameter */ +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_ALIGNMENT 0x0D05 + +/* PixelType */ +/* GL_UNSIGNED_BYTE */ +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 + +/* ShadingModel */ +#define GL_FLAT 0x1D00 +#define GL_SMOOTH 0x1D01 + +/* StencilFunction */ +/* GL_NEVER */ +/* GL_LESS */ +/* GL_EQUAL */ +/* GL_LEQUAL */ +/* GL_GREATER */ +/* GL_NOTEQUAL */ +/* GL_GEQUAL */ +/* GL_ALWAYS */ + +/* StencilOp */ +/* GL_ZERO */ +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +/* GL_INVERT */ + +/* StringName */ +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 + +/* TexCoordPointerType */ +/* GL_SHORT */ +/* GL_FLOAT */ +/* GL_FIXED */ +/* GL_BYTE */ + +/* TextureEnvMode */ +#define GL_MODULATE 0x2100 +#define GL_DECAL 0x2101 +/* GL_BLEND */ +#define GL_ADD 0x0104 +/* GL_REPLACE */ + +/* TextureEnvParameter */ +#define GL_TEXTURE_ENV_MODE 0x2200 +#define GL_TEXTURE_ENV_COLOR 0x2201 + +/* TextureEnvTarget */ +#define GL_TEXTURE_ENV 0x2300 + +/* TextureMagFilter */ +#define GL_NEAREST 0x2600 +#define GL_LINEAR 0x2601 + +/* TextureMinFilter */ +/* GL_NEAREST */ +/* GL_LINEAR */ +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 + +/* TextureParameterName */ +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 +#define GL_GENERATE_MIPMAP 0x8191 + +/* TextureTarget */ +/* GL_TEXTURE_2D */ + +/* TextureUnit */ +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 + +/* TextureWrapMode */ +#define GL_REPEAT 0x2901 +#define GL_CLAMP_TO_EDGE 0x812F + +/* VertexPointerType */ +/* GL_SHORT */ +/* GL_FLOAT */ +/* GL_FIXED */ +/* GL_BYTE */ + +/* LightName */ +#define GL_LIGHT0 0x4000 +#define GL_LIGHT1 0x4001 +#define GL_LIGHT2 0x4002 +#define GL_LIGHT3 0x4003 +#define GL_LIGHT4 0x4004 +#define GL_LIGHT5 0x4005 +#define GL_LIGHT6 0x4006 +#define GL_LIGHT7 0x4007 + +/* Buffer Objects */ +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 + +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896 +#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897 +#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898 +#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A + +#define GL_STATIC_DRAW 0x88E4 +#define GL_DYNAMIC_DRAW 0x88E8 + +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 + +/* Texture combine + dot3 */ +#define GL_SUBTRACT 0x84E7 +#define GL_COMBINE 0x8570 +#define GL_COMBINE_RGB 0x8571 +#define GL_COMBINE_ALPHA 0x8572 +#define GL_RGB_SCALE 0x8573 +#define GL_ADD_SIGNED 0x8574 +#define GL_INTERPOLATE 0x8575 +#define GL_CONSTANT 0x8576 +#define GL_PRIMARY_COLOR 0x8577 +#define GL_PREVIOUS 0x8578 +#define GL_OPERAND0_RGB 0x8590 +#define GL_OPERAND1_RGB 0x8591 +#define GL_OPERAND2_RGB 0x8592 +#define GL_OPERAND0_ALPHA 0x8598 +#define GL_OPERAND1_ALPHA 0x8599 +#define GL_OPERAND2_ALPHA 0x859A + +#define GL_ALPHA_SCALE 0x0D1C + +#define GL_SRC0_RGB 0x8580 +#define GL_SRC1_RGB 0x8581 +#define GL_SRC2_RGB 0x8582 +#define GL_SRC0_ALPHA 0x8588 +#define GL_SRC1_ALPHA 0x8589 +#define GL_SRC2_ALPHA 0x858A + +#define GL_DOT3_RGB 0x86AE +#define GL_DOT3_RGBA 0x86AF + +/*------------------------------------------------------------------------* + * required OES extension tokens + *------------------------------------------------------------------------*/ + +/* OES_read_format */ +#ifndef GL_OES_read_format +#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B +#endif + +/* GL_OES_compressed_paletted_texture */ +#ifndef GL_OES_compressed_paletted_texture +#define GL_PALETTE4_RGB8_OES 0x8B90 +#define GL_PALETTE4_RGBA8_OES 0x8B91 +#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 +#define GL_PALETTE4_RGBA4_OES 0x8B93 +#define GL_PALETTE4_RGB5_A1_OES 0x8B94 +#define GL_PALETTE8_RGB8_OES 0x8B95 +#define GL_PALETTE8_RGBA8_OES 0x8B96 +#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 +#define GL_PALETTE8_RGBA4_OES 0x8B98 +#define GL_PALETTE8_RGB5_A1_OES 0x8B99 +#endif + +/* OES_point_size_array */ +#ifndef GL_OES_point_size_array +#define GL_POINT_SIZE_ARRAY_OES 0x8B9C +#define GL_POINT_SIZE_ARRAY_TYPE_OES 0x898A +#define GL_POINT_SIZE_ARRAY_STRIDE_OES 0x898B +#define GL_POINT_SIZE_ARRAY_POINTER_OES 0x898C +#define GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES 0x8B9F +#endif + +/* GL_OES_point_sprite */ +#ifndef GL_OES_point_sprite +#define GL_POINT_SPRITE_OES 0x8861 +#define GL_COORD_REPLACE_OES 0x8862 +#endif + +/*************************************************************/ + +/* Available only in Common profile */ +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glAlphaFunc(GLenum func, GLclampf ref); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glClearDepthf(GLclampf depth); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glClipPlanef(GLenum plane, const GLfloat* equation); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glDepthRangef(GLclampf zNear, GLclampf zFar); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glFogf(GLenum pname, GLfloat param); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glFogfv(GLenum pname, const GLfloat* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glFrustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glGetClipPlanef(GLenum pname, GLfloat eqn[4]); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glGetFloatv(GLenum pname, GLfloat* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glGetLightfv(GLenum light, GLenum pname, GLfloat* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glGetMaterialfv(GLenum face, GLenum pname, GLfloat* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glGetTexEnvfv(GLenum env, GLenum pname, GLfloat* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glLightModelf(GLenum pname, GLfloat param); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glLightModelfv(GLenum pname, const GLfloat* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glLightf(GLenum light, GLenum pname, GLfloat param); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glLightfv(GLenum light, GLenum pname, const GLfloat* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glLineWidth(GLfloat width); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glLoadMatrixf(const GLfloat* m); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glMaterialf(GLenum face, GLenum pname, GLfloat param); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glMaterialfv(GLenum face, GLenum pname, const GLfloat* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glMultMatrixf(const GLfloat* m); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glOrthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glPointParameterf(GLenum pname, GLfloat param); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glPointParameterfv(GLenum pname, const GLfloat* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glPointSize(GLfloat size); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glPolygonOffset(GLfloat factor, GLfloat units); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glScalef(GLfloat x, GLfloat y, GLfloat z); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glTexEnvf(GLenum target, GLenum pname, GLfloat param); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glTexEnvfv(GLenum target, GLenum pname, const GLfloat* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glTexParameterf(GLenum target, GLenum pname, GLfloat param); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glTranslatef(GLfloat x, GLfloat y, GLfloat z); + +/* Available in both Common and Common-Lite profiles */ +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glActiveTexture(GLenum texture); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glAlphaFuncx(GLenum func, GLclampx ref); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glBindBuffer(GLenum target, GLuint buffer); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glBindTexture(GLenum target, GLuint texture); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glBlendFunc(GLenum sfactor, GLenum dfactor); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glClear(GLbitfield mask); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glClearColorx(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glClearDepthx(GLclampx depth); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glClearStencil(GLint s); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glClientActiveTexture(GLenum texture); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glClipPlanex(GLenum plane, const GLfixed* equation); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glColor4x(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glCullFace(GLenum mode); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glDeleteBuffers(GLsizei n, const GLuint* buffers); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glDeleteTextures(GLsizei n, const GLuint* textures); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glDepthFunc(GLenum func); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glDepthMask(GLboolean flag); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glDepthRangex(GLclampx zNear, GLclampx zFar); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glDisable(GLenum cap); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glDisableClientState(GLenum array); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glDrawArrays(GLenum mode, GLint first, GLsizei count); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glEnable(GLenum cap); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glEnableClientState(GLenum array); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glFinish(void); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glFlush(void); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glFogx(GLenum pname, GLfixed param); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glFogxv(GLenum pname, const GLfixed* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glFrontFace(GLenum mode); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glFrustumx(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glGetBooleanv(GLenum pname, GLboolean* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glGetClipPlanex(GLenum pname, GLfixed eqn[4]); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glGenBuffers(GLsizei n, GLuint* buffers); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glGenTextures(GLsizei n, GLuint* textures); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API GLenum GL_APIENTRY glGetError(void); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glGetFixedv(GLenum pname, GLfixed* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glGetIntegerv(GLenum pname, GLint* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glGetLightxv(GLenum light, GLenum pname, GLfixed* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glGetMaterialxv(GLenum face, GLenum pname, GLfixed* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glGetPointerv(GLenum pname, void** params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API const GLubyte* GL_APIENTRY glGetString(GLenum name); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glGetTexEnviv(GLenum env, GLenum pname, GLint* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glGetTexEnvxv(GLenum env, GLenum pname, GLfixed* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glGetTexParameteriv(GLenum target, GLenum pname, GLint* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glGetTexParameterxv(GLenum target, GLenum pname, GLfixed* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glHint(GLenum target, GLenum mode); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API GLboolean GL_APIENTRY glIsBuffer(GLuint buffer); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API GLboolean GL_APIENTRY glIsEnabled(GLenum cap); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API GLboolean GL_APIENTRY glIsTexture(GLuint texture); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glLightModelx(GLenum pname, GLfixed param); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glLightModelxv(GLenum pname, const GLfixed* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glLightx(GLenum light, GLenum pname, GLfixed param); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glLightxv(GLenum light, GLenum pname, const GLfixed* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glLineWidthx(GLfixed width); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glLoadIdentity(void); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glLoadMatrixx(const GLfixed* m); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glLogicOp(GLenum opcode); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glMaterialx(GLenum face, GLenum pname, GLfixed param); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glMaterialxv(GLenum face, GLenum pname, const GLfixed* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glMatrixMode(GLenum mode); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glMultMatrixx(const GLfixed* m); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glMultiTexCoord4x(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glNormal3x(GLfixed nx, GLfixed ny, GLfixed nz); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glNormalPointer(GLenum type, GLsizei stride, const GLvoid* pointer); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glOrthox(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glPixelStorei(GLenum pname, GLint param); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glPointParameterx(GLenum pname, GLfixed param); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glPointParameterxv(GLenum pname, const GLfixed* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glPointSizex(GLfixed size); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glPolygonOffsetx(GLfixed factor, GLfixed units); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glPopMatrix(void); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glPushMatrix(void); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glRotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glSampleCoverage(GLclampf value, GLboolean invert); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glSampleCoveragex(GLclampx value, GLboolean invert); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glScalex(GLfixed x, GLfixed y, GLfixed z); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glScissor(GLint x, GLint y, GLsizei width, GLsizei height); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glShadeModel(GLenum mode); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glStencilFunc(GLenum func, GLint ref, GLuint mask); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glStencilMask(GLuint mask); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glTexEnvi(GLenum target, GLenum pname, GLint param); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glTexEnvx(GLenum target, GLenum pname, GLfixed param); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glTexEnviv(GLenum target, GLenum pname, const GLint* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glTexEnvxv(GLenum target, GLenum pname, const GLfixed* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glTexParameteri(GLenum target, GLenum pname, GLint param); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glTexParameterx(GLenum target, GLenum pname, GLfixed param); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glTexParameteriv(GLenum target, GLenum pname, const GLint* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glTexParameterxv(GLenum target, GLenum pname, const GLfixed* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glTranslatex(GLfixed x, GLfixed y, GLfixed z); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 1.1. + * + * @since 2.0 + */ +GL_API void GL_APIENTRY glViewport(GLint x, GLint y, GLsizei width, GLsizei height); + +/*------------------------------------------------------------------------* + * Required OES extension functions + *------------------------------------------------------------------------*/ + +/* GL_OES_read_format */ +#ifndef GL_OES_read_format +#define GL_OES_read_format 1 +#endif + +/* GL_OES_compressed_paletted_texture */ +#ifndef GL_OES_compressed_paletted_texture +#define GL_OES_compressed_paletted_texture 1 +#endif + +/* GL_OES_point_size_array */ +#ifndef GL_OES_point_size_array +#define GL_OES_point_size_array 1 +/** + * @page EGLglPointSizePointerOES Compatibility for glPointSizePointerOES. + * @section CompClassNameMethodNamePageIssueSection Issues + * Implementation of this method in API versions prior to 1.2 has the following issue: @n + * + * -# This method does not work as expected in API versions prior to 1.2. + * + * @section CompClassNameMethodNamePageSolutionSection Resolutions + * The issue mentioned above is resolved in API version 1.1, and it is recommended to use API version 1.2 or above. +*/ +/** + * + * Defines an array of point sizes. + * You can find more details at the Khronos Group site: http://www.khronos.org/opengles/sdk/1.1/docs/man. + * + * @since 2.0 + * +*/ +GL_API void GL_APIENTRY glPointSizePointerOES(GLenum type, GLsizei stride, const GLvoid* pointer); +#endif + +/* GL_OES_point_sprite */ +#ifndef GL_OES_point_sprite +#define GL_OES_point_sprite 1 +#endif + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __gl_h_ */ diff --git a/inc/gl2.h b/inc/gl2.h new file mode 100644 index 0000000..4a09cac --- /dev/null +++ b/inc/gl2.h @@ -0,0 +1,1354 @@ +/* $Change: 1028567 $ */ +#ifndef __gl2_h_ +#define __gl2_h_ + +/* $Revision: #1 $ on $Date: 2011/08/12 $ */ + +/** + * @file gl2.h + * @brief This is the header file for the OpenGL(R) ES 2.0. + * + * This header file contains the declarations of the OpenGL(R) ES 2.0. + */ + +#include "gl2platform.h" +#include "gl2macro.h" + + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This document is licensed under the SGI Free Software B License Version + * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . + */ + +/** + * @addtogroup opengles + * + * @{ + */ + +/*------------------------------------------------------------------------- + * Data type definitions + *-----------------------------------------------------------------------*/ + +#if 0 // move to "khrplatform.h" +typedef void GLvoid; +typedef unsigned int GLenum; +typedef unsigned char GLboolean; +typedef unsigned int GLbitfield; +typedef khronos_int8_t GLbyte; +typedef short GLshort; +typedef int GLint; +typedef int GLsizei; +typedef khronos_uint8_t GLubyte; +typedef unsigned short GLushort; +typedef unsigned int GLuint; +typedef khronos_float_t GLfloat; +typedef khronos_float_t GLclampf; +typedef khronos_int32_t GLfixed; + +/* GL types for handling large vertex buffer objects */ +typedef khronos_intptr_t GLintptr; +typedef khronos_ssize_t GLsizeiptr; +#endif + +/* OpenGL ES core versions */ +#define GL_ES_VERSION_2_0 1 + +/* ClearBufferMask */ +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_COLOR_BUFFER_BIT 0x00004000 + +/* Boolean */ +#define GL_FALSE 0 +#define GL_TRUE 1 + +/* BeginMode */ +#define GL_POINTS 0x0000 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_LINE_STRIP 0x0003 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_FAN 0x0006 + +/* AlphaFunction (not supported in ES20) */ +/* GL_NEVER */ +/* GL_LESS */ +/* GL_EQUAL */ +/* GL_LEQUAL */ +/* GL_GREATER */ +/* GL_NOTEQUAL */ +/* GL_GEQUAL */ +/* GL_ALWAYS */ + +/* BlendingFactorDest */ +#define GL_ZERO 0 +#define GL_ONE 1 +#define GL_SRC_COLOR 0x0300 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_DST_ALPHA 0x0304 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 + +/* BlendingFactorSrc */ +/* GL_ZERO */ +/* GL_ONE */ +#define GL_DST_COLOR 0x0306 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_SRC_ALPHA_SATURATE 0x0308 +/* GL_SRC_ALPHA */ +/* GL_ONE_MINUS_SRC_ALPHA */ +/* GL_DST_ALPHA */ +/* GL_ONE_MINUS_DST_ALPHA */ + +/* BlendEquationSeparate */ +#define GL_FUNC_ADD 0x8006 +#define GL_BLEND_EQUATION 0x8009 +#define GL_BLEND_EQUATION_RGB 0x8009 /* same as BLEND_EQUATION */ +#define GL_BLEND_EQUATION_ALPHA 0x883D + +/* BlendSubtract */ +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B + +/* Separate Blend Functions */ +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_BLEND_COLOR 0x8005 + +/* Buffer Objects */ +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 + +#define GL_STREAM_DRAW 0x88E0 +#define GL_STATIC_DRAW 0x88E4 +#define GL_DYNAMIC_DRAW 0x88E8 + +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 + +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 + +/* CullFaceMode */ +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_FRONT_AND_BACK 0x0408 + +/* DepthFunction */ +/* GL_NEVER */ +/* GL_LESS */ +/* GL_EQUAL */ +/* GL_LEQUAL */ +/* GL_GREATER */ +/* GL_NOTEQUAL */ +/* GL_GEQUAL */ +/* GL_ALWAYS */ + +/* EnableCap */ +#define GL_TEXTURE_2D 0x0DE1 +#define GL_CULL_FACE 0x0B44 +#define GL_BLEND 0x0BE2 +#define GL_DITHER 0x0BD0 +#define GL_STENCIL_TEST 0x0B90 +#define GL_DEPTH_TEST 0x0B71 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_COVERAGE 0x80A0 + +/* ErrorCode */ +#define GL_NO_ERROR 0 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVALID_OPERATION 0x0502 +#define GL_OUT_OF_MEMORY 0x0505 + +/* FrontFaceDirection */ +#define GL_CW 0x0900 +#define GL_CCW 0x0901 + +/* GetPName */ +#define GL_LINE_WIDTH 0x0B21 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_VIEWPORT 0x0BA2 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_RED_BITS 0x0D52 +#define GL_GREEN_BITS 0x0D53 +#define GL_BLUE_BITS 0x0D54 +#define GL_ALPHA_BITS 0x0D55 +#define GL_DEPTH_BITS 0x0D56 +#define GL_STENCIL_BITS 0x0D57 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB + +/* GetTextureParameter */ +/* GL_TEXTURE_MAG_FILTER */ +/* GL_TEXTURE_MIN_FILTER */ +/* GL_TEXTURE_WRAP_S */ +/* GL_TEXTURE_WRAP_T */ + +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 + +/* HintMode */ +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 + +/* HintTarget */ +#define GL_GENERATE_MIPMAP_HINT 0x8192 + +/* DataType */ +#define GL_BYTE 0x1400 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_SHORT 0x1402 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_INT 0x1404 +#define GL_UNSIGNED_INT 0x1405 +#define GL_FLOAT 0x1406 +#define GL_FIXED 0x140C + +/* PixelFormat */ +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A + +/* PixelType */ +/* GL_UNSIGNED_BYTE */ +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 + +/* Shaders */ +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_SHADER_TYPE 0x8B4F +#define GL_DELETE_STATUS 0x8B80 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D + +/* StencilFunction */ +#define GL_NEVER 0x0200 +#define GL_LESS 0x0201 +#define GL_EQUAL 0x0202 +#define GL_LEQUAL 0x0203 +#define GL_GREATER 0x0204 +#define GL_NOTEQUAL 0x0205 +#define GL_GEQUAL 0x0206 +#define GL_ALWAYS 0x0207 + +/* StencilOp */ +/* GL_ZERO */ +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_INVERT 0x150A +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 + +/* StringName */ +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 + +/* TextureMagFilter */ +#define GL_NEAREST 0x2600 +#define GL_LINEAR 0x2601 + +/* TextureMinFilter */ +/* GL_NEAREST */ +/* GL_LINEAR */ +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 + +/* TextureParameterName */ +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 + +/* TextureTarget */ +/* GL_TEXTURE_2D */ +#define GL_TEXTURE 0x1702 + +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C + +/* TextureUnit */ +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 + +/* TextureWrapMode */ +#define GL_REPEAT 0x2901 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_MIRRORED_REPEAT 0x8370 + +/* Uniform Types */ +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_BOOL 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT4 0x8B5C +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_CUBE 0x8B60 + +/* Vertex Arrays */ +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F + +/* Read Format */ +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B + +/* Shader Source */ +#define GL_COMPILE_STATUS 0x8B81 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_SHADER_COMPILER 0x8DFA + +/* Shader Binary */ +#define GL_PLATFORM_BINARY 0x8D63 +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 + +/* Shader Precision-Specified Types */ +#define GL_LOW_FLOAT 0x8DF0 +#define GL_MEDIUM_FLOAT 0x8DF1 +#define GL_HIGH_FLOAT 0x8DF2 +#define GL_LOW_INT 0x8DF3 +#define GL_MEDIUM_INT 0x8DF4 +#define GL_HIGH_INT 0x8DF5 + +/* Framebuffer Object. */ +#define GL_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 + +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGB565 0x8D62 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_STENCIL_INDEX 0x1901 +#define GL_STENCIL_INDEX8 0x8D48 + +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#define GL_RENDERBUFFER_RED_SIZE 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 + +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 + +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 + +#define GL_NONE 0 + +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9 +#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS 0x8CDA +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD + +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 + +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 + +/*------------------------------------------------------------------------- + * GL core functions. + *-----------------------------------------------------------------------*/ + +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glActiveTexture(GLenum texture); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glAttachShader(GLuint program, GLuint shader); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glBindAttribLocation(GLuint program, GLuint index, const char* name); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glBindBuffer(GLenum target, GLuint buffer); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glBindFramebuffer(GLenum target, GLuint framebuffer); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glBindRenderbuffer(GLenum target, GLuint renderbuffer); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glBindTexture(GLenum target, GLuint texture); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glBlendEquation(GLenum mode); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glBlendFunc(GLenum sfactor, GLenum dfactor); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glBufferData(GLenum target, GLsizeiptr size, const void* data, GLenum usage); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const void* data); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL GLenum GL_APIENTRY glCheckFramebufferStatus(GLenum target); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glClear(GLbitfield mask); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glClearDepthf(GLclampf depth); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glClearStencil(GLint s); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glCompileShader(GLuint shader); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL GLuint GL_APIENTRY glCreateProgram(void); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL GLuint GL_APIENTRY glCreateShader(GLenum type); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glCullFace(GLenum mode); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glDeleteBuffers(GLsizei n, const GLuint* buffers); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glDeleteProgram(GLuint program); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glDeleteShader(GLuint shader); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glDeleteTextures(GLsizei n, const GLuint* textures); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glDepthFunc(GLenum func); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glDepthMask(GLboolean flag); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glDepthRangef(GLclampf zNear, GLclampf zFar); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glDetachShader(GLuint program, GLuint shader); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glDisable(GLenum cap); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glDisableVertexAttribArray(GLuint index); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glDrawArrays(GLenum mode, GLint first, GLsizei count); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glDrawElements(GLenum mode, GLsizei count, GLenum type, const void* indices); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glEnable(GLenum cap); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glEnableVertexAttribArray(GLuint index); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glFinish(void); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glFlush(void); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glFrontFace(GLenum mode); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glGenBuffers(GLsizei n, GLuint* buffers); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glGenerateMipmap(GLenum target); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glGenFramebuffers(GLsizei n, GLuint* framebuffers); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glGenRenderbuffers(GLsizei n, GLuint* renderbuffers); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glGenTextures(GLsizei n, GLuint* textures); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL int GL_APIENTRY glGetAttribLocation(GLuint program, const char* name); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glGetBooleanv(GLenum pname, GLboolean* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL GLenum GL_APIENTRY glGetError(void); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glGetFloatv(GLenum pname, GLfloat* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glGetIntegerv(GLenum pname, GLint* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glGetProgramiv(GLuint program, GLenum pname, GLint* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, char* infolog); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glGetShaderiv(GLuint shader, GLenum pname, GLint* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, char* infolog); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, char* source); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL const GLubyte* GL_APIENTRY glGetString(GLenum name); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glGetTexParameteriv(GLenum target, GLenum pname, GLint* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glGetUniformfv(GLuint program, GLint location, GLfloat* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glGetUniformiv(GLuint program, GLint location, GLint* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL int GL_APIENTRY glGetUniformLocation(GLuint program, const char* name); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glGetVertexAttribPointerv(GLuint index, GLenum pname, void** pointer); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glHint(GLenum target, GLenum mode); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL GLboolean GL_APIENTRY glIsBuffer(GLuint buffer); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL GLboolean GL_APIENTRY glIsEnabled(GLenum cap); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL GLboolean GL_APIENTRY glIsFramebuffer(GLuint framebuffer); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL GLboolean GL_APIENTRY glIsProgram(GLuint program); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL GLboolean GL_APIENTRY glIsRenderbuffer(GLuint renderbuffer); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL GLboolean GL_APIENTRY glIsShader(GLuint shader); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL GLboolean GL_APIENTRY glIsTexture(GLuint texture); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glLineWidth(GLfloat width); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glLinkProgram(GLuint program); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glPixelStorei(GLenum pname, GLint param); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glPolygonOffset(GLfloat factor, GLfloat units); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void* pixels); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glReleaseShaderCompiler(void); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glSampleCoverage(GLclampf value, GLboolean invert); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glScissor(GLint x, GLint y, GLsizei width, GLsizei height); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const void* binary, GLsizei length); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glShaderSource(GLuint shader, GLsizei count, const char** string, const GLint* length); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glStencilFunc(GLenum func, GLint ref, GLuint mask); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glStencilMask(GLuint mask); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glStencilMaskSeparate(GLenum face, GLuint mask); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void* pixels); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glTexParameterf(GLenum target, GLenum pname, GLfloat param); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glTexParameteri(GLenum target, GLenum pname, GLint param); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glTexParameteriv(GLenum target, GLenum pname, const GLint* params); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glUniform1f(GLint location, GLfloat x); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glUniform1fv(GLint location, GLsizei count, const GLfloat* v); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glUniform1i(GLint location, GLint x); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glUniform1iv(GLint location, GLsizei count, const GLint* v); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glUniform2f(GLint location, GLfloat x, GLfloat y); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glUniform2fv(GLint location, GLsizei count, const GLfloat* v); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glUniform2i(GLint location, GLint x, GLint y); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glUniform2iv(GLint location, GLsizei count, const GLint* v); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glUniform3fv(GLint location, GLsizei count, const GLfloat* v); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glUniform3i(GLint location, GLint x, GLint y, GLint z); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glUniform3iv(GLint location, GLsizei count, const GLint* v); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glUniform4fv(GLint location, GLsizei count, const GLfloat* v); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glUniform4iv(GLint location, GLsizei count, const GLint* v); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glUseProgram(GLuint program); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glValidateProgram(GLuint program); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glVertexAttrib1f(GLuint indx, GLfloat x); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glVertexAttrib1fv(GLuint indx, const GLfloat* values); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glVertexAttrib2fv(GLuint indx, const GLfloat* values); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glVertexAttrib3fv(GLuint indx, const GLfloat* values); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glVertexAttrib4fv(GLuint indx, const GLfloat* values); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* ptr); +/** + * You can find more details at the Khronos Group site: Khronos Group site - OpenGL(R) ES 2.0. + * + * @since 2.0 + */ +GL_APICALL void GL_APIENTRY glViewport(GLint x, GLint y, GLsizei width, GLsizei height); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __gl2_h_ */ diff --git a/inc/gl2ext.h b/inc/gl2ext.h new file mode 100644 index 0000000..bddf955 --- /dev/null +++ b/inc/gl2ext.h @@ -0,0 +1,656 @@ +#ifndef __gl2ext_h_ +#define __gl2ext_h_ + +#include "gl2platform.h" + +#if defined(FEATURE_SAMSUNG_LSI) && !defined(_WIN32) +#include "GLES2/GL2_OGL2.h" +#endif + + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This document is licensed under the SGI Free Software B License Version + * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . + */ + +#ifndef GL_APIENTRYP +#define GL_APIENTRYP GL_APIENTRY * +#endif + +#define GL_GLEXT_PROTOTYPES + +/*------------------------------------------------------------------------* + * OES extension tokens + *------------------------------------------------------------------------*/ + +/* GL_OES_compressed_ETC1_RGB8_texture */ +#ifndef GL_OES_compressed_ETC1_RGB8_texture +#define GL_ETC1_RGB8_OES 0x8D64 +#endif + +/* GL_OES_compressed_paletted_texture */ +#ifndef GL_OES_compressed_paletted_texture +#define GL_PALETTE4_RGB8_OES 0x8B90 +#define GL_PALETTE4_RGBA8_OES 0x8B91 +#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 +#define GL_PALETTE4_RGBA4_OES 0x8B93 +#define GL_PALETTE4_RGB5_A1_OES 0x8B94 +#define GL_PALETTE8_RGB8_OES 0x8B95 +#define GL_PALETTE8_RGBA8_OES 0x8B96 +#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 +#define GL_PALETTE8_RGBA4_OES 0x8B98 +#define GL_PALETTE8_RGB5_A1_OES 0x8B99 +#endif + +/* GL_OES_depth24 */ +#ifndef GL_OES_depth24 +#define GL_DEPTH_COMPONENT24_OES 0x81A6 +#endif + +/* GL_OES_depth32 */ +#ifndef GL_OES_depth32 +#define GL_DEPTH_COMPONENT32_OES 0x81A7 +#endif + +/* GL_OES_depth_texture */ +/* No new tokens introduced by this extension. */ + +/* GL_OES_EGL_image */ +#ifndef GL_OES_EGL_image +typedef void* GLeglImageOES; +#endif + +/* GL_OES_get_program_binary */ +#ifndef GL_OES_get_program_binary +#define GL_PROGRAM_BINARY_LENGTH_OES 0x8741 +#define GL_NUM_PROGRAM_BINARY_FORMATS_OES 0x87FE +#define GL_PROGRAM_BINARY_FORMATS_OES 0x87FF +#endif + +/* GL_OES_mapbuffer */ +#ifndef GL_OES_mapbuffer +#define GL_WRITE_ONLY_OES 0x88B9 +#define GL_BUFFER_ACCESS_OES 0x88BB +#define GL_BUFFER_MAPPED_OES 0x88BC +#define GL_BUFFER_MAP_POINTER_OES 0x88BD +#endif + +/* GL_OES_packed_depth_stencil */ +#ifndef GL_OES_packed_depth_stencil +#define GL_DEPTH_STENCIL_OES 0x84F9 +#define GL_UNSIGNED_INT_24_8_OES 0x84FA +#define GL_DEPTH24_STENCIL8_OES 0x88F0 +#endif + +/* GL_OES_rgb8_rgba8 */ +#ifndef GL_OES_rgb8_rgba8 +#define GL_RGB8_OES 0x8051 +#define GL_RGBA8_OES 0x8058 +#endif + +/* GL_OES_standard_derivatives */ +#ifndef GL_OES_standard_derivatives +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B +#endif + +/* GL_OES_stencil1 */ +#ifndef GL_OES_stencil1 +#define GL_STENCIL_INDEX1_OES 0x8D46 +#endif + +/* GL_OES_stencil4 */ +#ifndef GL_OES_stencil4 +#define GL_STENCIL_INDEX4_OES 0x8D47 +#endif + +/* GL_OES_texture3D */ +#ifndef GL_OES_texture3D +#define GL_TEXTURE_WRAP_R_OES 0x8072 +#define GL_TEXTURE_3D_OES 0x806F +#define GL_TEXTURE_BINDING_3D_OES 0x806A +#define GL_MAX_3D_TEXTURE_SIZE_OES 0x8073 +#define GL_SAMPLER_3D_OES 0x8B5F +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4 +#endif + +/* GL_OES_texture_half_float */ +#ifndef GL_OES_texture_half_float +#define GL_HALF_FLOAT_OES 0x8D61 +#endif + +/* GL_OES_vertex_half_float */ +/* GL_HALF_FLOAT_OES defined in GL_OES_texture_half_float already. */ + +/* GL_OES_vertex_type_10_10_10_2 */ +#ifndef GL_OES_vertex_type_10_10_10_2 +#define GL_UNSIGNED_INT_10_10_10_2_OES 0x8DF6 +#define GL_INT_10_10_10_2_OES 0x8DF7 +#endif + +/*------------------------------------------------------------------------* + * AMD extension tokens + *------------------------------------------------------------------------*/ + +/* GL_AMD_compressed_3DC_texture */ +#ifndef GL_AMD_compressed_3DC_texture +#define GL_3DC_X_AMD 0x87F9 +#define GL_3DC_XY_AMD 0x87FA +#endif + +/* GL_AMD_compressed_ATC_texture */ +#ifndef GL_AMD_compressed_ATC_texture +#define GL_ATC_RGB_AMD 0x8C92 +#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93 +#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE +#endif + +/* GL_AMD_program_binary_Z400 */ +#ifndef GL_AMD_program_binary_Z400 +#define GL_Z400_BINARY_AMD 0x8740 +#endif + +/* GL_AMD_performance_monitor */ +#ifndef GL_AMD_performance_monitor +#define GL_COUNTER_TYPE_AMD 0x8BC0 +#define GL_COUNTER_RANGE_AMD 0x8BC1 +#define GL_UNSIGNED_INT64_AMD 0x8BC2 +#define GL_PERCENTAGE_AMD 0x8BC3 +#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 +#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 +#define GL_PERFMON_RESULT_AMD 0x8BC6 +#endif + +/*------------------------------------------------------------------------* + * EXT extension tokens + *------------------------------------------------------------------------*/ + +/* GL_EXT_texture_filter_anisotropic */ +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF +#endif + +/* GL_EXT_texture_type_2_10_10_10_REV */ +#ifndef GL_EXT_texture_type_2_10_10_10_REV +#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368 +#endif + +/* GL_EXT_texture_format_BGRA8888 */ +#ifndef GL_EXT_texture_format_BGRA8888 +#define GL_BGRA 0x80E1 +#endif + +/*------------------------------------------------------------------------* + * IMG extension tokens + *------------------------------------------------------------------------*/ + +/* GL_IMG_read_format */ +#ifndef GL_IMG_read_format +#define GL_BGRA 0x80E1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 +#endif + +/* GL_IMG_texture_compression_pvrtc */ +#ifndef GL_IMG_texture_compression_pvrtc +#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00 +#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02 +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03 +#endif + +/*------------------------------------------------------------------------* + * NV extension tokens + *------------------------------------------------------------------------*/ + +/* GL_NV_fence */ +#ifndef GL_NV_fence +#define GL_ALL_COMPLETED_NV 0x84F2 +#define GL_FENCE_STATUS_NV 0x84F3 +#define GL_FENCE_CONDITION_NV 0x84F4 +#endif + +/*------------------------------------------------------------------------* + * QCOM extension tokens + *------------------------------------------------------------------------*/ + +/* GL_QCOM_driver_control */ +/* No new tokens introduced by this extension. */ + +/* GL_QCOM_perfmon_global_mode */ +#ifndef GL_QCOM_perfmon_global_mode +#define GL_PERFMON_GLOBAL_MODE_QCOM 0x8FA0 +#endif + +/*------------------------------------------------------------------------* + * End of extension tokens, start of corresponding extension functions + *------------------------------------------------------------------------*/ + +/*------------------------------------------------------------------------* + * OES extension functions + *------------------------------------------------------------------------*/ + +/* GL_OES_compressed_ETC1_RGB8_texture */ +#ifndef GL_OES_compressed_ETC1_RGB8_texture +#define GL_OES_compressed_ETC1_RGB8_texture 1 +#endif + +/* GL_OES_compressed_paletted_texture */ +#ifndef GL_OES_compressed_paletted_texture +#define GL_OES_compressed_paletted_texture 1 +#endif + +/* GL_OES_EGL_image */ +#ifndef GL_OES_EGL_image +#define GL_OES_EGL_image 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image); +GL_APICALL void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image); +#endif +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC)(GLenum target, GLeglImageOES image); +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC)(GLenum target, GLeglImageOES image); +#endif + +/* GL_OES_depth24 */ +#ifndef GL_OES_depth24 +#define GL_OES_depth24 1 +#endif + +/* GL_OES_depth32 */ +#ifndef GL_OES_depth32 +#define GL_OES_depth32 1 +#endif + +/* GL_OES_depth_texture */ +#ifndef GL_OES_depth_texture +#define GL_OES_depth_texture 1 +#endif + +/* GL_OES_element_index_uint */ +#ifndef GL_OES_element_index_uint +#define GL_OES_element_index_uint 1 +#endif + +/* GL_OES_fbo_render_mipmap */ +#ifndef GL_OES_fbo_render_mipmap +#define GL_OES_fbo_render_mipmap 1 +#endif + +/* GL_OES_fragment_precision_high */ +#ifndef GL_OES_fragment_precision_high +#define GL_OES_fragment_precision_high 1 +#endif + +/* GL_OES_get_program_binary */ +#ifndef GL_OES_get_program_binary +#define GL_OES_get_program_binary 1 +#if 0 // not supported +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetProgramBinaryOES(GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, void* binary); +GL_APICALL void GL_APIENTRY glProgramBinaryOES(GLuint program, GLenum binaryFormat, const void* binary, GLint length); +#endif +#endif // not supported +typedef void (GL_APIENTRYP PFNGLGETPROGRAMBINARYOESPROC)(GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, + void* binary); +typedef void (GL_APIENTRYP PFNGLPROGRAMBINARYOESPROC)(GLuint program, GLenum binaryFormat, const void* binary, GLint length); +#endif + +/* GL_OES_mapbuffer */ +#ifndef GL_OES_mapbuffer +#define GL_OES_mapbuffer 1 +#if 0 // not supported +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void* GL_APIENTRY glMapBufferOES(GLenum target, GLenum access); +GL_APICALL GLboolean GL_APIENTRY glUnmapBufferOES(GLenum target); +GL_APICALL void GL_APIENTRY glGetBufferPointervOES(GLenum target, GLenum pname, void** params); +#endif +#endif // not supported +typedef void* (GL_APIENTRYP PFNGLMAPBUFFEROESPROC)(GLenum target, GLenum access); +typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC)(GLenum target); +typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC)(GLenum target, GLenum pname, void** params); +#endif + +/* GL_OES_packed_depth_stencil */ +#ifndef GL_OES_packed_depth_stencil +#define GL_OES_packed_depth_stencil 1 +#endif + +/* GL_OES_rgb8_rgba8 */ +#ifndef GL_OES_rgb8_rgba8 +#define GL_OES_rgb8_rgba8 1 +#endif + +/* GL_OES_standard_derivatives */ +#ifndef GL_OES_standard_derivatives +#define GL_OES_standard_derivatives 1 +#endif + +/* GL_OES_stencil1 */ +#ifndef GL_OES_stencil1 +#define GL_OES_stencil1 1 +#endif + +/* GL_OES_stencil4 */ +#ifndef GL_OES_stencil4 +#define GL_OES_stencil4 1 +#endif + +/* GL_OES_texture_3D */ +#ifndef GL_OES_texture_3D +#define GL_OES_texture_3D 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void* pixels); +GL_APICALL void GL_APIENTRY glTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void* pixels); +GL_APICALL void GL_APIENTRY glCopyTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glCompressedTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void* data); +GL_APICALL void GL_APIENTRY glCompressedTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void* data); +GL_APICALL void GL_APIENTRY glFramebufferTexture3DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +#endif +typedef void (GL_APIENTRYP PFNGLTEXIMAGE3DOESPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, + const GLvoid* pixels); +typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE3DOESPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, + const void* pixels); +typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE3DOESPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, + GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DOESPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, + const void* data); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, + GLenum format, GLsizei imageSize, const void* data); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DOES)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, + GLint level, GLint zoffset); +#endif + +/* GL_OES_texture_float_linear */ +#ifndef GL_OES_texture_float_linear +#define GL_OES_texture_float_linear 1 +#endif + +/* GL_OES_texture_half_float_linear */ +#ifndef GL_OES_texture_half_float_linear +#define GL_OES_texture_half_float_linear 1 +#endif + +/* GL_OES_texture_float */ +#ifndef GL_OES_texture_float +#define GL_OES_texture_float 1 +#endif + +/* GL_OES_texture_half_float */ +#ifndef GL_OES_texture_half_float +#define GL_OES_texture_half_float 1 +#endif + +/* GL_OES_texture_npot */ +#ifndef GL_OES_texture_npot +#define GL_OES_texture_npot 1 +#endif + +/* GL_OES_vertex_half_float */ +#ifndef GL_OES_vertex_half_float +#define GL_OES_vertex_half_float 1 +#endif + +/* GL_OES_vertex_type_10_10_10_2 */ +#ifndef GL_OES_vertex_type_10_10_10_2 +#define GL_OES_vertex_type_10_10_10_2 1 +#endif + +/*------------------------------------------------------------------------* + * AMD extension functions + *------------------------------------------------------------------------*/ + +/* GL_AMD_compressed_3DC_texture */ +#ifndef GL_AMD_compressed_3DC_texture +#define GL_AMD_compressed_3DC_texture 1 +#endif + +/* GL_AMD_compressed_ATC_texture */ +#ifndef GL_AMD_compressed_ATC_texture +#define GL_AMD_compressed_ATC_texture 1 +#endif + +/* GL_AMD_program_binary_Z400 */ +#ifndef GL_AMD_program_binary_Z400 +#define GL_AMD_program_binary_Z400 1 +#endif + +/* AMD_performance_monitor */ +#ifndef GL_AMD_performance_monitor +#define GL_AMD_performance_monitor 1 +#if 0 // not supported +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupsAMD(GLint* numGroups, GLsizei groupsSize, GLuint* groups); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCountersAMD(GLuint group, GLint* numCounters, GLint* maxActiveCounters, GLsizei counterSize, GLuint* counters); +GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupStringAMD(GLuint group, GLsizei bufSize, GLsizei* length, char* groupString); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterStringAMD(GLuint group, GLuint counter, GLsizei bufSize, GLsizei* length, char* counterString); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterInfoAMD(GLuint group, GLuint counter, GLenum pname, void* data); +GL_APICALL void GL_APIENTRY glGenPerfMonitorsAMD(GLsizei n, GLuint* monitors); +GL_APICALL void GL_APIENTRY glDeletePerfMonitorsAMD(GLsizei n, GLuint* monitors); +GL_APICALL void GL_APIENTRY glSelectPerfMonitorCountersAMD(GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint* countersList); +GL_APICALL void GL_APIENTRY glBeginPerfMonitorAMD(GLuint monitor); +GL_APICALL void GL_APIENTRY glEndPerfMonitorAMD(GLuint monitor); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterDataAMD(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint* data, GLint* bytesWritten); +#endif +#endif // not supported +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC)(GLint* numGroups, GLsizei groupsSize, GLuint* groups); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC)(GLuint group, GLint* numCounters, GLint* maxActiveCounters, + GLsizei counterSize, GLuint* counters); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC)(GLuint group, GLsizei bufSize, GLsizei* length, + char* groupString); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC)(GLuint group, GLuint counter, GLsizei bufSize, + GLsizei* length, char* counterString); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC)(GLuint group, GLuint counter, GLenum pname, void* data); +typedef void (GL_APIENTRYP PFNGLGENPERFMONITORSAMDPROC)(GLsizei n, GLuint* monitors); +typedef void (GL_APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC)(GLsizei n, GLuint* monitors); +typedef void (GL_APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC)(GLuint monitor, GLboolean enable, GLuint group, + GLint numCounters, GLuint* countersList); +typedef void (GL_APIENTRYP PFNGLBEGINPERFMONITORAMDPROC)(GLuint monitor); +typedef void (GL_APIENTRYP PFNGLENDPERFMONITORAMDPROC)(GLuint monitor); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC)(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint* data, + GLint* bytesWritten); +#endif + +/*------------------------------------------------------------------------* + * EXT extension functions + *------------------------------------------------------------------------*/ + +/* GL_EXT_texture_filter_anisotropic */ +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_EXT_texture_filter_anisotropic 1 +#endif + +/* GL_EXT_texture_type_2_10_10_10_REV */ +#ifndef GL_EXT_texture_type_2_10_10_10_REV +#define GL_EXT_texture_type_2_10_10_10_REV 1 +#endif + +/* GL_EXT_texture_format_BGRA8888 */ +#ifndef GL_EXT_texture_format_BGRA8888 +#define GL_EXT_texture_format_BGRA8888 1 +#endif + +/*------------------------------------------------------------------------* + * IMG extension functions + *------------------------------------------------------------------------*/ + +/* GL_IMG_read_format */ +#ifndef GL_IMG_read_format +#define GL_IMG_read_format 1 +#endif + +/* GL_IMG_texture_compression_pvrtc */ +#ifndef GL_IMG_texture_compression_pvrtc +#define GL_IMG_texture_compression_pvrtc 1 +#endif + +/*------------------------------------------------------------------------* + * NV extension functions + *------------------------------------------------------------------------*/ + +/* GL_NV_fence */ +#ifndef GL_NV_fence +#define GL_NV_fence 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDeleteFencesNV(GLsizei, const GLuint*); +GL_APICALL void GL_APIENTRY glGenFencesNV(GLsizei, GLuint*); +GL_APICALL GLboolean GL_APIENTRY glIsFenceNV(GLuint); +GL_APICALL GLboolean GL_APIENTRY glTestFenceNV(GLuint); +GL_APICALL void GL_APIENTRY glGetFenceivNV(GLuint, GLenum, GLint*); +GL_APICALL void GL_APIENTRY glFinishFenceNV(GLuint); +GL_APICALL void GL_APIENTRY glSetFenceNV(GLuint, GLenum); +#endif +typedef void (GL_APIENTRYP PFNGLDELETEFENCESNVPROC)(GLsizei n, const GLuint* fences); +typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC)(GLsizei n, GLuint* fences); +typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC)(GLuint fence); +typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC)(GLuint fence); +typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC)(GLuint fence, GLenum pname, GLint* params); +typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC)(GLuint fence); +typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC)(GLuint fence, GLenum condition); +#endif + +/*------------------------------------------------------------------------* + * QCOM extension functions + *------------------------------------------------------------------------*/ + +/* GL_QCOM_driver_control */ +#ifndef GL_QCOM_driver_control +#define GL_QCOM_driver_control 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetDriverControlsQCOM(GLint* num, GLsizei size, GLuint* driverControls); +GL_APICALL void GL_APIENTRY glGetDriverControlStringQCOM(GLuint driverControl, GLsizei bufSize, GLsizei* length, char* driverControlString); +GL_APICALL void GL_APIENTRY glEnableDriverControlQCOM(GLuint driverControl); +GL_APICALL void GL_APIENTRY glDisableDriverControlQCOM(GLuint driverControl); +#endif +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC)(GLint* num, GLsizei size, GLuint* driverControls); +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC)(GLuint driverControl, GLsizei bufSize, GLsizei* length, + char* driverControlString); +typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC)(GLuint driverControl); +typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC)(GLuint driverControl); +#endif + +/* GL_QCOM_perfmon_global_mode */ +#ifndef GL_QCOM_perfmon_global_mode +#define GL_QCOM_perfmon_global_mode 1 +#endif + +/*------------------------------------------------------------------------* + * Samsung extension functions + *------------------------------------------------------------------------*/ + +#define GL_BGRA 0x80E1 + +/* Binary Shader(C110) */ +#define GL_S5PC110_BINARY_SHADER 0x8C0A + +/* ErrorCode */ +#define GL_STACK_OVERFLOW 0x0503 +#define GL_STACK_UNDERFLOW 0x0504 + +/* Get PName */ +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_MAX_TEXTURE_UNITS 0x84E2 + +//sanvd added this extension for supporting s3tc +//OES_texture_compression_S3TC +#define GL_RGB_S3TC_OES 0x83F0 +#define GL_RGBA_S3TC_OES 0x83F1 + +/* PointSize */ +#define GL_POINT_SIZE 0x0B11 +#define GL_POINT_SIZE_MIN 0x8126 +#define GL_POINT_SIZE_MAX 0x8127 + +GL_APICALL void GL_APIENTRY glPointSize(GLfloat size); + + +/* EN_EXT */ +#define EN_EXT_ALPHA_TEST_EXP +#define EN_EXT_VARYING_INTERPOLATION_EXP +#define EN_EXT_LOGIC_OP_EXP +#define EN_EXT_POINT_SPRITE_EXP + +#ifdef EN_EXT_ALPHA_TEST_EXP +#define GL_ALPHA_TEST_EXP 0x0BC0 +#define GL_ALPHA_TEST_FUNC_EXP 0x0BC1 +#define GL_ALPHA_TEST_REF_EXP 0x0BC2 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glAlphaFuncEXP(GLenum func, GLclampf ref); +#else +typedef void (GL_APIENTRYP PFNGLALPHAFUNCPROC)(GLenum func, GLclampf ref); +#endif +#endif //EN_EXT_ALPHA_TEST_EXP + +#ifdef EN_EXT_VARYING_INTERPOLATION_EXP +#define GL_FLAT_EXP 0x1D00 +#define GL_SMOOTH_EXP 0x1D01 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glVaryingInterpolationEXP(const char* name, GLenum mode); +GL_APICALL void GL_APIENTRY glGetVaryingInterpolationEXP(const char* name, GLint* params); +#else +typedef void (GL_APIENTRYP PFNGLVARYINGINTERPOLATIONPROC)(const char* name, GLenum mode); +typedef void (GL_APIENTRYP PFNGLGETVARYINGINTERPOLATIONPROC)(const char* name, GLint* params); +#endif +#endif //EN_EXT_VARYING_INTERPOLATION_EXP + +#ifdef EN_EXT_LOGIC_OP_EXP +#define GL_LOGIC_OP_MODE_EXP 0x0BF0 +#define GL_COLOR_LOGIC_OP_EXP 0x0BF2 +#define GL_CLEAR_EXP 0x1500 +#define GL_AND_EXP 0x1501 +#define GL_AND_REVERSE_EXP 0x1502 +#define GL_COPY_EXP 0x1503 +#define GL_AND_INVERTED_EXP 0x1504 +#define GL_NOOP_EXP 0x1505 +#define GL_XOR_EXP 0x1506 +#define GL_OR_EXP 0x1507 +#define GL_NOR_EXP 0x1508 +#define GL_EQUIV_EXP 0x1509 +#define GL_INVERT_EXP 0x150A +#define GL_OR_REVERSE_EXP 0x150B +#define GL_COPY_INVERTED_EXP 0x150C +#define GL_OR_INVERTED_EXP 0x150D +#define GL_NAND_EXP 0x150E +#define GL_SET_EXP 0x150F +#endif //EN_EXT_LOGIC_OP_EXP + +#ifdef EN_EXT_ALPHA_TEST_EXP +#define GL_ALPHA_TEST_EXP 0x0BC0 +#define GL_ALPHA_TEST_FUNC_EXP 0x0BC1 +#define GL_ALPHA_TEST_REF_EXP 0x0BC2 +#endif //EN_EXT_ALPHA_TEST_EXP + +#ifdef EN_EXT_POINT_SPRITE_EXP +#define GL_POINT_SPRITE_OES_EXP 0x8861 +#endif + +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glLogicOpEXP(GLenum op); +#else +typedef void (GL_APIENTRYP PFNGLLOGICOPPROC)(GLenum op); +#endif + +/* zepplin 2008.05.08 added */ +GL_APICALL void GL_APIENTRY glDrawArraysWrap(GLenum mode, GLint first, GLsizei count, GLint MatPos, const GLfloat* Matdt, /*GLsizei MatSize, GLboolean MatBool,*/ + GLint BoolPos, GLint Boolptr, GLuint shaderNum, void* shaderStr); +GL_APICALL void GL_APIENTRY glDrawElementsWrap(GLenum mode, GLsizei count, GLenum type, const void* indices, GLint MatPos, const GLfloat* Matdt, /*GLsizei MatSize, GLboolean MatBool,*/ + GLint BoolPos, GLint Boolptr, GLuint shaderNum, void* shaderStr); + + +#ifdef CHIP_VERIFY_ACTIVATE +GL_APICALL GLuint GL_APIENTRY glChipVerification(GLuint key); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __gl2ext_h_ */ diff --git a/inc/gl2macro.h b/inc/gl2macro.h new file mode 100644 index 0000000..0ba3a9b --- /dev/null +++ b/inc/gl2macro.h @@ -0,0 +1,164 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#ifndef _GL2_MACRO_H_ +#define _GL2_MACRO_H_ + +#define glActiveTexture _GlActiveTexture_2 +#define glAttachShader _GlAttachShader_2 +#define glBindAttribLocation _GlBindAttribLocation_2 +#define glBindBuffer _GlBindBuffer_2 +#define glBindFramebuffer _GlBindFramebuffer_2 +#define glBindRenderbuffer _GlBindRenderbuffer_2 +#define glBindTexture _GlBindTexture_2 +#define glBlendColor _GlBlendColor_2 +#define glBlendEquation _GlBlendEquation_2 +#define glBlendEquationSeparate _GlBlendEquationSeparate_2 +#define glBlendFunc _GlBlendFunc_2 +#define glBlendFuncSeparate _GlBlendFuncSeparate_2 +#define glBufferData _GlBufferData_2 +#define glBufferSubData _GlBufferSubData_2 +#define glCheckFramebufferStatus _GlCheckFramebufferStatus_2 +#define glClear _GlClear_2 +#define glClearColor _GlClearColor_2 +#define glClearDepthf _GlClearDepthf_2 +#define glClearStencil _GlClearStencil_2 +#define glColorMask _GlColorMask_2 +#define glCompileShader _GlCompileShader_2 +#define glCompressedTexImage2D _GlCompressedTexImage2D_2 +#define glCompressedTexSubImage2D _GlCompressedTexSubImage2D_2 +#define glCopyTexImage2D _GlCopyTexImage2D_2 +#define glCopyTexSubImage2D _GlCopyTexSubImage2D_2 +#define glCreateProgram _GlCreateProgram_2 +#define glCreateShader _GlCreateShader_2 +#define glCullFace _GlCullFace_2 +#define glDeleteBuffers _GlDeleteBuffers_2 +#define glDeleteFramebuffers _GlDeleteFramebuffers_2 +#define glDeleteProgram _GlDeleteProgram_2 +#define glDeleteRenderbuffers _GlDeleteRenderbuffers_2 +#define glDeleteShader _GlDeleteShader_2 +#define glDeleteTextures _GlDeleteTextures_2 +#define glDepthFunc _GlDepthFunc_2 +#define glDepthMask _GlDepthMask_2 +#define glDepthRangef _GlDepthRangef_2 +#define glDetachShader _GlDetachShader_2 +#define glDisable _GlDisable_2 +#define glDisableVertexAttribArray _GlDisableVertexAttribArray_2 +#define glDrawArrays _GlDrawArrays_2 +#define glDrawElements _GlDrawElements_2 +#define glEnable _GlEnable_2 +#define glEnableVertexAttribArray _GlEnableVertexAttribArray_2 +#define glFinish _GlFinish_2 +#define glFlush _GlFlush_2 +#define glFramebufferRenderbuffer _GlFramebufferRenderbuffer_2 +#define glFramebufferTexture2D _GlFramebufferTexture2D_2 +#define glFrontFace _GlFrontFace_2 +#define glGenBuffers _GlGenBuffers_2 +#define glGenerateMipmap _GlGenerateMipmap_2 +#define glGenFramebuffers _GlGenFramebuffers_2 +#define glGenRenderbuffers _GlGenRenderbuffers_2 +#define glGenTextures _GlGenTextures_2 +#define glGetActiveAttrib _GlGetActiveAttrib_2 +#define glGetActiveUniform _GlGetActiveUniform_2 +#define glGetAttachedShaders _GlGetAttachedShaders_2 +#define glGetAttribLocation _GlGetAttribLocation_2 +#define glGetBooleanv _GlGetBooleanv_2 +#define glGetBufferParameteriv _GlGetBufferParameteriv_2 +#define glGetError _GlGetError_2 +#define glGetFloatv _GlGetFloatv_2 +#define glGetFramebufferAttachmentParameteriv _GlGetFramebufferAttachmentParameteriv_2 +#define glGetIntegerv _GlGetIntegerv_2 +#define glGetProgramiv _GlGetProgramiv_2 +#define glGetProgramInfoLog _GlGetProgramInfoLog_2 +#define glGetRenderbufferParameteriv _GlGetRenderbufferParameteriv_2 +#define glGetShaderiv _GlGetShaderiv_2 +#define glGetShaderInfoLog _GlGetShaderInfoLog_2 +#define glGetShaderPrecisionFormat _GlGetShaderPrecisionFormat_2 +#define glGetShaderSource _GlGetShaderSource_2 +#define glGetString _GlGetString_2 +#define glGetTexParameterfv _GlGetTexParameterfv_2 +#define glGetTexParameteriv _GlGetTexParameteriv_2 +#define glGetUniformfv _GlGetUniformfv_2 +#define glGetUniformiv _GlGetUniformiv_2 +#define glGetUniformLocation _GlGetUniformLocation_2 +#define glGetVertexAttribfv _GlGetVertexAttribfv_2 +#define glGetVertexAttribiv _GlGetVertexAttribiv_2 +#define glGetVertexAttribPointerv _GlGetVertexAttribPointerv_2 +#define glHint _GlHint_2 +#define glIsBuffer _GlIsBuffer_2 +#define glIsEnabled _GlIsEnabled_2 +#define glIsFramebuffer _GlIsFramebuffer_2 +#define glIsProgram _GlIsProgram_2 +#define glIsRenderbuffer _GlIsRenderbuffer_2 +#define glIsShader _GlIsShader_2 +#define glIsTexture _GlIsTexture_2 +#define glLineWidth _GlLineWidth_2 +#define glLinkProgram _GlLinkProgram_2 +#define glPixelStorei _GlPixelStorei_2 +#define glPolygonOffset _GlPolygonOffset_2 +#define glReadPixels _GlReadPixels_2 +#define glReleaseShaderCompiler _GlReleaseShaderCompiler_2 +#define glRenderbufferStorage _GlRenderbufferStorage_2 +#define glSampleCoverage _GlSampleCoverage_2 +#define glScissor _GlScissor_2 +#define glShaderBinary _GlShaderBinary_2 +#define glShaderSource _GlShaderSource_2 +#define glStencilFunc _GlStencilFunc_2 +#define glStencilFuncSeparate _GlStencilFuncSeparate_2 +#define glStencilMask _GlStencilMask_2 +#define glStencilMaskSeparate _GlStencilMaskSeparate_2 +#define glStencilOp _GlStencilOp_2 +#define glStencilOpSeparate _GlStencilOpSeparate_2 +#define glTexImage2D _GlTexImage2D_2 +#define glTexParameterf _GlTexParameterf_2 +#define glTexParameterfv _GlTexParameterfv_2 +#define glTexParameteri _GlTexParameteri_2 +#define glTexParameteriv _GlTexParameteriv_2 +#define glTexSubImage2D _GlTexSubImage2D_2 +#define glUniform1i _GlUniform1i_2 +#define glUniform2i _GlUniform2i_2 +#define glUniform3i _GlUniform3i_2 +#define glUniform4i _GlUniform4i_2 +#define glUniform1f _GlUniform1f_2 +#define glUniform2f _GlUniform2f_2 +#define glUniform3f _GlUniform3f_2 +#define glUniform4f _GlUniform4f_2 +#define glUniform1iv _GlUniform1iv_2 +#define glUniform2iv _GlUniform2iv_2 +#define glUniform3iv _GlUniform3iv_2 +#define glUniform4iv _GlUniform4iv_2 +#define glUniform1fv _GlUniform1fv_2 +#define glUniform2fv _GlUniform2fv_2 +#define glUniform3fv _GlUniform3fv_2 +#define glUniform4fv _GlUniform4fv_2 +#define glUniformMatrix2fv _GlUniformMatrix2fv_2 +#define glUniformMatrix3fv _GlUniformMatrix3fv_2 +#define glUniformMatrix4fv _GlUniformMatrix4fv_2 +#define glUseProgram _GlUseProgram_2 +#define glValidateProgram _GlValidateProgram_2 +#define glVertexAttrib1f _GlVertexAttrib1f_2 +#define glVertexAttrib2f _GlVertexAttrib2f_2 +#define glVertexAttrib3f _GlVertexAttrib3f_2 +#define glVertexAttrib4f _GlVertexAttrib4f_2 +#define glVertexAttrib1fv _GlVertexAttrib1fv_2 +#define glVertexAttrib2fv _GlVertexAttrib2fv_2 +#define glVertexAttrib3fv _GlVertexAttrib3fv_2 +#define glVertexAttrib4fv _GlVertexAttrib4fv_2 +#define glVertexAttribPointer _GlVertexAttribPointer_2 +#define glViewport _GlViewport_2 + +#endif // _GL2_MACRO_H_ diff --git a/inc/gl2platform.h b/inc/gl2platform.h new file mode 100644 index 0000000..84ecbb6 --- /dev/null +++ b/inc/gl2platform.h @@ -0,0 +1,28 @@ +#ifndef __gl2platform_h_ +#define __gl2platform_h_ + + +/* + * This document is licensed under the SGI Free Software B License Version + * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . + */ + +/* Platform-specific types and definitions for OpenGL ES 2.X gl2.h + * Last modified on 2008/12/19 + * + * Adopters may modify khrplatform.h and this file to suit their platform. + * You are encouraged to submit all modifications to the Khronos group so that + * they can be included in future versions of this file. Please submit changes + * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) + * by filing a bug against product "OpenGL-ES" component "Registry". + */ + +#include "khrplatform.h" + +#ifndef GL_APICALL +#define GL_APICALL KHRONOS_APICALL +#endif + +#define GL_APIENTRY //KHRONOS_APIENTRY + +#endif /* __gl2platform_h_ */ diff --git a/inc/glext.h b/inc/glext.h new file mode 100644 index 0000000..20fb4dd --- /dev/null +++ b/inc/glext.h @@ -0,0 +1,899 @@ +#ifndef __glext_h_ +#define __glext_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This document is licensed under the SGI Free Software B License Version + * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . + */ + +#ifndef GL_APIENTRYP +#define GL_APIENTRYP GL_APIENTRY * +#endif + +#define GL_GLEXT_PROTOTYPES + +/*------------------------------------------------------------------------* + * OES extension tokens + *------------------------------------------------------------------------*/ + +/* GL_OES_blend_equation_separate */ +#ifndef GL_OES_blend_equation_separate +/* BLEND_EQUATION_RGB_OES same as BLEND_EQUATION_OES */ +#define GL_BLEND_EQUATION_RGB_OES 0x8009 +#define GL_BLEND_EQUATION_ALPHA_OES 0x883D +#endif + +/* GL_OES_blend_func_separate */ +#ifndef GL_OES_blend_func_separate +#define GL_BLEND_DST_RGB_OES 0x80C8 +#define GL_BLEND_SRC_RGB_OES 0x80C9 +#define GL_BLEND_DST_ALPHA_OES 0x80CA +#define GL_BLEND_SRC_ALPHA_OES 0x80CB +#endif + +/* GL_OES_blend_subtract */ +#ifndef GL_OES_blend_subtract +#define GL_BLEND_EQUATION_OES 0x8009 +#define GL_FUNC_ADD_OES 0x8006 +#define GL_FUNC_SUBTRACT_OES 0x800A +#define GL_FUNC_REVERSE_SUBTRACT_OES 0x800B +#endif + +/* GL_OES_compressed_ETC1_RGB8_texture */ +#ifndef GL_OES_compressed_ETC1_RGB8_texture +#define GL_ETC1_RGB8_OES 0x8D64 +#endif + +/* GL_OES_depth24 */ +#ifndef GL_OES_depth24 +#define GL_DEPTH_COMPONENT24_OES 0x81A6 +#endif + +/* GL_OES_depth32 */ +#ifndef GL_OES_depth32 +#define GL_DEPTH_COMPONENT32_OES 0x81A7 +#endif + +/* GL_OES_draw_texture */ +#ifndef GL_OES_draw_texture +#define GL_TEXTURE_CROP_RECT_OES 0x8B9D +#endif + +/* GL_OES_EGL_image */ +#ifndef GL_OES_EGL_image +typedef void* GLeglImageOES; +#endif + +/* GL_OES_fixed_point */ +#ifndef GL_OES_fixed_point +#define GL_FIXED_OES 0x140C +#endif + +/* GL_OES_framebuffer_object */ +#ifndef GL_OES_framebuffer_object +#define GL_NONE_OES 0 +#define GL_FRAMEBUFFER_OES 0x8D40 +#define GL_RENDERBUFFER_OES 0x8D41 +#define GL_RGBA4_OES 0x8056 +#define GL_RGB5_A1_OES 0x8057 +#define GL_RGB565_OES 0x8D62 +#define GL_DEPTH_COMPONENT16_OES 0x81A5 +#define GL_RENDERBUFFER_WIDTH_OES 0x8D42 +#define GL_RENDERBUFFER_HEIGHT_OES 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT_OES 0x8D44 +#define GL_RENDERBUFFER_RED_SIZE_OES 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE_OES 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE_OES 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE_OES 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE_OES 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE_OES 0x8D55 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES 0x8CD3 +#define GL_COLOR_ATTACHMENT0_OES 0x8CE0 +#define GL_DEPTH_ATTACHMENT_OES 0x8D00 +#define GL_STENCIL_ATTACHMENT_OES 0x8D20 +#define GL_FRAMEBUFFER_COMPLETE_OES 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES 0x8CD9 +#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES 0x8CDA +#define GL_FRAMEBUFFER_UNSUPPORTED_OES 0x8CDD +#define GL_FRAMEBUFFER_BINDING_OES 0x8CA6 +#define GL_RENDERBUFFER_BINDING_OES 0x8CA7 +#define GL_MAX_RENDERBUFFER_SIZE_OES 0x84E8 +#define GL_INVALID_FRAMEBUFFER_OPERATION_OES 0x0506 +#endif + +/* GL_OES_mapbuffer */ +#ifndef GL_OES_mapbuffer +#define GL_WRITE_ONLY_OES 0x88B9 +#define GL_BUFFER_ACCESS_OES 0x88BB +#define GL_BUFFER_MAPPED_OES 0x88BC +#define GL_BUFFER_MAP_POINTER_OES 0x88BD +#endif + +/* GL_OES_matrix_get */ +#ifndef GL_OES_matrix_get +#define GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES 0x898D +#define GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES 0x898E +#define GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES 0x898F +#endif + +/* GL_OES_matrix_palette */ +#ifndef _WIN32 // _WIN32 +#ifndef GL_OES_matrix_palette +#define GL_MAX_VERTEX_UNITS_OES 0x86A4 +#define GL_MAX_PALETTE_MATRICES_OES 0x8842 +#define GL_MATRIX_PALETTE_OES 0x8840 +#define GL_MATRIX_INDEX_ARRAY_OES 0x8844 +#define GL_WEIGHT_ARRAY_OES 0x86AD +#define GL_CURRENT_PALETTE_MATRIX_OES 0x8843 +#define GL_MATRIX_INDEX_ARRAY_SIZE_OES 0x8846 +#define GL_MATRIX_INDEX_ARRAY_TYPE_OES 0x8847 +#define GL_MATRIX_INDEX_ARRAY_STRIDE_OES 0x8848 +#define GL_MATRIX_INDEX_ARRAY_POINTER_OES 0x8849 +#define GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES 0x8B9E +#define GL_WEIGHT_ARRAY_SIZE_OES 0x86AB +#define GL_WEIGHT_ARRAY_TYPE_OES 0x86A9 +#define GL_WEIGHT_ARRAY_STRIDE_OES 0x86AA +#define GL_WEIGHT_ARRAY_POINTER_OES 0x86AC +#define GL_WEIGHT_ARRAY_BUFFER_BINDING_OES 0x889E +#endif +#endif //_WIN32 + +/* GL_OES_packed_depth_stencil */ +#ifndef GL_OES_packed_depth_stencil +#define GL_DEPTH_STENCIL_OES 0x84F9 +#define GL_UNSIGNED_INT_24_8_OES 0x84FA +#define GL_DEPTH24_STENCIL8_OES 0x88F0 +#endif + +/* GL_OES_rgb8_rgba8 */ +#ifndef GL_OES_rgb8_rgba8 +#define GL_RGB8_OES 0x8051 +#define GL_RGBA8_OES 0x8058 +#endif + +/* GL_OES_stencil1 */ +#ifndef GL_OES_stencil1 +#define GL_STENCIL_INDEX1_OES 0x8D46 +#endif + +/* GL_OES_stencil4 */ +#ifndef GL_OES_stencil4 +#define GL_STENCIL_INDEX4_OES 0x8D47 +#endif + +/* GL_OES_stencil8 */ +#ifndef GL_OES_stencil8 +#define GL_STENCIL_INDEX8_OES 0x8D48 +#endif + +/* GL_OES_stencil_wrap */ +#ifndef GL_OES_stencil_wrap +#define GL_INCR_WRAP_OES 0x8507 +#define GL_DECR_WRAP_OES 0x8508 +#endif + +/* GL_OES_texture_cube_map */ +#ifndef GL_OES_texture_cube_map +#define GL_NORMAL_MAP_OES 0x8511 +#define GL_REFLECTION_MAP_OES 0x8512 +#define GL_TEXTURE_CUBE_MAP_OES 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP_OES 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES 0x851A +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES 0x851C +#define GL_TEXTURE_GEN_MODE_OES 0x2500 +#define GL_TEXTURE_GEN_STR_OES 0x8D60 +#endif + +/* GL_OES_texture_mirrored_repeat */ +#ifndef GL_OES_texture_mirrored_repeat +#define GL_MIRRORED_REPEAT_OES 0x8370 +#endif + +/*------------------------------------------------------------------------* + * AMD extension tokens + *------------------------------------------------------------------------*/ + +/* GL_AMD_compressed_3DC_texture */ +#ifndef GL_AMD_compressed_3DC_texture +#define GL_3DC_X_AMD 0x87F9 +#define GL_3DC_XY_AMD 0x87FA +#endif + +/* GL_AMD_compressed_ATC_texture */ +#ifndef GL_AMD_compressed_ATC_texture +#define GL_ATC_RGB_AMD 0x8C92 +#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93 +#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE +#endif + +/*------------------------------------------------------------------------* + * EXT extension tokens + *------------------------------------------------------------------------*/ + +/* GL_EXT_texture_filter_anisotropic */ +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF +#endif + +/* GL_EXT_texture_format_BGRA8888 */ +#ifndef GL_EXT_texture_format_BGRA8888 +#define GL_BGRA 0x80E1 +#endif + +/*------------------------------------------------------------------------* + * IMG extension tokens + *------------------------------------------------------------------------*/ + +/* GL_IMG_read_format */ +#ifndef GL_IMG_read_format +#define GL_BGRA 0x80E1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 +#endif + +/* GL_IMG_texture_compression_pvrtc */ +#ifndef GL_IMG_texture_compression_pvrtc +#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00 +#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02 +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03 +#endif + +/* GL_IMG_user_clip_plane */ +#ifndef GL_IMG_user_clip_plane +#define GL_CLIP_PLANE0_IMG 0x3000 +#define GL_CLIP_PLANE1_IMG 0x3001 +#define GL_CLIP_PLANE2_IMG 0x3002 +#define GL_CLIP_PLANE3_IMG 0x3003 +#define GL_CLIP_PLANE4_IMG 0x3004 +#define GL_CLIP_PLANE5_IMG 0x3005 +#define GL_MAX_CLIP_PLANES_IMG 0x0D32 +#endif + +/* GL_IMG_texture_env_enhanced_fixed_function */ +#ifndef GL_IMG_texture_env_enhanced_fixed_function +#define GL_MODULATE_COLOR_IMG 0x8C04 +#define GL_RECIP_ADD_SIGNED_ALPHA_IMG 0x8C05 +#define GL_TEXTURE_ALPHA_MODULATE_IMG 0x8C06 +#define GL_FACTOR_ALPHA_MODULATE_IMG 0x8C07 +#define GL_FRAGMENT_ALPHA_MODULATE_IMG 0x8C08 +#define GL_ADD_BLEND_IMG 0x8C09 +#define GL_DOT3_RGBA_IMG 0x86AF +#endif + +/*------------------------------------------------------------------------* + * NV extension tokens + *------------------------------------------------------------------------*/ + +/* GL_NV_fence */ +#ifndef GL_NV_fence +#define GL_ALL_COMPLETED_NV 0x84F2 +#define GL_FENCE_STATUS_NV 0x84F3 +#define GL_FENCE_CONDITION_NV 0x84F4 +#endif + +/*------------------------------------------------------------------------* + * QCOM extension tokens + *------------------------------------------------------------------------*/ + +/* GL_QCOM_driver_control */ +/* No new tokens introduced by this extension. */ + +/* GL_QCOM_perfmon_global_mode */ +#ifndef GL_QCOM_perfmon_global_mode +#define GL_PERFMON_GLOBAL_MODE_QCOM 0x8FA0 +#endif + +/*------------------------------------------------------------------------* + * End of extension tokens, start of corresponding extension functions + *------------------------------------------------------------------------*/ + +/*------------------------------------------------------------------------* + * OES extension functions + *------------------------------------------------------------------------*/ + +/* GL_OES_blend_equation_separate */ +#ifndef GL_OES_blend_equation_separate +#define GL_OES_blend_equation_separate 1 +#if 0 // not supported +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glBlendEquationSeparateOES(GLenum modeRGB, GLenum modeAlpha); +#endif +#endif // not supported +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEOESPROC)(GLenum modeRGB, GLenum modeAlpha); +#endif + +/* GL_OES_blend_func_separate */ +#ifndef GL_OES_blend_func_separate +#define GL_OES_blend_func_separate 1 +#if 0 // not supported +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glBlendFuncSeparateOES(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +#endif +#endif // not supported +typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEOESPROC)(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +#endif + +/* GL_OES_blend_subtract */ +#ifndef GL_OES_blend_subtract +#define GL_OES_blend_subtract 1 +#if 0 // not supported +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glBlendEquationOES(GLenum mode); +#endif +#endif // not supported +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONOESPROC)(GLenum mode); +#endif + +/* GL_OES_byte_coordinates */ +#ifndef GL_OES_byte_coordinates +#define GL_OES_byte_coordinates 1 +#endif + +/* GL_OES_compressed_ETC1_RGB8_texture */ +#ifndef GL_OES_compressed_ETC1_RGB8_texture +#define GL_OES_compressed_ETC1_RGB8_texture 1 +#endif + +/* GL_OES_depth24 */ +#ifndef GL_OES_depth24 +#define GL_OES_depth24 1 +#endif + +/* GL_OES_depth32 */ +#ifndef GL_OES_depth32 +#define GL_OES_depth32 1 +#endif + +/* GL_OES_draw_texture */ +#ifndef GL_OES_draw_texture +#define GL_OES_draw_texture 1 +#if 0 // not supported +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glDrawTexsOES(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height); +GL_API void GL_APIENTRY glDrawTexiOES(GLint x, GLint y, GLint z, GLint width, GLint height); +GL_API void GL_APIENTRY glDrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height); +GL_API void GL_APIENTRY glDrawTexsvOES(const GLshort* coords); +GL_API void GL_APIENTRY glDrawTexivOES(const GLint* coords); +GL_API void GL_APIENTRY glDrawTexxvOES(const GLfixed* coords); +GL_API void GL_APIENTRY glDrawTexfOES(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height); +GL_API void GL_APIENTRY glDrawTexfvOES(const GLfloat* coords); +#endif +#endif // not supported +typedef void (GL_APIENTRYP PFNGLDRAWTEXSOESPROC)(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height); +typedef void (GL_APIENTRYP PFNGLDRAWTEXIOESPROC)(GLint x, GLint y, GLint z, GLint width, GLint height); +typedef void (GL_APIENTRYP PFNGLDRAWTEXXOESPROC)(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height); +typedef void (GL_APIENTRYP PFNGLDRAWTEXSVOESPROC)(const GLshort* coords); +typedef void (GL_APIENTRYP PFNGLDRAWTEXIVOESPROC)(const GLint* coords); +typedef void (GL_APIENTRYP PFNGLDRAWTEXXVOESPROC)(const GLfixed* coords); +typedef void (GL_APIENTRYP PFNGLDRAWTEXFOESPROC)(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height); +typedef void (GL_APIENTRYP PFNGLDRAWTEXFVOESPROC)(const GLfloat* coords); +#endif + +/* GL_OES_EGL_image */ +#ifndef GL_OES_EGL_image +#define GL_OES_EGL_image 1 +#if 0 // not supported +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image); +GL_API void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image); +#endif +#endif // not supported +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC)(GLenum target, GLeglImageOES image); +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC)(GLenum target, GLeglImageOES image); +#endif + +/* GL_OES_element_index_uint */ +#ifndef GL_OES_element_index_uint +#define GL_OES_element_index_uint 1 +#endif + +/* GL_OES_extended_matrix_palette */ +#ifndef GL_OES_extended_matrix_palette +#define GL_OES_extended_matrix_palette 1 +#endif + +/* GL_OES_fbo_render_mipmap */ +#ifndef GL_OES_fbo_render_mipmap +#define GL_OES_fbo_render_mipmap 1 +#endif + +/* GL_OES_fixed_point */ +#ifndef GL_OES_fixed_point +#define GL_OES_fixed_point 1 +#if 0 // not supported +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glAlphaFuncxOES(GLenum func, GLclampx ref); +GL_API void GL_APIENTRY glClearColorxOES(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha); +GL_API void GL_APIENTRY glClearDepthxOES(GLclampx depth); +GL_API void GL_APIENTRY glClipPlanexOES(GLenum plane, const GLfixed* equation); +GL_API void GL_APIENTRY glColor4xOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +GL_API void GL_APIENTRY glDepthRangexOES(GLclampx zNear, GLclampx zFar); +GL_API void GL_APIENTRY glFogxOES(GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glFogxvOES(GLenum pname, const GLfixed* params); +GL_API void GL_APIENTRY glFrustumxOES(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); +GL_API void GL_APIENTRY glGetClipPlanexOES(GLenum pname, GLfixed eqn[4]); +GL_API void GL_APIENTRY glGetFixedvOES(GLenum pname, GLfixed* params); +GL_API void GL_APIENTRY glGetLightxvOES(GLenum light, GLenum pname, GLfixed* params); +GL_API void GL_APIENTRY glGetMaterialxvOES(GLenum face, GLenum pname, GLfixed* params); +GL_API void GL_APIENTRY glGetTexEnvxvOES(GLenum env, GLenum pname, GLfixed* params); +GL_API void GL_APIENTRY glGetTexParameterxvOES(GLenum target, GLenum pname, GLfixed* params); +GL_API void GL_APIENTRY glLightModelxOES(GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glLightModelxvOES(GLenum pname, const GLfixed* params); +GL_API void GL_APIENTRY glLightxOES(GLenum light, GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glLightxvOES(GLenum light, GLenum pname, const GLfixed* params); +GL_API void GL_APIENTRY glLineWidthxOES(GLfixed width); +GL_API void GL_APIENTRY glLoadMatrixxOES(const GLfixed* m); +GL_API void GL_APIENTRY glMaterialxOES(GLenum face, GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glMaterialxvOES(GLenum face, GLenum pname, const GLfixed* params); +GL_API void GL_APIENTRY glMultMatrixxOES(const GLfixed* m); +GL_API void GL_APIENTRY glMultiTexCoord4xOES(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q); +GL_API void GL_APIENTRY glNormal3xOES(GLfixed nx, GLfixed ny, GLfixed nz); +GL_API void GL_APIENTRY glOrthoxOES(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); +GL_API void GL_APIENTRY glPointParameterxOES(GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glPointParameterxvOES(GLenum pname, const GLfixed* params); +GL_API void GL_APIENTRY glPointSizexOES(GLfixed size); +GL_API void GL_APIENTRY glPolygonOffsetxOES(GLfixed factor, GLfixed units); +GL_API void GL_APIENTRY glRotatexOES(GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +GL_API void GL_APIENTRY glSampleCoveragexOES(GLclampx value, GLboolean invert); +GL_API void GL_APIENTRY glScalexOES(GLfixed x, GLfixed y, GLfixed z); +GL_API void GL_APIENTRY glTexEnvxOES(GLenum target, GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glTexEnvxvOES(GLenum target, GLenum pname, const GLfixed* params); +GL_API void GL_APIENTRY glTexParameterxOES(GLenum target, GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glTexParameterxvOES(GLenum target, GLenum pname, const GLfixed* params); +GL_API void GL_APIENTRY glTranslatexOES(GLfixed x, GLfixed y, GLfixed z); +#endif +#endif // not supported +typedef void (GL_APIENTRYP PFNGLALPHAFUNCXOESPROC)(GLenum func, GLclampx ref); +typedef void (GL_APIENTRYP PFNGLCLEARCOLORXOESPROC)(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha); +typedef void (GL_APIENTRYP PFNGLCLEARDEPTHXOESPROC)(GLclampx depth); +typedef void (GL_APIENTRYP PFNGLCLIPPLANEXOESPROC)(GLenum plane, const GLfixed* equation); +typedef void (GL_APIENTRYP PFNGLCOLOR4XOESPROC)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEXOESPROC)(GLclampx zNear, GLclampx zFar); +typedef void (GL_APIENTRYP PFNGLFOGXOESPROC)(GLenum pname, GLfixed param); +typedef void (GL_APIENTRYP PFNGLFOGXVOESPROC)(GLenum pname, const GLfixed* params); +typedef void (GL_APIENTRYP PFNGLFRUSTUMXOESPROC)(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, + GLfixed zFar); +typedef void (GL_APIENTRYP PFNGLGETCLIPPLANEXOESPROC)(GLenum pname, GLfixed eqn[4]); +typedef void (GL_APIENTRYP PFNGLGETFIXEDVOESPROC)(GLenum pname, GLfixed* params); +typedef void (GL_APIENTRYP PFNGLGETLIGHTXVOESPROC)(GLenum light, GLenum pname, GLfixed* params); +typedef void (GL_APIENTRYP PFNGLGETMATERIALXVOESPROC)(GLenum face, GLenum pname, GLfixed* params); +typedef void (GL_APIENTRYP PFNGLGETTEXENVXVOESPROC)(GLenum env, GLenum pname, GLfixed* params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERXVOESPROC)(GLenum target, GLenum pname, GLfixed* params); +typedef void (GL_APIENTRYP PFNGLLIGHTMODELXOESPROC)(GLenum pname, GLfixed param); +typedef void (GL_APIENTRYP PFNGLLIGHTMODELXVOESPROC)(GLenum pname, const GLfixed* params); +typedef void (GL_APIENTRYP PFNGLLIGHTXOESPROC)(GLenum light, GLenum pname, GLfixed param); +typedef void (GL_APIENTRYP PFNGLLIGHTXVOESPROC)(GLenum light, GLenum pname, const GLfixed* params); +typedef void (GL_APIENTRYP PFNGLLINEWIDTHXOESPROC)(GLfixed width); +typedef void (GL_APIENTRYP PFNGLLOADMATRIXXOESPROC)(const GLfixed* m); +typedef void (GL_APIENTRYP PFNGLMATERIALXOESPROC)(GLenum face, GLenum pname, GLfixed param); +typedef void (GL_APIENTRYP PFNGLMATERIALXVOESPROC)(GLenum face, GLenum pname, const GLfixed* params); +typedef void (GL_APIENTRYP PFNGLMULTMATRIXXOESPROC)(const GLfixed* m); +typedef void (GL_APIENTRYP PFNGLMULTITEXCOORD4XOESPROC)(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q); +typedef void (GL_APIENTRYP PFNGLNORMAL3XOESPROC)(GLfixed nx, GLfixed ny, GLfixed nz); +typedef void (GL_APIENTRYP PFNGLORTHOXOESPROC)(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, + GLfixed zFar); +typedef void (GL_APIENTRYP PFNGLPOINTPARAMETERXOESPROC)(GLenum pname, GLfixed param); +typedef void (GL_APIENTRYP PFNGLPOINTPARAMETERXVOESPROC)(GLenum pname, const GLfixed* params); +typedef void (GL_APIENTRYP PFNGLPOINTSIZEXOESPROC)(GLfixed size); +typedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETXOESPROC)(GLfixed factor, GLfixed units); +typedef void (GL_APIENTRYP PFNGLROTATEXOESPROC)(GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +typedef void (GL_APIENTRYP PFNGLSAMPLECOVERAGEXOESPROC)(GLclampx value, GLboolean invert); +typedef void (GL_APIENTRYP PFNGLSCALEXOESPROC)(GLfixed x, GLfixed y, GLfixed z); +typedef void (GL_APIENTRYP PFNGLTEXENVXOESPROC)(GLenum target, GLenum pname, GLfixed param); +typedef void (GL_APIENTRYP PFNGLTEXENVXVOESPROC)(GLenum target, GLenum pname, const GLfixed* params); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERXOESPROC)(GLenum target, GLenum pname, GLfixed param); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERXVOESPROC)(GLenum target, GLenum pname, const GLfixed* params); +typedef void (GL_APIENTRYP PFNGLTRANSLATEXOESPROC)(GLfixed x, GLfixed y, GLfixed z); +#endif + +/* GL_OES_framebuffer_object */ +#ifndef GL_OES_framebuffer_object +#define GL_OES_framebuffer_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API GLboolean GL_APIENTRY glIsRenderbufferOES(GLuint renderbuffer); +GL_API void GL_APIENTRY glBindRenderbufferOES(GLenum target, GLuint renderbuffer); +GL_API void GL_APIENTRY glDeleteRenderbuffersOES(GLsizei n, const GLuint* renderbuffers); +GL_API void GL_APIENTRY glGenRenderbuffersOES(GLsizei n, GLuint* renderbuffers); +GL_API void GL_APIENTRY glRenderbufferStorageOES(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +GL_API void GL_APIENTRY glGetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint* params); +GL_API GLboolean GL_APIENTRY glIsFramebufferOES(GLuint framebuffer); +GL_API void GL_APIENTRY glBindFramebufferOES(GLenum target, GLuint framebuffer); +GL_API void GL_APIENTRY glDeleteFramebuffersOES(GLsizei n, const GLuint* framebuffers); +GL_API void GL_APIENTRY glGenFramebuffersOES(GLsizei n, GLuint* framebuffers); +GL_API GLenum GL_APIENTRY glCheckFramebufferStatusOES(GLenum target); +GL_API void GL_APIENTRY glFramebufferRenderbufferOES(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GL_API void GL_APIENTRY glFramebufferTexture2DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GL_API void GL_APIENTRY glGetFramebufferAttachmentParameterivOES(GLenum target, GLenum attachment, GLenum pname, GLint* params); +GL_API void GL_APIENTRY glGenerateMipmapOES(GLenum target); +#endif +typedef GLboolean (GL_APIENTRYP PFNGLISRENDERBUFFEROESPROC)(GLuint renderbuffer); +typedef void (GL_APIENTRYP PFNGLBINDRENDERBUFFEROESPROC)(GLenum target, GLuint renderbuffer); +typedef void (GL_APIENTRYP PFNGLDELETERENDERBUFFERSOESPROC)(GLsizei n, const GLuint* renderbuffers); +typedef void (GL_APIENTRYP PFNGLGENRENDERBUFFERSOESPROC)(GLsizei n, GLuint* renderbuffers); +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEOESPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVOESPROC)(GLenum target, GLenum pname, GLint* params); +typedef GLboolean (GL_APIENTRYP PFNGLISFRAMEBUFFEROESPROC)(GLuint framebuffer); +typedef void (GL_APIENTRYP PFNGLBINDFRAMEBUFFEROESPROC)(GLenum target, GLuint framebuffer); +typedef void (GL_APIENTRYP PFNGLDELETEFRAMEBUFFERSOESPROC)(GLsizei n, const GLuint* framebuffers); +typedef void (GL_APIENTRYP PFNGLGENFRAMEBUFFERSOESPROC)(GLsizei n, GLuint* framebuffers); +typedef GLenum (GL_APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSOESPROC)(GLenum target); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEROESPROC)(GLenum target, GLenum attachment, GLenum renderbuffertarget, + GLuint renderbuffer); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DOESPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, + GLint level); +typedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVOESPROC)(GLenum target, GLenum attachment, GLenum pname, + GLint* params); +typedef void (GL_APIENTRYP PFNGLGENERATEMIPMAPOESPROC)(GLenum target); +#endif + +/* GL_OES_mapbuffer */ +#ifndef GL_OES_mapbuffer +#define GL_OES_mapbuffer 1 +#if 0 // not supported +#ifdef GL_GLEXT_PROTOTYPES +GL_API void* GL_APIENTRY glMapBufferOES(GLenum target, GLenum access); +GL_API GLboolean GL_APIENTRY glUnmapBufferOES(GLenum target); +GL_API void GL_APIENTRY glGetBufferPointervOES(GLenum target, GLenum pname, void** params); +#endif +#endif // not supported +typedef void* (GL_APIENTRYP PFNGLMAPBUFFEROESPROC)(GLenum target, GLenum access); +typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC)(GLenum target); +typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC)(GLenum target, GLenum pname, void** params); +#endif + +/* GL_OES_matrix_get */ +#ifndef GL_OES_matrix_get +#define GL_OES_matrix_get 1 +#endif + +/* GL_OES_matrix_palette */ +#ifndef _WIN32 // _WIN32 +#ifndef GL_OES_matrix_palette +#define GL_OES_matrix_palette 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glCurrentPaletteMatrixOES(GLuint matrixpaletteindex); +GL_API void GL_APIENTRY glLoadPaletteFromModelViewMatrixOES(void); +GL_API void GL_APIENTRY glMatrixIndexPointerOES(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer); +GL_API void GL_APIENTRY glWeightPointerOES(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer); +#endif +typedef void (GL_APIENTRYP PFNGLCURRENTPALETTEMATRIXOESPROC)(GLuint matrixpaletteindex); +typedef void (GL_APIENTRYP PFNGLLOADPALETTEFROMMODELVIEWMATRIXOESPROC)(void); +typedef void (GL_APIENTRYP PFNGLMATRIXINDEXPOINTEROESPROC)(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer); +typedef void (GL_APIENTRYP PFNGLWEIGHTPOINTEROESPROC)(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer); +#endif +#endif //_WIN32 + +/* GL_OES_packed_depth_stencil */ +#ifndef GL_OES_packed_depth_stencil +#define GL_OES_packed_depth_stencil 1 +#endif + +/* GL_OES_query_matrix */ +#ifndef GL_OES_query_matrix +#define GL_OES_query_matrix 1 +#if 0 // not supported +#ifdef GL_GLEXT_PROTOTYPES +GL_API GLbitfield GL_APIENTRY glQueryMatrixxOES(GLfixed mantissa[16], GLint exponent[16]); +#endif +#endif // not supported +typedef GLbitfield (GL_APIENTRYP PFNGLQUERYMATRIXXOESPROC)(GLfixed mantissa[16], GLint exponent[16]); +#endif + +/* GL_OES_rgb8_rgba8 */ +#ifndef GL_OES_rgb8_rgba8 +#define GL_OES_rgb8_rgba8 1 +#endif + +/* GL_OES_single_precision */ +#ifndef GL_OES_single_precision +#define GL_OES_single_precision 1 +#if 0 // not supported +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glDepthRangefOES(GLclampf zNear, GLclampf zFar); +GL_API void GL_APIENTRY glFrustumfOES(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); +GL_API void GL_APIENTRY glOrthofOES(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); +GL_API void GL_APIENTRY glClipPlanefOES(GLenum plane, const GLfloat* equation); +GL_API void GL_APIENTRY glGetClipPlanefOES(GLenum pname, GLfloat eqn[4]); +GL_API void GL_APIENTRY glClearDepthfOES(GLclampf depth); +#endif +#endif // not supported +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEFOESPROC)(GLclampf zNear, GLclampf zFar); +typedef void (GL_APIENTRYP PFNGLFRUSTUMFOESPROC)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, + GLfloat zFar); +typedef void (GL_APIENTRYP PFNGLORTHOFOESPROC)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, + GLfloat zFar); +typedef void (GL_APIENTRYP PFNGLCLIPPLANEFOESPROC)(GLenum plane, const GLfloat* equation); +typedef void (GL_APIENTRYP PFNGLGETCLIPPLANEFOESPROC)(GLenum pname, GLfloat eqn[4]); +typedef void (GL_APIENTRYP PFNGLCLEARDEPTHFOESPROC)(GLclampf depth); +#endif + +/* GL_OES_stencil1 */ +#ifndef GL_OES_stencil1 +#define GL_OES_stencil1 1 +#endif + +/* GL_OES_stencil4 */ +#ifndef GL_OES_stencil4 +#define GL_OES_stencil4 1 +#endif + +/* GL_OES_stencil8 */ +#ifndef GL_OES_stencil8 +#define GL_OES_stencil8 1 +#endif + +/* GL_OES_stencil_wrap */ +#ifndef GL_OES_stencil_wrap +#define GL_OES_stencil_wrap 1 +#endif + +/* GL_OES_texture_cube_map */ +#ifndef GL_OES_texture_cube_map +#define GL_OES_texture_cube_map 1 +#if 0 // not supported +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glTexGenfOES(GLenum coord, GLenum pname, GLfloat param); +GL_API void GL_APIENTRY glTexGenfvOES(GLenum coord, GLenum pname, const GLfloat* params); +GL_API void GL_APIENTRY glTexGeniOES(GLenum coord, GLenum pname, GLint param); +GL_API void GL_APIENTRY glTexGenivOES(GLenum coord, GLenum pname, const GLint* params); +GL_API void GL_APIENTRY glTexGenxOES(GLenum coord, GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glTexGenxvOES(GLenum coord, GLenum pname, const GLfixed* params); +GL_API void GL_APIENTRY glGetTexGenfvOES(GLenum coord, GLenum pname, GLfloat* params); +GL_API void GL_APIENTRY glGetTexGenivOES(GLenum coord, GLenum pname, GLint* params); +GL_API void GL_APIENTRY glGetTexGenxvOES(GLenum coord, GLenum pname, GLfixed* params); +#endif +#endif // not supported +typedef void (GL_APIENTRYP PFNGLTEXGENFOESPROC)(GLenum coord, GLenum pname, GLfloat param); +typedef void (GL_APIENTRYP PFNGLTEXGENFVOESPROC)(GLenum coord, GLenum pname, const GLfloat* params); +typedef void (GL_APIENTRYP PFNGLTEXGENIOESPROC)(GLenum coord, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLTEXGENIVOESPROC)(GLenum coord, GLenum pname, const GLint* params); +typedef void (GL_APIENTRYP PFNGLTEXGENXOESPROC)(GLenum coord, GLenum pname, GLfixed param); +typedef void (GL_APIENTRYP PFNGLTEXGENXVOESPROC)(GLenum coord, GLenum pname, const GLfixed* params); +typedef void (GL_APIENTRYP PFNGLGETTEXGENFVOESPROC)(GLenum coord, GLenum pname, GLfloat* params); +typedef void (GL_APIENTRYP PFNGLGETTEXGENIVOESPROC)(GLenum coord, GLenum pname, GLint* params); +typedef void (GL_APIENTRYP PFNGLGETTEXGENXVOESPROC)(GLenum coord, GLenum pname, GLfixed* params); +#endif + +/* GL_OES_texture_env_crossbar */ +#ifndef GL_OES_texture_env_crossbar +#define GL_OES_texture_env_crossbar 1 +#endif + +/* GL_OES_texture_mirrored_repeat */ +#ifndef GL_OES_texture_mirrored_repeat +#define GL_OES_texture_mirrored_repeat 1 +#endif + +/*------------------------------------------------------------------------* + * AMD extension functions + *------------------------------------------------------------------------*/ + +/* GL_AMD_compressed_3DC_texture */ +#ifndef GL_AMD_compressed_3DC_texture +#define GL_AMD_compressed_3DC_texture 1 +#endif + +/* GL_AMD_compressed_ATC_texture */ +#ifndef GL_AMD_compressed_ATC_texture +#define GL_AMD_compressed_ATC_texture 1 +#endif + +/*------------------------------------------------------------------------* + * EXT extension functions + *------------------------------------------------------------------------*/ + +/* GL_EXT_texture_filter_anisotropic */ +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_EXT_texture_filter_anisotropic 1 +#endif + +/* GL_EXT_texture_format_BGRA8888 */ +#ifndef GL_EXT_texture_format_BGRA8888 +#define GL_EXT_texture_format_BGRA8888 1 +#endif + +/*------------------------------------------------------------------------* + * IMG extension functions + *------------------------------------------------------------------------*/ + +/* GL_IMG_read_format */ +#ifndef GL_IMG_read_format +#define GL_IMG_read_format 1 +#endif + +/* GL_IMG_texture_compression_pvrtc */ +#ifndef GL_IMG_texture_compression_pvrtc +#define GL_IMG_texture_compression_pvrtc 1 +#endif + +/* GL_IMG_user_clip_plane */ +#ifndef GL_IMG_user_clip_plane +#define GL_IMG_user_clip_plane 1 +#if 0 // not supported +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glClipPlanefIMG(GLenum, const GLfloat*); +GL_API void GL_APIENTRY glClipPlanexIMG(GLenum, const GLfixed*); +#endif +#endif // not supported +typedef void (GL_APIENTRYP PFNGLCLIPPLANEFIMG)(GLenum p, const GLfloat* eqn); +typedef void (GL_APIENTRYP PFNGLCLIPPLANEXIMG)(GLenum p, const GLfixed* eqn); +#endif + +/* GL_IMG_texture_env_enhanced_fixed_function */ +#ifndef GL_IMG_texture_env_enhanced_fixed_function +#define GL_IMG_texture_env_enhanced_fixed_function 1 +#endif + +/*------------------------------------------------------------------------* + * NV extension functions + *------------------------------------------------------------------------*/ + +/* NV_fence */ +#ifndef GL_NV_fence +#define GL_NV_fence 1 +#if 0 // not supported +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glDeleteFencesNV(GLsizei, const GLuint*); +GL_API void GL_APIENTRY glGenFencesNV(GLsizei, GLuint*); +GL_API GLboolean GL_APIENTRY glIsFenceNV(GLuint); +GL_API GLboolean GL_APIENTRY glTestFenceNV(GLuint); +GL_API void GL_APIENTRY glGetFenceivNV(GLuint, GLenum, GLint*); +GL_API void GL_APIENTRY glFinishFenceNV(GLuint); +GL_API void GL_APIENTRY glSetFenceNV(GLuint, GLenum); +#endif +#endif // not supported +typedef void (GL_APIENTRYP PFNGLDELETEFENCESNVPROC)(GLsizei n, const GLuint* fences); +typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC)(GLsizei n, GLuint* fences); +typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC)(GLuint fence); +typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC)(GLuint fence); +typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC)(GLuint fence, GLenum pname, GLint* params); +typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC)(GLuint fence); +typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC)(GLuint fence, GLenum condition); +#endif + +/*------------------------------------------------------------------------* + * QCOM extension functions + *------------------------------------------------------------------------*/ + +/* GL_QCOM_driver_control */ +#ifndef GL_QCOM_driver_control +#define GL_QCOM_driver_control 1 +#if 0 // not supported +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glGetDriverControlsQCOM(GLint* num, GLsizei size, GLuint* driverControls); +GL_API void GL_APIENTRY glGetDriverControlStringQCOM(GLuint driverControl, GLsizei bufSize, GLsizei* length, char* driverControlString); +GL_API void GL_APIENTRY glEnableDriverControlQCOM(GLuint driverControl); +GL_API void GL_APIENTRY glDisableDriverControlQCOM(GLuint driverControl); +#endif +#endif // not supported +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC)(GLint* num, GLsizei size, GLuint* driverControls); +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC)(GLuint driverControl, GLsizei bufSize, GLsizei* length, + char* driverControlString); +typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC)(GLuint driverControl); +typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC)(GLuint driverControl); +#endif + +/* GL_QCOM_perfmon_global_mode */ +#ifndef GL_QCOM_perfmon_global_mode +#define GL_QCOM_perfmon_global_mode 1 +#endif + +/*------------------------------------------------------------------------* + * Samsung extension functions + *------------------------------------------------------------------------*/ + +/* PName */ +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_ELEMENTS_INDICES 0x80E9 + +/* PVRTC */ +#define GL_PVRTC2_OES 0x1911 +#define GL_PVRTC4_OES 0x1912 + +// +// For sync OpenGLES 2.0 */ +// +/* Separate Blend Functions */ +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_SRC_RGB 0x80C9 + +/* Vertex Arrays */ +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F + +/* Shaders */ +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 + +/* Framebuffer Object. */ +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 + +/** Texture and Texture Environment as in ShaderInterface.doc **/ +// +// Texture environment modes +// +#define TEX_ENV_MODE_REPLACE 1 +#define TEX_ENV_MODE_MODULATE 2 +#define TEX_ENV_MODE_ADD 3 +#define TEX_ENV_MODE_DECAL 4 +#define TEX_ENV_MODE_BLEND 5 +#define TEX_ENV_MODE_COMBINE 6 +// +// Combine RGB +// +#define TEX_COMBINE_RGB_REPLACE 1 +#define TEX_COMBINE_RGB_MODULATE 2 +#define TEX_COMBINE_RGB_ADD 3 +#define TEX_COMBINE_RGB_ADD_SIGNED 4 +#define TEX_COMBINE_RGB_INTERPOLATE 5 +#define TEX_COMBINE_RGB_SUBTRACT 6 +#define TEX_COMBINE_RGB_DOT3_RGB 7 +#define TEX_COMBINE_RGB_DOT3_RGBA 8 + +// +// Combine Alpha +// +#define TEX_COMBINE_ALPHA_REPLACE 1 +#define TEX_COMBINE_ALPHA_MODULATE 2 +#define TEX_COMBINE_ALPHA_ADD 3 +#define TEX_COMBINE_ALPHA_ADD_SIGNED 4 +#define TEX_COMBINE_ALPHA_INTERPOLATE 5 +#define TEX_COMBINE_ALPHA_SUBTRACT 6 + + +// +// Combiner RGB and ALPHA source arguments +// +#define TEX_ENV_COMBINER_SRC_TEXTURE 1 +#define TEX_ENV_COMBINER_SRC_CONSTANT 2 +#define TEX_ENV_COMBINER_SRC_PRIMARY_COLOR 3 +#define TEX_ENV_COMBINER_SRC_PREVIOUS 4 + +// +// Combiner RGB operands +// +#define TEX_ENV_COMBINER_RGB_OP_SRC_COLOR 1 +#define TEX_ENV_COMBINER_RGB_OP_ONE_MINUS_SRC_COLOR 2 +#define TEX_ENV_COMBINER_RGB_OP_SRC_ALPHA 3 +#define TEX_ENV_COMBINER_RGB_OP_ONE_MINUS_SRC_ALPHA 4 + +// +// Combiner ALPHA operands +// +#define TEX_ENV_COMBINER_ALPHA_OP_SRC_ALPHA 1 +#define TEX_ENV_COMBINER_ALPHA_OP_ONE_MINUS_SRC_ALPHA 2 + +// +// Fog mode +// +#define FOGMODE_LINEAR 1 +#define FOGMODE_EXP 2 +#define FOGMODE_EXP2 3 + +#ifdef __cplusplus +} +#endif + +#endif /* __glext_h_ */ diff --git a/inc/glmacro.h b/inc/glmacro.h new file mode 100644 index 0000000..9e057e3 --- /dev/null +++ b/inc/glmacro.h @@ -0,0 +1,190 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#ifndef _GL_MACRO_H_ +#define _GL_MACRO_H_ + +#define glAlphaFunc _GlAlphaFunc_1 +#define glClearColor _GlClearColor_1 +#define glClearDepthf _GlClearDepthf_1 +#define glClipPlanef _GlClipPlanef_1 +#define glColor4f _GlColor4f_1 +#define glDepthRangef _GlDepthRangef_1 +#define glFogf _GlFogf_1 +#define glFogfv _GlFogfv_1 +#define glFrustumf _GlFrustumf_1 +#define glGetClipPlanef _GlGetClipPlanef_1 +#define glGetFloatv _GlGetFloatv_1 +#define glGetLightfv _GlGetLightfv_1 +#define glGetMaterialfv _GlGetMaterialfv_1 +#define glGetTexEnvfv _GlGetTexEnvfv_1 +#define glGetTexParameterfv _GlGetTexParameterfv_1 +#define glLightModelf _GlLightModelf_1 +#define glLightModelfv _GlLightModelfv_1 +#define glLightf _GlLightf_1 +#define glLightfv _GlLightfv_1 +#define glLineWidth _GlLineWidth_1 +#define glLoadMatrixf _GlLoadMatrixf_1 +#define glMaterialf _GlMaterialf_1 +#define glMaterialfv _GlMaterialfv_1 +#define glMultMatrixf _GlMultMatrixf_1 +#define glMultiTexCoord4f _GlMultiTexCoord4f_1 +#define glNormal3f _GlNormal3f_1 +#define glOrthof _GlOrthof_1 +#define glPointParameterf _GlPointParameterf_1 +#define glPointParameterfv _GlPointParameterfv_1 +#define glPointSize _GlPointSize_1 +#define glPolygonOffset _GlPolygonOffset_1 +#define glRotatef _GlRotatef_1 +#define glScalef _GlScalef_1 +#define glTexEnvf _GlTexEnvf_1 +#define glTexEnvfv _GlTexEnvfv_1 +#define glTexParameterf _GlTexParameterf_1 +#define glTexParameterfv _GlTexParameterfv_1 +#define glTranslatef _GlTranslatef_1 +#define glActiveTexture _GlActiveTexture_1 +#define glAlphaFuncx _GlAlphaFuncx_1 +#define glBindBuffer _GlBindBuffer_1 +#define glBindTexture _GlBindTexture_1 +#define glBlendFunc _GlBlendFunc_1 +#define glBufferData _GlBufferData_1 +#define glBufferSubData _GlBufferSubData_1 +#define glClear _GlClear_1 +#define glClearColorx _GlClearColorx_1 +#define glClearDepthx _GlClearDepthx_1 +#define glClearStencil _GlClearStencil_1 +#define glClientActiveTexture _GlClientActiveTexture_1 +#define glClipPlanex _GlClipPlanex_1 +#define glColor4ub _GlColor4ub_1 +#define glColor4x _GlColor4x_1 +#define glColorMask _GlColorMask_1 +#define glColorPointer _GlColorPointer_1 +#define glCompressedTexImage2D _GlCompressedTexImage2D_1 +#define glCompressedTexSubImage2D _GlCompressedTexSubImage2D_1 +#define glCopyTexImage2D _GlCopyTexImage2D_1 +#define glCopyTexSubImage2D _GlCopyTexSubImage2D_1 +#define glCullFace _GlCullFace_1 +#define glDeleteBuffers _GlDeleteBuffers_1 +#define glDeleteTextures _GlDeleteTextures_1 +#define glDepthFunc _GlDepthFunc_1 +#define glDepthMask _GlDepthMask_1 +#define glDepthRangex _GlDepthRangex_1 +#define glDisable _GlDisable_1 +#define glDisableClientState _GlDisableClientState_1 +#define glDrawArrays _GlDrawArrays_1 +#define glDrawElements _GlDrawElements_1 +#define glEnable _GlEnable_1 +#define glEnableClientState _GlEnableClientState_1 +#define glFinish _GlFinish_1 +#define glFlush _GlFlush_1 +#define glFogx _GlFogx_1 +#define glFogxv _GlFogxv_1 +#define glFrontFace _GlFrontFace_1 +#define glFrustumx _GlFrustumx_1 +#define glGetBooleanv _GlGetBooleanv_1 +#define glGetBufferParameteriv _GlGetBufferParameteriv_1 +#define glGetClipPlanex _GlGetClipPlanex_1 +#define glGenBuffers _GlGenBuffers_1 +#define glGenTextures _GlGenTextures_1 +#define glGetError _GlGetError_1 +#define glGetFixedv _GlGetFixedv_1 +#define glGetIntegerv _GlGetIntegerv_1 +#define glGetLightxv _GlGetLightxv_1 +#define glGetMaterialxv _GlGetMaterialxv_1 +#define glGetPointerv _GlGetPointerv_1 +#define glGetString _GlGetString_1 +#define glGetTexEnviv _GlGetTexEnviv_1 +#define glGetTexEnvxv _GlGetTexEnvxv_1 +#define glGetTexParameteriv _GlGetTexParameteriv_1 +#define glGetTexParameterxv _GlGetTexParameterxv_1 +#define glHint _GlHint_1 +#define glIsBuffer _GlIsBuffer_1 +#define glIsEnabled _GlIsEnabled_1 +#define glIsTexture _GlIsTexture_1 +#define glLightModelx _GlLightModelx_1 +#define glLightModelxv _GlLightModelxv_1 +#define glLightx _GlLightx_1 +#define glLightxv _GlLightxv_1 +#define glLineWidthx _GlLineWidthx_1 +#define glLoadIdentity _GlLoadIdentity_1 +#define glLoadMatrixx _GlLoadMatrixx_1 +#define glLogicOp _GlLogicOp_1 +#define glMaterialx _GlMaterialx_1 +#define glMaterialxv _GlMaterialxv_1 +#define glMatrixMode _GlMatrixMode_1 +#define glMultMatrixx _GlMultMatrixx_1 +#define glMultiTexCoord4x _GlMultiTexCoord4x_1 +#define glNormal3x _GlNormal3x_1 +#define glNormalPointer _GlNormalPointer_1 +#define glOrthox _GlOrthox_1 +#define glPixelStorei _GlPixelStorei_1 +#define glPointParameterx _GlPointParameterx_1 +#define glPointParameterxv _GlPointParameterxv_1 +#define glPointSizex _GlPointSizex_1 +#define glPolygonOffsetx _GlPolygonOffsetx_1 +#define glPopMatrix _GlPopMatrix_1 +#define glPushMatrix _GlPushMatrix_1 +#define glReadPixels _GlReadPixels_1 +#define glRotatex _GlRotatex_1 +#define glSampleCoverage _GlSampleCoverage_1 +#define glSampleCoveragex _GlSampleCoveragex_1 +#define glScalex _GlScalex_1 +#define glScissor _GlScissor_1 +#define glShadeModel _GlShadeModel_1 +#define glStencilFunc _GlStencilFunc_1 +#define glStencilMask _GlStencilMask_1 +#define glStencilOp _GlStencilOp_1 +#define glTexCoordPointer _GlTexCoordPointer_1 +#define glTexEnvi _GlTexEnvi_1 +#define glTexEnvx _GlTexEnvx_1 +#define glTexEnviv _GlTexEnviv_1 +#define glTexEnvxv _GlTexEnvxv_1 +#define glTexImage2D _GlTexImage2D_1 +#define glTexParameteri _GlTexParameteri_1 +#define glTexParameterx _GlTexParameterx_1 +#define glTexParameteriv _GlTexParameteriv_1 +#define glTexParameterxv _GlTexParameterxv_1 +#define glTexSubImage2D _GlTexSubImage2D_1 +#define glTranslatex _GlTranslatex_1 +#define glVertexPointer _GlVertexPointer_1 +#define glViewport _GlViewport_1 +#define glPointSizePointerOES _GlPointSizePointerOES_1 +#define glCurrentPaletteMatrixOES _GlCurrentPaletteMatrixOES_1 +#define glLoadPaletteFromModelViewMatrixOES _GlLoadPaletteFromModelViewMatrixOES_1 +#define glMatrixIndexPointerOES _GlMatrixIndexPointerOES_1 +#define glWeightPointerOES _GlWeightPointerOES_1 + +//Start of FBO Functions +#define glIsRenderbufferOES _GlIsRenderbufferOES_1 +#define glBindRenderbufferOES _GlBindRenderbufferOES_1 +#define glDeleteRenderbuffersOES _GlDeleteRenderbuffersOES_1 +#define glGenRenderbuffersOES _GlGenRenderbuffersOES_1 +#define glRenderbufferStorageOES _GlRenderbufferStorageOES_1 +#define glGetRenderbufferParameterivOES _GlGetRenderbufferParameterivOES_1 +#define glIsFramebufferOES _GlIsFramebufferOES_1 +#define glBindFramebufferOES _GlBindFramebufferOES_1 +#define glDeleteFramebuffersOES _GlDeleteFramebuffersOES_1 +#define glGenFramebuffersOES _GlGenFramebuffersOES_1 +#define glCheckFramebufferStatusOES _GlCheckFramebufferStatusOES_1 +#define glFramebufferRenderbufferOES _GlFramebufferRenderbufferOES_1 +#define glFramebufferTexture2DOES _GlFramebufferTexture2DOES_1 +#define glGetFramebufferAttachmentParameterivOES _GlGetFramebufferAttachmentParameterivOES_1 +#define glGenerateMipmapOES _GlGenerateMipmapOES_1 +//End of FBO Functions + + +#endif // _GL_MACRO_H_ diff --git a/inc/glplatform.h b/inc/glplatform.h new file mode 100644 index 0000000..eef2e5b --- /dev/null +++ b/inc/glplatform.h @@ -0,0 +1,27 @@ +#ifndef __glplatform_h_ +#define __glplatform_h_ + +/* + * This document is licensed under the SGI Free Software B License Version + * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . + */ + +/* Platform-specific types and definitions for OpenGL ES 1.X gl.h + * Last modified on 2008/12/19 + * + * Adopters may modify khrplatform.h and this file to suit their platform. + * You are encouraged to submit all modifications to the Khronos group so that + * they can be included in future versions of this file. Please submit changes + * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) + * by filing a bug against product "OpenGL-ES" component "Registry". + */ + +#include "khrplatform.h" + +#ifndef GL_API +#define GL_API KHRONOS_APICALL +#endif + +#define GL_APIENTRY //KHRONOS_APIENTRY + +#endif /* __glplatform_h_ */ diff --git a/inc/khrplatform.h b/inc/khrplatform.h new file mode 100644 index 0000000..f09d45c --- /dev/null +++ b/inc/khrplatform.h @@ -0,0 +1,569 @@ +/* $Change: 1028567 $ */ +#ifndef __khrplatform_h_ +#define __khrplatform_h_ + +/* +** Copyright (c) 2008-2009 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are 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 Materials. +** +** THE MATERIALS ARE 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 +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +/* Khronos platform-specific types and definitions. + * + * $Revision: #1 $ on $Date: 2011/08/12 $ + * + * Adopters may modify this file to suit their platform. Adopters are + * encouraged to submit platform specific modifications to the Khronos + * group so that they can be included in future versions of this file. + * Please submit changes by sending them to the public Khronos Bugzilla + * (http://khronos.org/bugzilla) by filing a bug against product + * "Khronos (general)" component "Registry". + * + * A predefined template which fills in some of the bug fields can be + * reached using http://tinyurl.com/khrplatform-h-bugreport, but you + * must create a Bugzilla login first. + * + * + * See the Implementer's Guidelines for information about where this file + * must be located on your system and for more details of its use: + * http://www.khronos.org/registry/implementers_guide.pdf + * + * This file must be included as + * #include + * by Khronos client API header files that use its types and defines. + * + * The types in khrplatform.h must only be used to define API-specific types. + * + * Types defined in khrplatform.h: + * khronos_int8_t signed 8 bit + * khronos_uint8_t unsigned 8 bit + * khronos_int16_t signed 16 bit + * khronos_uint16_t unsigned 16 bit + * khronos_int32_t signed 32 bit + * khronos_uint32_t unsigned 32 bit + * khronos_int64_t signed 64 bit + * khronos_uint64_t unsigned 64 bit + * khronos_intptr_t signed same number of bits as a pointer + * khronos_uintptr_t unsigned same number of bits as a pointer + * khronos_ssize_t signed size + * khronos_usize_t unsigned size + * khronos_float_t signed 32 bit floating point + * khronos_time_ns_t unsigned 64 bit time in nanoseconds + * khronos_utime_nanoseconds_t unsigned time interval or absolute time in + * nanoseconds + * khronos_stime_nanoseconds_t signed time interval in nanoseconds + * khronos_boolean_enum_t enumerated boolean type. This must + * only be used as a base type when a client API's boolean type is + * an enum. Client APIs which use an integer or other type for + * booleans cannot use this as the base type for their boolean. + * + * Tokens defined in khrplatform.h: + * + * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values. + * + * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0. + * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0. + * + * Calling convention macros defined in this file: + * KHRONOS_APICALL + * KHRONOS_APIENTRY + * KHRONOS_APIATTRIBUTES + * + * These may be used in function prototypes as: + * + * KHRONOS_APICALL void KHRONOS_APIENTRY funcname( + * int arg1, + * int arg2) KHRONOS_APIATTRIBUTES; + */ + +/** + * @addtogroup opengles + * + * @{ + */ + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APICALL + *------------------------------------------------------------------------- + * This precedes the return type of the function in the function prototype. + */ +#if defined(_WIN32) +#ifdef __KHRONOS_EXPORTS +#define KHRONOS_APICALL __declspec(dllexport) +#else +#define KHRONOS_APICALL __declspec(dllimport) +#endif +//#define KHRONOS_APICALL extern +#elif defined(__SYMBIAN32__) +#define KHRONOS_APICALL IMPORT_C +#else +#define KHRONOS_APICALL extern +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIENTRY + *------------------------------------------------------------------------- + * This follows the return type of the function and precedes the function + * name in the function prototype. + */ +#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__) +/* Win32 but not WinCE */ +#define KHRONOS_APIENTRY __stdcall +#else +#define KHRONOS_APIENTRY +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIATTRIBUTES + *------------------------------------------------------------------------- + * This follows the closing parenthesis of the function prototype arguments. + */ +#if defined(__ARMCC_2__) +#define KHRONOS_APIATTRIBUTES __softfp +#else +#define KHRONOS_APIATTRIBUTES +#endif + +/*------------------------------------------------------------------------- + * basic type definitions + *-----------------------------------------------------------------------*/ +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__) + + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// Using +// @since 2.0 +// +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(__VMS) || defined(__sgi) + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// Using +// @since 2.0 +// +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(_WIN32) && !defined(__SCITECH_SNAP__) + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// Win32 +// @since 2.0 +// +typedef __int32 khronos_int32_t; +typedef unsigned __int32 khronos_uint32_t; +typedef __int64 khronos_int64_t; +typedef unsigned __int64 khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(__sun__) || defined(__digital__) + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// Sun or Digital +// @since 2.0 +// +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#if defined(__arch64__) || defined(_LP64) +typedef long int khronos_int64_t; +typedef unsigned long int khronos_uint64_t; +#else +typedef long long int khronos_int64_t; +typedef unsigned long long int khronos_uint64_t; +#endif /* __arch64__ */ +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif 0 + +/* + * Hypothetical platform with no float or int64 support + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#define KHRONOS_SUPPORT_INT64 0 +#define KHRONOS_SUPPORT_FLOAT 0 + +#else + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// Generic fallback +// @since 2.0 +// +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#endif + + +/* + * Types that are (so far) the same on all platforms + */ +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// \var typedef signed char khronos_int8_t +// \brief A type definition for khronos_int8_t. +// @since 2.0 +// +typedef signed char khronos_int8_t; + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// \var typedef unsigned char khronos_uint8_t +// \brief A type definition for khronos_uint8_t. +// @since 2.0 +// +typedef unsigned char khronos_uint8_t; + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// \var typedef signed short int khronos_int16_t +// \brief A type definition for khronos_int16_t. +// @since 2.0 +// +typedef signed short int khronos_int16_t; + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// \var typedef unsigned short int khronos_uint16_t +// \brief A type definition for khronos_uint16_t. +// @since 2.0 +// +typedef unsigned short int khronos_uint16_t; + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// \var typedef signed long int khronos_intptr_t +// \brief A type definition for khronos_intptr_t. +// @since 2.0 +// +typedef signed long int khronos_intptr_t; + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// \var typedef unsigned long int khronos_uintptr_t +// \brief A type definition for khronos_uintptr_t. +// @since 2.0 +// +typedef unsigned long int khronos_uintptr_t; + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// \var typedef signed long int khronos_ssize_t +// \brief A type definition for khronos_ssize_t. +// @since 2.0 +// +typedef signed long int khronos_ssize_t; + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// \var typedef unsigned long int khronos_usize_t +// \brief A type definition for khronos_usize_t. +// @since 2.0 +// +typedef unsigned long int khronos_usize_t; + +#if KHRONOS_SUPPORT_FLOAT +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// Float type +// @since 2.0 +// +typedef float khronos_float_t; +#endif + +#if KHRONOS_SUPPORT_INT64 +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// Time types +// +// These types can be used to represent a time interval in nanoseconds or +// an absolute Unadjusted System Time. The Unadjusted System Time is the number +// of nanoseconds since some arbitrary system event (for example, since the last +// time the system booted). It is an unsigned 64-bit value that wraps back to 0 after every 584 years. +// The time intervals can be either signed or unsigned. +// @since 2.0 +// +typedef khronos_uint64_t khronos_utime_nanoseconds_t; +typedef khronos_int64_t khronos_stime_nanoseconds_t; +#endif + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// Dummy value used to pad enum types to 32 bits. +// @since 2.0 +// +#ifndef KHRONOS_MAX_ENUM +#define KHRONOS_MAX_ENUM 0x7FFFFFFF +#endif + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// Enumerated boolean type +// +// Values other than zero must be considered to be true. Therefore +// comparisons must not be made against KHRONOS_TRUE. +// @since 2.0 +// +typedef enum +{ + KHRONOS_FALSE = 0, + KHRONOS_TRUE = 1, + KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM +} khronos_boolean_enum_t; + + + +/*------------------------------------------------------------------------- + * Data type definitions for GL APIs + *-----------------------------------------------------------------------*/ + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// \var typedef void GLvoid +// \brief A type definition for GLvoid. +// @since 2.0 +// +typedef void GLvoid; + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// \var typedef unsigned int GLenum +// \brief A type definition for GLenum. +// @since 2.0 +// +typedef unsigned int GLenum; + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// \var typedef unsigned char GLboolean +// \brief A type definition for GLboolean. +// @since 2.0 +// +typedef unsigned char GLboolean; + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// \var typedef unsigned int GLbitfield +// \brief A type definition for GLbitfield. +// @since 2.0 +// +typedef unsigned int GLbitfield; + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// \var typedef signed char GLbyte +// \brief A type definition for GLbyte. +// @since 2.0 +// +typedef khronos_int8_t GLbyte; + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// \var typedef short GLshort +// \brief A type definition for GLshort. +// @since 2.0 +// +typedef short GLshort; + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// \var typedef int GLint +// \brief A type definition for GLint. +// @since 2.0 +// +typedef int GLint; + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// \var typedef int GLsizei +// \brief A type definition for GLsizei. +// @since 2.0 +// +typedef int GLsizei; + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// \var typedef khronos_uint8_t GLubyte +// \brief A type definition for GLubyte. +// @since 2.0 +// +typedef khronos_uint8_t GLubyte; + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// \var typedef unsigned short GLushort +// \brief A type definition for GLushort. +// @since 2.0 +// +typedef unsigned short GLushort; + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// \var unsigned int GLuint +// \brief A type definition for GLuint. +// @since 2.0 +// +typedef unsigned int GLuint; + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// \var typedef khronos_float_t GLfloat +// \brief A type definition for GLfloat. +// @since 2.0 +// +typedef khronos_float_t GLfloat; + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// \var typedef khronos_float_t GLclampf +// \brief A type definition for GLclampf. +// @since 2.0 +// +typedef khronos_float_t GLclampf; + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// \var typedef khronos_int32_t GLfixed +// \brief A type definition for GLfixed. +// @since 2.0 +// +typedef khronos_int32_t GLfixed; + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// \var typedef khronos_int32_t GLclampx +// \brief A type definition for GLclampx. +// @since 2.0 +// +typedef khronos_int32_t GLclampx; + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// \var typedef khronos_intptr_t GLintptr +// \brief A type definition for GLintptr. +// @since 2.0 +// +typedef khronos_intptr_t GLintptr; + +// +// This method is for internal use only. +// Using this method can cause behavioral, security-related, and consistency-related issues in the application. +// +// \var typedef khronos_ssize_t GLsizeiptr +// \brief A type definition for GLsizeiptr. +// @since 2.0 +// +typedef khronos_ssize_t GLsizeiptr; + +/** + * @} + */ + +#endif /* __khrplatform_h_ */ diff --git a/osp-uifw.manifest b/osp-uifw.manifest new file mode 100644 index 0000000..ae3e6f7 --- /dev/null +++ b/osp-uifw.manifest @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/osp-uifw.pc.in b/osp-uifw.pc.in new file mode 100755 index 0000000..c064287 --- /dev/null +++ b/osp-uifw.pc.in @@ -0,0 +1,13 @@ +# Package Information for pkg-config + +prefix=@PREFIX@ +exec_prefix=/usr +libdir=/usr/lib/osp +includedir=/usr/include/osp + +Name: @PC_NAME@ +Description: @PACKAGE_DESCRIPTION@ +Version: @VERSION@ +Requires: @PC_REQUIRED@ +Libs: -L${libdir} @PC_LDFLAGS@ +Cflags: -I${includedir} \ No newline at end of file diff --git a/packaging/osp-uifw.spec b/packaging/osp-uifw.spec new file mode 100755 index 0000000..c96e58a --- /dev/null +++ b/packaging/osp-uifw.spec @@ -0,0 +1,147 @@ +%define debug_package %{nil} +%define __strip /bin/true + +Name: osp-uifw +Summary: The UI Framework library of OSP +Version: 1.2.0.0 +Release: 44 +Group: TO_BE/FILLED_IN +License: TO BE FILLED IN +Source0: %{name}-%{version}.tar.gz +BuildRequires: cmake +BuildRequires: pkgconfig(capi-appfw-application) +BuildRequires: pkgconfig(capi-system-info) +BuildRequires: pkgconfig(capi-system-device) +BuildRequires: pkgconfig(capi-system-runtime-info) +BuildRequires: pkgconfig(bundle) +BuildRequires: pkgconfig(appsvc) +BuildRequires: pkgconfig(cairo) +BuildRequires: pkgconfig(chromium) +BuildRequires: pkgconfig(dlog) +BuildRequires: pkgconfig(dbus-1) +BuildRequires: pkgconfig(edbus) +BuildRequires: pkgconfig(elementary) +BuildRequires: pkgconfig(evas) +BuildRequires: pkgconfig(ecore) +BuildRequires: pkgconfig(ethumb) +BuildRequires: pkgconfig(ewebkit2) +BuildRequires: pkgconfig(xdamage) +%ifarch %{ix86} +BuildRequires: pkgconfig(egl) +%else +BuildRequires: pkgconfig(gles20) +%endif +BuildRequires: pkgconfig(fribidi) +BuildRequires: pkgconfig(freetype2) +BuildRequires: pkgconfig(glib-2.0) +BuildRequires: pkgconfig(harfbuzz) +BuildRequires: pkgconfig(icu-i18n) +BuildRequires: pkgconfig(libdri2) +BuildRequires: pkgconfig(libdrm) +BuildRequires: pkgconfig(libdrm_slp) +BuildRequires: pkgconfig(libpng) +BuildRequires: pkgconfig(libwbxml2) +BuildRequires: pkgconfig(osp-appfw) +BuildRequires: pkgconfig(osp-speech) +BuildRequires: osp-appfw-internal-devel +BuildRequires: pkgconfig(osp-image-core) +BuildRequires: osp-image-core-internal-devel +BuildRequires: pkgconfig(pango) +BuildRequires: pkgconfig(pixman-1) +BuildRequires: pkgconfig(pkgmgr) +BuildRequires: pkgconfig(tts) +BuildRequires: pkgconfig(utilX) +BuildRequires: pkgconfig(xfixes) +BuildRequires: pkgconfig(xv) +BuildRequires: pkgconfig(xtst) +BuildRequires: libexif-devel +BuildRequires: liblua-devel +BuildRequires: libtiff-devel +BuildRequires: tolua++-devel + +# runtime requires +Requires: capi-appfw-application +Requires: capi-system-info +Requires: osp-appfw +Requires: osp-image-core +Requires: osp-speech + +Provides: libosp-uifw.so.1 + +Requires(post): /sbin/ldconfig +Requires(postun): /sbin/ldconfig + +%description +The UI Framework library of OSP + +%package devel +Summary: The UI Framework library of OSP (Development) +Group: TO_BE/FILLED_IN +Requires: %{name} = %{version}-%{release} + +%description devel +The UI Framework library of OSP (DEV) + +%package internal-devel +Summary: osp ui framework internel (Internal) +Group: TO_BE/FILLED_IN +Requires: %{name} = %{version}-%{release} + +%description internal-devel +The UI Framework library of OSP (Internal-DEV) + +%package debug +Summary: The UI Framework library of OSP (Development) +Group: TO_BE/FILLED_IN +Requires: %{name} = %{version}-%{release} + +%description debug +The UI Framework library of OSP (DEV) + +%prep +%setup -q + + +%build +MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'` +%ifarch %{ix86} +CXXFLAGS="$CXXFLAGS -D_OSP_DEBUG_ -D_OSP_X86_ -D_OSP_EMUL_" cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DOBS=1 -DFULLVER=%{version} -DMAJORVER=${MAJORVER} -DARCH=x86 +%else +CXXFLAGS="-O2 -g -pipe -Wall -fno-exceptions -Wformat -Wformat-security -Wl,--as-needed -fmessage-length=0 -march=armv7-a -mtune=cortex-a8 -mlittle-endian -mfpu=neon -mfloat-abi=softfp -D__SOFTFP__ -mthumb -Wa,-mimplicit-it=thumb -funwind-tables -D_OSP_DEBUG_ -D_OSP_ARMEL_" cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DOBS=1 -DFULLVER=%{version} -DMAJORVER=${MAJORVER} -DARCH=arm +%endif + +# Call make instruction with smp support +make %{?jobs:-j%jobs} + +%install +rm -rf %{buildroot} +mkdir -p %{buildroot}/usr/share/license +cp %{_builddir}/%{name}-%{version}/LICENSE.APLv2 %{buildroot}/usr/share/license/%{name} +cp %{_builddir}/%{name}-%{version}/LICENSE.Flora %{buildroot}/usr/share/license/%{name} + +%make_install + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + +%files +%manifest osp-uifw.manifest +/usr/share/license/%{name} +/usr/share/osp/bitmaps/* +/usr/share/osp/themes/* +/usr/share/osp/effects/* +%{_libdir}/osp/libosp-uifw.so* + +%files devel +%{_includedir}/osp/*.h +%{_libdir}/pkgconfig/osp-uifw.pc + +%files internal-devel +%{_includedir}/osp/app/*.h +%{_includedir}/osp/graphics/*.h +%{_includedir}/osp/ui/*.h + +%files debug +%{_libdir}/osp/debug/*.so* + diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_Title_btn.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_Title_btn.9.png new file mode 100755 index 0000000000000000000000000000000000000000..637904c910fea232d361d3c2c2ed6df5be15fde1 GIT binary patch literal 2963 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 N002ovPDHLkV1mnVeQ^K) literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_arrow_button_press_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_arrow_button_press_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..27b873b9308ad6783b97ef851ff6abea61be02b0 GIT binary patch literal 976 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 QN&o-=07*qoM6N<$g7gD^3IG5A literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_arrow_left.png b/res/common/usr/share/osp/bitmaps/480x800/00_arrow_left.png new file mode 100755 index 0000000000000000000000000000000000000000..e9ab8d8aef2e89fb79558c23031510e3c7d7b04f GIT binary patch literal 3040 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 L&D7UNPBi}wMp6hw literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_badge_bg_ef.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_badge_bg_ef.9.png new file mode 100644 index 0000000000000000000000000000000000000000..776d7f51d646ca3fe08db18976daf0d8f641353e GIT binary patch literal 2362 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 HP6Gfry(8$;Je51Pnr{ z+6O4UA2?O1h)o4WsI82xR7OYXU>yn;u!D$#fJk|?V7o!U{wUp<-S08yoO|y5?l)T! z9ktQjg=p$L_i`rP&D!cJOPg6t1y(Nv|(swR7bE$BtfuQr&MJkIIsmt*Jy>5p>MBK0F7Em zQLtbL)`cM%noT)+BsM2XuFA<&@zj*yAV6T|69OoLD*-dQO>5wrg_IdxJ~6j#gA`x} zf@caTuT3Su(LflcM*tQL@>fA@I>2Vq=uC*m`B343529E3aAZRj~Xr=%frcVdyJRT2(7$Ae;Payma*;-s__SYJG<`l$; zL8aH|a1EvfY>LV)m=PCJ2&b=8Ky~x7TElFah=PG;r4FRiAX`dvKp6giD2mRb4Y&+> z4f1Rq0?H5rX4I>QgG=+Vh0^iE^oSD2^l}W_Hdn>y3=GE%8JG?Ti)GR1fI_2H zVA zpzUD)bd{?+$Lv^B$8pf@JL4vM*1uQ4MQ7Tn0xz7;odW6%7n* zyA&A68!jyz7!(-B1`Y?L$1QX0ZE9Pp6+H4*B}l450$MzFJr@}(jimT)*JJW8mTO*cyH*ZUanYc!+_Lk=2gcSi z`iYQ(6E)4vXY2)wlPl`J59=VI?p_;LDSqz%q`Soac6Ev;78;k&F3nk#JLMUa`qbBM zhi6jZ73U7vJG&?Mp1pZ0W@MPEtZK>GZ0#(Flr^n7qbxw04pzV(wEbhHeoMQSX4t9V zAIb516PxY5R;K3mwu(%@+bf)tVY=Im0Z#3ntS4{*c~nqqDLe8JdyL$0W)Zd6l7A06 zv7K=t>&TkCX2+|MLstT5cY;Km)Ak73mu63bRL0l{`rt7J=Q|Wh;(rZocloR$j$5s2IQMcg zCCCzOrfgV~s!*XX>rdX!9m~1Jc;M4V8x@TDJ)J5nx!DrqdZN5PxG;Y0__IT`ovyFO zzv-2I7`@i5ydu3N!ma*nU|Z$tkB2{}^f2qF(v=gk4T9Z+BCv6US9-JdH^nwkO_TsX zkf^pSudE3NR;LxcSXVcFtgg!~rRVRV3Qp(F++QNzHHYj-vE0=cS4~WFNB0$@BY!!K vc`ZTKbu{`M$EGhIe9rkwHSRn5HOYbGJ@xiI%ahh%+b=>I9wojQn!4*BtJsGh literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_btn_circle_bg_p_ef.png b/res/common/usr/share/osp/bitmaps/480x800/00_btn_circle_bg_p_ef.png new file mode 100755 index 0000000000000000000000000000000000000000..30b56bac90afa5e4d47fffb8fe902ebab06f44fa GIT binary patch literal 1705 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!1|;QLq8NdcWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW~I!Kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v&`mZlGgL4$(K9qL zur#sMQ7|$vG|)FR(l;>IH8ij?HMcS_RDc2{plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OML?)eIp}XpbFjM%Dj@q3f;V7Wta&rsl~}fnFS@8`FRQ;6BCp2 zOG|8(fG&l2A-4c-Y+f-mn1BJMUy)d#Z>VPg@)As;uP=V3xw&xF#U(+h2=`(&xHzP; zAXPsowK%`DC>a=WY04n03ap%qQWHz^i$e1Ab6}wukda@KU!0L&px_*As%NMWo|%`D zUtSDW@9S&jnO9trn3tUD>0+w{G(j&jGsVil$i>{m(bUz{+|13;(ACh=*u=uZ!rZ{k z+0@0<$jB6?*Cju>G&eP`1g19yq1O$kUQklVEdbi=l3J8mmYU*Ll%J~r_OewbZnrq& zG!Lpb1-DyVaO%|uIz}H9u}BdO69T3l5EGtkfgE_kPt60S_99@i7L)NP0p=E2PZ!6K zid$D^#^zr(kZ66Zb~|d-p&v8KE_yaNI58D63yFLD{%_A%*qq>WAnI0M>D^muy_Wa- zOp`Y~+gvF1QX^{1vHt$}{oC$yXfECE8-DusCT)%1Oo}cm??0D)xS+}Jy;JQAfmfd* z*`pl819*HFDt_Va@{$ZuX*=4xc0I=~{|(+5e7c-V8(0tPB^>{@K+>eaughYNw8Wb8 zh1I9+&%eCa$|!y5>Wvxd`xx&&^jPuy{)K-D$_E(s_TM&?p6igzl%4LpE9=m#$z zwt+1|`j?gKq0R0y8$usE{?;}#Ax3x&=iVikV<&ESr*8RYmT=;s2@xR%2fL1ZQ4PNs z@*sV}srLFAd0~8Jse-rfMRT9o!TI9NnqvVwjGs1Umd`!x&N8DT?N?%z7UYhP0Jl-z{GHSaem9w=1WFmcJ!h0o^A zdV2PlMUKP@AMVZx=UJZq63RSayli5ab3=6I0b#k=rZ$ntmbq(lRtSbqi(R%uO{D6O zb)(_?wl|@(mq$Om5nJlfcd0C!d0oZ2SiVWywt60j@7dL;J)QMz)Dos*4!_7JFD!~~ zKEI@}dEQIE7e)OG1JjS~Sa-CsbmC8eQ}b#Uo!%?u?7U%Z>b>C2O<~<9%3l~hw!C4m zr7d>h+Z_Q<+3jVL{g<2z_5YC(te(O9`ex>v{q<)ec{yZhx zdd&%+m8mCdH~YnMm2K4H;bIhy+F5wOE$!a^(!`mO@76J0U_UN)Fr00HkCyBX2EFnnD}HYdzZ)O4{hjxV bct$pcPxqrOb96h|L6wK6tDnm{r-UW|8jhLG literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_01.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_01.9.png new file mode 100644 index 0000000000000000000000000000000000000000..eb0fd8b10fb40df7d0210a935aeff731951e4c13 GIT binary patch literal 1264 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 O0000fFz(-HgPE}77>CP zL93#GXa&(yR>fi|ARw08qbF76%9eSZvv+ z_W?H$NF#|C5iNW=Bdc@w&qAv}wKv3I5l>wdRtiOsn3f9g zC4LllnEC|4=CO%564?do>Wn8*ovGd!G@68UMUx0FID!`iOGTk^Yc~Fli+9GLsa_b0 zGnMRxMtfsOSdupZOCVsVcrOf|L|Ehc@x>ArKM`2d<*9W)a>@V5C6Yw|OCk_O2m~o> z9T375NCaZ8KnNv=yCBfeC?20J$PllV=R>p0hm{Ui@`=0KWRhh}2gj!~Sar5J}eL59A92}lu zHNgl#hH&9#`Wqn{H^`y5Tsxw!_(dQ?63g(t*Zs*{y=~^x7nmEii#oHiV7oHg?oEvZ z-P5P{xBgCuhE$q1?hJlI>l<5KJkUFze&DRYAu10o#lX|h1Qd>_4@u=N6&>Zvt3UeYZO`uZv414t)v98p=P(?o2^4T2)HNO zdC5DM7^=mc@PW$9>ood$%6jaMyu{~E$h7V#&VwuTZT(E)y08twcL}-&n`*vI_+mH? zYveec%U@C)6n@TXdO1U*Byp@qt_}MSO!dH z<8M!QY-jqM00`dfjgM8P;7!|SHRJL4vFZG0EnsG}bYw!#)l$sLC;- z-FkZJWS-3?@gegnuDuy!RGO|WJ_)w-gT0&hr7J$iz94;S$YgrTtsL~lA?$NjOkY>m zVSvlEXJRZIPnBC(qDn%(ahQF?#@z4!D3 z2Im8HGsa#OuJehJ-D+yuZDcKrYKR=SaQpemz(Db>wC+>;l6PM_cG6qHGJuUYc7^RA zX)S=^Qj9<{} zv-=(-VH9QA0~Z;dJCBdqPGOzQYN%e2N8M3%g$<338&J~CGtJ71ARix{+i!<2goZ*Q zo6q$J#GJgg`HZ<|?RParrS+S716z;ecp?~Yfs2l$Q5Az_q3kNBf2+7az`Mx+xiPx`gq&9sl-;I#O* zm0GWqT3-o1^4RB;O4v|aO33>4`LWp|*4HPBTKmk=Y%54g_6>gsBIc@idbm%b@x?0#?Yy1U@e z&`6{E#X)@Y3VFeZe82;buNwXB`Q&7kd}?SoXvin>OySF3W1UNe?%mef*>~yL=mBE! zI3ZW`)lA6pA2Sp8RVtOT@LTd$CSNpcsqn)^hj%KCcKVLr1#Nmr_?<36b?JxxsWCoT_eR?gkbE$r;{zRN^8YHO4#0<39T@WQ&O1&H)ly&WC9 zs#ZMTO_%xy99=3}0JFF`e<63S~TMdE7jA@7|#o%Zsrr zgruBCwRvus?~fP^2D2x6cULfamN zQU3bHB_JqA*khgse(Wsc%h7gLMMe?mkJf~q7oL*HOq<{)<#O}d^uS4rgQI5)(_ za1+qsOAn81At%!ex8uy=xaef(a(GF4)A^e|jaE$eHY;23lGS>d@lGd* z!R^eFr?>V>=IdK&^7fOr4%PN7UoT$#4st;MY{u`c>kU91>Gv%22Am$R{tNnf2T`t) Hm^ps}WaM9_ literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_01_ef_dim.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_01_ef_dim.9.png new file mode 100644 index 0000000000000000000000000000000000000000..0e5238a5a9f634ff8d96f7721de3a9742ed1cdb7 GIT binary patch literal 2680 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 F{ci=qV6y-K literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_01_ef_press.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_01_ef_press.9.png new file mode 100644 index 0000000000000000000000000000000000000000..2285b3e45cf838aaa25c616877d4329c661ad22d GIT binary patch literal 2860 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_02_ef.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_02_ef.9.png new file mode 100644 index 0000000000000000000000000000000000000000..11dfdf62180ef05e72c328334a3e826693cc64b8 GIT binary patch literal 4478 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 QbN~PV07*qoM6N<$g5oN65C8xG literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_02_ef_press.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_02_ef_press.9.png new file mode 100644 index 0000000000000000000000000000000000000000..c4774d5cc73797e4f612901083119d40be011eeb GIT binary patch literal 4648 zcmV+@64&jCP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000M5Nkl zv&E@hDUn*`k&bqE_RRA;&w2kpL@9->8X-ghfKrNV`Q85jYy)rtz%c+j01N_PEp>bV z(*W)QI0N7v0Pa?S7Jy#?_|4QmCm)wea|>0k>fW25f6N#WaV4by#+csO*_F#=vrb=M zv8PzX+AygPC2YHn<7^b_B&u2>0+o2Dr=U6YJ4Maf!EN~Iu#AUxzW z2mD;cN`~hoOGD9EMXXiAe4X- zrU*eah9FW2B7`9Ipicc-jjdKzjg@lQeC7C0hKGiRJpf0Vq0K-8!06c6Mf<|}bJyE) zxmqUU)a{hb8PlYaf^seh7o18V$=c+BVwxrmT~`W3DJ6;Py880+im|k`oH%;y_{i|^ z$P9p=#t^M3y0<>MKGF8UxxZiOXm78zwdI0j(&C^@`M#%D$`yUJ>S?~`X;KQJ6bNHX zT2_LmQz@QuQeo0cigYR!GRhPH{O#DpSp45(Y<@0yI~j#0MK=v_4f9p_74oS4-XF|cJJzO)9Fl@ zOjigA|d_EuADVu{*l*=o|)QxH9)TzHb zxOIDO9KdY=UjS=k7=|G!mG0(CrMu5ge=>9U%{N}_*tfS>aWa`Ool1qi@3T91=I%dO zSlHjy-F*naXbe0tee>gaD`D}ZWeLVKS@m4~)A`TrlP6C-m@C~m58x_*dNkGJfhPd& z0a%=wnXSF^*LPpaX0vTi8OExi8^W?IVOa@&`}VERySlqy2LKwqSXf$myb@1+B?WaW zu73IQczv#PXFP({00bM98h~rl(=(T^jF0p3O2tr05z{n9B9RaeA1*Efc&-`PS*cX2 z@jByNkkzWEP2Ko-8NjV5vM?$h)TnF-=m!6c?QOo~PZvzpx76Q4>I_76Txg;7f~(i&fvRF(oAkrApH@Sqp0QXks>i zARvlT0>+4vLXt2HWe^0hBe}L$Z@BTQsPJml3xyPfb55e=K{TexxMBlH8B>JP#x5zP zkWG%z^!a7ddL!bxN=iv+NdMz_#%Y_(he8{jt{;r~DI>l{P1nRUJeruw!^zg-sp>tiUT+)#gPMijLk zZX5Zf8##>5Rka0ZTu()k?ul}4JwhRgT5k=Zlr98EG_r4H*AW zP((@vAta%UDqYuUB9UOx?VLou$yY>10kCA!(ln+?P1BTAf+(fHg`lkwmJK6ea>1!o zf*86klSzy3+}Yy*$VX5XT}dceHyVSYvh6$1Jkw@b2|*}@6q0Z*Xu>oN0Oe-jqT{4( z9&###AdE4YO4;GT1B2TEJQXP`1ArdEn@jwk3E=7d`}cJuZJRTyNg*Y|Fr>DfvH>hM z183XXwq=7LU_9g$gsN;VTOS@is1FVf90G7KQpHx}xEYd&o*x)Gc;Lms=LcCf>jZ=- z6$AmR)oQH0V|zA|*r<>*4nPRd3kMCJ_ zwo+LQ6J|oB({|`MnXu6J>}oolP8AD%KfHN!dTH^Chwj3{1D8@tIy>{J&iraOeRyLUg`-PPT_4B#>V5(CQs{&3{T_kMZy?3pX3VMxZP zN+!Wm>2$cuFk~*5)rW=-WL?*7=bRG&&@@fiw$0Ni+jBCRP}go1cHI z>+4ELDFrFPdUy41OWEmkU!mBuXU|>}!0!P3X|su;*3{Q8T2f!FCIC!E()&y_{kNR@ e`r49v{~7>bE2l%3tgjdV0000KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0003oNklqv6c5++SL&vuD_T?+HcH3^L3C zE`b~1G3;HyQ~0(_&sysDe%lDWYdBhAY}1=H5Saqpjez35I|V$R>I86|0qgpD3^;X$ z*9G_DD*xesK8si2A`|!wT*l9$tHIV?oD)D*)!G4IQ?cmpC~XdOpacIaFw{B!r4DqU z10Co<2RhJ!4s_t30@|E1d@ESUu$0?v=G`R zz_uZ_+Mw;)Dj2YbFOdhKyD&zIBRpka)@cr|ew(^8ucbcrKz}oMJN3+0MXCp Udt0JyAOHXW07*qoM6N<$f&-4VrT_o{ literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_03_dim_ef.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_03_dim_ef.9.png new file mode 100644 index 0000000000000000000000000000000000000000..4749b1f84b77ccd5ba8c1d3924ca0e95fa998321 GIT binary patch literal 4529 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 P00000NkvXXu0mjfcIbD5 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_03_ef.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_03_ef.9.png new file mode 100644 index 0000000000000000000000000000000000000000..4749b1f84b77ccd5ba8c1d3924ca0e95fa998321 GIT binary patch literal 4529 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 P00000NkvXXu0mjfcIbD5 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_03_ef_press.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_03_ef_press.9.png new file mode 100644 index 0000000000000000000000000000000000000000..1d97aecbd1c3d12358dc72a8c7504a54f1174bf1 GIT binary patch literal 4696 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_06_normal.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_06_normal.9.png new file mode 100755 index 0000000000000000000000000000000000000000..355f50d46c5c6b2bf0d0f26dde95b1a4bda17e30 GIT binary patch literal 281 zcmV+!0p|XRP)$;Z|VpVkvi1KC9mU?#$^S zk5?Rn2=ryiT(wwL$da{%*IQ|yG)Itk;c?+BwV~(cx`52`3cs#uGDZGMq1gI}&fv)v zN4W}~ODz%GYAr93`CdX~tCRIw);q23nG72plN{9bN;!MB9F$;hU|i4?@q*z{y$0LH ic-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%uvD1M9IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD#PU%0_}#n6BP2AO_EVu8M)o`HUDF34YC)x{-2sR(CaRb3oXS&*t9 zlvJmgIvE?7S(>>y0d-m$8oC-enwdMh zm^zslni-fGySh2S^m^tMmn7yTr^4*b1lkML>xfscm2**QVo82cNPd0}ECmE)=Gku_A z^g)RODY3wWfGH5fgeQF<2cCIS^ME;~2$(ele&mKTFfj3Xx;TbZ+v_G#CK_$xq62x+xrOkFm0;rZa}j-tBWYDGbBQ`KDJ zZ%KD2>6e?DO-|SU@>ThI!n=lFla42zo4W7MuJPYd<0NZ6lR?w+ovJMG!+UHQKkT-$I= zRPH0A%6^u2+1KVx2J(}d_u9obckx8Uqy;{gSz)>+v$fr8V?h1vt+y`h{r7)2dz=}U zTfIg4=Q|Q#>zabPT5no&U2Q!S(&JaTHeA*8<{qK6rH_sF?lA5@)xV;b$ySj!dz;w= z!L2WtR`e#tMt-m8Y{Mdfc!!6`eYCwDK zj8$9bXJ<6_ZpmiX(3%5`A6S%d!J>;*gGIx^bWJ`Z8$*o>?+)gLo1#G_uBWS?%Q~lo FCIDWZ4XgkF literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_call_ef.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_call_ef.png new file mode 100644 index 0000000000000000000000000000000000000000..f82b7271e2259d284336ca25b3bca49050473ebf GIT binary patch literal 3831 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 UElb^aIYH%#r>mdKI;Vst05C41YybcN literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_expand_cancel.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_expand_cancel.png new file mode 100644 index 0000000000000000000000000000000000000000..14141a129c763ee00f366cb4a51fd618c1b5913b GIT binary patch literal 1655 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_expand_send.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_expand_send.png new file mode 100644 index 0000000000000000000000000000000000000000..23838c2ac150c426a712713e2e59c339de07c922 GIT binary patch literal 1767 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 a>q&x&Pp4#GEV~5S4nY=kr766pvF~rYZ3fc- literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_info_ef.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_info_ef.png new file mode 100644 index 0000000000000000000000000000000000000000..49ce8016153bd2295fe2e844cf4b7b654e253326 GIT binary patch literal 3705 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 X*Fl(iJxQM<00000NkvXXu0mjfNNnqv literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_left.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_left.png new file mode 100644 index 0000000000000000000000000000000000000000..2da01a95d6a254dd551938caa74b849a6923aa44 GIT binary patch literal 3001 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_left_ef.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_left_ef.png new file mode 100644 index 0000000000000000000000000000000000000000..e805dd44dfded96132b1976083fed12636009152 GIT binary patch literal 3394 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 Y0Gbw*&|8Y8#{d8T07*qoM6N<$g38oMZ~y=R literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_minus.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_minus.png new file mode 100755 index 0000000000000000000000000000000000000000..622616cf09611dbb1e7fa9e966ba92bbd6450872 GIT binary patch literal 996 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_normal_effect_01.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_normal_effect_01.9.png new file mode 100755 index 0000000000000000000000000000000000000000..87f9a6cd3456930ec08422a1fd8f0132a8ab8c13 GIT binary patch literal 3814 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_off.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_off.png new file mode 100644 index 0000000000000000000000000000000000000000..34e311f3e423d62ba981a43655247810829f4dc5 GIT binary patch literal 4867 zcmV+e6a4InP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000OsNklh9amC3sec(PMMB6uXd)HPF_yp*iLNUbMIl{ zB$GS#WFDC!+~kvvEZOHAUH|;u|M$4Zno^2A`*cj~A=rbv2Y1iXX58t*ldqrX`~DM8 zJ{17>4j6~p$=6Suznuk7Jo(g3=V&_!Xa(R=;A!A~U>q2gGGev4I#?cN8su^gKn%PC zECPQ8UOV~viTD1OaE|~-qbPcGvAV$g+$@boop!55yWJk>+gQ^yJm1GOEegdVrP2tl z=gk1W1YZ90pZ<7dWA5YMIDA*(eg`{S>AKEDWs=I|0Sv=92K;2Fa32GXUi#?b zGZ!!1n%*~?O_C%TyvS}CWV6|u&a-Ws2M#@m?*}geKfF`8N8&jC-3Mn*Q(c(vJE7HX zGdDNO{QLq-%S*&@Jn$ZBnkI#Oo>FO;($El=W%WW6f_v`0kMh{Qmw{tI?RMZEQc9hA z|39aw^^t*2r^DIv=a`EeZRM`y2o((}R0>&p6%+BZR5Bup6B8?4q4mAFbsq)x*j}0aFyzMY#evtw$@tI>kS%>290KuR;z_l zih~CavVUTtCw;sB;DdOc|2^Q9?ck2baXkIbzu!VincC#Tk3Qn`>G!cS7C{hDEEdS; zL$cW%mSuLqiovg@lO#b(NxR*l*=(|0t5L01S*g|OL=lfX@-U+#BdIm6>+!&$hu#9d zv|VrE2Q!~clf(%^6Pu&DQ02^-Gq|opxm;#)s=~gBeH4pDT-U*}tj`2k03igHW#M@) zrP2@+`^K59R2UfW+qFgH7w;v^%v zky$<6PZpk8Szba2ks6n$KW1oXi1O$tp67mMZvQ)}(1O5ctX!s$&vWVH%RQ{t;U2lZ z<)|yAzTRAIpowcyez{fy6hoyVp68+K`oID4{SYf-BZMG|I@DKcwA-yauHu5gr!-vR z@}}j1Vml3%x^DI`6G8`QY=yh18wT2S6CKAvsljU_wpwc_wSDiX zwYIb8e3}s0nQRX;!!!Y|Y}MTJrfH=jpU?!^?nAqQvp9}fS-J5OlTN2iv)R}gTr?cV z?O|q`7Qp$faIYAKG2QJETodQO^BB~_PW6=fHQ^%dslX4vU5E};uN*G=)V zZ5tuP>FZ?y;4j&n^WA1+<+`-PA(qiV0$yEhvbx&DFieEd=yW=FZExQTP%24jZq9W9 zPV_5(f9tp&nkF`fQcx_G2EKHaGPoo;!rA~SS)P_^{zMD&Jy?m+PZ9R3_o80 z_*qJquUq?qoz0!LGB%o~ZH`z*l*h(5a=2Yaf-VG|b{n>2{hAO2VG+Z$egPcqyTdkcv%v2=?bhRs zm8G7fTh|Q?(*hLrdY!ekCQ`;kQD)nqsR1IREftgM5s8~>nteCfTL3d?PP@_<)R>RVCNMt0iB0WFJfy?>x% zm=>m)LFmRM;CbNZx2)QC;DsS@95}3$s>CuvsiZ3z3X&w=Xc!L|NMpU9(oI1P!$cEe z8Tcpg($=2ArwO;)U0Pni3x~>dPn=Hy57B+1F}@xQ2hA=4(faEJ;5YTKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0007*Nkl}JoSOg_h0tuMf2k=s<6CGgW1^NPgj;c?P z4Z(`KurcHXN(Y3ZAcB$sVdq0hlwb$Q?a(+YD{)`)q; z9{A!p4kCmgolavI1^_oVH*`83hQr}(ftseVw6uh6-+zqr`8=-c(r7feySs}XXcz`- zYikH00PsAI!C(MDDwSekVFAmsFin$6rGoGK(E?XjR}n(c>-A_f8dF>tS65dQ3I$Bl zWMyTAlamvql+iRvI-O>2ZjQlVz}eZ^JsiOG^)=OMm43fJt!QLjoXutdXf~VN-roK; zZ#*93c^&|nOeQ*DDwP7D)9E~z8|H-jL;}=x9pF*j8RmrhL;@U*MgSy}$wzg2_->30 z*zflNuq^Ar+*~dPK(E(}4(PfrQc5h#`s1@DgqU80>$=eahr{9YgzM|;zpP{?lVM|H z16|i?Hk;F`NA{ww*X!uIPBxomd3hPzwh4j&DJ4RP=?K$qx2e@?(GPV}O3u&E>2|y1 z^ZB1p06`FNd3pKdTl;LYnO3VstJOjXK{A;nkx1bC{*%Yve=^+yo)z_9O;{CB0b{dh z+S%D*b90kIVYZ)UE-o%OJUnE7fB(k@$8lt-RFZLvQmG^z$B`Pq*49?+Zf$7N!Zk+R zA~dNkRzL+*Km}Al1yn!vw^QJ0L{8 P00000NkvXXu0mjfojqvT literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_off_dim.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_off_dim.png new file mode 100644 index 0000000000000000000000000000000000000000..5a023d43cddc37851f80fc665a0ae7a20c8c30ab GIT binary patch literal 6508 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%0DrQAoQQl?U=P%4$k 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_on_dim.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_on_dim.png new file mode 100644 index 0000000000000000000000000000000000000000..8ebea422c15a73839e79f6b6968d977c1c3267dc GIT binary patch literal 6485 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_on_dim_temp.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_on_dim_temp.png new file mode 100644 index 0000000000000000000000000000000000000000..8ebea422c15a73839e79f6b6968d977c1c3267dc GIT binary patch literal 6485 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_on_off_handler.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_on_off_handler.png new file mode 100644 index 0000000000000000000000000000000000000000..645e3b0860de43a21cae7a8e33d824c66a8856d5 GIT binary patch literal 4809 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_on_temp.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_on_temp.png new file mode 100644 index 0000000000000000000000000000000000000000..a4baf3b8bf27fa139128304047455a989d0039ce GIT binary patch literal 6545 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 D#)7jY literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_plus.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_plus.png new file mode 100644 index 0000000000000000000000000000000000000000..6ba5a3b73fc3c8a6f677e215e999a781297cb2bf GIT binary patch literal 3003 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_plus_ef.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_plus_ef.png new file mode 100644 index 0000000000000000000000000000000000000000..613b8cbdfe01d9b08260529916b534408fad463b GIT binary patch literal 3230 zcmV;P3}N$$P)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0005WNkls=e1nTae<4g#Qn0tzUgfFeKv z1r$&~0R!_z_bv^dz`yi=5r@bGY^Zj*y)*K<>M z1AaAw!C;cft6ms}AM3JDbia6q@K(~1q`c=Y6I*_3NlwwzDQ9Do^6T5CH>EZ zSRs|?Ox)#VllgzXXP(N6VhaNlP(T3%6i_6sP_#u68au4a{WrBP z4TDS5lj3f49Hj*(trf)_1r$&OD4>7>3Mim}B0vEJ6i`3`MSubds3h|_0AzM<&$1hU QAOHXW07*qoM6N<$f(zsOCjbBd literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_radio.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_radio.png new file mode 100644 index 0000000000000000000000000000000000000000..64a8f273e71446cba4c28f43183ff1a28c7b269c GIT binary patch literal 4983 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 BiY)*D literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_radio_dim.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_radio_dim.png new file mode 100644 index 0000000000000000000000000000000000000000..7f732b2141e7ea85c784db47b48ba47eed69c2e3 GIT binary patch literal 4797 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 XIppj@*}}GC00000NkvXXu0mjfI=lv} literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_radio_normal1.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_radio_normal1.png new file mode 100755 index 0000000000000000000000000000000000000000..8bd056d9bce493d84df964ac22e8c393b277e865 GIT binary patch literal 3744 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 KMNUMnLSTZ1X!F1T literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_radio_normal2.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_radio_normal2.png new file mode 100755 index 0000000000000000000000000000000000000000..805aa5e43986af0b3b8d42318733e394a18bc9e1 GIT binary patch literal 3161 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_radio_press.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_radio_press.png new file mode 100644 index 0000000000000000000000000000000000000000..789d761b4edbb8432b62a9c4af2cbd1f13eef2a0 GIT binary patch literal 5175 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_radio_press1.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_radio_press1.png new file mode 100755 index 0000000000000000000000000000000000000000..ebc3620fe88c05df1929d216e8102caffc67b76b GIT binary patch literal 3620 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 FV1ldJuu}j4 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_rename.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_rename.png new file mode 100644 index 0000000000000000000000000000000000000000..39a9e71458d200e5d8e4c4f727e9ac8da75f6716 GIT binary patch literal 1384 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_right.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_right.png new file mode 100644 index 0000000000000000000000000000000000000000..3657da2707adc3d5ccfa49bcba8cd131c3c989f5 GIT binary patch literal 3010 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 DfyOy6 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_seg_f_bg_01.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_seg_f_bg_01.9.png new file mode 100755 index 0000000000000000000000000000000000000000..935687c57836c56647cd70b5ce471cc0b0202b52 GIT binary patch literal 1042 zcmaJ=U2D@&7>>yNm<~imoG>`c*p00Ds7{w6ys#!D=Y!{Y-simUduDoj zPB%3kYosWuDV>rsWIXJBdv=lk^_i9?GBo2v9%s=YE-N;qVj3zykT#Sdn1PBmcIhqb zrl_5?p3CFBd`?u6!6+VvaSe;GDXKf_T8dhN7!=@;Zbs5&;8Z1-Qnr>4lW6L2|PumfJShHCQdhxU|2O- z)7eTBNf_%Y7Rxi7ccdy%mj4emj2ha(8My8DpTbUV%z|tNI%vdJN#O?Dyik@Hx1oZO zokM82n#JBC!pJEi3&gVm!-GEE)KJ-};AL4%n+{e?6{e*KO%xbi*F;_j1%(88L*XRP zC-_(}5KMLklASyk7eYd!%9W5hVn7pDx!N{2S(odzf?<)!614SEs3mP=fXb0Yy}lO` zx1N_xu2$cRRF}&VGptwGzY1O5BHiOnYi&ywwZ?}g>2{m6^}9#s6>=pe(^4$we*Te* zHNF7*OK^FW-FSVsb5)<(pi5neFLS$pDpL)#FExAo+KvPKlYzp=m0w+{(O37Ut-0v! z<~7*9uiQFW{H873yz${_>%xWpt82HM`Mq!Yvn$WeM%zDKIRh@gytsa7VwRqNey_!B qJ+ipu9{fI?zC#t?cRZe6S!y^+eN8=xyCrwsyQS$wkM!`=z{DTIno=_W literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_seg_f_bg_02.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_seg_f_bg_02.9.png new file mode 100755 index 0000000000000000000000000000000000000000..46e03a1e2849f88de47460b01d0eb2238d15629c GIT binary patch literal 984 zcmaJ=O>5LZ7>=%rRQ4b!q96`g@E~p`v)>suw%ugc2AWc~3*D2LO{U$nO(rH&H|@o$ zr-Fib@a#dbB8Ybn76d6ng<@3qo}=4lH|>Fwh~(uCIzeU%eKA>!{*l(Ui?VBVBi9Gb9U}b1i#w z)m9vF@(QTNmSs?b-{0PUY*w@8;og70E^dW3j757cG&3T~Fkbt5jXKlHJK&c?1 zf~*vj%OEEs8KNAN%ULAjVj0T_3_g)Z3!Nq0)Ek3Xe5ZB6qr#tt)ywiveH1Pjw-o)y{;7Vs8T64 z%6enS)v3Mi5uXjY&H+~+%S~Fr3wUImgzin^G(zfue#+P#?`3+d-hk_j_fi|nh1?8G zF7~gB9v<=TNtUCw<(pCC6Q6f`$lH4AvG$TbiCIIRZpB|ZzxVbgQ>jeq+V1<^Ul-mU zdH(L{qX&nZLMHR$R%7SHv(BZ=XL$GP6i62y;_sD}Z#%c&eA+$Pu6%s5brkK8i&I;N XgflCKU{~**PTrbPpVME|uHX3s76CJs literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_seg_f_bg_03.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_seg_f_bg_03.9.png new file mode 100755 index 0000000000000000000000000000000000000000..e98ea714c0952d0219877e15403d6e07b9fbd333 GIT binary patch literal 1026 zcmaJ=PfXKL94^ifL)=Lc1^@8UU0wf-m95PxjCGT#CCgaC4#v>657t2YYWrXXjS0kq zgs8~D#2bkiq9(*U2l1j1FPx0==FOYl^dQ04u?-K-Ca>>LzVG{ezu)`4<-+LIa93{^ zMN#4Wh*BhTcQ8(MlK;cyi(xYL;A|O>p-EiRTu7x2RDmFGX;ZKWHDmtv9!ybGh&D@Q zTvl&LI}n27O1v z%ZsAOaxpd*ixNcCo42v%M{O_CR8XL&yQYIpWP?CatDspd)5Pgf3YOE7wY^4}NWoZN zb6B3?f|Qy-RsBEIvRY^l7vZtre+ql0c?YsZ=%HCxCl@yv2|_ti#)TS2ZV928W)%xn zgppT84#b&u4it(VrXU z6)u}h3)w^_)8r~hpS7Tkn_T0VJJ6OJw1VZ3$O?4LIcVfuWPy6hlG)x%e_Oo<*J$r0 z-j>S}Gi-3Ne_eF*h;&b|Y_%=fv>G4Uq}yH6)_a!@9+M|Amsipy|4Zff;o)E?6baqh z+1>fo_x|MT51UU{PZX(0WWTbySXjGo_xyvEi4<7>Jamp(>e)RN&Rjb<=&mlE-u<}# zjoN-v`O(*X|9R)5-sH{jM)A{~j(B>l_eD7Ob?D{d&;1ql)!8=_p?CK-*Pc-woz%ve U#MVfZyB@sCe0EgX8lG7C0~zv01^@s6 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_seg_f_bg_ef_01.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_seg_f_bg_ef_01.9.png new file mode 100755 index 0000000000000000000000000000000000000000..7335e58ceab5f81a1ebbb91ab172aade4d52e814 GIT binary patch literal 1153 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW~I!Kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v&`mZlGgL4$(K9qL zur#sMQ7|$vG|)FR(l;>IH8ij?HMcS_RDc2{plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OML?)eIp}XpbFjM%Dj@q3f;V7Wta&rsl~}fnFS@8`FRQ;6BCp2 zOG|8(fG&l2A-4c-Y+f-mn1BJMUy)d#Z>VPg@)As;uP=V3xw&xF#U(+h2=`(&xHzP; zAXPsowK%`DC>a=WY04n03ap%qQWHz^i$e1Ab6}wukda@KU!0L&px_*As%NMWo|%`D zUtSDW@9S&jnO9trn3tUD>0+w{G(j&jGsVix(#gQW#o5%<+|td^(AChw$i&Fe$jsH; z)WF!>)yx&9*Cju>G&eP`1g19yq1OzjUQklVEdbi=l3J8mmYU*Ll%J~r_OewbZnqfY zG!Lpb1-DyFaO%|uIz}H9u}BdO69T3l5EGtkfgE_kPt60S_99@i7GGJF0?ZO$JzX3_ zDsHWra*(UpfX6}ltBpkQbKbI>+kXbjeP^x``0_}91)_mGh$az29z>_U=zhTUcW3 z^$Dqx3m8|gGU7jQqN0px)ofdiE801;j?J-8X8aiCwjzLiTWDD#3ylxk S{5bpFw0>5iK#joG@jqGUVH9Nj@@&NOpuXMGH; z>_$-0LodBV1}XH=g#x1xUThz&^u@&~pzS(!kIobSk89iXDX+qj|`I z?L)0eZKz)pb-KO|)Or#TFdm zsBzUisIFr8Do(5tcL9OpIhGe#E*#`JDHN7C9xQz{iRS3NQbLX`#Ui^1ox#|aST>u@ zGTBN7IejcIiXzJitRMslBIxEUta?Gq-JVyFp{qHDjSXZ0Us3HrgE&GHr@vD$?PXcZ zT`ChP80)Dv%QKvxQXZ%%|A(69GTOxn_{Z-*h23P%hHL`5XwcEf#r1CYL)lW)fhtB$ z5}|>7727fhBR7L=5N!`JJV+UqjpgnowAb z@q806R`WG6nG<3mK3vHO4SBANv_TVEIM3DpaK(aLzZFcIM3$jr9EEz!K_*yCSuzTH zsV=Cu#MKLX2^ZwD#0=|S>|Yn1KO)`ZFPGbvY?d1zTBO?@($=>}(uc^CxEGfjlHQw} z7nPFYiqhe;pDOOp-A{dlZ*#Y{J)XVyd7$^&!ifWq)PwD(STM4#zPohIi_T$i#Mm)9 zWxqT8{zuEglar&{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v&`mZlGgL4$(K9qL zur#sMQ7|$vG|)FR(l;>IH8ij?HMcS_RDc2{plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OML?)eIp}XpbFjM%Dj@q3f;V7Wta&rsl~}fnFS@8`FRQ;6BCp2 zOG|8(fG&l2A-4c-Y+f-mn1BJMUy)d#Z>VPg@)As;uP=V3xw&xF#U(+h2=`(&xHzP; zAXPsowK%`DC>a=WY04n03ap%qQWHz^i$e1Ab6}wukda@KU!0L&px_*As%NMWo|%`D zUtSDW@9S&jnO9trn3tUD>0+w{G(j&jGsViu$G&eP`1g19yq1OzjUQklVEdbi=l3J8mmYU*Ll%J~r_OewbZnqfY zG!Lpb1-DyFaO%|uIz}H9u}BdO69T3l5EGtkfgE_kPt60S_99@i{-Adhm|GZGJzX3_ zDsHWr;?31;Akg-?KyixRE^Uwg3))|d;=KJIt>gZFSHx@jqg5g;i_AVwJlEl+d`0N& z3I1dcyXWEQGlIJQ>{bZTzw~y#pz{6O^&DoG;!^Z9mYzDO(zPggTIwVTm)qO4&VMeK zIeuP&<5S{ZW;IWxn)~$vhdpuj?ElP76xYxO^^eDdw_jSXXiQg1HTA zV$H%2Z^AamgkEKck&0m!b3M40>7nd8RwG`GrB9smgfq@>YUTR*Mf>*FJ0`ucr%Pkk zGiLoa_@>axb-m;iTl�hg9b_rN><0E0J`UIA`(Vx$u)}X9Yf1ndtI_J6kF_xYLs~ h=QQSYy4y4HFzk+8$a=Tv6{x6T@O1TaS?83{1OSbTitzvd literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_send.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_send.png new file mode 100755 index 0000000000000000000000000000000000000000..5ff5764edccae35921613b8728bd2d2c291de0d5 GIT binary patch literal 1231 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!1|;QLq8NdcWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW~I!Kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v&`mZlGgL4$(K9qL zur#sMQ7|$vG|)FR(l;>IH8ij?HMcS_RDc2{plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OML?)eIp}XpbFjM%Dj@q3f;V7Wta&rsl~}fnFS@8`FRQ;6BCp2 zOG|8(fG&l2A-4c-Y+f-mn1BJMUy)d#Z>VPg@)As;uP=V3xw&xF#U(+h2=`(&xHzP; zAXPsowK%`DC>a=WY04n03ap%qQWHz^i$e1Ab6}wukda@KU!0L&px_*As%NMWo|%`D zUtSDW@9S&jnO9trn3tUD>0+w{G(j&jGsViu#L&svz|hgu+}y~}(ACh=$jQYGDB@~n zVQ67uZVJ=ulAm0fo0?Yw)0=|O>x5G;C@JI?0Bv?jEy^rQO>ryA&s6|>*(wvaTP$#z z2i2Q`+bxzj_38s1qYsK$q=<$I0aFi%2~V~_4m{zf<^fZC5inUFGjS_qU|@9iba4!+ zxb>rZYUS*kc*yvGu(Lya zrShS}0)cyb^L(E#$!`AGEahz={5;$6XUxiTa$8FLcU?Vum$Sez?iZ8U4KLd_4x#08 zc^%sPA@fprOCxy?iO)ROE#f}e_rUyh?vs2Q3i!@UO%>iWZHEW{l$7K+ZMhxRa2D>w7_Tn;wlc=M))QYWZE*0hM%+Vcm=1en3cia#w zk_v*f_ksecr-Ck!_|Of6kf@|EB)UCHba@LZ=*+gOJ+uwXoXdRQ_y6brzjLm$V~=m` zwzU*R`C{#If{cFeT~kTEJ5C=gBg0nQn!;VE4`&q{QcW64Lpo+C{V)L)ZRFS!*g#Pg zjGj#4RD7SPB7;>t4C@*eVN+B?qiZSZ0K{|}_Uop^e3`k=(7GluJ&`zwTP-l7x94ow zmFq~VxdBzsn8w|7gDVmN17d}CjX~29U5Ux-ie&C>a}1q_-~oyGlT<3+Nw**y(h(K} zR8Y^;^cwCH`4pvMR#$<^h3aqYcA`n7ysF@E(qEW!} zt-Qboo15fNRH*0M1?9DPRa;#RD6e@?cYdOJ%Sqqio~5#@M<)D}XWw0PzFzsYVfw(l z*0;24c*##yR90;P?{B8pj2@hSyKtymnoBOO+Pm|a+Fc{9lgPi`2PeuZD&J7wr}rNp zzufzHtb1z7)pK`zpFhn`j!MZ_A7{2NY?@ntW@>Qp`Vr<`^{*FjcH6?wXZLP6(fd!| k|2TRflFQ4C)!e2ksMg%2(RK5;o_m)%*4iQ8Xzo4r8|F`Av;Y7A literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_warring.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_warring.png new file mode 100644 index 0000000000000000000000000000000000000000..7e63d67fc3f566219d4569b712902b8d220dff7c GIT binary patch literal 1193 zcmbVMO=uKX9G`quvvdV9hghl%6M}Qeql%6yP`(`(rwh&V2z`W1@ z@BjOMzOVCrpN2ypg(!*&XHRGaGM^0o-5-$g3}Si+j#y5DS-*Rqp)E7P z3`jX4=c;hjIx+3R{^`D=F+FC;CUfj4-BVGB0vlqTuGr&_uT&CDRj)$U!77NUTvl^DL4SeOyDvqzxUM)e;Q3;Y`a^GOE<23Zj^f11&8AAcJnQ)}&~v zON>i$ysl$AtQt*<@f1)AQU)L`%CU@~W>Vd;OtMSLfGup+@v-h0u+D1{-c4+3N35cH zP{+tCA~asFfcz-J$R9;6t@cYCpa(3+L}fonPt98mde%8;W;|rm)%YsbHvIqXcMWU) zpP2E)7(OVDe-umoh*V&(+$w#t*=io>kdE<4Yy5Ek$akczo@TXVvGVNAvtPpV!iO!3 zGp$N!nTov%_5RA9y$~L3j-3x*+PmxG%)F$npZcTo%F5$h-^TccRn}ck=F}R*P-dcmToD5(qKP@c` zeBZfx=IQMjb{~77B~)yB`N(;3>CTta9m_vo{&x1z(oAU}&$I6jw#SpLSNH7s(|EGB t@cH`U{8xj&H&-d=n*U|WwT+(Uc4~ItwbSg6yH|t9Bb)BiZlngk_zU*ee`^2$ literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_warring_ef.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_warring_ef.png new file mode 100644 index 0000000000000000000000000000000000000000..358c8afa7384be24618b75d156f95946368abf34 GIT binary patch literal 2983 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_button_web.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_button_web.9.png new file mode 100644 index 0000000000000000000000000000000000000000..04eeacab042c6c1edc2b0ee43f652f5a7640c579 GIT binary patch literal 1331 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW~I!Kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v&`mZlGgL4$(K9qL zur#sMQ7|$vG|)FR(l;>IH8ij?HMcS_RDc2{plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OML?)eIp}XpbFjM%Dj@q3f;V7Wta&rsl~}fnFS@8`FRQ;6BCp2 zOG|8(fG&l2A-4c-Y+f-mn1BJMUy)d#Z>VPg@)As;uP=V3xw&xF#U(+h2=`(&xHzP; zAXPsowK%`DC>a=WY04n03ap%qQWHz^i$e1Ab6}wukda@KU!0L&px_*As%NMWo|%`D zUtSDW@9S&jnO9trn3tUD>0+w{G(j&jGsVi%%-Pb}!o(ACJ%)xy!u)WXu( z$kN5Y!qOC`*Cju>G&eP`1g19yuGiE6r(RG}$SnZc?2=lPS(cjOR+OKs0QRy~CT_R5 z;4}}aHwC9#Ok8p5)dxC89~7}j5e*XprXCOzo@{{}c*0N31E%&OV6xt}^NJ?}1LJZ} z7srr_TWhB5&OQ_%a!i=J_J#xZvZZ3no!IBj;o_1iEPoN8q4%z-zW2d9rPwXayMHjm z#;$S>S3K&Hp}3Vl71ymXSmkX!#--8x94Pkt@^7v`>b8mw5tloY+t84g06HFJxh;+AgCx{WSaQLkS(NZRe}XG+p?PByD`1x4l}0Gr~sBylU?~US41G!v%Kp zzk4?wyJc|9t}b2C_i~v_;~HK|hq^6Z1`>CKST}_gHcFc^Y)tpQ{*^zFBU?AWZE@J@ zuWDQ=Z%;6OIxIKMYw1dj30n`p=i#(kSY8so`szR4R<{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v&`mZlGgL4$(K9qL zur#sMQ7|$vG|)FR(l;>IH8ij?HMcS_RDc2{plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OML?)eIp}XpbFjM%Dj@q3f;V7Wta&rsl~}fnFS@8`FRQ;6BCp2 zOG|8(fG&l2A-4c-Y+f-mn1BJMUy)d#Z>VPg@)As;uP=V3xw&xF#U(+h2=`(&xHzP; zAXPsowK%`DC>a=WY04n03ap%qQWHz^i$e1Ab6}wukda@KU!0L&px_*As%NMWo|%`D zUtSDW@9S&jnO9trn3tUD>0+w{G(j&jGsVix+|9|w+{Dqy$k^D>(ACJv&DhD+(#^!l z*x10t+1U-I*Cju>G&eP`1g19yq1OqgUQklVEdbi=l3J8mmYU*Ll%J~r_OewbZns$A zG!Lpb1-Dx)aq86vIz}H9u}BdO69T3l5EGtkfgE_kPt60S_99@iZW2sg&%nSq)zif> zq~g|^DgNHg1roOu{Mdgnh6QFZRR&fD z-(G%I@6qfr{BcOsKCLXQp-*7R>s=`l$7X7D<@P-;`xq^A{QlyL8YaGh}9UA&ouFi<%Sn@U#OM&Ga26w;z&2|*vo597^^uT%2 zlIVu04;|hUOt|h>Z_AAjXm_~dPhSn5ppGXN|6XubfU;>!(??e*PXO z?r|@ZYe}7n|<| zEe)8aC}wp{P3)hV#IXQb{_eFoE9Jv-^p-GAKDjgDf6$lapq!SR4B1#hsy&e$hU=UP#5kUi?Xed%8 z2uKY@x`4oyVo*vh{!jngoqK22E;D=f?7i00O1@!X$Uw_O3jkm+Hqx^OfNc4q*P^Dp z$V4|T*hQfUFtWc703GX}AOnTZxB#HF^nt-{-0=1f_P_7#A0S{1g9!u#`Fr`?^#mYv z7Hxxs+iY@Z5*H4krb(!5Q-5oAY5{9#DvB*r6e38&Y?35cI>T<&d0Ahdg15gUi99_W zmBwx*NuNSHO|>fcB0ctHQp(`TQp8K&$#&xU@cFwbt&Q3PbkhhGj+#E#NWn@8MPCKw zzx*|}ucvouRaz&SRwMv0Q#W}C-aiv21IJMs8rOtyRPO;<=r|oUz?m1}WUnNWn6{t= zj%27fGF))xbyI2-8_)?)hn52!12PmkU(^PaPym-9cefRALkhTvJzgINDD-hb1Q~G1 z7Gx(Y$piwdo=JMZTOHJn+)U922wA}9W!j?(rlo+av7MI@XlMpFJTqM*pr!}1R!Q*^ zfFc68^a~4zg17>}X0UIk@#9)O^9JNXse(ogtca?9v;(zNAeEh+G`~3BnDZK&vg=>2 zg*wt*VFlds(TYr84?Y1e$MT}&3Axsy5@@)iMHZ1MRq5nT{?k;9 z84-+ICIYbE=HK~6oSGcv9lJCVLfX?lGc36ZP+rDQ0|B_LCn60WY|`$d20*VQ8q%Q4 zd)Ub(iKD#Id1QV_!F)SLzJ$AXBffpjpubcT9SvGD)%$^b%xOZqpH>j z85|`=pM&1=Xr?KbZhWrsW}3~=g7wMbzHw10^xTz|?(K%Yxh_eQ>Dm0#BgVTQ1nHmVf3BBFSCmPUn!JkF|1Oem|;^sQ*? zg4$vn2(t^~bNGSG!jgR(V$i_Z?`_ZaRUlj%}93tq1RzaIZ11DXvj^=F98a zzAUt!uPlXMR?4^qtt-V?zqU%OWL11ns5%_WVQgAf_abMU$D7le==1tpaO>sy9Da+u z&vs)&n}*-=zL6h>&@&{k$Mz*5#kq^PsJM{aAzZKX&C0pQQ@Q)#vMO@h`5OgH1^%`O z2nO%$G z)sE_=t9{FOOWX89KHRI=%`bj`8&z!PU$GF@vGMy#q|6!o%TvWZ@Vl0c8= z()g$p=&!*i(?|GW1#{}wft9)DxaKXzWnxD)UQQVNW5AT=)9bh*vf|h4*ZWeGQdCgX z)O^c)x6s-gTP{(qZl-S5H~eY%#qeZ-QjwA1~M$uH!VzbMw&|8w2N=%EVapUT( za{FCO`@Q&Es`h0F+gnae26gDVtCMYYZ55X*uohVsHN}(2?uH+j0Zdghcf;B=C7~YU zhlzAWx^W_#Kh}5eW_4smwnqMQrb)$+IKx=OcZ)CT{@WlnwVP@Sh4^Q?+L0d*b2nv> zh!N(IX@wOG>ySi`589?^+z`o$#NLlRNJ>pMjTw^8(~>UY?Va!MSTzYg3UpcuA3H)9 zH5GO3R1#kAD)0L2CeA(or1)H-*k0lO=k9*kSF5#AZMx?b@(cFPpHy(o{mny`-TuYS@r$s>!Xyt;IB67A zpstc3$&;gXqaFS_ISzj$_#s_ejo|sSab`z1tpuyfuA3247qiw`C+OY({Yjl5aU&m} ziT7cQzY+Cq@-vm|x@&586unq{V!T~~c6vY(f@f4NPbp+{4t9T0@3&sA-a-*l&QkTY zl!+2Vt6KVw#;i)KVykwqw3q#-2?QEpeAo1fsx+it`QF|4i>EsWiOc9^x|Imde3^cy zfUr`0*I|4GN0l^-q*|_yS(3%|?0@MpLn=AauI{sjTurA9>*DJ|3dxKrk0wpS93lJ` z`$iD+@TcE1+m*sZJ}Q(+u3_WEs-Co)F__I4sTFe+J{0hi*Hr6}i+!5;BoJCHXr6^Z zZXwsb9uC!d#y6gSyqDT6!=FPn;M?@1_L996Ee2Zt4Sq{}3PRP0^tAK(Fq}N7np;zR zZFuKX(;(rA%Co)aq#c$nmZhhdvIJ8*DL%w{N9`TeMvcHQ0__U>rE3W{DQh)aQZNv| z3Co%tyS)0S4$*LP-{{+&gE5`&$b7fyY-!ixBe&A`x8c#U~&t}jRxJ22)}=dI^4-eZ`Veao*nBAdb!2RDaS%THRPlUobnr-p>TnVuyrprTHE!A0 z_N=Y29_#3f-3{+}7vV+RLvgWWC7T60YEJu08am>&L0gf%qokqo-RCe_WM*P z4Y@8ex$eMqQubONYfB$Lovk2sf>)~)E^=1d7&E~W@I%Vqlt+mYHJ+`66%&P(k@U@{#%MFB%5}iG4 la87^tVVzs1nE)V>$N}UTcOXwu@P)esz*yfxuO8|W^KSrNZ(jfa literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_category_button.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_category_button.9.png new file mode 100755 index 0000000000000000000000000000000000000000..be74e84fbba3bf6dffa9b5d12ae117e542137e62 GIT binary patch literal 2939 zcmV->3xxEEP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0001{Nkl=J>6afrUIZg(L`FgnA*DWjWW!Tc0!`Pm-x}R|+euORMm>6ZDXD(mF(0XW-4y z+5!u}jdsTVhJb+scUW_@f9bF-&gQr~{F!0g;1j0|ZyOBn;};y$CRn~&9x761NSg4S lHhZ1TM9i-X8yi5+0RTQErK<}qUW@<$002ovPDHLkV1n`Ham4@t literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_category_button_focus.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_category_button_focus.9.png new file mode 100755 index 0000000000000000000000000000000000000000..ad44aab2df83396d6ecc4a70d7326dda15567585 GIT binary patch literal 2971 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 RHwFLz002ovPDHLkV1f@1fm#3n literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_category_left_button.png b/res/common/usr/share/osp/bitmaps/480x800/00_category_left_button.png new file mode 100755 index 0000000000000000000000000000000000000000..7b7a58d77dc6bfebd30bd83b59ed0015a165d4a1 GIT binary patch literal 2940 zcmV-?3xo8DP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0001|Nkl9Y4n;Ji3CHDSr z1<%~X^wgl##FWaylc_cg49p6dArU1JzCKpT`MG+DAT@dwxdlMoK*Q`S3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPAEg{v+u2}(t{7puX=A(aKG z`a!A1`K3k4z=%sz23b{L$o& z6x?nx!>Lyv=oo!av?4__ObD2EKuma|1#;lYJ~a=R){B6N+R`$43j+hAfTxRNNX4x; zH#YJfG7wm}u?ZbOgrEO8B-FHTBH9+0`gJ1z5#x1Q7eNyhN;l}Dl^u6+1e?60w3oj$@8Mp(oVL$l^Nu?e`U&bb zudTZ+T<|dn=@zYKny=Z8BP==gfx cYEA=&3+|zlcD}K{4Js`>UHx3vIVCg!020TMS^xk5 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_category_left_gd.png b/res/common/usr/share/osp/bitmaps/480x800/00_category_left_gd.png new file mode 100755 index 0000000000000000000000000000000000000000..7b7a58d77dc6bfebd30bd83b59ed0015a165d4a1 GIT binary patch literal 2940 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_category_right_button.png b/res/common/usr/share/osp/bitmaps/480x800/00_category_right_button.png new file mode 100755 index 0000000000000000000000000000000000000000..f4b75b6550195835b1cfb9d23266d2cfb0d573ef GIT binary patch literal 2941 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 II;Vst0H~g!LjV8( literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_category_right_gd.png b/res/common/usr/share/osp/bitmaps/480x800/00_category_right_gd.png new file mode 100755 index 0000000000000000000000000000000000000000..f4b75b6550195835b1cfb9d23266d2cfb0d573ef GIT binary patch literal 2941 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_check_bg.png b/res/common/usr/share/osp/bitmaps/480x800/00_check_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..bda4edf86d4bf9142c6aae5cdc6262c02b226b48 GIT binary patch literal 3977 zcmV;44|ed0P)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000EENkl=&m6DPPR>P4gq(kQCnqCoipsN5rgxUPhR z;Ff<-l^YNeNc;u3M1X`;s3N3Psv2ndR49eUPVA&9-nG5EGjq6bQ}SWEBylVsYb9SC zYo47se$P9Hm>I(y0z)2Z=L->aOkidoz*zuO0A~8Q_8kCQM0BUix_bdTB+LM~3gA*0 z2BFqE)JYP6`hdoOmr6}YAydp80{9TX6(TbGQ)!2E_YN}iYXCml*r?oY1P{M;T@?}0 zh(J=RrtfWKV zt$r*7s#4-dsu$uUna_@7y=*owgb;)yp0(Bq2SME!qwAjM-p=Pnzjqv&0D$9V zE*1(?St2^$4e+x{`R@_7@sie>Ha9ot!Z18noIX8UI(^zBFpeurLl+o$jq| zU&!sxKy;A6Y*@%tvY$!pa}@*tN~!HAYBABtk8X$rj5W;GhJu9Yb;N-b!T|s;<*zrw zz!=Mx#K}Smsn7@m!@#PP#B5msh&ut^b6htI0FIJYDf!)cWi3|9!%4YoAtaA<;#MnCvuDm+1n_pp=@v7O16bKuU%RD~#xejzQ6ien zaJJQo&N16kuWP~~q9KI*EuBuU_N&r#t<{Z7$)w+6@WmHl2|Fl?Yl8frTpxRg~DVRz$-))cLm%vy!_z7*5+amJiJAO z3RqWmW_$hUz1Fe|h@w>Pnc{TmJb?Fz=>7c@){cO?k}d&w6TsZ=c}bt5`DhG$4ZtTm jgUhaf!x}?B<^Oj8@S@mmHeMta00000NkvXXu0mjf@TYVN literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_check_bg_dim.png b/res/common/usr/share/osp/bitmaps/480x800/00_check_bg_dim.png new file mode 100644 index 0000000000000000000000000000000000000000..9e3331a2cb5b3f42fb55459592e1af966e2de8c6 GIT binary patch literal 3885 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_check_bg_press.png b/res/common/usr/share/osp/bitmaps/480x800/00_check_bg_press.png new file mode 100644 index 0000000000000000000000000000000000000000..7f7548f0622790d98e098ccb6550e5d760132197 GIT binary patch literal 4116 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_check_checking_bg.png b/res/common/usr/share/osp/bitmaps/480x800/00_check_checking_bg.png new file mode 100755 index 0000000000000000000000000000000000000000..9bcb1a5f2bbd42a8d7c1f2c65c532cf77c4f8552 GIT binary patch literal 3278 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 M07*qoM6N<$f}cSeng9R* literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_check_checking_dim.png b/res/common/usr/share/osp/bitmaps/480x800/00_check_checking_dim.png new file mode 100644 index 0000000000000000000000000000000000000000..1413cb61681a2721e871450fa2d48343f5e5a74a GIT binary patch literal 3096 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_circle_bg_ef.png b/res/common/usr/share/osp/bitmaps/480x800/00_circle_bg_ef.png new file mode 100644 index 0000000000000000000000000000000000000000..e4deabdf2c7e82374313bca516ada2dc66996c68 GIT binary patch literal 5726 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_circle_bg_ef_dim.png b/res/common/usr/share/osp/bitmaps/480x800/00_circle_bg_ef_dim.png new file mode 100644 index 0000000000000000000000000000000000000000..e4deabdf2c7e82374313bca516ada2dc66996c68 GIT binary patch literal 5726 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_circle_bg_ef_press.png b/res/common/usr/share/osp/bitmaps/480x800/00_circle_bg_ef_press.png new file mode 100644 index 0000000000000000000000000000000000000000..c5751a864c398ec537bbb79fcc2068c5fdf6bc95 GIT binary patch literal 5719 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 Nm>OCc)WY4K{1+WVt`-0Q literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_color_picker_brightness_h.png b/res/common/usr/share/osp/bitmaps/480x800/00_color_picker_brightness_h.png new file mode 100644 index 0000000000000000000000000000000000000000..580124f0314218e04fc64f42f32dcdcb1911535d GIT binary patch literal 3570 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 b|NjF3j|rF`FWGd`00000NkvXXu0mjfZ&iTI literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_color_picker_btn_right.png b/res/common/usr/share/osp/bitmaps/480x800/00_color_picker_btn_right.png new file mode 100755 index 0000000000000000000000000000000000000000..ed6ade94c4a277e605e9102ebadbb8c5fdd5eebc GIT binary patch literal 2974 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_color_picker_custom_color.png b/res/common/usr/share/osp/bitmaps/480x800/00_color_picker_custom_color.png new file mode 100644 index 0000000000000000000000000000000000000000..49d9f5aa21eb6fcb5e49cddf729c4f9b232e71d2 GIT binary patch literal 2920 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 t{4dX$`Tu#2mf=lLIKaQ=7yuxXDS<%?R$c%A literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_color_picker_focus.png b/res/common/usr/share/osp/bitmaps/480x800/00_color_picker_focus.png new file mode 100644 index 0000000000000000000000000000000000000000..ee33aab438abf8f78ee040d01f470f45824892dd GIT binary patch literal 2975 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 VaDj<&O2q&G002ovPDHLkV1l}Sg3|y1 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_color_picker_saturation.png b/res/common/usr/share/osp/bitmaps/480x800/00_color_picker_saturation.png new file mode 100644 index 0000000000000000000000000000000000000000..7cfea3b6ec528a4e4cdce0132adcdffd612c4454 GIT binary patch literal 6534 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 S?D$6j0000PV}(YzQtnK{W$l9@Bk zoVb%niB>9?p-KfDL<}}`hTK36liaMXO4re`z_GIs zGMMD5PIc$)qn=hnaJ*b@Uf2!h5=B!cgoY0qVhrin9CnaPvU-xEUwF&5R9yzCL_17q2}w$e5T+7JOImMD ziFzUpWC&^+3vv@JN`3Dg-ODvo~@OYMkOV6>bseY%-%9^}%F@o8&3`*YJR+E#b7dV4XPdUo`qhJB!E z|JySwKD$%7a{gp~S^Wd!+sRj8`U^JP!#^D#&;Bx%eD~Lt&P#b<$6wlkyGQC6t8SBg zfA{-q&t&e!wpW@@e{-QXhZ%H@i}crvLx| literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_context_popup_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_context_popup_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..99c1ed076e87712f9f75c8d713902097125a0964 GIT binary patch literal 3188 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_context_popup_bg_effect.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_context_popup_bg_effect.9.png new file mode 100755 index 0000000000000000000000000000000000000000..d2ace05b9c28f7acbc8493fb1b3477277937b0dc GIT binary patch literal 4174 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 Y0HPe=uQeXeX8-^I07*qoM6N<$g7r(!Q2+n{ literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_context_popup_tail_bottom.png b/res/common/usr/share/osp/bitmaps/480x800/00_context_popup_tail_bottom.png new file mode 100755 index 0000000000000000000000000000000000000000..beb51c02b03e06ef8e7e47e645873bad551ae2de GIT binary patch literal 2947 zcmV-}3w-p6P)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z00024NkleQXQ_XcC|u zb{jVA#6SZaQe!R<;1q#6u{kgloy7o<-`fa19n}ggd^Y)l2-W{$q2L(W3N1r6gn|fd tV=*C&P|WGqzyr934jM_6jHPhi0|1K07|H0}vsC~9002ovPDHLkV1oZKaBTnp literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_context_popup_tail_bottom_01.png b/res/common/usr/share/osp/bitmaps/480x800/00_context_popup_tail_bottom_01.png new file mode 100755 index 0000000000000000000000000000000000000000..2b68d0031c52b4fd03297b2d2e2fb0bb7e4cfd6d GIT binary patch literal 2954 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 LNkvXXu0mjfW}1Em literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_context_popup_tail_right_effect.png b/res/common/usr/share/osp/bitmaps/480x800/00_context_popup_tail_right_effect.png new file mode 100755 index 0000000000000000000000000000000000000000..c839d8ea915c3598d1585c8ee2de2b24ddbff004 GIT binary patch literal 3094 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_context_popup_tail_top.png b/res/common/usr/share/osp/bitmaps/480x800/00_context_popup_tail_top.png new file mode 100755 index 0000000000000000000000000000000000000000..c898ab2c5beef385eb74d599fbfb876f6fcc8222 GIT binary patch literal 2947 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_context_popup_tail_top_01.png b/res/common/usr/share/osp/bitmaps/480x800/00_context_popup_tail_top_01.png new file mode 100755 index 0000000000000000000000000000000000000000..3bfb34f2710f172e0855f7c115f56f2ebb054cfb GIT binary patch literal 2941 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 M07*qoM6N<$f~Ll?SO5S3 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_date_picker_center_bg_press_effect.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_date_picker_center_bg_press_effect.9.png new file mode 100755 index 0000000000000000000000000000000000000000..a1cb877c9500dd72538eff126014d50f9a68dd9f GIT binary patch literal 3071 zcmVKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0003hNkl`%Of55$ zkB|c#-~b0WzyS_$fCC)h00%h00S;I_Kx*#zXEi$zar;8%|9}G=-~b2wZ@}`DGV2e< z2Zu-Nn_D~G?cv_b==>tcW7gBNQRnXVCR@}dgc0v$kHu{jMGCOb0RR%tQEsD);lBU? N002ovPDHLkV1j_Ts{#N3 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_date_picker_dot.png b/res/common/usr/share/osp/bitmaps/480x800/00_date_picker_dot.png new file mode 100755 index 0000000000000000000000000000000000000000..6a7fc53fa0b49f0ed2c8de1f4135931754255a99 GIT binary patch literal 2834 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_date_picker_left_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_date_picker_left_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..f01153151c1993781988493548b6a3eaee8fb3a7 GIT binary patch literal 3110 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 A>;M1& literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_date_picker_left_bg_effect.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_date_picker_left_bg_effect.9.png new file mode 100755 index 0000000000000000000000000000000000000000..4c8f57a4fc2c320da0e5e93aafc664059d632f12 GIT binary patch literal 3487 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 N002ovPDHLkV1ja?aU=i$ literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_date_picker_left_bg_press_effect.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_date_picker_left_bg_press_effect.9.png new file mode 100755 index 0000000000000000000000000000000000000000..7ae5980a4ae95e57e72e41f8c225dc4e298f5d27 GIT binary patch literal 3500 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_date_picker_right_bg_effect.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_date_picker_right_bg_effect.9.png new file mode 100755 index 0000000000000000000000000000000000000000..966793a6dcf444b8c17c5ece5ce2efc9ed44e11d GIT binary patch literal 3422 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 AG5`Po literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_date_picker_right_bg_press_effect.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_date_picker_right_bg_press_effect.9.png new file mode 100755 index 0000000000000000000000000000000000000000..a175af3ce711c7a985d3d526bfde9dd9c084382d GIT binary patch literal 3537 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 PzY7kwE;ueG@bLct+8}%% literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_detail_button.png b/res/common/usr/share/osp/bitmaps/480x800/00_detail_button.png new file mode 100755 index 0000000000000000000000000000000000000000..cdfaefa326e097939b4398d0a6c52b907869fbf8 GIT binary patch literal 3227 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 PzY7kwE;ueG@bLct+8}%% literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_detail_button_01.png b/res/common/usr/share/osp/bitmaps/480x800/00_detail_button_01.png new file mode 100755 index 0000000000000000000000000000000000000000..a4d932f8a0aee9a49c57a318f3e81c27b505252b GIT binary patch literal 3189 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 XH^2?%M1SCI{s^EQ+)y=kN7?@YvqpU3 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_detail_button_01_dim.png b/res/common/usr/share/osp/bitmaps/480x800/00_detail_button_01_dim.png new file mode 100755 index 0000000000000000000000000000000000000000..725440ff23b52c05ac825d943e32c255281cf0ad GIT binary patch literal 2709 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 Fe*=9Mcl!VU literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_detail_button_01_press.png b/res/common/usr/share/osp/bitmaps/480x800/00_detail_button_01_press.png new file mode 100755 index 0000000000000000000000000000000000000000..d7b6491da5886090633d1f59094c1a6f39e51ade GIT binary patch literal 3234 zcmaJ^c|6nqAD`>%7Lg*cX5^fi3=7L_m@8(LqhxGY%w~qUYayguC32K23F$zNeC3$) z>pqJ_<>(tB9Ynsr=~w-JfBgD=9*@uGeLSAe=j(d@^NF{!H5V0<6#@VNqF4(wjLJL1LMeWpn5Wb33L*`gh+KK0kIT<7YRoq5JUVsNrnIb50H#^WH{Pb zBRr@S2w?{UVNz%uHUMCVWYP#8J|qUvo#aLKGXgEwH-dmt&n0U>@20#nm3K=G#nniSwc zC({^YsvmGik>E}ZWEg=snf|*33hkGyU%-zxaT=z@B+#_9A<&(YegbW5{y&sL`GpQ( z;7I?;_kRip;6rF6EgUI;8c6rx49-(=Cln1~N+%H*R63qY_5ImJJ8vq38sJT(0Zkor zfhWm+L~3xrceITS0_zvRAozKZuxKL?hYul>i3kkTL>Fd&F*D$_M_U^M)rVp*rY0yI zG#Unno9LVT& z3?f-^&M}88OP;G-^R^q}E#+nRb94DRoPwJBp98?#+W6m1ysP@MxZESZ_{zg;ENDL_ zausRZzc_)bCo}nl;*bH*63m%Y)95Q7ac@IrE#~&(HJmUf|;0a$PsS zI1~7#<(*7x{sxKpA>Ohq!k3-1mJKdDl%0!3`Hlt)$_(r`_px<*SG`m-IVo1I#E%FN z8*a0Xb5^{HHd8&@q>iD5kLSg*On4()*Po!zGR1SxyU@N&qMb~X;gogx^vN^w$TNB~ zKE5|HfgkrYn-2(A^j*B16%}uEod4G2x#r~40y!gMRR?+0Qm@<@FwMhD;-{sAQj<}# z?S)c8$%Wws(GsbH;%2dRGeK2(jioX#Pkj=vezLA{wTqX3OJ!z-vD+DSht&7z(mfZ5 z;aYRjK>xT%LBl@fEJ?&AQCSCRY#SIGD>1W&8*6s(*{*gBSV|~XG$W3WCo(>R+IrbO zSYfhZX@T09P)`pW-{?wmgUjZx1xuXhwnx@R%L=4IDuWrX9#kM>Tz9$kZgT(ixfXno zKSi)qCM^LSEiqj~)HVfm#BDUlWBD#_BKlwY?~x|#TV7ljEc5huVq*k75bX+n(uVN+ z0zFX?CaVe2dzdiS;+@44;VFNZsAE~>YMde%zX2wTehJL`XRcVKM|x%AOj*)NJ1}ws$V#$bA}FJS?;fvkU<{?CFu%l2n;^i?EBR8T2xuw z13srfDntxSgbJ2Q&k@$XjIkTt#qv~NoO<8mJ>Rj4STv%ENSn+2Rm+AFXH7kNL7h-o zcxxRht+{Y^b37BECW4#OtB`kKG<#KWZg*w5Ttd^-6fZyzNcpi^mVS zSz+WCJ+%p}DA$FXG?B2!C@?mYQZpws-QQ{Egu9X0pEl6DJT;}r-ZuxxAZGMHza=YX zS~r}#K02q^eao5|GV)e_@yL+Qsw12SYl&U8E_$4QSNWi76zDigSn$MXEn`*|0PQCaT?B(A_TTYbklh%5d8!US4j@Wpu`+%7xe}@tqaE5sF$^l#e5;&*b6- zG%ppwt3D0x9kg?9VJQn|B&QTjSQB8IWL9W=Y7v@L!48#1msx z%WI#{HdXre!jjt62dCO(6C(Z)wW6qe^9sSH3e?qCuZgh?t0Sw#i{PR}%ry2WMxf!C zT<~SOKo$B(kPBQX@dKk_j;=7JKd!8lyNa8@ImJCZW%Ct|jw)2?fF``YXD^m#^6LTAXtkW#@V{CvH!vFzDOa64Ul(IA>!G#wB8x6RU?1T?D z!MMh|XIW!W^{_n_QE+3|xENd0!PV9n0e{CTpn4=FY*1CfedO;OvzJn+BK8f)MBp>r zxJk#!%pn_|@y|_F+J(81YS9_R6EY3!O~L6cI@2IjK`MV* zDa1aTBGcR*ob3Lsvn>v727X%>_Efs@-cs6eZ@9!&mHp#(S~d z=9t_&*Xi{P3nd?+E^BL9u31c|uj6Tf?ay)!99KLV7=N+c)`lEzo-OLAuzNtHI(I@l z_gTO&_}Hz=X2G7Nt@~G2`V)QmcGZ}#bk&P`FN*Zf}8cXhL_6>pDw_7raX)X51s}p)o))Z z5K=crtq&AihfW_K8b5zwzRthMM~aIs9T_E{VdCb5va>v+|5gfx1@k_XOur99DH%AI z)wCyUX5T(CUvf$R{G$>LKQ;5zzV`N#@ml_oZ(doOw1P0HawFIKcZN_AW_N%Nik%Ro zDaJ0Xd>>)tk|c%x{%ce=Yp=OjC{pKQn}e}gU*_Y)ZwSGP-OfWmee%8m6ehE9Tb literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_detail_button_dim#1.png b/res/common/usr/share/osp/bitmaps/480x800/00_detail_button_dim#1.png new file mode 100755 index 0000000000000000000000000000000000000000..9f4d74e59cb991bbbfc3c23ab1607038b9babae0 GIT binary patch literal 2702 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 ODKR!MBi$i5h5Zk`Y|7mL literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_detail_button_press.png b/res/common/usr/share/osp/bitmaps/480x800/00_detail_button_press.png new file mode 100755 index 0000000000000000000000000000000000000000..17f41d6bbc62d72a9672245e40ba90d8679aeb5a GIT binary patch literal 3329 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 ODKR!MBi$i5h5Zk`Y|7mL literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_dialogue_group_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_dialogue_group_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..4761eac4ef6c13afb08066359f4f5317bd09ca82 GIT binary patch literal 2849 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_divider_line_translucent.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_divider_line_translucent.9.png new file mode 100644 index 0000000000000000000000000000000000000000..9a9bda29debab43074cc8fefbd6cde0a1079bbf0 GIT binary patch literal 2819 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 odbzY~LI2Ut@(1=;&ExYk0Ad!OOz>% literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_edit_field_line_squre_bg_01.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_edit_field_line_squre_bg_01.9.png new file mode 100644 index 0000000000000000000000000000000000000000..9bdef0e7b171a514fedd8747bb2f6dbf53b5627b GIT binary patch literal 2881 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 KMNUMnLSTYuu}z%- literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_edit_field_round_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_edit_field_round_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..deef7d8fee9562192f95a8fc4aafe838d1d58673 GIT binary patch literal 3248 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_effect_tab_bounce_left.png b/res/common/usr/share/osp/bitmaps/480x800/00_effect_tab_bounce_left.png new file mode 100644 index 0000000000000000000000000000000000000000..529e3cde6842631dfa44a0fcdf05ac575f9d96a8 GIT binary patch literal 4636 zcmV+%665WOP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000L^Nkl2`}Chke>t3QVTfcH&5Cvkr~2DJ}6?XcgY`YidHeh(U- z2gZA%$Eco1H!il7Z|lA-;s?Rru}$pP#g}dS4@J?YH~HiA4U>+sKvmi)c~1n0ozAp6 zmj?RxEF6x2{VNniLP1h#n@~>|?ME9Mualu5a@tvRgjOH~%8Ouvvv1|dKl3_10+0pl z=i^}DJW_u1(qDs!A4jFwGSk~qRx+i z@B=!XgB*St*tUPLs{xvCrBqW5OND1gH!0lWn)3Cs#dmU5yHXTj=$y1=Qd-&r<#yW1LsDt+pL z2AyFv)}lh#-Q$45GGJM*;n~TL&tcY)j!E9BsA(FBCn+og_Y4(Hpaa0L*fzu83+1qR zr2hh7ho#3kF8X~r3Dwj2N93Q9Bfvy_EO;hx&O^JrW!B>XN4gJke4JG~hy10y`@ zOXw(2Fd8A&3Wr>%%)GTRSyj%`9m_^OV<(5{Fvkuo?Hn8Ut15UVBwD`(3zd{#tGYE9 zi;)v9QK<`^HWuSE6d}(7NlDpC=dWl8Fq+GL6};6LcS$uY1|&-@+Qx5zO4u+jmWjcF z;#eJ2TvQb#Vf9L_^C=;*DYqvVnpsqNX$gMRu^sD?bt6ZTI_jg@wJm2Db?9BHds&dH z8iUF4)8c$FuXcE>Lq>+%>q@Czg+;yafOe6bbh@QNg#7>9@FIYxgOtE@iK!VXJHDiz z;Ib=Y(uH!n0!&6eLj#l*4y}dTuvprvEEo0i<2DH_s?sk;N62MBP^qM;FSRlS=;XXewWC9T z+m&`0g~hPs^2;@43P|L#u7(7ar94Qe$Xj>^jNt<*W5dSxu@py!QaFKxNl5%Fijz6) z3x2M2Bv290(&|%xdvu7 zyQsWrOTMVKRpcoYaCAXKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000JLNkld9`5bOc%|9|ktnth49WIPuFAF)xD%Q`p`H9Z#tCIAIv2PN-W zb=jz=ogd$&xjx!B&Wlp#xZjqAQHPBCrD>yxGF7=g%5UP{_I-YQALoCXI`#Wnw)1xr zFYL^V=K-);^uY#@^4JwnSOE{pxz!#i{qCYZJA=v^X!4^CqND8=ScvNifNKXE&{@`F zQpBj}IXCUGF>u)V?BW{Yne1bC+LC>1&q%cG_0hJoHy;4_TL(bM0IU5&f2C&x$j`Vx$H}5{3G?20) zRAUSr*F!Rk4gXKNKbQJMQT1peB@&60yq9GZ9EL$*6+6tlT8#CV3>Db&JesEU^9Trn*5Bu zsilmVY^Q39qT}8cuu(@mGR+Z~;2FS*0ZK9S*+&32D}n-tS)8;MrMQEkyI_dJ0)PwF zkugHD@y7P~<@<9S$Gn!DkK4s{TmI&6sUHNyjG2R8$J_F&B5Tk}L-;6$@r1e=_E|H> zl2MXb8slyp|4(ArOefo#>++m$a#$w6t6_BPpQ^)n0^=fwyC8N@tqF@3LoC2vl$8W~iL3?m0xWpx-U5kU;5=QG0dFyEGHZJB@u_pLT#ps} z9R~yOb2y^RUb*s8%bvRWV~b(;wG6ZC$kI40hV_A!S>T?@o6qFatE*iWVB^dp#B0l< zwaidNqiQKGkvMKW_AskBIxGe50_cGlv{0A~TEIprTO5@)Ppv342F>M3u#+On*~ zTo{N3+l&@DSkDWBg%{gmRLCME9N-cF1=#DBvle9mux|^jw64m8o;2gcT1I4T6y`DR zBXroT^NFXL?TV9lbI5+cCv{U?iGh|9~0@Ay|<#=e&}ju!(Xec z0aX&f6$QMv)nPN2zqR0BmZ1b_*6+T+0H$_=? zMk6Az=#6|!tO5Uj6HMD6rTwnZw|6LpWqH|N9GF=lqwEjKS=+r9#Ucc5cMq)sFwgJO zz^MXAIXHgB3QRh2FKb*BLvIzw*DB7p_VP6gvM9h*N3@oE19mnf#GS#_5pkCRtOl_` zN}B9dfF{AI!qK*L=F2cF0|q6yIjr22c7K4mJ&{=+ix_?L zQW3CTu0%yVkEIzHRncpn-z7!lrdX8431ih~GAzaqA_YsK7Vh+)eZ znd&%?f|U_}mNTpAq=GmtngYK{>ZR&9#KjP?Rs3xhyR^PHh3Qj5Q!_JW(V@4_WFcFJJ$Kr(X%n^Z00000NkvXXu0mjfisVPL literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_fast_scroll_popup_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_fast_scroll_popup_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..d80d3fcfcfeaa0d6f06c398a277c5a7403f7d9df GIT binary patch literal 1087 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_fast_scroll_rollover_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_fast_scroll_rollover_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..b9a50be1e413b368ca27ac39bef81beb2e4af047 GIT binary patch literal 1006 zcmaJ=OK8+U7!EEJskVrZgB8n=B8ZsBtousXw04u!E;OZVSGp%_Hko!qn@mh*yV;(k zP^AYiQdICNco4*cqTrz(ya)@aezRY7dcDJ zK#)oCFeOSU=^{vqP!wQN5VIT<<#bjSA!vUrjTYDoa!H$L$D%uhtr6nOg3xF*_{Jq3 z2a5ufBuNmHLNduw1Q#|vVn&=7j&u|>6k37f69;=BRy3=)P860p-A}>wyRu%`E)y-7 z5ShLJc`;6@12l~PLtVFv4oL|e`2DAFSZ?}AD4`J71B+hV!blv-m(>871P5h|mpfIQ zsbPY{8uo!Yo8}>yb37Y2!WP~z2U1>uHKUyw}R`_$QlZq6=Y8Y*afYWWv927LQlOm*Y52_ z?a39W86m#dzb?9SM7t+mcH5S2x{Z%K+U)^t>)-eKj?*VmEo$TCXy@A|?0+L3O`L0d z*xuWEv3r4A_Xaif*7+y7L!)osYp3qcZ(QBuj-~710)z ypC{C3;d~RiWOH=zzVYzu&mX@&<1de!FPQ{$dwn>!a%N{Jet|`OT6@HG7etCi8P|!zQm02LI9^BA4O(TQ1>-}* z;~^(RDYb!`_J643bkG4QqGP}R6b|%t5Aj75;JRd8x8_^Kjy%RKNIeccpNm`m^WmZtQ*EZ@qtD^ue3+ wAIRQUA3EjngKyri*CV;_6Bhz~Z*-<-h#9(edgkg*|915L^4Ws=YJTP3AN;gC3jhEB literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_fast_scroll_rollover_bg_line_focus.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_fast_scroll_rollover_bg_line_focus.9.png new file mode 100755 index 0000000000000000000000000000000000000000..8631bc1d88af38ea2e7daab3f62cee7de00c1798 GIT binary patch literal 2856 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 OWuIpix4(MBmVW@GRu=>S literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_footer_bg_01.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_footer_bg_01.9.png new file mode 100755 index 0000000000000000000000000000000000000000..ab9dc9ec9ac3f889d30aafe7cfe346a7b05d8831 GIT binary patch literal 1311 zcmbVMPiz!b7=N1$)j&5&0Q1YX4VY4m5e}X_iN+%k65@pj#56I82a+C4D&b!s93T>7qCH6T&33n_sT`cc%zN+q ze!t)Meee6`!{MQQsf{mh1OTLpgL)Z gx9^L!V1|6cFW$Y&caRPiVp#|<-pV8BLo zNEKak0+yj^&%S*X<^V|APNj;grTvP9T*i!jn8@`B8i3s1$TzJih^ac9a6FZMeDN|( zIkrlVWlCJh*WjcxI2XXtxuJ?RH)Y8-y>}0lixfiOLTplzJMD!^q|z;3g{DGddX$}n8o;`%tMk7syM%4V}~Py)wuEGMwMkmj?BC@369wI7ANZNu;YOxPGa$M(l;{LXncOk?FHM!?CU#=hgBKaTz`hV_omCGV4RO3_~;%SmZv& zdplrKyJriU0Q6r2mXEj$H2F^RsHUi{Qt?DYyI_et9P0#if z1j%S+ohQ+1S-HRok}Qc*hHhi+|5GuR1jELy@wZm#9FhKumurnrHfy5;Ju)u=8H{b+ z&sE5jjuiEQO0@iF`TUu0xh?Y}%=bHP9zQn!iF5jk)3p~q+w!q_cW{3br>{Mzocr2- z@;F>L{4miosy})uy7=84sdoL{8}lpp(v9sKz`Z&3)gQll^2?!HLrI`imzNH{e*fp4 zfExSh_LmlDzTeFQeBo&CZ`T|!ya+yDNPt2&_^9Wf8*UMBxdThFxqovqHWS#XD@zjC zSqH?}e66cFyJEC}vE_&VveXt5wO1}}PB!T-pml>Cze=eN+fz)xuqt)s#U!|zE47?S zP(+GE7$g6^`D6Fuk<=$~)xPW3E}H4|Xv(-T|Y{05wi Oe_6%CkbX8_JN6gl{GCSt literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_footer_icon_close.png b/res/common/usr/share/osp/bitmaps/480x800/00_footer_icon_close.png new file mode 100755 index 0000000000000000000000000000000000000000..1601390a6ae116300e07840d755cbaaa543c4dd9 GIT binary patch literal 3469 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_footer_icon_close_press.png b/res/common/usr/share/osp/bitmaps/480x800/00_footer_icon_close_press.png new file mode 100755 index 0000000000000000000000000000000000000000..8d0f69257163a2de80c053ee7cc7e945c38e5315 GIT binary patch literal 3069 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 LNkvXXu0mjf;p4L9 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_footer_icon_more.png b/res/common/usr/share/osp/bitmaps/480x800/00_footer_icon_more.png new file mode 100755 index 0000000000000000000000000000000000000000..14377962bf0d8c1a825362de55ab292fee6b9897 GIT binary patch literal 3119 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 JPDHLkV1o1M#`XXJ literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_footer_icon_more_press.png b/res/common/usr/share/osp/bitmaps/480x800/00_footer_icon_more_press.png new file mode 100755 index 0000000000000000000000000000000000000000..2925aecb614a7254d82768473310d7a78ddbaecf GIT binary patch literal 1087 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 Y0KzA!+_lFX$N&HU07*qoM6N<$f?-5HumAu6 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_grid_select_check_bg.png b/res/common/usr/share/osp/bitmaps/480x800/00_grid_select_check_bg.png new file mode 100755 index 0000000000000000000000000000000000000000..b7b6fc1d24ee93415e8dd4639440e2d3cdf992d0 GIT binary patch literal 4520 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..ce44719333c792034401cd6779e249954d15eda1 GIT binary patch literal 2912 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 KMNUMnLSTZMn`@H* literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_bg_focus.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_bg_focus.9.png new file mode 100644 index 0000000000000000000000000000000000000000..94dc214c30d0bcb5a200142e42219bdb4e3f4349 GIT binary patch literal 3041 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_bg_p.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_bg_p.9.png new file mode 100755 index 0000000000000000000000000000000000000000..134d87b2995a264d38bdcc56c22123e2d6889ccd GIT binary patch literal 3446 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_bg_press.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_bg_press.9.png new file mode 100755 index 0000000000000000000000000000000000000000..cb2bdade19a4ad606adfb65f7f6e7eb686f9f19d GIT binary patch literal 3044 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 emw|5ab{zo9w>;`S@Lt~l0000W>>ZV literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_bottom_bg_focus.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_bottom_bg_focus.9.png new file mode 100644 index 0000000000000000000000000000000000000000..3d18dafef7caa976c640b7d8eb7eff0eda2594be GIT binary patch literal 3228 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 M07*qoM6N<$g1M!G6951J literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_h_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_h_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..4715bbefec63298dbaa42d78994ce49c35c76f34 GIT binary patch literal 3430 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 P00000NkvXXu0mjfehpk+ literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_top_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_top_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..d6b52df6c1348083ef57cc534939fa4c2a6224fc GIT binary patch literal 2888 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 Eg1=IfEC2ui literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_header_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_header_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..dc7d9c39b0ec0e7284755e5790af68ce6e94f34e GIT binary patch literal 3068 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 FzW}A4d5r)7 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_header_bg_01.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_header_bg_01.9.png new file mode 100755 index 0000000000000000000000000000000000000000..283360ad04cd083f8b4f21c20fcae8edf8f670e0 GIT binary patch literal 3178 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_header_bg_effect.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_header_bg_effect.9.png new file mode 100755 index 0000000000000000000000000000000000000000..95caa238547028a6e29921e477aca748a84d67ee GIT binary patch literal 3134 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_header_button_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_header_button_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..c1b0ae92c75a411f9e55abd9cf3583f9bf24a7f3 GIT binary patch literal 3214 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 A+5i9m literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_header_button_bg_effect.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_header_button_bg_effect.9.png new file mode 100755 index 0000000000000000000000000000000000000000..841020e0ddc4cd88df23f29ab657983d2d86382b GIT binary patch literal 3758 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_header_button_bg_press_effect.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_header_button_bg_press_effect.9.png new file mode 100755 index 0000000000000000000000000000000000000000..700c2d04ed0a55589bffd1c618964f86fcc7eab9 GIT binary patch literal 3902 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 M07*qoM6N<$g5Ez+6#xJL literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_header_title_handler.png b/res/common/usr/share/osp/bitmaps/480x800/00_header_title_handler.png new file mode 100755 index 0000000000000000000000000000000000000000..082f3cabdf0dea7d7f996a757ca2e5f5b3481740 GIT binary patch literal 1146 zcmaJ>PiWIn7%xmjhQdywGBCuGV3YTf^-sd;Nb{1eVCLuw+s&oP+Zxv7#pKnt0}u0{ zhzBp?N$~DL1doD4yi5@$h!+p)4&p)3i5Hb^^`&d)4r75N@8x~J-}n8#Ke;_URXQ6Ol_|1H-cDg7x*5p%GSwek>`3Qbg97a1~q3*b2^DImk~hP z0a?Ihp#bHvTrPKklK=!FkVGh@VNR7L6#%Y(@yuJ~E~ph`_I9`Y6yPXc=a{~s1V<+-L>XCp;80{Kq(gM#S-Id^n6>qUl<2~{q z?k9_-O>Ent2n8TUJ)1<|0A*Q+BYc0)I;Iu;KllUr<7y|wVg<*f89A(q3+MK^I^0oW z*w>(1cC>_96-~Plv{~unN)*Ba_V;rp%DY)bcQg#( zP^_v)*rp_^64Dqn)O4Lt64yz{=`$H_)(c$Hij!J1MNBKgk#`NdW<-3hmv+@Vz&q4{ z3=L??ieVAmzDHlXumq*dD=Y7cOqPZKvcj_h>1>zm)VOE=$r6;``jU%pBAw@Xuxy1#$k>2BY;d;I0eRAKw! wiZ-%VaXUL(?=e>zUE8Rg`uJHMxiWMNq$Y2le+~XV|CRg=%ElCWT%5o057CQzvH$=8 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_icon_Back.png b/res/common/usr/share/osp/bitmaps/480x800/00_icon_Back.png new file mode 100644 index 0000000000000000000000000000000000000000..75880ae346a91c11e4290ac0f30f146ca2fa33bb GIT binary patch literal 3155 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_icon_Back_ef.png b/res/common/usr/share/osp/bitmaps/480x800/00_icon_Back_ef.png new file mode 100644 index 0000000000000000000000000000000000000000..da925341feaf18f0215119c790401a2a2005605e GIT binary patch literal 3668 zcmV-a4y*BrP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000AjNklP!pR#paTAIzsK zcKApU2l^NIzz2O4HlMbG3Y#t32UA3{LTHB5p6J+6uIOw)uhQ$1yY=IPeIuu2$t9`n zgudbPAmJ|e&iDQP{5mBf+->OMF2ok8|1~M2)f<#j4+4jPRp5Ll55H5A87&ezW*A0) z5CluWPT(qFZ;E_MseYx@Y2dyf2xfp!fv?8L$1@u)pO)$va1Zb`@B^>}RDo@#X{I)m zl$NS52!ii{?|?;M1&|Flx>Bki7y_Ii2tEg{11=D3c=k1ss^00Wl}e=;@Ho&N@p-=i zH=24_L{Lh-Xc)%RK@iw2NVN-i26zmJMIh7-+zV{eS$j!DuGA$3JOUg6=74K0NEHJT zz>bJntN>HrlLj8u&zTaDYyY@%dV2aG@T`_i{l|8x5$gpqz!B3l-vOQz5o&>m>~UT9 zN87evZowPtfo|Y_ZGks|Y?u@xVu{Gba=CnNVq#)<#1o6JtgI9yA}W=N7Tj8b3D8ivuIPN$Qe z=Y3Nul@98D)%^T?O!rs-H8wW3 z518J}#o_S6!opSHPyN}<<#JDL);6;pI1Z%rtah_jK(pCwvaM~V4r<%YT9fP6w0{!7 z72uMd*90(TXJ=o_WHRU1gVYni>%h-?QCnj-}&qS0000l literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_icon_Back_ef_02.png b/res/common/usr/share/osp/bitmaps/480x800/00_icon_Back_ef_02.png new file mode 100644 index 0000000000000000000000000000000000000000..c2cc7f95ee57609973b44c26dca0a48e781f5284 GIT binary patch literal 3614 zcmV+(4&m{MP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0009?NklTa^z#AK38Mo(YvEK|`WV}fqM1BXDEJLiA@|8vhd zca(_mrCEe8&>lhkuR$4M7bvAh0UNjk&Ibv8+aWVT0(xo~M#A$vSFddV^#_qpDV0!4 zJqHZW^WJNQK5lGm#P3}`E!9&E{-b8a1+IXIX`1G}g3?mOJ@x%bo8L#i7OPoYqV00}_#8LzFqdk%{TN~y05!>~e1H40cjyw3xpfD!%M z0R9n?+HDVx12e#n7YU69sx|v@U&@~&j4FQ z@Es9}RjbusipAn|h#e2ZlxA%b_!fx!pp-84N#KV{rQ+`I@4s1DS!wt2(ve1^@lz}o zo9YLF>$2!WAl}gY1kaKK%d;3X< zJ{J>_84<}kj`KR7&yQWJ0%>5%m+!hqMdW+OabEY3bRwV6&)l&QCu_CZE6tK`v0N_q z&26B3Pl`ycTrR)d+}s=;CMX}+;o;$TflV90w1{+-s0RFQ+xGd=($cFwB@Hui)H2!La*3)b@n*j+0xLjLXi}yQEb$~y{ z$Hz~z+3b(iYV}G)qLyVH4FalEDz&e%f0fN+9<=;Qd2h9G;wX_bj%AqmAHO|*xTF7%+1Z64FgmH$N>8@<|0Pv6?wdZqz|wu6I%c)47D zDI&Qbpy23oSDP&si&KVSoSUZE^F^-fD$BBL(=?Nllamv`Tj2D@8GS%|p(PAcanL$rSf0C!~&$5UAGJpcdz07*qoM6N<$f(K#8A^-pY literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_icon_Back_trans_ef.png b/res/common/usr/share/osp/bitmaps/480x800/00_icon_Back_trans_ef.png new file mode 100644 index 0000000000000000000000000000000000000000..adba7cff1ee243fc607991f6a2d84ba51890b549 GIT binary patch literal 3201 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_icon_back.png b/res/common/usr/share/osp/bitmaps/480x800/00_icon_back.png new file mode 100755 index 0000000000000000000000000000000000000000..970619b698bd163a02ed4c39ab041a1d5541fa7a GIT binary patch literal 1256 zcmeAS@N?(olHy`uVBq!ia0vp^Y9P$P1|(P5zFY^SBuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFe_z-M3hAM`dB6B=jtVb)aX^@765fKFxc2v6eK2Rr0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWfo`&anW2K2iJqZ} zfu)J1j)IYap@F`kk-mYsuAzaIskxPbp#l^r0c|TvNwW%aaf8|g1^l#~=$>Fbx5 zm+O@q>*W`v>l<2HTIw4Z=^Gj80#)c1SLT%@R_NvxE5l51Ni9w;$}A|!%+FH*nV6WA zUs__T1av9H3%LbwWAlok!2}F2{ffi_eM3D1ke6TzeSPsO&CP|YE-nd5MYtEM!Nnn! z1*!T$sm1xFMajU3OH&3}Rbb^@l$uzQUlfv`p92fUfQ_=yk)X7nBro3xGDeq!wkCrKY$Q<>xAZy=;|<+bzyG z&4cPq!R;0ooO<TaC){3sQgIY<0XFvc4}bDWLJ_!go^x+7ftF*WW&+!EDeL zwa{93ikc4J)hlk92P9re-<5LIJS36Tnb)&0DWU0~-0ia)`J@&;x_4&s`9H^e;|gpEGUr*e2#L&1uui?dvY!=gjL{mvi_@o#GDGUE6rI7YQERyKt3nL`Svij`EPr zoRfFA9Ao+3DP@+ZnCDcG^*rO)W~0oLlHtnVuV<|LJv)AfeW=WtgFxiBc^eZCgS(r& UK}2C$AgJu|boFyt=akR{04PztM*si- literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_icon_edit.png b/res/common/usr/share/osp/bitmaps/480x800/00_icon_edit.png new file mode 100644 index 0000000000000000000000000000000000000000..8005ca187ef43ead702afeb80822096c979710a2 GIT binary patch literal 3577 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_icon_edit_ef.png b/res/common/usr/share/osp/bitmaps/480x800/00_icon_edit_ef.png new file mode 100644 index 0000000000000000000000000000000000000000..80bc218240ac350aed221fdd9b0b5581daddf395 GIT binary patch literal 4378 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 Ug+bc&xBvhE07*qoM6N<$f~^=ZUH||9 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_icon_jump.png b/res/common/usr/share/osp/bitmaps/480x800/00_icon_jump.png new file mode 100755 index 0000000000000000000000000000000000000000..4a9a404a7dc90b596e216c2d29aae16af09cd4ee GIT binary patch literal 2965 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 LNkvXXu0mjf$6A6G literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_icon_jump_ef.png b/res/common/usr/share/osp/bitmaps/480x800/00_icon_jump_ef.png new file mode 100755 index 0000000000000000000000000000000000000000..2ea1f9ac10d0593dd00a46437c6f2a276c693d47 GIT binary patch literal 3290 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_icon_jump_left.png b/res/common/usr/share/osp/bitmaps/480x800/00_icon_jump_left.png new file mode 100755 index 0000000000000000000000000000000000000000..b7ec3140e179788f948794d482caf86a1f1495df GIT binary patch literal 3003 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_icon_jump_left_ef.png b/res/common/usr/share/osp/bitmaps/480x800/00_icon_jump_left_ef.png new file mode 100755 index 0000000000000000000000000000000000000000..9d984ca5f8531252b54bff590d63cb173d0c8762 GIT binary patch literal 3234 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 UWdFu|n*aa+07*qoM6N<$f{K3;ga7~l literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_icon_more.png b/res/common/usr/share/osp/bitmaps/480x800/00_icon_more.png new file mode 100644 index 0000000000000000000000000000000000000000..81e0c98a430d13ad54365e2c7529928e9119b4ec GIT binary patch literal 2982 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_icon_more_ef.png b/res/common/usr/share/osp/bitmaps/480x800/00_icon_more_ef.png new file mode 100644 index 0000000000000000000000000000000000000000..8a0b4d354c9c5c5990bf8a0d99e7e006ac1c5f51 GIT binary patch literal 3110 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 AG5`Po literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_icon_plus.png b/res/common/usr/share/osp/bitmaps/480x800/00_icon_plus.png new file mode 100644 index 0000000000000000000000000000000000000000..1b103332ac1b42d03fc23a1ab5f56a5b60c3be72 GIT binary patch literal 3141 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_iconlist_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_iconlist_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..30726b2c4a3ee3305bcbc37a42bad203ceba110d GIT binary patch literal 473 zcmV;~0Ve*5P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipuA z0|6NR^lY5~00CJ^L_t(Y$F-GVPQx$^g}-DeAP^vK!zsA`Ie@X1rU`$ZC(A2?tq{q} zrZrz*9Qy@MkIssbfYj;j{DtWm*aACXulZ9^fmT)sdyqIACa?n8;Mu83{FtY1sk(Qm zYf?M`MK7R)x1Td^1sfgsQ(`mv*jxx7w000DN$epLYv3MM6h!#;Lbz205?FvM2k#kp zT9KCF#LiP**&`>{uYoVEZLZ!|!6WRb%gZ+n@>_6M%=%sbDlOeSM01ThC~Er`;1Rgd z>01T70(ar?X2s;@7G8FMce&c&O3cG1_uU{9@S%01V(-$^4Bmh@2iiE#nSkp6u7d2f zZYy|=c{kB&ak|nn}HoE-#ObfuUP85*(vnt7{j3+l+Vha*`_z7yin8C z?WhKDiw8RE0rTVH{>uxu3@-1@Uuz*q&Xc{`9QvRw?4X6xTkO{KU$_4kg1MnUG9DqZ P00000NkvXXu0mjff9KD& literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_indexlist_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_indexlist_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..aa4d47ca6e95747ffd50403073ceb04db157b29f GIT binary patch literal 2846 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_indexlist_bg_ef.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_indexlist_bg_ef.9.png new file mode 100755 index 0000000000000000000000000000000000000000..96342f6daaa2d9737123361a9eff455b219df581 GIT binary patch literal 2858 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_bottom.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_bottom.9.png new file mode 100644 index 0000000000000000000000000000000000000000..90d73b938d4c66396d01b778718f2dbbf7981e32 GIT binary patch literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^5anMprBNVYeY$Kep*R+Vo@qXKw@TIiJqTph(ejM zo~fRpfx(xeg+NtvJzX3_JiOmdHRNkh5MbHL=IG9a0rwaR*`vBQJ^Q!T_2I)Sn=(rssx!9ddF{wJ z8Rehfa`W$!i|OgyOgUT^#96**Hr!+gX5=tEBYGgExkO%3`YAZj%52 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_bottom_ef.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_bottom_ef.9.png new file mode 100644 index 0000000000000000000000000000000000000000..fbd5ccfa9f566accdd307f05b9cf4b4e168cd5c9 GIT binary patch literal 490 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv00045Nklg(y~M=y(hPMpv?-`mSW1ZW8(xt4(R`uq8aPMD@%!1T6hzbW*1Z0A2 z2YGShhPBswyF2E9k{n*#-7$N^y4BY}dY~=`8;;8YkOUhj{DAlXtbQbdJ`B|Z(hD!I g;68v=<}{!g04=3L10rdEz5oCK07*qoM6N<$g4!^?ga7~l literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_center.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_center.9.png new file mode 100644 index 0000000000000000000000000000000000000000..23c6cf28a3e323f7bb01a2f7b9adf303ef1cac73 GIT binary patch literal 232 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 E13gNkpa1{> literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_process_03.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_process_03.png new file mode 100644 index 0000000000000000000000000000000000000000..38d71c9922e5ea415081446fbe035fe7c730cf13 GIT binary patch literal 1697 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_process_06.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_process_06.png new file mode 100644 index 0000000000000000000000000000000000000000..71084d4e06b1c914e633fc346d9ce6c95b910c4e GIT binary patch literal 1806 zcmeAS@N?(olHy`uVBq!ia0vp^S|H591|*LjJ{b+9BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFsEgPM3hAM`dB6B=jtVb)aX^@765fKFxc2v6eK2Rr0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWfo`&anW2K2iJqZ} zfu)J1j)IYap@F`kk-mYsuAzaIskxPbp#l^r0c|TvNwW%aaf8|g1^l#~=$>Fbx5 zm+O@q>*W`v>l<2HTIw4Z=^Gj80#)c1SLT%@R_NvxE5l51Ni9w;$}A|!%+FH*nV6WA zUs__T1av9H3%LcpzHo!{ilG4o3^M(S!~%UoJp=vRT#&!Os*6j4QW4I;s=7F&vLIDI zD784hv?v)EA8E=k&A_n3ZxKi#&^1>6MVY`zNz8G{PcF?(%`5SAu~h=f=%r+)SeY2O zIyt$xI+-||n7A4l8ag>UnY%a{o4Go>7(1F6n!?P$rq|HK$<4&b(Ad<~#MIEx)yUD< z(7@Hr*vZw&z{T9r*$t-GGq1QLF)uk4W^X3YUZ`Fpyn3yii&7Iy@{2<9^K)P+ARr^Z zB)>Q#zd*q`*i_F@Av`lLCBM8F6g?2%x}+9mmZhe+73JqDfWy}+6N~*8Zf@pA24+Sk zuDJXS(VId}nCSx@qYp|PNQng|1WbV-COqi_Iq=Mrng`4=MZm1#6Ryqz%yD*}E{-7; zx8BU$*mui8pzYwC7H@HpcLkYN?j|0YGMcQctd&hMGebOQZRz~P?wu_ESMopc-L;iiR;OOq6PB-|RV7hhCqKDa<)#S%$_n3gNXcGDfAe@H2>X@Bsk z%ZtfM_3HJHaqNxn6I@m~-hA>`hBY;|P1Dw~wRr8hMRv#C+aWo+Wm!%Le zZT1hJ*bkR?aIN4lax#6!5mpi!)AGF6_JIcXw^c2Zgk?58dt6ZXq4D^>_q#*nV)drK zPv3mg{Qmd*IoofST z{%a8z_s4~m5#kAJ7cKZ3w)(63-}bwC-%Iw!{h#HxeBGh5ZY;O;nNH0+X5?FZFK_#P zGpXK=>i6ac>e>=DTAs$9WC@*Xb0MyXaTVKKzvsd+br0=6iyiY>xJ&L~&|aMY=FfNc zn$A8uA84X%jNN0k-QnSaI!jk+GHvaQ`N_|haMQ(Kqm*&l%GV(aTmDE2{NAt2^mOrC z$F0m8COX8j$39GU4Xss*^9V5JHeuBX`tIyn%Ix^n^;gEV-tJHwQr#`L}Xc&9Ygw^Vrox zc~7zja7>td=&jKW-G@v$m%_P>7^9zMGZ`IwzxHHdWS*o1FzhB2ES0?S%0-y6U|C{k| z;>a+%+56y(25+wCH4eG78BXmvM(jH$Ur`L7y6*DvolCf~Z!Z4Gq5PRIac$F4?}q3v zds3dpzv8jqTV1iT;i6##PfMr8{k17y|Nl=9%Bg3SV3^dVeTzG6g9NCC@^tlcS?83{ F1OTtmvyuP+ literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_process_07.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_process_07.png new file mode 100644 index 0000000000000000000000000000000000000000..2ce2f62d14cd80905da3635e66dff8883efd7509 GIT binary patch literal 1772 zcmbVNX;c$u6irkVL8^cvTGSYdl`YAH36Oz+Sp|=13_*ewN=POoKr$g2NP?|e5Qqo# zAXa5@q1f6IP^lCt2uQI=amChh1hrB(HWiQpTC{Y+V*A7TqjS#8x83{hd+&Si%x?aM zwKi5ut#CM;O>huLfQ@eE*K#)YZMx9%5jHGAxgs>Z{knTaCQUD4Wppq#*o&W`+`9KtaF!c~I zHH}mT2{^ndEo{Xg%28Aek;yupj->MpfLk=V=QZ zSS!&e)Tjbc5zH3FF-Q{1AYz_QhM-i3guF4V(oQ7`OBq=&R+9k|g{)MX1=3IHrN%ZJ1A^5(KRUQ7_6P1|@I7ogIp92(Dy#sz5rz@^f?IV?7v zL-FPC*i4X1pXLUuw5V7mfv0s9nC=vp`c5vy*1%#E(FhSFVY&kNas)-RazssFhtfy@ zAzY!7B08=4dM2agz#2s|EahnsC1E1Jkm4=+zC4}}mEuhWx&IaSBv<->az@6SA)AZi zU&S)Lg;k(=`lj@;#hd1VRanPpu+~`D`(yy?IHzC^Q>gEFl7GImgTJtuwy?#~2~1-h z?iJ1;?d^Ho+4 zv?8ztg$~RN1FbVMb5?cL&+GUhKD9g`wbb2Y*&Sy>?pKgzjHf1+Ed`H!Lge#lQo&c@ z->40(S7k#>NJz)iWO;-`-+2m>nj%+t?cbT4yZ#`-j|=~DUk!q-pkCqs~YWb zWjOMvj`QkQKC%7P(sq5D`|`$$gV$azatJHle^hpIb6?WPBNWQN{d6SKsd-0dpA)YL z*WNJJ^&<6VV`2Bh8;Pbhrl_jhuk$nS_K)iNhCAGBkGXa`59X5eZK3!&{kf>qi&5yv zifrp0hjx9cq2c@RWzN=rUa@$+ecXBL@>8??_TiH>bD;|GUeoa#^1b%qHkU7!*_djG ztpIT2y#Ji?{`j54iG`06x9;4M*Ds=x%T|fjg_T-SJREYS)Ss7!JVh8=~EhaZ&G=d+Al9;m2kdM9EGoz}x zpq$zAynnUZkX><5+qYFE1(pG)Yh#HEK^nW$xG47&oon@eYTJXj*@JRB>+D&3W+CBK z^xC8twL|N`r6P7jt5M%tQ+zw}w+snoJo=Y3oeQl!&h@hw^9*p*8c>>iHOB$po7KDN z*iR)DR%3=ss=Sx>OImlCY`Du}<`&v6A1XQ9o>TUHQO3SI_WrK64lcFHBM0Xu+cTT13fLf z^7>It&jVi0iQGH*i0sjVYWI!V>6U_CaQ=l(+ps@;6T4Qc>H=hrB}489((Wv(X^-z- z@mN-P$@GQVSZY;Ja;{-}V3uFLn|q@tB(%6`0qf=mRzk<>Aku#g8Baw%-z5_#fnb-8?|S&%>V!Z literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_process_08.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_process_08.png new file mode 100644 index 0000000000000000000000000000000000000000..09c37418b590c4f251b3bfd2f196ade961391a61 GIT binary patch literal 1847 zcmbVNc~BE~6i%T;q*z4`MXfFYxr8K}gOCgna&p)}BoVP_N=P;kLb4%QB%o5Rse*!9 z1&fNH6+sFVMaLkw)@rCIR=`1|4myaofQo0W)NT-L|FHhio!R|e-}k=v-tWEHJYjh7 z9GgWp7z}1kXb3kF9lg!3H5UC|IB$wU2WNyAjfh|ck}B0f7?vE4gMd)AG#-kCr1G?6 z6BK~KSSpm_Xe3(jIYS1k@lrDeZ%}JdHU<+AXwXV!DhL7Mpm?Q*iF?@8h69vxCT=ZN zKon>>P=YcfT?dKM!^N_6m5eUO1+D}F3=GtO8bYLiL7k-0GYm}JlwAfoH*XVgz!U^g zF>!C5iWUd~4y=O!DxT;oBl>}W9|aFmh;$0w2OtqaA^{{3h%{f2$e_{~L=c#MaHyJ2 zu3$uR`O{kHiit}=5G{j1NKH+}r;_ooE}j6=>2v~-L?DrTQG~BPO@l}cz8byjj0G;F zm+6#RLV@&L_Uq%=geG*bb>1Q>z!39uI6h^TlF zSgX{?;Z(i(dfrCMg>=e|kesiB)xcDK8OrzQ`}6rU648%D;r&#itSA)mv?mx22|&;_MD(W_6ED2dCr`{)S=n< z8>!!n%bQ+yY#*Lm`qhipab{)fz*u4>P;fKv(u%)EhK4$xW-REzrUdymUva|u(WhCZpVWR=i7U?c4m2$ zn_5{dy@}5yerpaGb`vez@XY7QAFn4KJTPr(Jt29cUe`AeUfJODyWyEMAy})VK)mM!2p7EDQWD@(P!Ex)_JtkTvw7(v#^Em$squOUxv7T6* zcss~=&ot2wJXupeNh&WCmXk{^SuLvR^nJxMD6ONO*-D4MJ>5|)v8#&kIa;lE4OmKU zB-b3zIu%~*8YVne@9q`b%eDDvZcVz(deyq#sI0TUY_*T8B#nx_`<7w)u2tl|a<&_3 z`_7`MEq3+9ChWPAF7Mo+kR=UnRcecT7r?z37RIP@UyL>{>}mq%My*U9M^r0}f$r&9 zUj@}NDMOaZ>zo{_# zZLfph^0d37ryWL}vY*$7glwOa zRSU6a5_o|g<4Z1-l+xTI@*a_}j=?wQNn3184tKuDyCOInSl|(D=gz)WbRsr4_$hlq yw}W^k)56QiIWc?x{vFg#Im3!x@`gO=7>haFI=|b}*s{+2D+}d?bL-f#*?$Azr_}WT literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_process_09.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_process_09.png new file mode 100644 index 0000000000000000000000000000000000000000..3e26bc24c7abb9ba69970503815e1f73a63dd635 GIT binary patch literal 1811 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_process_12.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_process_12.png new file mode 100644 index 0000000000000000000000000000000000000000..30937231d324ca05d4f92d51708286e8dd8cd87c GIT binary patch literal 1796 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 VGPeL3+HU=0$)%B!v!bLe{{TUl#8?0T literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_process_16.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_process_16.png new file mode 100644 index 0000000000000000000000000000000000000000..e81933f9341f1299182e220497164a282e32f8d2 GIT binary patch literal 1799 zcmbVNc~BE~6pj$69CB!&h$Al1LFC9CLSiB%*+5bVM~DbiEg{*E0Lg}AAqiMiL=

{4TaezwND^-=M>Cgdc~*zzW15)j^nGIh+ImLbWs*5<^nC zDZLY7V=$Hql_U;{6NR&6u$mw>+YpRuEsDlq*g;0ERF(=MKoXR!(s1w-Em!e?O3uM= zqKil(Ee}$v1X(&LCM!ZB%Sx3o<@lft0Ncny3DgiG1&r!6jhwCX-I0)A=+Snaro4uwX8Q z&j1;ekU$=fw}2ID^oUd=gBJX%P`~q7+GnvWo(_^CuucNQX$ut)rGyb!uY|P#FNRJa z1DjMDIc(6IuV*e=5YnkKA$f=nRs*y7WvM>lKQJVOK_LZDXsGs2$32IY|DT)@Q87ew zar~!P7Pim|G*3U4KDzkWJdg(M7#-Rg_JTwK+Hnja7%VXkyeRSf-aQzXzjO1=#KdQ| zZMN9pJBflrUgP@!=9)?QmdJYz#Tm8LZRw{wZQ7dgO}W_SeFTT-bIpJ&c4~>KH_Z#q zG$;&0!f4oIf2L;blj&C@-P!uSSMN5PY+|dgIJFD~x$fUR`hJUc#o(gkxAFZBYzxPi z7wX;RY>#BiKAPPiUvT85!D8Tga^6{w+;QJ3n|_9*bg1P!$vbDZpZj6Q4PQq`bzJJ2 zxOTKs>sfXP>(Z{Xt~{_e%(>o`8!f$|oeZctrrdbq#L|F6wiJ-Q4SVad58=kGU)Kii z61kLkSLJRlA0Kdk#6QY->@AGn=&^EX;kHI9Phcv4Qc(Q7wd*pgEGZKwkLpnj3>hgk zc4sqVdz}AlDG~lb%{wk%l#yhU&>v${nBE`ez4Bma<0H+UW8Df?>F-ZYs=bc7-K;*W ztnTZA1CFhF^ZxILy`zXwx~Fx>j=i-S*MLhoVx`=}&1P0uB;HMF$Z2?}b~LeVC9%C%U4bu8-BC_IM_Aj(UT5K!9l$o+!iX%f zGu9s(?vIn%Gr|)q)`dKE9mWp(PB~9Uq+`Fue6cIodn|g?I~nKgt1X~f`usAp)@{dn zQUTzQvP{*9EvjfLwcfGD`;-#Ib$X4sTPW&64PdP@Xv}jmdu_dQ$Al|QaQelyAW!HBg==q!1KbG?@I^XL)*D_Hs>@g$~ zDs?gVfd}i?^)JtLkTtCm_8s|Q?9Al(9fQxBvzLy_ekwX$?v~~hb33BbZTffz?Pg7r z$#d)VOEzJ@C28YRv5wU6(_sO}_YXoZimFRx)Y^2v+OF`wQrK-PnkwQ3p=i>z)dTmf xXja9Mj*9u2TR2 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_process_17.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_process_17.png new file mode 100644 index 0000000000000000000000000000000000000000..215eb4f39d0727dad6e25d63f04864a2ff6a678c GIT binary patch literal 1755 zcmbVNc~BE~6pkPa8Wb(4BX}$UMiIzvmJN`YaO8rB!88T|0ZB+U5FpvOSxBHB2%@NC zp`cZ;%%~L=TM-LVDONzN3XFA7s2AAQ6U7#)u@$Y*4TtR?jDK`zc7NCRz3;vEdvA7! zG%9??bl2$=3T1{kLLei@W!Bfhp8WpM+7?d^^9f-ru^Q75CMAwi!qiwY3W#;e6jX*P z)!FOYP!5G+tI^71iCD=>whGhHl~xShtTT{o3WXD5HYio;C;=p+DOx?3Hqh8a1GH)` zEruz9BnCd3s*T9O(bYLoa#c>cilwH71Ops1n>3(92_<0GW$2A;GnY1Mmrc&C+aL`X zg%Ign+L%+Z5-GsPa1>zDAwLxqzyJaeIs<`N2+J3MAqE68U=RxQV?b_ttXUbKfTdo!h!%b zs&K7=&|-SPYEhYtWfEK(>FHPqI)g;=-mu;{o+vV9pjl}E8FUEL>8x>$qK$+M{nw32 z(MEZ;0R?5K5zE9?V!GzQ8{WVK66bOvV*4Sx6uQ31SKnguxKPETMoWVu|<= zED8!kU}%CX)*A_>UWHERYDwL3Zr}&GY(9=E2@IEGSjI#JNK-KaGp1q&fWMkaX8)0ozijO!`avR5APfb-2hB*6I7wCl~LV2i21ugOjbXpBSW*9Y+-l!sO;V&&y8h??SUee+#l*k{`e^boEu{ zQowtMJM*`^apq*Dk2E)Z)~WhdGg#c&JJrP=$>}<-cSYT{McQA^Qx>_1BW-Lfxw{HH zlNS}4E;mMwWHr7D&f{2u3pqQ%#$LMRop;P7=KU4F#I0yKbHBXxWoO+Lyn(QN<a%*7wf@xp>UC_VCx5uHcJz1Fj z1uHiEO{FDfx^(}6S+_X0{c9`1>!n`%R~CE4K5$S}A1k4pqbKLbFOo+W3MIv#NR!$^ zou%Btxd9#JFZvd2acS(e=RI@VD2k#zUUJ}dZhNn?IGf)hZ_Z(7Tu_$z^w|vE3-J8Q z?gBj_)Wa(*GFvxAR?wa3eSgjF{!nN2p}L#ZM+zh3!m3)z6CE_sX*LzK26!N^)$v~)>n8|b(P$zWznHf8xze@@%}hq=dXx2Vax($2*) z`}IJQ^rx*%*1^H5#np<0%{#AM)s#-T<+@|9Y3@nK?uJtr>5AIhzSNV0)FW#guWnD; zo03%Ha9g1(3*Wfb&V4~d^KM?&m7)q@=*-2BHm$2|toPzoV;0S_;x%U@%f8Edd}UW1 zl^68qt*l=;sUb_#PgK>btLHuI2`Q?FLH_j_>GMly2jddC{(jl<0+Y)ThY4MXV0#D z?|fKRI~=+22=#cv^V^WW?2yMbSN8(P2Z;LR{D;5qb&uH)4xu%l$DogwyMpd;(wrva zX~oPKOXobuMc%}fc_|#GQlmH2r=>0E8X4JqblamMiY?_LZ|GQt*^*-Y-H3%zf@+>3 F?;raToJarw literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_process_18.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_process_18.png new file mode 100644 index 0000000000000000000000000000000000000000..ab0c642fc6180ad9d18fcf9556663f1bd89911e3 GIT binary patch literal 1712 zcmbVNX;2eq7!G&=9t|KUV0Ddxr8dcK*aQ+uFsB3z#6Xq9Itj@JB1twR8xnAIxCV;| zTEU7(3qqw}!M4(RTO3agD`7ewh>VV)QZB8Cwji_{4%;7$Ke{u!-}OB2^IqR3yQ0)a4J94e6EbX*T}7cBL^MAG|PO3>Jl|F^j^85V$Hd0RhB1MIs_Y6sok8 zMkJU(n4#80$6zs%^(-Z-qbTecidAR8*#tsxh}ED_CLN0Kz5=|&_fJtA6}o~&f5NFf{`*vi5U=nzZ+San*xiDhMz#_h83xqX{T0>&X& zGMhBvRE$Il@KGZI&?z8U2{Isn0aG9tWWvl(02&B^RES0e1IZA`q6e}-2$+0GxSCO= zX2}GiNiBTECM98*fkmZSEEb9-fPxwmsSuONq=GamjYh^1WK)_RQ&`D*(~2nz0>q>= zY7CeL)dO~miUib*u}Qe66Cvmf63IKmdeda0@RU)l3Ii3QfK;8%9@jY9gvpS9-Ix|_ zicT{iR2gDI%|<0&5A}*EGM>Bl3)z9VH>^mb1}}<2D?pWI9iqp?0yYUhp{O(}77Pk` zJb{o0^I=#>gCHKC7bxHbFob+T02hYnQ#PjK3Pl1aP{a(R3trQeR@8z=iMnr+3#%L7PPIZ7Z3B^!T5^4bWQFICfY|`je zsKsP2&qTBW#HdL{R3am)1IF{q(oCZtBoYPEKn4xQeV;z=39jn@c2g~SqCQD|;%t{Q@y3)kX&n;jO+| zdu}LSyQ(-Nz{&2AThHpA4>~8!^v-l?e{J&HE!CcF{i&&Cg>G3-of_f#P8+mk zO%9p(prgDnqx#z+FV5le{gGw;wzAR3@!7LJ`{wk^x!oRQZE;ykI)C>7ePh=^O)D#y zl6E22>Db&Nw^xoS_t`U!XK7o#J+j);eb-rIhZhC+$QLdB@_r zy&PmY`}zK}zpM1K9f_$bDOf$rRTgKHDt`6PIk~mUQSy0QY$VrtsLt>5>J6DqcWV3w zy29dZ-OIA?>>9}5y`dvpdA@%6x!U?uQikWH{?u@fk!=liK05|`MT^y3;#*ZL<-q)v z(YyZ`S>Wx8G|uTE96*1e-ab{|{@chXC%?Qqzi&7qF?G&g@I5fF)Kc8*bD7L}`PDu6 zYRyLTtB~P6x3>wGi!N_Xoysh)9o)0qqDD`gMe10L@PN487)Mxw%Mnv2f* zW$w%4y2smgS-~S&#E!3f7)#oQYL6cF4yT>nu=CFvOt(e+Q+#W~-sKK)hlX3Ts;WmI z3ngK+uqX4`RW0^&$nlIAfL^$! zWvDiR*Oe$boA}_hc<`XXvU8PhL5tXVS>gw73;DM7L8CTvylY(Krw0o5`bk|=Ba8iW zfAAXnQB-x~3xo9fyx!9Fdl_XUZDkvwV!Z literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_process_19.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_process_19.png new file mode 100644 index 0000000000000000000000000000000000000000..de80cfbd6dbb974271a217d156bec296847a0d33 GIT binary patch literal 1792 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 Ns3an(u#O*V{s+=vzYPEY literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_process_21.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_process_21.png new file mode 100644 index 0000000000000000000000000000000000000000..36957e5b59c01d417b6b564ba1d310d031ec836c GIT binary patch literal 1796 zcmbVNdo)ye9G_MQsjwb}x{WO<=4A#m8D(B;Fw+>LoI>VtF)?$;%w@)-w6ulgIL_)t zB%BQ`jxC9nNORFhYY3Mk7-oXcWqKn?@lN$Ad5+0%N6eDthwr6*M4~P|>?c z92`eM2jipxsY)<3l`9aZ#*4`k^fo`hS3^MvWFRaAG_nM_ilU*SXL%{e+^~&B1G6S@ zJQY1BDxAXu=#UZwNEn=l80UotyoeY)5l1GH-2nm)kHg{#Se&;99!DX0Q*d}-{y`(& zl#&<OXWmt_+fyHBRSeeWa*Q~V)=7ayp zSkzi2NKt@TKB$6{lw#yQVq6x$NbdgIk--pAL)oE}B9|geU_jy|87PO@3@REq!APVM z3K7So(HKk`kxnEs33xn>PV;8aJiVB7hNnLfPg>wu49g^W6G(U(nZzU#@pvY|hk)}Y zBVZpUkwz!ci3?b^Tm=i|VsOE)6!ANc_4!XMg{}mJFr*YfP{Kk5@ZumCQpG_EfF4T1 z;DKFIxdc+H4A(OkEdx|alR*hf3CV!j{8FTg`1fJ4ya_lj0uj-^c-(VX$^Xe277>Fr z6vw}cWnl}cK*RJ)=_89T%>&Ajj!`15A+~Y5i*y{3&F~j!hF_d)d_KJW>uwvXoJ&hv zCBe=5uJu}Nom-@n)3nU_a#Q@o?zm6u;Bmd9bH?vZPP%6&n47s6+Q!6H#htW{&i1V1 z%C`2)y3+nB)BSp4bxZo2HZ^v#?9~LUT$@QcWh&xK5lXqTzJd-T{VHA8!#m0MjWvh6 z#5qw!0}aoSRCS5=^{et9fSP+EBo?89-C>Ryf-I)eQR1MWOWcL@+v`UJn;B4LvLe&04{O^0L(@he0pEBBrzdzG3`MjQzn!LM_jH``t_C7j`T!q8x83T2|9;KG2=+TAN~7 zDR>8#TNQ3OAJ3!xbu(L^D=8Nx)Hg)*cqI8}U0GhtuEi2qVXjfBAJvSecc#@(ryZyE z40XHC{3IF9fBQt#814DSc3s=Lw6;;xAl}}idW(txuci~{R*o8d@YY|#)HqrjQ*VTo znB8Cg8)JxPXP%#1cjRKH;Jp9ogBjNCclh=X`d#cC%!*o^OAax|6C{bJhOA6p5^Es%R}pOmh$2_46_F?7pVj zn|rL?T&tHHt4Xss(p=P9()+|YIS&XvD#^EIYreK*&37wy$*P+%{Fm5FE~B0no%uI<%fQS4 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_process_22.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_process_22.png new file mode 100644 index 0000000000000000000000000000000000000000..f8735b12df3c3c04a4d02ae167181984959ef369 GIT binary patch literal 1759 zcmbVNc~BE~6i%@L1Qjb&5g2U@8ZMLFO*Vw2M92wPAQYlf0ZWbzq>yY#76_4!ilC*I z!#WX>R-nd$7Rq5oG6Aw~{vK!ad1l2MbPHE@hv^0ZwJKDTcJ zWYRPQOXrejoJxp}B?(YHLSoWDssapxNI@_SflKar!ygFbkWhT3~LRuiNaF`7-c#DqJe-$V~=YZZNTD? zf8CfDZII^b5FidQpjmnaejh5IIWnHR*9+N!xHlY$UX5RhEJKJYvNVVmixhIn_z6v^ zR&roa#ODh|d{_X(B02=|1$>r}&j=C;gbW@GG3RW|#}$E0F%DxhMKBCOB03vp2-y&e z$rc2&AQ78C$Bon)Fqu|?%;~Ce-C1t%Yq=bO9+6?FUW%d_a}^MqhGM884b_nZ@k|;- z+N{(B6@W;q7>^<4QV>R9Q8cA52#+3Y^)h0z-zi>=Md58JqPyzT$FHLznBm%9lT61Q}M2I6dWUt6ntX@p--%vb@ z#j5H9V>`vp-EiOA{oK6Xr9oodw!K>%97_gLgM-3G*?x`Qa8+J{oHtz7P3;JCz2RW0 zZI=IZRoWl*$!52mb)c;6*-NY1Q^=4=4)t2{ZE3~K{0h@rzVUH|u5zp3mTD)Oq+4jmd z+xqaqnuTeSi2lMW0Kxx!PmOKY#$ELOvV(rwq)l?Ng}<_H&-0kpyUc=?EG-r+lsFHOAY9J>9hb!_)9J{h)4UXHwp3Vnnl~G+_{2bmyjzytM_MnyNacdQLq{NZ;?_-*axU+WyOl6vYU? I<)`HT1CZLNO#lD@ literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_process_23.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_process_23.png new file mode 100644 index 0000000000000000000000000000000000000000..26b9732cafab841074f6b9bf60b36572a041e16d GIT binary patch literal 1806 zcmbVNYfuws6bmoW&?quQU^t9 zMYMo`BSl0D@iA0Tpa?#B`k*MZh%#E#N{b-<0cxf~H#}^AF#hPy?0&Cv?z#7V_s(X9 zZVH^^u*88xBFzy6!C}O>*7Dlh5#Poetx?3V7#Bw3Vl);{l41ynCr4utK%|i>kT66l zPfln>{75A0Sd}Caj|>Us$WRSMYQa#98XdtVk^D9oby8V8f&(##LZ#)BU)5b911dR} z9Kj3$Lv#W}sR~NL5OK;Ti7X{v#+H*etOxvz9KwJG!KHvvqt@y=bhM>`fguFMb)lVggNEy{A)lne|NY!X8aZRB0co_1p z8#AKyl4Ko14MX&(0h1B;5$irpCUW;-Aq$Z3hO-${5tkxW!>G)lLA1CC=8}mMid-e< zFhC)n4-5GW0fQl=K@eZS_lEg&mQVoGc?^g-ZDS@b41=(c&Vrdj1_OeGG(KA>2%yuL z-k>*=2eAaxT#;6fOSLj&T31ErPH_bvg&8qCEnh#s|GFM@dzW6#S12<`EAX})I44x|Ig(G~gm zYgaD3lp>FAY3bJX7OHzgH}Do!?$s{if~9V~mw^@GL2Bl))z55OW6~N96rCIx>3ur{ zN)DS#kNS8t{5`b$RngrT~?d@&%#b$uozZev4K2~1)9??&CXIm+K7Rd zakIW4WT-N|zQbxxjm`G%`?f%GB$SgHdNIOo$$aa^i?_B0r+50>{weCbyl;!iO#7K~ z*z>#iQ2to({$U4saY^AZ&j`%3gyznBxBKJ5AQP1q5bm@i<*m46;Ty-QBPM0-HoM#H zi~0^-aAHY-J!W_-ZLd7j?5eMsdxmt%d`pfJh@Q~&S$JCIG(k0UQ_J`!5v9nQCRr(E=lehUGuMV zi%nX4+`x10|9;?WPY7&_x;j z?rLRmoJacAhl7c}r+X5{LP{M?afjw%RJMIS zyr3Skt+HM4c=?Z?99W*RuPDN>R5Cuk`}8-1)g)_@dDtnnWD0_Elu*kW${?6zvmv*Mno~gT!$b=mb1Wg4WY^6KF(5^$SVtYT zid19OTGU9Z!#Lwu6*Z1B3W%bDx3y|x9Yy8PatNgx4%xB9SKL8?)88Iwe`CL(B|~2g9(LQG!h(iRRf*jcyr?16tT%w1}y1PM@O!M!lG- z;-oNBP#IicOt52cmOV9FXJ4ih=&AGO0wSA`Fkpsp4PY~yELNdSOdYW+B<7xNkP3`I z@MU7^s8i~cbU=n+Fu-9j={hDC0=R4j#AXWE0vf<#LQD{1flMA9VhTAtArk_|9x9=R z>GOq|a^;v7u@X}Ya2yqaU~zFVqd1;{U%V!GAj=_l5ST}RZ5Ych`M7bo}cCTaSxeb(zz)M3x@cCys$2Qfq ztj-HHC7(F3Hn15#$%30^_kcBiDtk(T(M7Fk+!4A}odncXnGUb53)SXdpw-tqdUdzj z(JiY5?yJ3n9lb3MUeD1o;SYsr=PAcywAZ>Ld;04;`sV&R_4D$QzO!|~qDg6;LrZv# zHc`IYkERpugd85Uexq$+%?yUoQh}LHq*!$P1Wyj+elV< z2_dJNW?1tgc=_UsKhK{Pmn}ptCBg4h9T--=UDKZ4EopD{rUXr=7gisi5|pV-|1qP7aenDTYn>{Hqcb{pedwn_|m@h2M4ISHg@NY=DpL7yP{f?YWKUb@YU-K z$z7_uJ`r*0l2ugt@|lm$H}g6p1!%~=?fb(szOcSJ`S$O32X@WTmGbWy?nBSj>D$OW z+7X{if83I~x*uWQGLikFca&s$^UZKG^HWomz1zLB@ZhPpdQo^2ZJx7fan;$`1=3G~ zlXDDBq7xh8H;#bamEG%(9N2|z%6a`dGA@E&(UDQ8>l>IgX!Jm+mXw*euW!A?h3EcyKLiZBEhkE@ zzkF9Vt>>C)3s>Q8d`(vg_TVvrk7K9zogF^Y=X#9#l9tSJ-0Ig>Shq$jtj`tZPr+6(84r?b95 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_process_25.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_process_25.png new file mode 100644 index 0000000000000000000000000000000000000000..802740bbdfe06f0bdac0a0bdaa33e72af478394c GIT binary patch literal 1758 zcmbVNc~BE~6prA5fD|3DBE>F290KOpkOZ?PK$1-qftW%VD2fu2g#?mpOcqF}MdWNn zLC}iYrhrAK1*u1C6%nZyB7z6B6=F=});n?T?M72xxVARA0tOlBl&4IWb# zV8kHTt8|zO)dCiavN$vu;}UUCCqmHZLPOsg)*2=gg{O>al1?hUk7ufi`yriM{@vIfy&K`@typHLJk z1;n5U`FvQ&X9yS!Asqzy0=^&2_hktMurH4RGN)`z$Awvbd_M*oW(pY$5ERl^Fhn3v zBoeSiAWI~Gc~jgVtpSs1<;aw-3fG17 zfk>5BfuL7bm?t%M_V24J=nQnsn6dT81v_$_ z_<6ynqYjkk2iw{m(CysBfW)XyC5=j zi=a=vuXI~d!r5S*9hP&&Dc~f7$EX^q=m_y{wDsmSwx06=&tDCz>$YM=Jd%IptjO&1 zcKu~h#Gl4+GZFzp?m*Sa7$d)lnzqVFw7T9vDSI{G)p+Jmi?ln9uC_mFz3v9-X?@Px z!QpIkXGShR^Zv6@tDVHdAFOeYV$!!ZT;xB>DSW!yhD27D9lg)YKAu=+DUO(IO z-u16+juhESe~M4(U89xTLC-Ij)f{+9luO6D4|Z*I{Pj0qNy^~+)wdoKMiye}4fM55 z{_T=-dkAPPuG&2N^~{&EV!wd`N%?!=qWD$#L-Z zsReuvJua)LtfpsR{j*p}7Sk>wt@UgB0$2CH)OFQ?zIS*@SGQlj3yUKQw1wE5g8rB0 z^8NZ_l~=Eo)ZSch$G7bZlk0&$78@JB(`=tJ^I?Ou@DMCEudMJXbs7~%*H!CkLl+$r zB*zlA?eA_TRh%vK8a=$s^NhK!DAVlz5Z;^aR2*S_&dy~+gsH2A8Z;^$VbxZ)U{n_s|Rbl2D5aIif?Ok z^PV?9xzy(2?2yy+faiIk=gIHs^>1d~8cN=gwg1hQgvyW8?P!FUz0Wu!TlW-O{y0HG KG5kG0HuE3HS*XSU literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_process_26.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_process_26.png new file mode 100644 index 0000000000000000000000000000000000000000..e7d9afffca8e17e98ab1f673505a841f456f9a49 GIT binary patch literal 1728 zcmbVNX;2eq7>*z`N;BGyS_=Z(fFKCj-CRf{K$1-$LLlXmN<~7lApx=*lf?uCMUbjh zJP@_$h@jS{RY56KDHTvaz_tvvXaPs6MI96oLGkDz-5}WhVEUswv-@4o^StLbyGpf)2>bi{gAfyBGJQ#euQ3xN6lPz{=r*N*phl%Z zt0%NL23Qpp$#@3Ar<0z(4ne1v$=(QK#>qsHDFe+4JqR-(P^YuTHGwt~QRqKzOp7+g zWa?2c3N_*x1|?Y!wc8Y#%-w$*vI0qOc##GzSrkP&f-5t0C`L#TKAk*asI)2`8xjkJ zh*-!LvDsoK3=2gW6C>2l`TW3x@Z$MgLLt>#%Nkjv%L#($zE=;oWIp-8?9)ZcDAXYRf71(&X(fy|dn# z$Q`C#Qd2SPLs4Vf)!$wEoXYo^%4*U&*NwbaU?)3XGaA`B&-YaE2B)#vuB*dNb?Z`E zG)*rC=as9lqI{Re$U_Oi;@zB8$AY1otEF>G4?LT3j@j+$5O%_HqUe~1CHq!Q!*j*K z5T#93PVec(?&D=n$)3XQp5~cdt&QbCSjfeg+gSnWHfQP?0}dlS*FBzpbg3dE*w#Z} zGMu+{clf@pXii*VOxdin^6Pb#s?A|i!521ZfkN|1`=o1MQrYeX^d)sg+mXe$6U(W^ z=hP#&Rxp0C8yjb7ye##huKRA9hleV+rVhGx9y)one`MjNS2j6yijsyafmBQGTVu}g zPn`FTt#=r*DX!A^KADsMAoPx;<6zyYd#?7*ji+BZZ}kc29LU^()_&}mpBI#cf@}9=Mj`_#kgVb0Jr-CjndUzFhy}bmjbOT{15T9bRL}-?*TP33^8D z#21cmd+2dPS8^@18gDH2FAWfMp6Hfy9_J1eMhUi9mNwAp>pa%^D1R>U+4ZUSqndsK zsp+2|e8OXBbf8> zo|PRv{F#L%_qX^Y=Tw(20hfLdTjt|)_o>UJ%g25ixbZT(e#5duKYm+$4<4=>GkJ$P zcVcG?lhnlg+&}wP?`rK2{W|Lk)TE*HgxlA8vF^NkPezG79PVF%5_u&%FQ@JJ!M5Kt zBRywU9PN`P1*arDRnQ+-*1PCz94q_T)AOak_LgKL?{Lw}?8KzTE=%Fbwes=7jUKI| bA-OXseBof4-u02E^`9aYM<5l#q`bcYIrN>- literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_process_27.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_process_27.png new file mode 100644 index 0000000000000000000000000000000000000000..0e7d812efd0c1ed60ee00386f1541c44c0f382d6 GIT binary patch literal 1771 zcmbVNc~BE~6po5=R7Wh<160;%EK!o(4GEZ)7;^yu0yG3g6vvR=K*nq~Zk7;3MaBE5 zVk;^jmRhLR6B$sHDtIDNL{t>T3Lf>Sw~~4gwHp=NKN$b$&g}lK?|a{S@Auy9^0=7r zeqO#_34Yd#JP`=BA+!M;qqKkxH<~PnO~ia}7oq2_ZIB7PhfuRb z%nwc_s^S0{L1KV_3vqN%Fbo9qxiB9R@`Zr_4}u{O=7CTM2Zj(q2m-;t$A?L)k*FR~ z%fmiu(JK)%jiSs52xeqta5I9q1eprLLZJ|Zcp#6*p%EO*922FraZHv`T^8h+MMoOU zlz}h-E{oa}BApU3X-_|dfSXmSPlipFkBOpF2HLb{5avQ4j=SP|kG4>1>|Zy!MO!p; z%owP~EJQk~qwhmMs*6nL?(;$}AngqjOB(1)(HiB1E*-~Alu|BY(kEQhfFgWIA(hG% zQofAOSMXq1DwBrDr9r_8nLJ3shXq|Wy5q_eiZCfGkP8%iJ`5{(5?OFam{7(aJH>V8zfdlE8uY`9%!f=#LKz3*kY*JU;Dv_i=yVqW>pnAngq3DvtjYOV<`% zfv)MN(x(@nng=t{9YfNsVXT=%w`DIsrCg%1U3rkVhiHxSt}QHH+qY+^-kYs|y0Ids zbZ8%WQhUpmpN_nB@ANtO%h4Li6fcj0S}Aj={r8zQK+Wi+h;@ZqGjlts$Elm5bFJqR zVy0DRIS*ytsk(IL)wk9e+3AIYQ!*SI9Ckc&p2wqw?k|OD&Yf=J?7_Cem4osc@7Rl$ z++I-YaW68f@lN|1k1B=PqUhISRFot6w-9Nr&y(%=S+?{br)2uBXJ0=V_|@d3t=AkY zh9yU6(CdM5!`E-%F1aQPn3|8a`<*&}lU2k#<<)#@Ky)p0)rxTE&a9f;zJH&Q)(!mQ z0&3*z;1l`y8P3VL<{owLy-xwZoXeu zlvVa-U1-dX*c0b=dPiPc$UX)(0SW*?a-rx741}cailgo+))RjAi zh^U9jH(xg`@qX6C3LfH_6tFpFpmj|=-=J(zm)|cT`ZSbI@wT=)`=(1QH^LgB2X(!* z{V{OZ#E#tUE58YNeN5fJ-oIc?&W{Inwx=HNd3dz=)!Sx$^ivNBFF|~eg*;kZJe^Zn zhCaVCw{eHkQInh!94XKT=m}6`k;sj$fl*~hWct+sTSt`K{kivOF}aSBm%pmsb8Sz@ zmZ-^|fOzoqspk?doJij`I}|RwKkmq)Q)gDC)R$f=xV<^xQFthujmJc`jIX-&{h`CF zGY?%`dj4LqkJZ1~rx{}vdzE{32HxwxbfJ6Bo|ZdLZBAeRWz9E>dfXd(F;t@5ZM#Z`_3BFEx&FKfs=FE4x&TyUlkR;NvB$kBr>S4roQ| z%;T?4x+^~FC}>LSh_aaLn|9d~3WA)~ehfx6>38x(!;O*Ai?#TlffUe YV_)anJ*st=>s-Gdr6NYYTRJoQAGNHsQUCw| literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_process_28.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_process_28.png new file mode 100644 index 0000000000000000000000000000000000000000..42b02bbdac45c122d6575cb89e8ac8ed00f11b87 GIT binary patch literal 1782 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_process_30.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_process_30.png new file mode 100644 index 0000000000000000000000000000000000000000..efedad3824c58c7550e1bf13977eb13e00218429 GIT binary patch literal 1816 zcmbVNc~BE~6b`2m1*K|HE4oHJ2qe3kgB%i$WD`J)(hvz%rW%tC36g9~RuT}4f`VeL zg(?mnfQq7)dLSx?ieME1QABAyNARcvh)6w(6|ox-+dmxt=+5l^uJ3!_d++z&?1qSW zA+9bHT}UL7Ygi~EBSxz2B|8(}3+L+=5yJ#r9F0d}8r-5Zp`>6nwiE@z^vYONhAP#G z%j-~o63IcMlSkvx(z$#Url%`y7`jz&B-kX9f1uTYD!=L;BVy<2J|Sd1g!dagPCs?PzLPsiMeeXqyPgD ze3^hU=v1^c0uW&)6kyXKnhNrR0Y4TUW$VbU>EEC};>JP=}l3ow0 zvpms=f-=;MtuU#G`_N1qA``j$ypRn@c*CD>(h--Uj7Kol3O#DT!w><5IH9X`YCa1R z3x$YS$P%$wVg?KgMM4fDWcrCk2s4-kvxjVaiYsD59F~yBWs6xX7#1_Q5*SAO{5Xh& z%VshWWQZGPFyl&t3LVnb5xO6^oX>LkA`_~_F_Rp_;)g0ALW|*;S&JC~Q6!rV0}7o% zjakgL>lus|K~1^@R4p-KdSD>GeBCGXxe^J70r@dlgzuk@dyuRCKRE*lXFywV{HIuk zwulO}O+S`CvG~|LsDbDh6VV#27qvM=$AyL=!E)>Er@3b`?*xrr{Z2vVM77HjR9jsP za_X)TqQebY_1^a0-FZNrgX7_mh1{ZW4-fiXaiL6gWnZ|*#bO?r+QK^y@pBrV#woHr z-5AhJWq2nR8>@+Zvc2f~!JbKlE!G*$Z7Deo=&iq2H3b|P*3r6(K9c2dukBqF`x4G) zJDeEn!4igsyohn@YGaFTI#zel;)ajkQhGM6+nIdYUfSvWIBmX*ueOtMw;5ho_GOdL zrg1MGt5Y?pRTX5Ud_&q#Pp;B3f$jbRU22$9?jH6@vZjLSUei!BlbcacUmq=Zny~kF zy)#?5)dAacyqLN<-O($*>$F#)|26Q}IgUq5vRt(Rvt3MzNC=)ZKYbJFH>T6B(fN%H zkIrTv9Wy3kerQv9@fDJHP5t2;!+v%a7r4U_&DfQN#p z#dY%buu3NBk*nl{&w>S@UC9rgmw#WA;I%Qmd82>V^S3LDd&T8W=PLR3PTK@cdah^t zMtSMY9&570Hp|*TlaC>8WL){e`g4J&Dj41EwG&kRZN}cYy$=gCq1#B(OgBs48e`S{ zj3teVW{ZVnU70TEUpOZtclfN7S>Gim_dQqt8RgUYDrs@X`8FPKWc}0Zh+0j@YtH%&@Gg=dVJ8ui%AkACWv|ysawDPsJ>=%n9koZD#^`eHy60R!#hp>RU+T9*V(?{^r@B;^Rv#<2 zZ$8P+Tl)3sFZ!-9{mb<0^c8qpyw96wS!BD1OOBSUy&9GC$NTrp7T*-d@gzyRd)9^A Rygb{#Doi{NIV@a~`VSjE!bSi9 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_progress_bar.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_progress_bar.9.png new file mode 100755 index 0000000000000000000000000000000000000000..191e33301e3305d98e04de4ce81ac1301ff83bb1 GIT binary patch literal 968 zcmaJ=zi-n(7w=o(L%-h1EszWeTNWAEwm(!(W5l9ubcR#VIi zV%%B0DgO4mM=N4_!0k5QXFZ;}F_kKWbt$L^?jdbbmz=!#O3RWoFZ-=FZ#&Nnj|GaG zW0Wk21Y45I+gap#1Ij^{9{Qmv|2Y371D}}kf#x75s?xr{dm7XI)4i5=I`DKNZ$AO$ z%n$+rl@W%uXR)%N_|vo}{@M u7b;(FbS^r*&MLTQ@VT}7ujalV*UqGQ38!f8{Nu_Xe_M5X&-$>_dHEYD(F literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_progress_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_progress_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..80d12bff7a75235f824ba2c6dde0b9c575a76205 GIT binary patch literal 978 zcmaJ=zi-n(7~w!P5DD=)L#7@4N3_*K3a#=I_pP9Jf&2 z)EjKR%Ery>bL?L}y?2LAX>gNiU^E9o<$4nUA3WC#N`fXK`$-k+T|!CNB|a!^ z%K`!|$FoU49N`T^t$HCfJquTLjb{pimp-;%ZTsq~ZpW zP{P%Tb>L!;CS3cHo14mwTfy~NWE}_2b8J@v;(}4isx#dSnyNSE+S9#AQ@N0tf$_!u zbz;TyXcwXCwex#8T%Wytd@=<28z=A1&TgHi zQt9;Y)wK_UL3)Q<`FwspzqHeNG`j^}+`p1~aQqZ~Zx!puGv9u2GjrUpw~Oy*=DLgV NE31}k`q{?L%Rh&^ED!(y literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_slider_icon_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_slider_icon_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..d64969fdaf871b72f7f543dc31f85c5332cfe93d GIT binary patch literal 3168 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_slider_icon_bg_effect_01.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_slider_icon_bg_effect_01.9.png new file mode 100755 index 0000000000000000000000000000000000000000..d0fb0dd61b3550d2af703cc5c28cecf938a3ac3e GIT binary patch literal 4063 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 RKXCv6002ovPDHLkV1iE0xWfPd literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_option_panel_contextual_popup_arrow.png b/res/common/usr/share/osp/bitmaps/480x800/00_option_panel_contextual_popup_arrow.png new file mode 100755 index 0000000000000000000000000000000000000000..5367c6b41d873d8437dbb8ec29ed1cb205ac8143 GIT binary patch literal 1056 zcmaJ=TSyd97#>}dkW5QZj2@0-w}*Ca?r1wXio3Jsf-B3qppT9-M|aSfGtC^^Q3FlF zG^8}5jDn=c9wK@QgDzB(&}$D$FG)o7qV;Up8FjUXwt+L}!uNgu_y6ZV)5(qtr6tEo zD2ghLw<#$ymy=O>u$cUpA0NL=rfMAP#+|4SXH^GMEjsFjAa1JtFa=e8_~J5bq^JOG zq`PrP{p<6gd!x3>Vb6 zdLGn=7(T>>L*cVP;CPPZ1(s_F@|+|#NE{D#Kbk~y^gb!2wC=_tJDJX4Y)dSg&1RWw z9fO>HmJf%+EGMvn5G078J8WUq3tDb%PC0ukPDd?ghM-jHZZ^w$tu2v+ybKJA4riFX*!!vgm=09wV zHC2voEEaXnD$%F++b3$C2d3Jh8`p#*ljSp~B9qAnM~&|Xt{2Wd%A7b~!*5nmYrnsq zh95t-rEe(pJ#u)ZdW8yrmu2q{zsnS>O9gC2LE#~4@zc_en`__h_-{5I>rkFVdM5q= DwaHW| literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_option_panel_handle_bg.png b/res/common/usr/share/osp/bitmaps/480x800/00_option_panel_handle_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..6dc00209ffae7dae186f3069efee6cdd286371e8 GIT binary patch literal 3247 zcmb7`XFL^r8^`}5jxAdvdz|c<%{lhW>KMs(NM_244zl7V*>pr@9!^Fb9V2^WhRkDR zhZ}bek@>ivSI^t$#qan1T<@;y_j_|C-Z9mqrMgZ90H8I{*S5H1;iXI=l!f1sa-*F$#zLT1pGNGrn%*AM4 zP)$*+@V-rnd6)2_?_@Fjo%cl3;o9K&r%CnoN+P;$n4%Rzlcg_fE{~!qhjCx~5!2Jz zy|^Nw8AT=F4;UbIZoH4q_({M~q^jyIzE+AafFxv$8Uk8P@>`{D#9z>F!gBACpq`Vo z2BqCLf}ogzW>^ZW1Ze7#pwKx&mY|RfIQ6@_EQ34Zz)ASo+898gk8;CFfPDrp3rS%b z;9+u4&<36=pmO-`3msr11(-dII+ehbIFK?xc<6)bdeAz=KwS$UG(gHcAyyQSg#)Kv ze*O^fJQpzQ?jclv-NG`gLobuctyRSfDCtDmL&O6p5C{owks$-NTg(d1SDf=SCE7!C zIb@>b=zkCgE_+F1xxAKm7BWPK9U4+d!O=O2Z?=$M@VU4wpRW#M{51hs42m2%7n7{J zj#42<`JBHM+#&P4PhI%72`@p_&@r~hEl+Rse*HZOP>!~kJxyJZ94P5Xx zQ08TG#()&Op&&qc7`zGq;J&tigjHXiMh^r4?ZPN%wHD`o8@pI5 z`Hi-#vu)I;P72Rq0-fzJ1{jqa>PDcGXk|1^ByO;p3+g2KU6V_$)!Z{K-JedP-TE_~ znm_%qGo+wRq$!G$Osf~du^ml8Do@AE2RQiFpS5UTT9=@*v529zl`UGfZVkiN<~W2=jQFgeCcIIAB7sO{pn

dj+QJK#0l&Vf3Yc;~Iq>q+bbkX42E*6q<(cJ+9LyW;EUNg((P2GT(27^_Y{QH; m0jUJ@eaQ|!&Ni$Z1`M71eWp);#Fz~#IXqqcT-G@yGywpaO_r4a literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_slider_popup_bg.png b/res/common/usr/share/osp/bitmaps/480x800/00_slider_popup_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..6b43d183924a155f67e8e70f1869f22dc18c20ed GIT binary patch literal 3155 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 D^lHi4 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_slider_popup_bottom_bg_ef.png b/res/common/usr/share/osp/bitmaps/480x800/00_slider_popup_bottom_bg_ef.png new file mode 100644 index 0000000000000000000000000000000000000000..5074a980a9a1b367d4fcd5c6c8f1cedf8eca628b GIT binary patch literal 504 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_softkey_left_bg_ef.png b/res/common/usr/share/osp/bitmaps/480x800/00_softkey_left_bg_ef.png new file mode 100644 index 0000000000000000000000000000000000000000..047f5c797d033cbb91a6dc1c3549a77573c568ca GIT binary patch literal 3143 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 Za literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_softkey_left_text_bg_ef.png b/res/common/usr/share/osp/bitmaps/480x800/00_softkey_left_text_bg_ef.png new file mode 100644 index 0000000000000000000000000000000000000000..192c8c21ade942ff2ee4faad17e9276d07dc1511 GIT binary patch literal 3154 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 dQ2}sz3ITC=mtM!gjDSr z1<%~X^wgl##FWaylc_cg49rTIArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XP}#GU}mUbW};_k zVqj@vsiRh+i#(Mch>H3D2mX`VkM*2oZxQ#zd*q`*i_F@Av`lL zCBM8Ftlrnx$}_LHBrz{J)zigR321^|W@d_&nTe~bi>aB3sgs$Bp`ojxqob*Tv!Sz# zi>b4brKPD8Os`9Ra%paAUI|QZ3PP_bPQ9R{kXrz>*(J3ovn(~mttdZN0qkX~Ox$iU z!f757L*#bH6grAxROzlO$WWDI$&m;y0#@U`O zjv*Dd-rPOt#S|#fme@a6$xSV}j591@w}RuX(*NQQWVZ+^@hX|FmYlnd^|{~dto~bPHVEf(R=w#Wot`6cSFy5jmNQWwId*Nd!Tw7n~Fwd3A{twHiuH|jh57Bs^V zpH(9gdck6aKnsLlAP_Q4&hoqOq@+WM4*9cBUeu30bonA?sMO zC4?_aqb&2e_kPPC=RD`U?>WEooadkSO}uJl%tU{Y9ss~(YGPn}hDm2;MN56=$)~B^ zXF%s~;&2}Th6{fg1;{Vt0f65677TXvs<&UD-+gaCe*se%Ou+x1pVzHBo&W^TVC+zE zyLB#Y()>QuJOQ0)?q|zMD_{#vMsuW#NeR-ink5L9Omo__vl$vv@%0ubP^PA$Q#fs; z8I$OzXjTNDr$)a>Na{aY413`-(Mg zbagMT$m&JXi}(Xp+WMP<_fLc=z+r@z)@7kKnh$^?c#MG-v{@Fk$zO^mvur@~oG8#S z6m5a&SIlYA96&EL6SN! z*Ir@aU=WiBIE;1?T0bshS=Xe_l*+5q!i%UIMmo~U1kfN5viuSRQ|`+gs&41p^7Ujp zLh^VOBb8ac>f~ae(4z8w06dfhsTw0JmqSRSX0k3cCP=uw+RNU~O{An)EiVSR9 zA_1`5vel*0Wc_zlzOetx8Keq z-9~+>{rqe@!?CMs3{<461Ih}ezlpwd&sDM}3Mvsd^co`ND)(6rqTFWV9hc$HEZbrK zj#=BE<+mGcQM*KQBpsE0FYN_4!I=aK_avlnDlKU53ZN8=)G;>h6oLuhmdC zB_4PTzX_sZk2GwfQ>6-m3b^s>n;d!CD$L)Cy=VK? z#pAB15RWvG7M@^FyCBCJmH_Kg6Jbw;DT?EtoHKp%5s*P*o~INMh?@f8=8ALOeKMRS>&m)1Vd8oTJt?M=G%>RaG@wz({RtDH}W z(Sdd2Z#my6_k$Rj;y9yw5>OJn1w1r7DBd8RSGg8tykp6{J#cw7h0WZxJeE8^d!!Uj z>JevpKYf;2mRJ^_lpMUWs;p|hiot%*egK|U>1-E{HL_Q-Tdt)0oLy~Sg}J(E$7hGC z)U1fFLRI*|bzep}oFq~^bXs&;!(Q4Hzj0Y^?iOJ1;H?jq7W84Nj(ZTP(k1q0X!_AZ zsixc$NK>+QRb`1fOvy|MQE$7K>7`4voEvah7-&VeCQ+WV7m+m2u_L)8$ycUqfmiT! z@~O(s$wpS2RNGV=Z?>pnx5_bPErv}FN0H3>J!axg;>M^n!gsTG}Qs%&l7DLrub>*YRGj+#QnGTI5e(l%;ysdw{^om?q{#dp^(F@ z!&6GjxC;Z4UAHiH1!Kl2ZWR80^j<=8qIuMSY>tj>0bloAZ_A2V;6cER#n90MOhJ7? z$5sXL)wb&Pt?l^PXM@VmB#RuB?tkj+g?+JE9nocYmL>1AP!nMdvyMbHtO?6`$fYA{ zCto*~233*VcDQwZ>fC#_th218Hm^AE;4-Mz*4W!PVBP6gPqIn^jW1UxKc!SF9eCE(uZ_FI#5D#BdQ|_Q!pnfeyd#* zDa+8O-_x5_LPS0)l}fMTW5g?;G+QuP%oS)9apgZ0@Kw~-XiA+~{z=Vw2N`-CwCo%Fy2PXuO&!V;;ng~n*sq>lU37V9 zYp}kb_(ZL6=NWm6y@P%6DXuim93cZier>6_tzM@U5JIG1<~)Bn?izKC*1IH}l<&B8 z^%f!r8_^;bYUvZ{+}%Xo6US%S>1)dIqWs+wf=QprpS>wyDH~v4)a~6>6y1o3)kLm9sD#T z%H<465SyZLF#L;Ft#{3y<$Z)9OSj{5M*dGreD2Uu`X#Q@# zQGs3lk)ylgd+R}+k%^7@&|_obA1sB+S`Hy*d+@$nGwV@f8K~Xi6igN-JVN%@tSj+3 zE^N(%uyC8jZ|6O0;NqwuIeAU9S(D(j`z~;|j<|XO@eYyyO2fr>BXC3OG-J%Vr>U?h zAB%VL!EcAQG=zDP*7=Im2y^=_AwRgt6XQkd+H);?p?;)~q=N;nxrlq>Cxn5f=^*j# z+Ggu!mwml0{b|@-{J5^;>Fm_b?Bm;QLB)F`v&JOq*y!QY^n)}O*!i@)w1GILxXq#~ zI_m06y7x}jkIP}hH;2WFxKE#-4q&;tzHrh6MUlF@I zy7@o!1uH2y?_WFGY7d$Xg6zClV6k3#B=A^*?EUM_f!(L_qYU1R3^EmE?%uJ7k__?e zzbW8hVrvONs3-vFXaIhZ&u|@p2l4=HxB{S&3jnv@Q-0pA% zaf=8^tEf+vIp27lFolIw<;YD4N5c>1&`JWqx>(48OH^=Dq-QkII9h{}2 zJzpZg5fgQlm7X@%vh6fH?gIz63{iY%* zvAfQY!Or0y2OB#-NNx`uFxA|9{yT|v+;n!(>HJv9lIAmq$~4!hP}ntaNQ`N1=8ry` z0M(cHd))t{m~;OxrT?M&chlc>|Fom82G4SzDMuz#f_-{6 UGp5Huh_e)!8d@1(p{`N?2AHLmlK=n! literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_softkey_right_text_bg_ef.png b/res/common/usr/share/osp/bitmaps/480x800/00_softkey_right_text_bg_ef.png new file mode 100644 index 0000000000000000000000000000000000000000..30a94019d3d8916745a3dc8792102bf135074cf8 GIT binary patch literal 3348 zcmV+v4eRoWP)r002%11^@s6|Nf4~00009a7bBm000XU z000XU0RWnu7ytkYPiaF#P*7-ZbZ>KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0006%Nkl41hL_&9Dn9KJPB*c}j6t@bl+(o(zS(d#UV=}Gv zL@7n(ei-R{GP_={bEQ;%yG-EOTALQ*P%@#qx^r9i{8KY*y| zj~=cbgkC*_1auTc+EI9C7NN^5-2_}ch_s{h=qecQD7Q2@?ka315EcNETJct;OE3L>bZ@LdmrM-LDb6qZ@AqabQWp(=Rs e7XSeN{{sMy_l%w#`efb!00002)Vu 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_softkey_right_text_bg_p_ef.png b/res/common/usr/share/osp/bitmaps/480x800/00_softkey_right_text_bg_p_ef.png new file mode 100755 index 0000000000000000000000000000000000000000..84ea5b9e939c5b70ade6efee6f8074767a9bdc9d GIT binary patch literal 1446 zcmaJ>e`p(396z^WXSL4C{&1bbd8^aGa(6GeTyjUVHpyMvY)u=|xKx<5m%G>YXmjs+ zcWu%tvn@kt{Q(hmtGVzfK=n9|DKbnZlc6&n8d=>85Cnl?-HhAq!VxZe$Z(Xb%doc>86;?{ zmTo#aGRQoml0pMcfWk^wETql2-reKaC33@FEfy{tlT}Ox&@5vWV)FiqsAzP3L^@rH zww*YDRc4EkcOdQ&1z*2D+ySA@MwSJ;};Hn2Ps#v`ccdI? zB%}_cq2WZNV%s#N>Y8ZwAP3n!$P_t$mj`fO&Bc3w;sO8{RPeY}mm+Y$@8vk2=hPzW zS~e_z)-aRcVPy~w%H9yq0U!e*EJ+P+wjs!Zkedqzi`a-^JBp#gyplXtzl)XD#fo7I zDh{#|2=x`WSga_Y47Yh{KqhrVLm4~Yf6R^jOVH8>q1IrbG+AhcsNW+$FY_UH$is7j zSC9b!A)faH{XT5NAC|p7iCV?tnw6?JFo1>oaWv z#b6~&e(SB-ip43szw@7^gM|mBqX`Y%Nedsm2MH=k5cg#xQZSLdzPJ$B`*G)%m%pD) zl~^w48wZojWq+gb6`57AtX`@H$~naYmQ`l@F( z$kUs)Ed9p6^l$l|owIXwHx`aJUOl?`NNZ*J`)@7`_T9X5eCqUplLrqiU7VVGH?{e^ zyh!i+WZ(2ijuKw`tbdUo-1@@A2Um`amrb4tKTz{@zwqkwHIu)zzY)7BHr+UIy5cG1 zYaIV^$3I77Q#+<#d{XZ?Hm`m&t}X44|NYk9ubVoL{W_kTy>d;Y7L-)k>cOro>H?`=cA>VrArP_axHHgoL~v5}y^ W>v((SRQ(wKaS{=^MS3UHIrbmm8tHHV literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_splite_handler_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_splite_handler_bg.9.png new file mode 100644 index 0000000000000000000000000000000000000000..3f45f917cd796c542cdae63b33facd78c3b3bb1f GIT binary patch literal 2825 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_splite_handler_h.png b/res/common/usr/share/osp/bitmaps/480x800/00_splite_handler_h.png new file mode 100644 index 0000000000000000000000000000000000000000..a2d4c6270e2c1da9962384d97df9c087eeb2c0d6 GIT binary patch literal 2817 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_tab_icon_more_01.png b/res/common/usr/share/osp/bitmaps/480x800/00_tab_icon_more_01.png new file mode 100755 index 0000000000000000000000000000000000000000..ceefaab584d3326a4852f88c4d1fad07a89a0a06 GIT binary patch literal 1146 zcmaJ=TWHfz7>=%r&N+Q3sGEbB!KSe0Qrpgi#jR`Ft-5xjt+*#$nw)K6OHNEq*KRL@ z_lfx64IdQ23oCd*AAAxK=@8Vtj13eK5%EP3FE4^PoF}ubK3D_Ex$u48|NWOt_Qku_ zR@YS%1hF>SEhX^Ud0U;!N?(8hV?RDuLmPM_PBxMoX4;mO9~RO6-zUb1`X0tl+!SSL<&3ooq}$b zWevMnCR{KkCz}jMvrbASU@Z23sIHgMHcEg$e*Y+cs~Otv3-}_f zt-%1tg*m=6(77WL^z-2$$3;515?6vsMh6Bean&-{&sO9*qoA8OvIHz`45$$c>f}<& zf>zm!R8g(0-+TBJO`e0s)r_lNt9 zTe_Qh++7&>-g_nge%ZT+9W7lAT~(nPrm5Cj^)-?|y}M&3bdGNOmUu3ookjW)VXUL! z!enUZMTao6?!@BT*~{$u+PM|)*16E4D_uV!^wgcWve101{>c7i_b74mlhxDBlW6|n z^-IrscOT!fVa@gQ%%xr7g*t+r4jiUwcHsr2pPR_}3*U1$LcI(uuWI>*GV_aW+ o&*P~>2hhiKF_C;Ba{( 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_tab_move_bg_ef.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_tab_move_bg_ef.9.png new file mode 100755 index 0000000000000000000000000000000000000000..35249f772c208b896923831dcdde09e87def92c5 GIT binary patch literal 3186 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_thumbs_bg_focus.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_thumbs_bg_focus.9.png new file mode 100755 index 0000000000000000000000000000000000000000..c73b844c2f176ecc5788b2f168105d45d8eddda0 GIT binary patch literal 2874 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_thumbs_line_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_thumbs_line_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..fc705240556ee81ea9d50d188aa0d3b99782c408 GIT binary patch literal 2871 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 V5~G literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_thumbs_loading_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_thumbs_loading_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..cffac378e096cfdce780bd445a4540c227a34258 GIT binary patch literal 2861 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 LNkvXXu0mjfL(xx4 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_tick_box_normal.png b/res/common/usr/share/osp/bitmaps/480x800/00_tick_box_normal.png new file mode 100755 index 0000000000000000000000000000000000000000..cc034329a20bf6f0e43b4b38a08a7e8fdc53222e GIT binary patch literal 2946 zcmV-|3w`v7P)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z00023NklWE*ff_MI_Q+7#!&5}mY(i<$r3M8FO#Z7W-Y22g z+%u&Vt&~lR1rQ)WfYt`>6>lDr!X)#)C7r*5f^+VeL6cGnJwTGA7~^Xs#(V$l_2s^? z)?OnpIp^(fmjWO_fB*pk1PBlyK!5-N0t5&UAV7cs0RnWlG_?;cEx`1k+J0tqOvP!; sttv^wtq&kTfB*p+m=6E|0RR630A%nTgP#dPW&i*H07*qoM6N<$f>EPxoB#j- literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_time_picker_btn.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_time_picker_btn.9.png new file mode 100755 index 0000000000000000000000000000000000000000..c1b0ae92c75a411f9e55abd9cf3583f9bf24a7f3 GIT binary patch literal 3214 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 A+5i9m literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_time_picker_btn_effect.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_time_picker_btn_effect.9.png new file mode 100755 index 0000000000000000000000000000000000000000..841020e0ddc4cd88df23f29ab657983d2d86382b GIT binary patch literal 3758 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 M07*qoM6N<$g5Ez+6#xJL literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_time_picker_keypad_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_time_picker_keypad_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..5656badae38becfc168567fd0ea8da18ed0b990e GIT binary patch literal 2882 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 g=Al2z*)F;U0C*EWr`1u>b%7 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_time_picker_keypad_button_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_time_picker_keypad_button_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..68da61745273b79c7edbc4750f87b4dfb4fd7508 GIT binary patch literal 1039 zcmaJ=O=#0#7!D{yr-SK4@jqtnX7khahs1VcZCY0`vv$Q6#IY>-x`r+JV)Cs`cM#ny zY{CxCsaHV{V~8gYa~`IM2f@ow5EVs-M?n}nIb?q6+RcMCA^CoIp67kP_kF&}WY3wV z#zTz+K{O@0#S|X*x!;Zk{GXaU+JuLLD3(RNFo%k=1&A&c4gfNt%Yz^VWVLkVH3$*J zHcCrpQC2!9C{U+m7ehO`iP;1Z>U2z583KqL0E3zlrhYzKq)1H-QyIU+N@f(~weC?1 z^p5tVmC+%ESE2&WScda5Y|z88f0&z#twDz4d7fdtjMwYI2#;MdknDI2yS1hu0$Z^(6KT*OT}62Sj-W7wGu=3XZf?pN zcC}2nV2mT13`eu>k!nCm`ae|HH_tSb^3wRfzf`tQhCL_>FK} zjEe;Q!3Z0VMdN(L8~5`yt_YP89T=#_Rkyh9b-At;bQ4Dwfu$9I8n>WMR*o!a^>bnC z>Q%XF{am=ZTm~n@xQ+d*(X}n?9(THFTfEpbJ}|J`Eo|#qeeM#z65|Q6EA4#zF|)Mu zIk{W3m-{|HTw54lUno!cFWwrvzyH^_a?6eHua2KDH_v7sIjg6iMlUSA2$bdvyNqG= zE^%^h=JuzF%Y740Tk=as>$T>0zu%NoPqK&SuP+iS?_Xw^)s`dc4WSPOA_oF(;+??T no7#hW+cPJouTB^CtnBS4zOIcgA3J*>>0Z%9tVett=^y(8kvvmx literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_time_picker_keypad_button_bg_ef.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_time_picker_keypad_button_bg_ef.9.png new file mode 100755 index 0000000000000000000000000000000000000000..d94c74ed48bb582f2d7c090f571d060ed56257c3 GIT binary patch literal 3018 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 JeJE|e{0rWKEh7K` literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_timepicker_tail.png b/res/common/usr/share/osp/bitmaps/480x800/00_timepicker_tail.png new file mode 100644 index 0000000000000000000000000000000000000000..44fe43a3b006ccbb305f5b0abc71ff75f4e4fb22 GIT binary patch literal 2940 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_title_btn_bg_press.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_title_btn_bg_press.9.png new file mode 100755 index 0000000000000000000000000000000000000000..940d14c7a748519e2866fb5ce3238d76c3015db2 GIT binary patch literal 2895 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_title_button_bg_press.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_title_button_bg_press.9.png new file mode 100755 index 0000000000000000000000000000000000000000..089c76094444083c7b377e539b3a4f9a4d881621 GIT binary patch literal 2904 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 I%jW3SZ`>yz2mk;8 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..41009daad33aa9428f4ea18e12335aa1cb507ba8 GIT binary patch literal 978 zcmaJ=O=}ZD7+$GJskBNFL_wHtFA8R7Ce3cTOV&2YCMMvPk_4KQbhA52)^=yMyHm3* zc=2SR{tNXa;@yLSJ=CLDPyPY%4+wQOO;Qi03$ydV^E~hKzVpt}=Emdsxw~_cB+b`r zRzu9U(lL8Y{9hm4n-|j^UTO0t>+*pU5vl004gvMR>5&F;yo0@Oq##K%vfpa+w*AC# zS)e#6MoEHDuqCOmmV}PGLpbP=o=;8r_ovS?@I6!BQf*|1WzzR+hY@KWZnWIP9as0{ zwMU?k7(yT*+yP0jOJgH3<)N-2*6A^n!4SfCO!?eY+uj6a77?H-DB~gx11+cE9MW_8 zLy$!nL7asspTWpb^9I6T^vNPx}v%TvSW>QVHu?4pnn`OB-`7 z=I#fC@-f%D;FhLx(^d#V5!oV<|D1T$hy`Gnvf)qnvN~07#Pz0o(Wi2uFay(z{pX^` zN1}Vu<)m%JX43eCif)fYTkpO2btaxfwQdz#$&b#Tv$M6Cr7x$av(1xQ&9ts8&p6E^ z>3IG0WSyXAKVPAn556xvg)0m6_F{AO_}$kf3a-C@^LBCj>MWAx$c_8F@KH-&S-rAh JeJE|e{0rWKEh7K` literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_btn_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_btn_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..cf7a6beb9ab3a14e24869e0475dba68ab04276db GIT binary patch literal 1077 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 E00j%hi~s-t literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_button.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_button.9.png new file mode 100644 index 0000000000000000000000000000000000000000..75844597462e85964fa66d972420d8e0d9cd7db9 GIT binary patch literal 5680 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_button_center_press_ef.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_button_center_press_ef.9.png new file mode 100644 index 0000000000000000000000000000000000000000..f59c8d835004b77a4b9d40cf253433575737fe65 GIT binary patch literal 3003 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_button_ef.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_button_ef.9.png new file mode 100644 index 0000000000000000000000000000000000000000..198294e42d5d73e0e3292266fd07a75c034f258c GIT binary patch literal 3865 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_button_press.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_button_press.9.png new file mode 100644 index 0000000000000000000000000000000000000000..34de8d27736fca9689de35cd37a28a10aa84af53 GIT binary patch literal 5988 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 Q%m4rY07*qoM6N<$f;e3vi~s-t literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_button_right_press_ef.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_button_right_press_ef.9.png new file mode 100644 index 0000000000000000000000000000000000000000..5ea7c49bf598297d74e7f432b69fc2feb6e65014 GIT binary patch literal 5913 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_line.png b/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_line.png new file mode 100755 index 0000000000000000000000000000000000000000..72edeadf610060b3dda24a06c4befb680dcbc243 GIT binary patch literal 936 zcmaJ=zmL-}6b?UBp%b?;07A&hNeBrV+u_-)azV3MU$Qfd zl=>lO3qtiU4Q*#i7#NbV7ii+IPoG8Lxte%VvXB+(Wa1q!BGO&7dd_0%D6V+;7*tc0 z3;2ZDAoWj!SWPu?rK|EdJBA`yLD*Ci&rS8MHqdEAKuJPH2bD1>?@M?eDf`MpAR~+* zmLaMXF;Ytv6=AUcM4l~jM{37tu5g+a9L>>byUu|26bjW30Tf` zFSvLsHyZ^%y;rDX6Ji1r7f0JClTX^#Fl5qC%>gzA> R9z4z7j@f7#@9TqCe*jq}AfNyM literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_line_01.png b/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_line_01.png new file mode 100644 index 0000000000000000000000000000000000000000..241ac95d1c593078a174ee17633cd53a2c9dc890 GIT binary patch literal 946 zcmaJ=O^ee&7>){MS$4sLi0f&{f*{z;q-~l_Xk6N+aSNML+QRl|noQf!O(rH&llCGk zcn~k%{1^U#J*ar{=taSc2p;yf{(v5wbepaRYhW@TJkRq!?>q0jYPX*3Zr|VLIBvIj zq<7eSlZ}I|9Q%Jed3edDJ=*BgE*a9;3Ncr8$N+<;XN_Fz}OsDIZOh}o?r?Fc;xyTe|i3%2d<;>Cz6TGppM7x(LBW6d8=p7C${47 zhmS!eQJH{;sRa`6)Q{9e(2+AcvEFq<& zJOTwIA}AIhlJg=`C0RuxSbaQ;7CJ+3A*Wdt+hamWG$sM4cO^jt zC$8_1I9lROQ*HVYwR{^lb&Y2Vg6leJv06SbN^+wp6^o+SDAdZbT$N;_(Wur?S&}oZ zPVA|NeVTEdYp$`8o3?@%u*fitB9lqHp9vW(KAg``1Nh zN346&<+^RzX5IMMXWbsMwyxc|D6=Q=ps81T$@jtCw{I3Ne*OL#9q-)!kh2$O;yq*U f)60)H>;<=lxUa8sUw)il;Pe$W8!i1^?djPcId&!3 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_press.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_press.9.png new file mode 100755 index 0000000000000000000000000000000000000000..b982efa4d82441650489b446afc72ded9d9589d4 GIT binary patch literal 2920 zcmV-u3zzhXP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0001!NklKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0001;Nkl<-Ar@ z?BawU1!IhkPe?N7jr}1kt8OjFiyT7eLkPVjV*$MPsp#RHdlry$wgn8saNSRtfqDB& ct*_`c0FN0wS5jEs4*&oF07*qoM6N<$f;kLsI{*Lx literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_trans_button_center_press.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_trans_button_center_press.9.png new file mode 100644 index 0000000000000000000000000000000000000000..dfa75c0afd7146998c168abd1509302e83a414d8 GIT binary patch literal 2973 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 T6d8z>00000NkvXXu0mjfaFvA? literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_trans_button_left.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_trans_button_left.9.png new file mode 100644 index 0000000000000000000000000000000000000000..8fb55610a758bdfc0aa87af4627dd3fbc1d89c2f GIT binary patch literal 5864 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_trans_button_left_press.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_trans_button_left_press.9.png new file mode 100644 index 0000000000000000000000000000000000000000..f324dca0e5b2a29057b3061f693c3aacc775d8ad GIT binary patch literal 6144 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 KQL2Yozx^Md?33L9 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_trans_button_right.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_toolbar_trans_button_right.9.png new file mode 100644 index 0000000000000000000000000000000000000000..363f3c2b024318d309d4c52e3ceebd583ee44474 GIT binary patch literal 5992 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_transparent_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_transparent_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..1606d60a28e64412be0d472207cfdc9beab00342 GIT binary patch literal 198 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 IM6N<$g1jPzD*ylh literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_value_progress_bar_effect.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_value_progress_bar_effect.9.png new file mode 100755 index 0000000000000000000000000000000000000000..678ad167d3b97c227b44ff5e9f6031c08741d60a GIT binary patch literal 2982 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_value_progress_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_value_progress_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..b0b605981b2f9add97f8c60eb1b9c7f76f906497 GIT binary patch literal 2956 zcmV;73v={|P)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0002DNklKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0001>NklP)00009a7bBm000XT z000XT0n*)m`~Uz7PiaF#P*7-ZbZ>KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0002KNkllJT04uA&Y?DX~sASVl z;1P?-SHvby002ov JPDHLkV1gExdjtRg literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_winset_Back_btn_press.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_winset_Back_btn_press.9.png new file mode 100755 index 0000000000000000000000000000000000000000..29fa717d85bf99db5a6a79e54f6bbecebd43bb97 GIT binary patch literal 2973 zcmV;O3u5$%P)00009a7bBm000XT z000XT0n*)m`~Uz7PiaF#P*7-ZbZ>KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0002UNklux6!{i3J$Q&W9t&pqy8wei2%4%U#I2$HH zOw5#-h2PCQ&_(bQeLk7KJuE1xS#V(#4B9W?Cs1~}$SOrb8NeCe+5ito6B^V$=pcTlmKnR;%vr7|Tp6!BoZ01u8q4y7%lEyzq6!78GqXg3JhKT3CI_jl}j@B6;r_jWc* z7U)N|U2aPvk;oE%Q7|!5Ew_y|@q9umC?JN8fUB(O3T3Wk)L zq#ezW7l|~NqLnLfg*1S#Mqs+qf}xvWlwgxcUfw2Dsn$U_pn_txdI4p){yGKFY6O%p zjue!lLMTq_pKO3ak^|-HWSyF)p?Gfqyi9yT0ETcSV1g6$7~dqIOzQH9xn-L{0VW~1 zPC)sPltL;4goptGICPMv20fU7hdZ6=4)WZ2>j4(X1Q|>g1LV?}AfLnKgG^xRq7cyx znizht$ag9hu@X??a2(|`7)GO!Ze-IDLo9>Ii2m}pF(&I`KO^>abRuDm$ z+Mq>oEusf3ib@rdhzlr0rXNax(HU7iHg!zIfiX-y<|kwuU}`z@sLH6SoBSu$TcdoHY5^`^L**>hpf%4HDA zFf5JzSEHx52=`c~GqxobGscJXgxd{-t*fW7lDPf zrz-E%o^s@8?ELlf7cijI#7`o=C)t!F2%xL1|5xJ{L) zYX?QuJMO1-)!H47H?tb+GUhh86fYlf?eoj98(CmlNd1YvsGOU~My=w4-j2662mw*= zC!v2jv}HQ7n>pjTndhDbxp&;EkmNO;QS9v-hs}pNZvA**{LD?is{@KQXvv`$>V};g zOO;Kw#~AYdr}FqdnSWfa=G5;+>^9ZWYl%&xk#)D+$X4F3oLE+2>BoPoJcmVlwUawh z?b`z-@y)%?&-0yK*!KBR>3=jN*O^;Ld;Lyo#~y{fh}^Iy{BHQ17B~9N)79^^KeX=R zzMY3&EGS8%rFa*H=WAZy5M5b!crmSt%Ir^92hFXKg|v5Fu^&|%N2RLa6Bh2>%ng7fNXqlB>Li|@6SG17?hACRqelS_awNNs(5r^so}(toWX(BE7u%t z=D7>LNuzyz*}NGZF;gnBWoXa7fV|etp@rt5J8-yaQRlMkl9d&mm+qeypE1jF3xuO? zM{k~QjAC!qH9I!xmSANZ_uao##x!z!_GtcYBh|=qj|t0H2Bek*Mv>E82alY9Y={E0 zC_&||EIaxA8vXl5>-wzjl;L9Q_?*WPWHIRG#0zy9B7etwV8-iW(Dm`fc}u)0{Y88; zQ$EV!Ew%s4DEL*$rfE65)x_Jib6~}A^Qdu;v|`K8{f;loh1D-SI590XU0eGGwa03l zcv+!)R*#+S*!Wds0NrMPEViYn9qcQ(o1NEWpnsv8sM*%cf0I(Y{H34OenowEWZ57U zJrLToW`*@c?(L$7;@8zVn?K+EE}=JLV)dfz;q>9d8`kQtCiJjM-BKMQ+qYeY^KPfw Zf}~fWa5?q8o5J${kcb0C=Ql;~`UgtMoB#j- literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_winset_control_tabbar_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_winset_control_tabbar_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..abccffca93a5f1b9285d528b0c7662182a81dc67 GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^tUzqU!3HF!2nc=vQu>}Qjv*Ddk`o*n{_~tTaQygl zd!ECpo#IobPyf$hs=LK&=d(u6{1-oD!M< D^;9D9 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_winset_control_toolbar_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_winset_control_toolbar_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..a65a4b278f424ad04680f89423c3ac1fd8c66bda GIT binary patch literal 2819 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 CVEuCd literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_option_panel_handle_bg_ef.png b/res/common/usr/share/osp/bitmaps/480x800/00_option_panel_handle_bg_ef.png new file mode 100644 index 0000000000000000000000000000000000000000..35bea63cdc2a39603a433d8bfeb7adeb58672c10 GIT binary patch literal 3401 zcmai$RaDduu*ZK(cXucyu>wo;r(u^)fu&KJMUWDdl6C3)gSgTxf=ZWyEK<@9i-2@V z3kX~Z7bN!bf4wjFoX^bn%$a$ac$lOIrh2qgTvPx6&>HA#Tij~Vt(j7g-TJa9-ql;7 z4A8d=0sv~}{|p4=6>tCmmDyt$?7;&s|6uf5W0Y|M8GX~ z+0^hWr%VdmWE1YH5aEz zrkW$)E zaK=AI6et!zGdvAi3TWzrP?#KHOQ47Za2|1U-2fg)0L~&Wx2FIU<~%n71US6mX9X2y z0DR0IiQ0gd3Q#?6ovZ`cN&zgMM!ibFoCF|cVB@I|d~5qx$=PEyE7@c2c?Zs?9=5I#CW35`pA4Hj;NlaR%)7SrlA|T=Fy} zyTfuhWuoNhf1Hfo?j?iuw%e2IP#j$?4yTZYrE`+l>mVZtxVmoKY>ih1Xac}mFmmEX z9MZsrQXxb6-n_eaNaFQ~y671`#j~DXvk@rTU9dR`_-{5k#jl#@=eIUD=L~zH4lcts zkvE8Lr%s#eCl^T7EBx7yuj@ilG7qElNX~zBkDeNr@QlBvjCEbwPS?9?q9$DNP6_lH zxHj8@SvJg>0@JkfQcq+`1d^by#rp0|65Q8U#V?7~SLK0^-s+%;42klGZp43#L>O#? zJJ<05aNO$O^<9*L808hSHXcGa(zw<4PFNVz$0xTN%(Ms#sCEXXct9+KWcHG zc5#SzlJRtrE_G2~IV;3Mg?hW83{Wa}6wgyO{U)m3T-JUr1Mn4M=tV9J-N~walZS5ahsUUo=w?J?oIw<2P%xKX5fc&%XLwUVQ)juEru<*Ei#WB87-^# zc^1p%#c)RXbbDw`G1j8aJfWOf?pdDFSPYwiQAy3a%qcD}b}#(nx}U)TSS8_yaukcbfF%;zBIKyZd|)a4kLa!#di4#1@prT24oa_MvZt!%+q z@C(+AVX92SOyNv!Fa%yvSz5VLNo{pvH3Cnscw`w_t7|1|xluv+J*χyi+lG_qd zp;Deui75AnYkWZ3T_=&*^%(b*u3(<7@~O=l7wlihmX*-z)rSZ2rY_ zaBI#rZ)=KLWks)L9i+1j%Zo-2{L(wD58f*$B|-oEaxqk%c#oOOw^Rm zY9%XuO1O(#wL?1m$_{f1zdk}08vB>6gthPd<%xt`!>@h+mYwO**pfBS2$3z);5bzK zowWhUq?ZCX`0gXsDA8#{!pXyW|1HAl8si}l4u zx*%NH5lwxyJ%{LabYx59zt?KyvQ6r&+rYgzY%P z_?+wpmU%?1_c6vYe@YL*j%W^wIY~@OGKwCN%vP7o=k8w~Y~M5tJ_~%f7Cw1~$#2N- zJ}6(TJ5)G)e3-EGc2w@ISfQP4(6^pJ*bnoq2@UGEnNmKh)krg#SrnpiM-bu$$*`%J z{n%6zQi*ptVpsp8{`BpJ`i83Fip+|g)2L!+(_qtxS&x6AQ`{=-r69qb5Kfo?%24+} z2;!tDttbbg%k%IT{2gf;%8MR<>gNx%Qj40kShdolYofQhYWTedf4!>V$M59eGH{RS z;vOJ>&U_*|kLDGoCCB)gpYorAv+Hy@uXUm67EWv_Swf|~oX|LoXq|KD-Bn;)j z>Xnk-stbxOaxEJDlAd;>)3z8}gC|BjN|NAO1-~a>SFa9E64o*6)Eg1(Igr7J0b#|s z?$fw3whBomapf#c<3!Vc-u#ai1Gt6q6UuL7Z!{3d8DVh^$H z`Fy0>Bd-3Y&o8A3awn5~$fw~|HL0Bh6&70h6K*d$3ns5ec-VM$j3o^#WmOg4A3GRr z7+!p(Sa9@~aKO~fwDuZX5^rQ9!E3wSUhS<^uNoM(NVUOAdOzNptXlO;G8XJRZB}() zlU<8!7Y;Y^iF(vE9NpCj^4X`hqS}g!++UhKcxYw|v0H6)`5TYnR%cC0u4P$d&t`o& zC%P26#hu_k+>yKV=5s|=Z?pTj=cMQE_KHNI16@{S_I5U%AMO0YXWCWk&j)9JbQU4m zW1@?#F<4mh`wrDFZ60MqxG@zC_y_nY{4ZSLaB{iPW%k@};*dL{?T_5A=|zV&{I&Yf z*F`IkmC3Z{w8y2vWdmNLHmP#=JnPc;VU4M8;K2a#B=I%5ARTtL`TI2Qq#E2JedhkY z9^Js*uQ!;Z5D8iZTC0Bx`qu>mw8J)c@sz9hJG9CR&r>6+*T|>tKIcX7LcF1Q$9cN> zmU)*Bt`03`qv{hgdn@5rdW(1I3*=Po!VFK~Lys4Bqo>e_>_&)sED%&#hsmL{Mq;)<-a0O9ul02KoO7ld2g1%PK#0I=r_0LnQ4!0!LrsZSRGh=L8Ywcw!(zm_|^!CEY+ z-?HG5{ly3~Oq}Fyr*I=*bbU>npG?SePrnBC$q!3Pe&d*Q z1)4Zx@03-d!b68_m=}tSL?5GHXN{B$)&H8^_&qpWUp-QPioe99ds}4fG>aue+wg~> zsz|@4MfY)`c@oDO>zGG%_{(7BxIS0&gXb!`tJIuy37&FXxxYiNtXcYYPA+IPJc)2S zLFk=}w|IPr2F8@I;-^@;vL7#MWp$>r$;sTCvB@-fgkPi7$fHJBQp|wLf&M9!ZQh%Dzi<@8_8M!{w)@dDQ-C zrhjBhz_`OydW^AVdc<`fq3Lr#2qG<#0rf@r=O8f!s2ZP0qId>lil_lf4CT)PbW5!g z;aLz-9*&#?>P!mrCw-|z94+homy*Nn&9>sBM220FqM$U&L6Yxk#0pK$0@{Cp{gx~S zqHG4?q7}|pcY8F?*p`enr9e|=oe&Tcf3UUGf2jp3KfkVC@CJZ=0tPy!+O<&U G=>G)+TQ|!9 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_option_panel_handle_bg_ef_press.png b/res/common/usr/share/osp/bitmaps/480x800/00_option_panel_handle_bg_ef_press.png new file mode 100644 index 0000000000000000000000000000000000000000..638e68d62a938142624e677c270c76be4d2308f9 GIT binary patch literal 3377 zcmb7`S6I^xlg0l5r1##X35fJ65L!a7(xi7GAkulIV~`fa7eu5J1eIPCkRVbFy@w_> z^eP~r1Ps!$e9!L9?%iI@oM+D6oZnnb$^%n98cI$|003wV^tCN+wD_h>$w_Z|c^uEm zjZg&Y+l2rC71MtT1mqX80|2F&4;1>~fp&kd`nj z%UxDA{PGFJ2mya%6kx$Z&SwEhg)?Uei}6#?8zT5i=2^@;8FX|=xCV+5#A#{pmn`Pu z)GsLK$Ts=krNzHTycoJzi+b-n(}v$3y>6OS->JbN8^_4dva^?zf>PiSN!)kng zPv6?6q-GqYP#{20-uQ?=xswTWdyqUw5Ig~d z4$Zi4L=I;LG$Yd>Wq_tG2#(AZwgiev0M}s;_YL5I1mG(2YeTRe_qZhc9#hTWNsV%cw^gn3Djc4Q#yhflti<8beRj0FYAy(&mW7y8uZP z;5r~E7!D-l0nEC`HsIg)>gadGZj#Dt0JjJ!>%=*bO9YYG*hunQ**xMZ;0Y>T@J$I#YcFp6m?S{I4EZ=?hPclV9!t+DDrO#oO6jh(m_ zmulpMtCGU~uHW4`B=L5pD*gwb>eWD}*#s2tF4*7#|C5bQ$*Y$6`K`^(Il~@^gWHfz z%r&gb1#NTnlCL)a<M}x8^xSG->n`kC>~}cTFC7w7GXuW+1I( zm-QD~wLrRaH}axR(Y81W60HGpCO7^C1jzk`tza5CTVCQBf2TePW2z9}AcEOkz$imO zU&i8v6`!>}&#_uCk#e%5?$->}0YLWoWm21-%$v9dbG7f(P0*GKCC&uhcU0q#LS^#P zS&IwCgFkbsy;LmO8L#%HTS!-j_DiFGu#?I4Jdu{{>xR_d7pKVd7_Jwnp|0-Z{PeJf zxHaX}W2`=mgfUJBO`%8<2H|t#)zY^$wl$s8ui)brl4n?;P@*7CFz*r($gD8>Ec}(> zZx6e>tW2`4zPR8FV>*)*eG~%Pqa?(b0+khMc|~MU|G{dKaZ-2E-$HO#ys|)EpHnb% zaN&_}1DWz0alU&4iJQpH?oGK(u1)@92TG*7X3&Q-%XLwUp~r?CTl8DB1*EDC` zW^#B}??=uL;*&6Hnk1I^egsUEqkx@^9mWyH{xR3MjAJU5qu)weNoGHHCyy>Kz}i*} zB^J$+F+`bVm?fOWB_?H6SyfiGTt#J#vmUleuXMJIsnfNVv)rhp_?}&DU4?wGZ^>l| zt5mH>u7XtrSZRESwYy3owd*$SHiLdJFRpjlXzSyn^5AF;7w7k-sZRPQPN7G*esn(i zsaR|76;ErbT2*CC(yATy&A zdliBLz&uj@*x%+*r*2JXsauv?&RRl7%LMrSwC=yUbT57S95;kE{QCU*-V2io^9vi9 z?3o}nrwFOI4}eepDC*t9RR zJ4ChlC)z99mD*a{J2mRoB5Uu=wAQwkGnBWOW|~$P&A_@p{YDLrj5E z7&n+Z8?3pvuKO^vJu~KO%)eJ^WHib1wADQJJh364gPBzxsx0SY3J*16dQY- z=sKvtemqn>^f^pkd^;ll_HL1#T*!F$0Cd%SYeIwSZI-m}N=>X8)GQ9xv?D0xA(dfM zJNv1*G^`5mcEqOsM?LuMhWZ9rX<2sJ&SgXi-8|4dY}Or6A?57qqI;tU zBaK7YS4xFPZwUvCU5sn5QKd;nHWECx+wC=vl^ei85m?F%mRt9d9+K98zq~++`AwTu zAK2v7#kLDan)t>!cMd)8Yy$c2Q(04PCC2P8&K@|K*-F{1G`XE8A-U99QeMVq9vYml|cwAZxfg~3H5UZXChYWFPr!q2JJ)Gz3upLmk^icF9eHQVxinrBkY$|8N{ z-o74f|Lu-zFC5$*zM74wPt5EsM_%e-Z_^dZgY6;=aaMyq3%k#!GGWJKFOgZum{`fbi>}yr zsHhze%*tcBfTOSUp=*;mgw!3?HdTz{@t4r!2J9A-%@>>ek18&Hd!c*a>&z*${?@|Q z{JIuL-oYjVP?8WS#7Bu7a4%>#hF=&kg;^x-6$r2V4% z>dMON8o^h)m*vp0M`OZ8Y}fCuhwIo_rDD&f_h&H^xf3Nh$2pnb{Gv;*_R#wrAF+L1 zeY_om;c_z0Cl4Q#jc#ht$(3x#U^F0$Kc>k?GwHz~$jO*KEZ$HD^zJe&gj-Mew<@nMJo4jU%h zE+34^m9Rb*lm_Jkqa@x$@=V1PjpzO z0|Oe@&_R@Z{C1Wqz#LKeGa(Gl8cy6cD%Y7CLKRB^2B|YgL+v~grBo?kdC}(W!mgG{ zTEyVxCyJmpXBsqO4rCUGzvbdGLlVfmDQ^ALm=x~&Dpv))%B_Vcf6X( z6nO67Y5mF(&VZN%GnDAW5JEjT{)dg?}^YZ$CGyXq({x>kcJ6AVHNFWdcn!U}>IJm@nZ$`jC M$5gux;`;o*0MMK~O#lD@ literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_option_panel_handle_bg_p.png b/res/common/usr/share/osp/bitmaps/480x800/00_option_panel_handle_bg_p.png new file mode 100755 index 0000000000000000000000000000000000000000..6c729bf75dd22e5eb56bbe5a8b3450088864552b GIT binary patch literal 1204 zcmeAS@N?(olHy`uVBq!ia0vp^EkLZ#!3HFi<|lOlDajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg49rTIArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XP}#GU}mUbW};_k zVqj@vsiRh+i#(Mch>H3D2mX`VkM*2oZxQ#zd*q`*i_F@Av`lL zCBM8Ftlrnx$}_LHBrz{J)zigR321^|W@d_&qmzlFg^8n^sgs$Dp`ojxrG<-uvzei} zldH3-v9p;uOs`9Ra%paAUI|QZ3S6&~0ZzT3q>x(xwAm%KD6=dz#jPkmR{`v0t4!Q( zalvUGRBsASw>Y}u)TknMZjb|@r&|R1_nkA zPZ!6Kid%1P72_CLOVmw8>GV3l;^%Mzbj8-eHp8{T=&{8gdQz`(=-Bo6s5 to$b{>SI&Cx3@Kw&e{6ZJu#Z)OVTRA^#bpVv9|MaK22WQ%mvv4FO#pv8l*a%7 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_option_panel_handle_bg_p_ef.png b/res/common/usr/share/osp/bitmaps/480x800/00_option_panel_handle_bg_p_ef.png new file mode 100755 index 0000000000000000000000000000000000000000..95ed9349b1c468623bea251a5fc8f26e35ed9dd4 GIT binary patch literal 1360 zcmeAS@N?(olHy`uVBq!ia0vp^EkLZ#!3HFi<|lOlDajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg49rTIArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XP}#GU}mUbW};_k zVqj@vsiRh+i#(Mch>H3D2mX`VkM*2oZxQ#zd*q`*i_F@Av`lL zCBM8Ftlrnx$}_LHBrz{J)zigR321^|W@d_&levMjk(rsZsgs$Dp`ojxg`=CZlckfn zp`o#>g@Kb1Os`9Ra%paAUI|QZ3PP_7PQ9R{kXrz>*(J3ovn(~mttdZN0qkX~Ox$j9 z#AzN>ZwhX=IN{W*4|I$^C}NQ!8YToxJs>7L*#bH6grAxROzlO$Wc_!_@~I3Aj7L0O z978H@y_sd}eb|AaZMMW(&85x(8zN=8n)O=qxc>d$`9SSa+SLc!%{HEG&ws#laBXY0 zRIOZvWt4~J&gJj#PPK3iEMd@!$zxPt!3DPn<=^F&J%00Q!Lk;w1tMDyJUcm6{i)y1 zuuGrLhRWxExHjdX$Klq@8R1XEewxK|Db6}*__=b0j7IpW?yqeVc#ccy_4ZCQ3Ku)( z(UK9yasAB8eMO7z%&6R?+>-Jl%Od>URCZQlZp6c5ae(rRFfyA$U|HY0M zX02BA>t*Rb)&41UTG!Id_BlH<|4eu=Oa6tCxTC-n?-OUH2{=EE{Aprzrhcn)ds)U7 z)m0mFT6BDamtTMV)2x5))As$^ot|6E6IN!-`z14_c$3E@m3QBN@AOsN6s4_mHajZu z_mLIPw60E?c+)2JNvP~auC)`Ct}ip%d{e;nZN^EqqTeTN&uiy!2X1K0@%P@bE<3b? zPie~=nO%yC5BUF2WNZ*11V7kEd^P-YGsWoRVFMrc#S^XN`h)Wxelwcuw^yTU*Xo$h a$_E&V+1pm=FHdy=m2sY~elF{r5}E+-|K+6s literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_option_panel_handle_bg_press.png b/res/common/usr/share/osp/bitmaps/480x800/00_option_panel_handle_bg_press.png new file mode 100644 index 0000000000000000000000000000000000000000..dedb34758a01fe31baa6ad61a1c2c471dcf39460 GIT binary patch literal 3257 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 F{{usb23`OF literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_option_tray_tail_bg.png b/res/common/usr/share/osp/bitmaps/480x800/00_option_tray_tail_bg.png new file mode 100755 index 0000000000000000000000000000000000000000..3d16da3b79f26823945feecdfc1532869d93e278 GIT binary patch literal 1023 zcmaJ=PiWIn9L_c^W3WHqX$tbpKv8V+k~W)-t6kT$u3*OKit9mfY4X~}EqO6{v)L{d zQN(!=Jvb0Scl4lm6g-G*Zit8%PvU8w#o|?hySSfugDqta^0pFUpJ=u@5bzPa-!8OlJ&&}7XgWbVI2+& zU^vPNQ5cKHP681MkQYQAj)Vm$OCvHAKx47gn`@NhoRVqyqNg}pA;gh+zFMtv)d+{( zGB3npF&>J%D26E_>@C_v^TW0`)KpNAr@N*@Ol*TdQ7hsF5@%_oyD3;sOV;)pWugV+ zea+zo4hAVTfvWm{sAaX#9?7A-c>gKvM1^y*gf1<*e-y&DK#?iL+FJGfhKQGLe)xekv+O1iI2fY#73n zm`XxPNv6k>u*p@hzF;AnG`YqeS8B@*M!|BZX9cJ*!MW-h)TVqQPt-(h&opzUwb#3{@CVdiKR!Qdl&&8dO+mAc?2RgSd zjqU7T>CAM7=5Jl@d;4@NVHbMVf3LpmUO92$p;h~N?0!dLwWth&ee3=AqHEh8cmOtP z-wM>!Kxv~qcKq-M_~p)fhFtr)b_8C0QdvKA_XcyI>*nkyCKReMUCgszKfLpA?9;)M N%%&%m=i{^2{{W$$MDPFr literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_overscrolling_bottom.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_overscrolling_bottom.9.png new file mode 100644 index 0000000000000000000000000000000000000000..3be0788d111e62058adda5eac2f3e18cb634057a GIT binary patch literal 2832 zcmV+r3-9!aP)00009a7bBm000XU z000XU0RWnu7ytkYPiaF#P*7-ZbZ>KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0000xNklru`I84YKW}F-roE%o195$RB icH)#_8jTVTfB^u;k`G*fc3DCI0000KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0000!NklQSNPvM47}29$y>2sB l?EIIC_1EG9009600|0E48v`2+n?e8p002ovPDHLkV1mL^KmPy# literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_overscrolling_right.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_overscrolling_right.9.png new file mode 100644 index 0000000000000000000000000000000000000000..b187aaac749106e5686de443ded282e7e90c3573 GIT binary patch literal 2835 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_overscrolling_top.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_overscrolling_top.9.png new file mode 100644 index 0000000000000000000000000000000000000000..45f86a71519da10618f4594e16108c15724d086b GIT binary patch literal 2836 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_panel_handle_arrow.png b/res/common/usr/share/osp/bitmaps/480x800/00_panel_handle_arrow.png new file mode 100755 index 0000000000000000000000000000000000000000..d7f216c40cf565975dd00584f8a0edc4ec7d44f5 GIT binary patch literal 1103 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_panel_handle_bg_ef.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_panel_handle_bg_ef.9.png new file mode 100644 index 0000000000000000000000000000000000000000..24bf5b0cdfbb79ac5366b604566922363f7a7461 GIT binary patch literal 4705 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 Mbpy3JsN<{u06H(fcK`qY literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_panel_handle_bg_ef_press.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_panel_handle_bg_ef_press.9.png new file mode 100644 index 0000000000000000000000000000000000000000..b8a38ea770546540ef07a6291e20fb9852d575cd GIT binary patch literal 4220 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_panel_handle_bg_p_ef.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_panel_handle_bg_p_ef.9.png new file mode 100755 index 0000000000000000000000000000000000000000..2d699a2cb1719ce0c6b695d3d0475d1eea9eb5fc GIT binary patch literal 1942 zcmaJ?4N%i&7_QDKA~=6f866ig6$Z9RpitUT5J)?!wqh;9iJ+wow3aq$nnLLmnTVUp zI6%Q;6+My8-574vAHXuWbsML1%<~UCU{gfhu$76zZ7S2HC~mit<-6p2zcGV^2U9g>={3u~6wGPjs@)RV-h*RO27$DXu zvN0K^P~{uWVbKi6YoJD+N~KCx^Od-ct?*#jW*tGZ8I0&yGoeswF$&1UvNd`E_`9PW z1T-oEm=Ym@B}4+I)+Aa;Y@J0aS6Z}6o(hbO0iw-(T0n5Xqs zD4>{8Nooj6gX;m0q9PMFQ38<8^!XNa#7kMd@x?LG2L_oH1cb0*&z2^D63PEVb-I^m zBPGNB$@i7QMtMGgK{CvUn@A;HxU9E5p$L8gi76FuYt6TTqzY z6Q36R`jTZgmR>}+mfz3xL54eLTpz0*^A9j12>LNPV5^m-&$^cp?Ks$|3{0~1=8it8 z*vBdxy7W_bc)0Zr)4F7Li%(aNdm0&_y>S?m59C0hOonrca|*!pj8~Z+-#6QX4xVfK zuKHP%so_*O*&Jk$+}wlKZFl~8Zq6!ZV(Y$Z^JiF;1mL%qAdk4nYZbxbt(AWU8tUwU zeYYwk!c1xH^2X2r=7Nlbne|_KK;vrHi~WaTUzHWYFn^As%6FF z!TgY6@y((iy4LoCm8>jx5NO@YadfV{V(rXo=)E^&;@9XioXKQ?B5&!`%6rzBmLVSWY| z@4qDfxl1#0Hq8;(v(xZD{qrKdzOUY}$|jSk`WbU((_`q8c1HjX zmAw0Hd7Q!>pX4|H?21C7kYISt@S5Q<{$-B)o_qiM8cueuwY6?`yWKnU4?XL%KkDkS zlFh7(WvO9*9r9jub=lUT*VwUsQkKyeWPcWho!d{WyNTsn0b}GuZcF&YEY( z2gWjP+Db-;{eF#gtSK4`WYs)P5^7z$OOtDFy|L5vTWrN>R+$U+ami=>QJ-B@x-ETs zTVhnVYDwjZEa{%g_9}CrGT?CN!LbLW%z#AZmR;Vf+aH@bbwuM}_aCNO(bMl0A;qE9 z1xL$1_m=ySgSRa)&A(o7HOCq&PfBMVv+Fb)R;Mj&Ih1<5$@!I&HwX?yOgVDv?v+{D z0z*j11=#MJd)iQ~m%e2_B)&5%X!-eppgVQiAK$}6m~LkH7o6QkI`Fy0{tMLC?xu8& z{nD-#9lO<1TwFYm>-ai0xKAl5esV_t@I+ck6uk4ZtQBW+wk&+}Hu+|)6;#W zwz{F3qNv(AY(E}pLg22yk z9))Y=L9379eVpJEE&?ydb1d&=xi$~aiT*Z`oT8^?kIBlkmXrKZWgd!GvrQ+Gxa5$i-!wolvG2v7n5R zl}2c|RK=b_gpoanOb|)=86Na%hKh3b4nC0(iHVXy6i8J>W`ZxlSwSCW$OTOB;o1)IvJgNm%$| zzqq{}be&#UUam?l#$tivQoSp9><#tfXh*TBaeH9m<924_d&O@WY#zE%Y`_0%L4q-$PPMdv5)&%bn^Ir+10Ddu8bH_vhn zt9REH*pA|p>g@Zex~-<+uN4>S-nzTOtC3S+&b_#{a<20E#HTRWyf-^NAFjK$n0j`d as;Hrke4BerySEC?LymWLORvLycm4p1xmue5 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_panel_list_press_bg_ef.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_panel_list_press_bg_ef.9.png new file mode 100755 index 0000000000000000000000000000000000000000..0f80eebed3846975b4775061059d342ed778dd78 GIT binary patch literal 1237 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW~I!Kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v&`mZlGgL4$(K9qL zur#sMQ7|$vG|)FR(l;>IH8ij?HMcS_RDc2{plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OML?)eIp}XpbFjM%Dj@q3f;V7Wta&rsl~}fnFS@8`FRQ;6BCp2 zOG|8(fG&l2A-4c-Y+f-mn1BJMUy)d#Z>VPg@)As;uP=V3xw&xF#U(+h2=`(&xHzP; zAXPsowK%`DC>a=WY04n03ap%qQWHz^i$e1Ab6}wukda@KU!0L&px_*As%NMWo|%`D zUtSDW@9S&jnO9trn3tUD>0+w{G(j&jGsVil(#_S)z`)Ja$=uY?(ACh%(b>_`z{JAL z#K6tX)YK8C*Cju>G&eP`1g19yuGi22r(RG}$SnZc?2=lPS(cjOR+OKs0QRy~CT_R5 z;4}}aHwC9#3|w*Q)dxC89~7}j5e*XprXCOzo@{{}c*0N31E%&OV6t|My!(KGfzi{` z#WAGf){`msy$&0Qw4e8!eXXhapX0)We6K`(0|EK`^Ow_aSm)>~oY1LQo)DS7ymSA$ zPCnM#C-qqPYgCq;oGx4xbS>&~fWhXuN1Q)@7v6Bd`9Ir|1B_fe@2?!^-odQ>;nl2z z*#(?(2bTR#XmJi=V>+S0@o8D+iK7A2FN*G9?@!<^Q#);Vk#ny_-}zOm7U>->z94ne zID@Zcv9ZsjmNgU32yS=V_S3bk$Y^HC_YaC8ZkKL__3x;QQM+9y(Po{kUTjkBV(PXn z{)?r5<-FzlxL$Sy{Ztcm`l2grf05JqLML z4W;|v>uW5%G}pbJb?vpO?)1}D8zVHduc+@5t`kpSD4bps^{k|O6R4o^boFyt=akR{ E0MDth&;S4c literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_popup_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_popup_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..4b49813b11ebe72a39dd9e740fe450504a901f2c GIT binary patch literal 1082 zcmaJ=TSyd97#`A01WBQXE|BB+RJn88i@Vcq%eoicaLv|D7wKVVXU@8l&75)O=&llF z20`>-N`cUW8X*!QJp?@zB$Pz?&|41@grPwYl`mmo*co-Lhqi$;=fd}W|M&mrKR4Q1 zn<^^~R}chI8Ep>5@qE-85MC~wxa-soKq8q}FKVWc_fcEA0$y9k3`K51P>+w=HkFLEkwItx z(n+&6iFI+L%RzGv*5mNhlRV3@497EUgN=w>*N$HTBZ!}B(bu$coI67x3AtScylfGHV@jufbomZF%3eaJ^)r`sv0 z`mU^I?vx1^jLC~S!_lmjQUMr?{U55TyJ!=|!5_c>6gCqBI$+|!gnfpDFD_GOh0=wf z0Yn6i1cVn0Rcy;b1kEhe$zZ#a=EzP(lVQ%>!pCAlR5OvNNgx{XQCNXi6j_MaU7S18 z$T{uqMve<}fiNF*yIn5M!ACsdu)V+yL8(s#8Y*z*KU}^j*J=e-$B{$8Q2K!!F`!Cr zr7S2#y#yjf^>(;&aW8C9E`!Z5*2VsH(S;-2J=Su!ZSiKe@qvcB-N0?V`t)uJKZ&_$ zD3Hi6r8hP={Ux5E(b4MJ>Y0hr`d=$uEyq&ngCu)lZDwH}y=g0b@%ZYxe{{VpxqoW5 z{B^6Fd%k&T&+%`|m(KH(pGW*PcHUb$X2{n+)=e(1_Wl^ZwQ&0mJvsDJT+2R~o>+L; zm04LIfAH`3)j mV9V4_OOgJ?eP{NTR;7r`Gw)B_AA1zAUUM|u8k%cN4gUt6oM;jN literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_popup_bg_ef.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_popup_bg_ef.9.png new file mode 100755 index 0000000000000000000000000000000000000000..534bf1bd153439fa20fdc2cf32443dace9e21eb0 GIT binary patch literal 1628 zcmaJ>dr;GM9Pe~<6-425mElce@D!Cc4N&@!@@fhcDDJ70|I)T6ig5( z`AR~DrRgKGNi04)My<_G*NSyuP#_RsmM{Vaj79;oVS|y9n5E#Tu7ue;t|1T@h0y6z z@NH6wN);f(NemG1_*^aD9|rvWc(5N|>?igHeE2XQf_)&qkPGuA0-=Nt17i=!L?d-6 zk~k!6EEaQ;f@w5ONFc~$GVx5lJe*90V6j*X@qHj4A1;I7QdveCHFJ%W=ePobQCd<@ z(0bemI22J0o=HnVCeybi7>Eg3BQ@40reTm7B_No`ca$^^R4U&OH5ew)6di}X%lChU zDRmZsL2(#`XOdcGa4DXSP=rKAVknK1Y8>A%-bGa!PUBP>P5`oa0S^We^hOaBZdm zGt%Q+-8-)Tq+Ev;3r@-dGsPVohmOAR%gV+xH1~*Ut`_(-5<`z_4LRmM(u$ zZW*vSSEYxjT=#)JvO#v>mxT{xC-d3aP0km}o7Z>^ZlCM4CGu2TGp#&W-;lldi`lU; zOAcYesSEbkHyp+rN=jaqx)d#1+Nlq5rI$3104*ba8XsQ4OwVrL1K+v_A$7Ip1^Hcm z&3VUO)g$m47o(K?~AfBWmoiaP9<#icQyUphBD+--fieOB=8M+-l;bRStC;APfVop$RH=BIku$prvss&$j^qK$TigQ(a z1`AY2>~~sQJhqx_)pe1!>l&lW#UDjqOEuN51w?G|&Yz~YHWx)5Kit#9&Od#2<$)XF z$J-y;*!j!B*CVf5Pwmd%(&xP_c3#@e)PUNPNXcz{FSoPl7Gg{K_3?!h+fGI|rBu2O zt5b@v<~Xb7y9uM)cKY)Qa<=C7w=RuN_@n#@fOsU=+a6gpJc~7ORWXR(N-E{YiZ%_^ z^>xPYidvqPY#->fpO3}Y27Ff*G`$AkaLXcy!XJu8?1L$GtbK>gc?rj2P5-CcJFlL= zO;4}4%qqKIwFxr>m)Ymb_J1<_jpB+on!7I3yp5Q%^lZRU*Zgx2a<0t0++OLVNDH=j z{^eUaC1V;mWBr4i-CZ70gVoK~<;##nlL%ei9k03Sv|QL~nKn??wMGnC+c~weyn}OD z+ixZ%*%#vTdYxZs*5+k3mS%Ps&sTSGAw1`!sy_9hLx8+|-ZiFoW literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_popup_bg_effect.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_popup_bg_effect.9.png new file mode 100755 index 0000000000000000000000000000000000000000..206b062aa6657b248bc741636cd863b6fdaba757 GIT binary patch literal 2730 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_popup_bubble_bg_ef.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_popup_bubble_bg_ef.9.png new file mode 100755 index 0000000000000000000000000000000000000000..cb04f16ec6a20e1ab91388174c1c4146a24c0644 GIT binary patch literal 1778 zcmaJ?c~BE)9F3)bVgWTO9tdkt1eNUO0ul%oNMa&HxztG25|V{PNH**)5I`7FR8A#` zSj7_&PlApWQEO4uY6@5`QBkPki5#}WWsA1mpkV(f-I?9*nD^fA_}(|05wLuzrNt}@ z5{YCf67qtG(a!jeHzU3tkiLi*X5xGa9*jib@lq5fdCQS-7!awXk#GpdCBb90{h-j!hf)m6O ze2PV^xD*ABYd9bnA0JPRXHXF|5~Q)&Y!IS@bh-Asp(IA`B%it{S3y6TQObpiiGc5Nu%N775(j*DPCn zC%pPf{@QPZDov+*d(+&^H@ewWUwwIc-Lzb*2k8!V>Eh*ziAtaR$)OX&_oy7aZO>Y5 z-BB0lVzp}uZ)WqF6v5%NFT6Y^Rb7l42+dOHnAHoWUohJ~b)%EKXp?Bs;W;UXp2jXK znH3x@M6(MTUzM%zdebwzzGXJf*h_t++fk))9>1{BFROQFTV-_K1C^Lb<&wuzx_&)RCc1xj^iPlvrj za?!Pd&OB)?bH1QIu~uL4OKoO((@_2c za(7+o*4oUd33qi#w)Zq&t|OO| z-rvc3zaB{{v1r%yj?& literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_popup_bubble_tail_bottom_bg.png b/res/common/usr/share/osp/bitmaps/480x800/00_popup_bubble_tail_bottom_bg.png new file mode 100755 index 0000000000000000000000000000000000000000..733c7906878a3cafa3196adde8726be5ea3d9c52 GIT binary patch literal 1108 zcmaJ=TSyd97#>%%MTs;bvJ0HX3K4fMdvV#pwcLxj)XKJQxk{O{GiTR9XU;TpY*!yD zgi4_Yu_%IwdWjw+Gzo&Bn-!Hr(L-P_SrFAzL=P22bjEhAhqi$;=fd}W|M&mrKVz}> z9V;ragGM*QyE&iR*8rRx&#}Cd<-87_6Fgpl<3awTNi;)F3-M5EJ{H;e={}5g zfn~GVER%IH$jGp~&*x(~C+l=N2*P0wX;{oTG_$s#5Q3&;C^}Y<1}sG}g$A*oCQg5+ zpz2Gqnwc*XDHxj*b(Uv1E2RQ38vQ?1RhQ5vj>A8G|0!%HhIGirp@{|!iCkQ|)(WKy zK?8~y83}|23RR5tA&ksEq=R6Ghv7k|qRA+0F5;t6A)=XB)Fc=Q`DvoSD2gmNJz2%M^WtVwe_(Xd$)Zgz5T~2+uY&6(_Zj0P&Ik+ z&b^9#m*38e*NlFh5a&y-^h`L)T72N}&Jl<%4X=H4y{c?BGR2)ASMDe6BVWd*2CDh3 z)%~05hF;G~^ZtRZqpK>#u6HZf%>7(=VmnPD3?>^UYaf)w9c5d-&bFP|`0(tqE8-@5 zz3ubzy1kqCcq>akE;LuYr>7&flfCFg_0;qE=JKuO$9GqrxN(dsDW@_nd2W4o`hfM$ MBjNVY)j;paFNNi2ApigX literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_popup_bubble_tail_bottom_ef.png b/res/common/usr/share/osp/bitmaps/480x800/00_popup_bubble_tail_bottom_ef.png new file mode 100755 index 0000000000000000000000000000000000000000..2abbadceb8f05e196a54e6c02d5b073de58ef702 GIT binary patch literal 1631 zcmeAS@N?(olHy`uVBq!ia0vp^GC(ZC!3HGf#l`*vQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07?_nZLn2Bde0{8v^K*7iAWdWaj57fJ{tG z$}cUkRRX#c;)UD-xUqS~&|m@vn0`fKfxe-h0mw@*g}%P{mFDKcRTq~8r6Sym)!^cg z%7Rq=pw#00(xPNw#HA^NtSYc_E=o--$uA1Y&(DE{Vn9ZINq%ugeu08>u&JJ*LU?9g zN`84USiP^Wm1kaYNn&1ds;7&s63_&_%*+%kH#0{!OG7tTGZPa-Lqk_XOJ`#PH%Bu! zQ$t5LCr3jwm|mCsATTymvTP>1LIhJ z72nj=wJ=!o>pPp@p^AOp58gWE{l5I_)9dhr*&56#g_;&8)fAtdxB2+}v;V8Dry@6~ z?`rTh$+~5^Z`%9D>XTCz3P|iX-Z&|8+1#%E)g0-C%x#bVGe|!#p8Rn;|Boo9q$!F{ zt0r9dw&2g!teGq0;!Ep4T#)EVFK4`Wc1iH+==;~Mf7tWm=G6;k0X_%y6I8CT-Ll%g zf61baPXE4h+z6IU2tI0mGtf@_`fI)4hKwQ$w***uK3-;5S7Dj{qIY$IdrX4hKRv-( z!`CtG)t$97Iac~ST07xLph0oyX_F;xv8Ux^tctk3Ql;jF7W`9~a^O%@QX<=;53+f%0Wi7nCp89=ze*M(3svN;LLQP#9qF>byWpnc1 zE>$?ndH?6slRT|%>nirz%?nwsxKi)9*!*)1)AKfHc}j54&0;*&xBCglb{6UAsGSq! zY-HxK{PrpOd3JBs(jC1Mgzjk{v7Ts9roP|`+YO&}v%<7~S2MG66e?|=7^C?7*%u%6 zo0<*l?p>Ibv(4&Wd|=(BH>zJ2^nG1snRUK|c@>L?bzkc?zg>cd3+Jve_T&utSnEA0 zV1}^9#OXYHO+Cbn9|^K@t zcnDF%V_;<<2q7_`4hRN>fG&U#105Kk6R#a1F;;?eX$k|u()s>7ec$&#?{Z=EP%OGD z%5hvQe^@QDeFs~6I@;M^U%EBHwl10-rzJ8;Yr2QIv`H!$EPrk+j92eoO z@;DvWMihhCf*xXoz;+p%;|2x;S2w0H1r*3Pu zXxW&ZHe{0@JO~B?g$dZ0>L9RBIKC33_!V7++2OUwgB1v!PVv8k8rKRSLp%(U0*o85 z4}rdffD%wn$oqf<5fqUm!u~jdO0r*p2&{fQ^X8e8N>RcQ+MO>>HltQj0hsRMabEhNgHH>F*S5cTLvuSIfi- zCI-4IA_0aeHG!J;f2eJ*p?zA!f8zb8uwSmbSS(_n%ysrf5-O;hrYPj$z@c{Rl|1;MgRrC-XTjG8{smqGPFu|u0&^AA^U$qh%rc9~}td)6sz<~(A9m6R2$bu4`?^;WrN z>sb0*azz%57&i8=MmMk6^n~Wx*s{ag;A4kPyT`_QF*diCJ&7lIHC+ytD$75A4o0FA zW}^e5Lf6%Ok^0$SQ>3R@fc3@BIdWm7@os1m%(s6Ygxh;iVe8!H#?7JmbDxHm+pah_ zVqe=n-+kZ7zZ%*No?UtiE3x$(PIr3?r3&czcx0Qg1+~9i_kF6^8PQM67q8u49$t9U z`|gL-`JnCO#z*{yuBFo64dr;GM9IrZ1aX21M)I*8!ah!vuDQ%^Ns)7q}Dw_s3Z7lHcP#pU?O8x!4lo zqP@MQd2u)#@0i7inq4QcZ{Rpj_KUXvkjgGo8AURaNTxGpl*TwwdNK_IVhGfLsWDV< z%|4GsayVl^T$9Wst70WOlHj6l4A(+XEStlLTxg+CT^7awX_x^wO2KE2Qy_rrrJz=* z;;AS(mVqx`Lt}|+;xxK7Svs*ET(|&;v`AP10%K6XLaa8LBo-++peteb?rR7H1|Uq9 z6nvjlvMK?PlQaehxx7#vPXq%Z0T&kV!~$^$z~{j{2)qmj1M&!D!Ku~OC1f%g>Os}L#0vIS+f{&a__=tLgT>Z$oh)3i?Y%-90u>TtL z&=u<*_jcH}>|xmWn2~im&Dy#?zBGix8GR-OiPBiww{E|f<-cr_t24WEo4GZ&{aU4e zds?jvsJ3}5t6jeNbx{aXWxrB9LCf7Mn;C4s5Cn7~hZB6W6P=0xS@siUf^Svj^*zDC zNn7xASJ>SICJHNCBdBArD^sR5q`(oYNDM*#$yD%@;xeP3>d>d9$w;(Uy{OOoi zK07V}K=bkgkvXwJfP4cAB6KkDW*)aOpizZaH9q~33MlnLI}{$Z_upvu4Hm%qNTj-1$X^a&>l~5R`smBki(dvV3TQ0c zb9qkT3S|wkwEykh+v{=Bf@*%>&CVdHs(F{V=2|lm8|m+Bo?fKZ;LA%NRbS8ucivbf z%OCqYcdYnh2P*pIZPLZsB<-CO#TPoaOzpd|?(0%->P^vv{Rcb5hm@wN`(DMi8nnLQ z1xLdR_Wz`~7Z22X8*d)-G5AUCOQNB&4tSo*2N~}rI$-$bOxJUdD|sOO80ajE7CntV z>c~93q9x_c%l;#6Z+qt5{=VWQ^+Hq8i_J+b5Ps#c@0f-xw jTUzDpN!)v~-;2lT)*kGx`%_=y{>8^A;*dkK)S`a?TYq#a literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_popup_bubble_tail_right_bg.png b/res/common/usr/share/osp/bitmaps/480x800/00_popup_bubble_tail_right_bg.png new file mode 100755 index 0000000000000000000000000000000000000000..061c2706b38baf8ad6fab12e68530dfc253f61f5 GIT binary patch literal 1089 zcmaJ=Pe>F|93I)Ul8pX=78Q?KiVnN;XPaHy!EM>y(cEfn+g(aJgtIeGopk0+Gf#K5 z4(UNmL=4)fE3`@8Wyd zKv6DQ%e3Ow#7R*>IwLz6Ca;@>O;HWuyeTVP5Q8l2(2NlM{rO88XljT)>rZeAGX^`g z=6(yN`&%+ff0q(e>F`m|kQa%74zUdKdbeSV`4GLVE0VQy%+g>Pg1bWWimBE_62y=N zfuG^L3K!r(Kwx-*3kpFG@NqoH@;;WU_wtR|a`FvxN~*5~sQgxBsfu$=cAw!5StL0hpj6Klu-j-s4JJvc-YrzWc)ULB9|aVkNGGlpY-#xWrZ0xs7GHPAljpi7Y`&>xF8Qg>|YmMIwIZUEZ5qWY}Ohd8l>AT($*8tUWLh%n2k%3 zO#W+jacL>+@>lG16<#H|@oVzdZ9ggA6|bxP{ec>}vGi=<^IX`qc|P1b>RH%0JTq|f z*14+Ud<8gjZ*l-ERt&$M*1#6FGQ0o6o=wGHS3VEjt}4`=FH?o?x#>dp8Hx}4cLWX{oR}&sjGdk_smjayW=9@h q`sit^{pLCSjvK%D^!#KUwV{rB+xH?m^nknTJnDF3i}WbkHuwjBMq%{; literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_popup_bubble_tail_right_ef.png b/res/common/usr/share/osp/bitmaps/480x800/00_popup_bubble_tail_right_ef.png new file mode 100755 index 0000000000000000000000000000000000000000..0e7053055a392ab08eb5a0e0259825db425509eb GIT binary patch literal 1611 zcmeAS@N?(olHy`uVBq!ia0vp^B0wy|!3HD~Z_Q5tQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07?_nZLn2Bde0{8v^K*7iAWdWaj57fJ{tG z$}cUkRRX#c;)UD-xUqS~&|m@vn0`fKfxe-h0mw@*g}%P{mFDKcRTq~8r6Sym)!^cg z%7Rq=pw#00(xPNw#HA^NtSYc_E=o--$uA1Y&(DE{Vn9ZINq%ugeu08>u&JJ*LU?9g zN`84USiP^Wm1kaYNn&1ds;7&s63_&_%*+%kOGjr{H&;hfGZPadLqk_XOGj4|OG_hX zBR3~k17|lQm|mCsATTyE#-gfnqGrv4}wyamY?%W;b&u8nO z&nsSkMq+YG$POFf6Q@sCJK8Q-&w0l6;!c$aPv#5$MSARu zCw(i9j(m0U+vej6GD=n*pBC~h5SgNLLGQz%rx$+w^bWUvu#vY!LPWqJly6mm!A`ai zk*AfvXBID(T^QXTGXFovk|qxR1cnnMJi9<<%i`(T$>27}TUu9o(r zd+Hwjp3bjd^y?Yh8E%c{23a{R7NHLfk8hMu(&n!1zW6eeNmud4v$^j$U0&pJ9KQMX z>%*Dn^VxGxpApiCt;=?3k!!!eyy3$7AKTyE_rB;l6aKbsjH}hYEB(*J ztVz#1<+-fuul)~0s{2?s=t*0-=3b24Xd|H_*nHhMx(y~-O!oK8O^U~J!&Z|#vjJy-N&-&Fl@2#9GHpkqUx%SG@oga=Q zteoLpn3{AcXrX+7i}lN0=dKjhm`VJz_$HO`dcwIv*WALl;o72A7IT_DEQvUAuj8E0 z-kbOSY;SAO(PF;z(X#z-Zb55ou5H8J)|0ER%rfJ%uM?7q`r*VkRdwTmtMPX)Y5%{l zZEfR`^9BE3o!Zm(P18U>Vv}Rn&UaNSEONNz-fBH5ZNH<*wr_^}$8|oR-p723+sel{ zO)Y$-Z`BoM(UTLO>Q0o(*zvWbsJYTQW5Uy!PgWFFhASnoHQt-9`)G>&+(=^yRxyvy j)=w<5PKwG}Gx0FkZr>xo6S{;MRJ?n-`njxgN@xNA`0sG% literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_popup_bubble_tail_top_bg.png b/res/common/usr/share/osp/bitmaps/480x800/00_popup_bubble_tail_top_bg.png new file mode 100755 index 0000000000000000000000000000000000000000..ed639afc8f85acfba766abbe5618237609e3415b GIT binary patch literal 1098 zcmaJ=Pe>F|7@yKg&7vrliVo966yeUFb$4|KN8R07YpbPQ12Oti}K99mf~&wjD)Ms10UNPBH-zRA3sAQBBH%1dx=z z6R$u6L6lKyGKEsHBfJbXT5>S7tr?h25DiVXA<5kUk!g@sb%C0H_JSf+MWEV!F*as| zL6>^4-vn*_tx37RTMj5xQzO}6^H@LwNFr^mN4I!epbEM?ww+^!A`1}IEl_`wO2y)2 z7@C0e(X3l${T%7{(wvtKcmp-0hvis?^Du0kn`3!j9nW&)(nsNFrjp?kV#`u2>0 z|CFE^%d)z))F#|8#+D3*qgkh)cSLd2!vy(7+8d`Q*a7v-8rU>f!m|YA5p|889LUD8Ma2~Lyh&}f&bV_TsUm7>o+;!zIE*!0@ zS*(1$UrbdT`dGK`Vf8Q^oS`NrE+?^>9UCFaw-M*xPW!o+$`$8zMdPy AiU0rr literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_popup_bubble_tail_top_ef.png b/res/common/usr/share/osp/bitmaps/480x800/00_popup_bubble_tail_top_ef.png new file mode 100755 index 0000000000000000000000000000000000000000..fea3a6f00aac3315a89d7c641e116f4a595eae24 GIT binary patch literal 1548 zcmeAS@N?(olHy`uVBq!ia0vp^GC(ZC!3HGf#l`*vQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07?_nZLn2Bde0{8v^K*7iAWdWaj57fJ{tG z$}cUkRRX#c;)UD-xUqS~&|m@vn0`fKfxe-h0mw@*g}%P{mFDKcRTq~8r6Sym)!^cg z%7Rq=pw#00(xPNw#HA^NtSYc_E=o--$uA1Y&(DE{Vn9ZINq%ugeu08>u&JJ*LU?9g zN`84USiP^Wm1kaYNn&1ds;7&s63_&_%*+%kLrZ5PV>2UXGZPadLqk_XOIH(1Cr4)^ z3o}DE17izEm|mCsATTyF!dqU4<3p>MQDt=Z<6Z;ld5_BjP%T71}vN$H~QF)I9c~4awKFgo?%n`)F>~m>gR`vyJWU5 zJ-3D9aebG!3qv7m!z_kUhuDDiB_(U-oaWcHT4&BXJH95r?w{+Sz1h(pW(07tUSnhW z`nKhAxK97Q)SkOeuF}s7eBTycm2^Dx|N390rkM(BsvIV-5Dpg4vaNfie4|(*Q18fz zeK`+9l54-}p446&vdmbtMfLg&OO`YG@~eB^>rcsRs1^LO-0J_auamwvzTKUFcI~o- zNng!gR-|&Jo-la1{Fm|3!;3#BggfpRXur7bk<`1ub30$HG2G(Bt$N+5bLY#sGpy=m zXV@_Q?pw$=&GPxpl5GVm_ifwca!dI_lxx%x=37jCm&)$-g)ckLm-gvLt?sjh_45k$ z%uLCTud2@e%bYp6VZ{=~r%`;jr*c|qKl`*)>IV0&Nc((NW>7ohUEhYkO`#$&e%#mrop2BCdkL$kun!P8xUjO`_bG!0y>F$jy z8Jyb~ug~B5?_kWU3l~1vG@LzDUfZ8=?eg*NQk(Ab2eG%}*_!m0ezkwv&%n$u@!P7j TgxQyyLFKcjtDnm{r-UW|`{Pjs literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_popup_title_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_popup_title_bg.9.png new file mode 100755 index 0000000000000000000000000000000000000000..b4be8c0deeba452d98e19ba300b2418aed63dd23 GIT binary patch literal 1010 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 ijrADNV?fo7{|*4keQgNMJCeZw0000fo literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_processing_ani_52x52_06.png b/res/common/usr/share/osp/bitmaps/480x800/00_processing_ani_52x52_06.png new file mode 100755 index 0000000000000000000000000000000000000000..08a44fe60284440161d322a866605a85f417ea8a GIT binary patch literal 4763 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_processing_ani_52x52_08.png b/res/common/usr/share/osp/bitmaps/480x800/00_processing_ani_52x52_08.png new file mode 100755 index 0000000000000000000000000000000000000000..3d8fe4e643e835c12cc2737c0e3f1bfb97c097d4 GIT binary patch literal 4727 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 Y?yU~hKRADFCjL(p^-1lU!pXA_0hq;o2LJ#7 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_progress_bar_ef.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_progress_bar_ef.9.png new file mode 100644 index 0000000000000000000000000000000000000000..ed7f99e6d7809f0382ad06442b287c148149fd14 GIT binary patch literal 1409 zcmbVMZA=qq950AK7-SIG#)>Y-p&R1pz4Y4BlL~F`IvQ-(m8#8xn@4*sH|X7QJ!pXs zW4f7H)Xb@b=@y-v3`N-31_|P(&JVg}gv^)hO@(CH!~g@r4DN$uPl2+1Ab!{-chB4J z_xry-x7T5RAuUCjqEIN(tYwrFjM>pQIT3tELxu-ncv`02a)scNLyW{Kj9#INg{%R_ z&pKJg+gSH4TdYv5@^LP=?6z$oJwiamL@}yxKm=@sqPQe1GM*Y%hN@UU#~a|O!3!|N zc@6M(jSaPlX11CuYm(TCCcDeiRO8Wm;gZczahL=G0aj+9aG;hCl3@e9pi6>zbQ^)8 z1&CZ@fES%|+Z>QtkXT5gLJK{p7K5~e3L{WGp?@C2Q4B>e96@!37)ok%B#J>x4-BkH zULWbCEK9b)$^ci(vPdFGC=^nK)G9&pBbZ*VM^GHW@j`$o3^wvI6E5U~c`*fw4SFO_ zlsSQiqKZtFP%j%`;OSxr0nuh#7UqLXi2^A@!iqH!&tgR+zT*Nqj?L06;5 zB2G3a)Jq;v4_{u44088qLs1~`hI~=tKv9@lO7PSNSYEbL1{j>EyquRrjYbQK>S@eE z5HyZqCbLOLnbca^OsS0orip2+#HG|Gli8@#YK$5J!)Uz70%S0X*3)`5UPS0(Tq_@x z8Q#Oj>~g^F5?Av`E@_rnMiwNOAk@Y>z)>y8LacV(_YIUG?i(HCv7n+;ttk>#>h41@5tndFqkx z=jMEW9D4^%9SG#)dVAYzyRHOhlzaQKel6&HSlXzpk`BrON0=45u|8Fzl$k&(g6JqDt>-T;dJKo!OFsplTUh3ZV z#hIIDjt}2`SgD$$-}>qmyL$0kK%-))sTYVXI zc5spGri+<>ebSX5IU8xunjT2_voo_lY4foT4>=W|IGws_z94Dbp0PE|MY&RzcisSWwU literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_progress_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_progress_bg.9.png new file mode 100644 index 0000000000000000000000000000000000000000..b9550c8a71e63015f3fcea8418bdc2c829207592 GIT binary patch literal 1310 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 AcmMzZ literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_progress_ef_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_progress_ef_bg.9.png new file mode 100644 index 0000000000000000000000000000000000000000..8431c08e6f5933134509446082fb2144aef3e16e GIT binary patch literal 1869 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 UPIfuqvH$=807*qoM6N<$f;^RLAOHXW literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_scroll_bar.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_scroll_bar.9.png new file mode 100644 index 0000000000000000000000000000000000000000..7afa4f37b084ef8415b0aef19d3bc1b65adc0da3 GIT binary patch literal 2937 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_scroll_bar_handler_bg_ef.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_scroll_bar_handler_bg_ef.9.png new file mode 100755 index 0000000000000000000000000000000000000000..28f027db10d4dfc26f1d324ae9848d383f201419 GIT binary patch literal 3192 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_search_clear_icon_normal.png b/res/common/usr/share/osp/bitmaps/480x800/00_search_clear_icon_normal.png new file mode 100755 index 0000000000000000000000000000000000000000..3bafd0269910c1664b023c911ff1010758b1e928 GIT binary patch literal 1784 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcf1|-9GYMTQo$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%nF$y5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8RIuSMv>2~2MaLa!4}y`Y4UTL84#CABECEH%ZgC_h&L>|v`++-|YJX&zK> z3U0Sp;?%1Tbc{YIT9Kj|CIn17ASOJ~0y*$xpPC0u>qWps%|5UD7BH{mdAc};RNQ(q z^J2G;#>G=5xOw|{12 z`0l%Dk2CVjmYHpPaQuzg1P_&*z4OnesVnCl^*bc~ko!aA56&Nvao0 zJl2?Z@V%AJ&Cm)d*&k0WEEf1Lj4+m zT}Ip9M`r~VNcMYV$4uJx*dp`S9RX((-#^Q@Eoqt;98+h#NXB{6%^==0AS+2ya7E>#VF z;i2;Be04}vV!`X4Z!-QDFI{UjdbPsmxk(wPjy~`XoH}jw)hu@@mSyQ7?&md} zUT?D4R(kvX{q$BR$L;f8y_o6v{u6(wG#6X5j$HribfGJqYAai0S2bJ@iCX3{$!~do zMoe~y`)3CcG2b=InD#Aa((Ssd!aZ@`*Q8yIZ&$g9-s-($kZmZ|{q>scEsx8-0ZIY8 zo`3%xX*Yj584 zcb#t2Zy7|U-ctIC9|T{(O(L??`*A9 zC=py-`{2k=>tSwrApDV3Li>6VJ?11l2{Ju6{1-oD!M< DFe$=( literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_search_clear_icon_press.png b/res/common/usr/share/osp/bitmaps/480x800/00_search_clear_icon_press.png new file mode 100755 index 0000000000000000000000000000000000000000..6ae38e78ebe6fe0aad11b306a7f20b70d0bd07a3 GIT binary patch literal 3026 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 RasBTdfWz*?@T~n4{sTrSLCXLD literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_search_edit_field_bg.9.png b/res/common/usr/share/osp/bitmaps/480x800/00_search_edit_field_bg.9.png new file mode 100644 index 0000000000000000000000000000000000000000..4f20436a1edab5e00519bcad277bba8b033525cb GIT binary patch literal 3028 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 LNkvXXu0mjfq<;X8 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_seg_line.png b/res/common/usr/share/osp/bitmaps/480x800/00_seg_line.png new file mode 100755 index 0000000000000000000000000000000000000000..316081f8303114e8c70865603417b03a1c09fd2c GIT binary patch literal 2804 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_slider_handle.png b/res/common/usr/share/osp/bitmaps/480x800/00_slider_handle.png new file mode 100644 index 0000000000000000000000000000000000000000..7c8f2db2116d316cb2477ca88fca16cf53109508 GIT binary patch literal 3361 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_slider_handle_dim.png b/res/common/usr/share/osp/bitmaps/480x800/00_slider_handle_dim.png new file mode 100755 index 0000000000000000000000000000000000000000..6ae009d040dd41a50df568a64abd85d2b8970182 GIT binary patch literal 1134 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_slider_handle_ef_dim.png b/res/common/usr/share/osp/bitmaps/480x800/00_slider_handle_ef_dim.png new file mode 100644 index 0000000000000000000000000000000000000000..29b644a417719a64bd1500634fd76192850120f6 GIT binary patch literal 4926 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