ELF(4 4 (444444    l   @@QtdpRtd   XX/system/bin/linker4;Sci7X<T"r ,O}Lj!D9j2Yq .l A l     I    + r    K   * [   9pCq"Cd FjH 9kDs:b1Uu:\8e Iu7TnNg Nh}!2BV  E`q8o > M Z g t      !!0!P!s!!!!!0"A"_"v"""""#6#a#}######%$<$T$b$|$$$$$$%*%H%b%q%%%%&'&:&_&}&&&&'f''''(5(i((()*)B)f)y)))))!*3*F*V*m****+#+6+R+l+++++%,_,,,,,,,-F-`-z----..B.e.......//0/[/w/////0!070T0w0000001111D111112+2<2P2f2222`2$3(3E3L3v33334-4Y4m4`t"44445&575Z5555 676P6q66667727S777 7 7 __cxa_finalize__cxa_atexit__aeabi_unwind_cpp_pr0_ZdlPv_ZNK7QWindow8geometryEv_ZN7QObjectD2Ev_Znwj_ZN12QQuickWindowD2Ev_ZN19QQuickImageProviderD2Ev_ZN11QQmlPrivate30qdeclarativeelement_destructorEP7QObject_ZN7QObjectC2EPS__ZN7QLocaleD1Ev_ZN10QArrayData10deallocateEPS_jj_ZN18QAbstractListModelD2Ev_ZN9QListData7disposeEPNS_4DataE_ZN10QByteArray7reserveEi_ZN10QByteArray11reallocDataEj6QFlagsIN10QArrayData16AllocationOptionEE__aeabi_unwind_cpp_pr1_ZNK7QString11lastIndexOfE5QChariN2Qt15CaseSensitivityE_ZNK7QString5rightEi_ZN5QIconC1Ev_ZN5QIcon9fromThemeERK7QStringRKS__ZNK5QIcon6pixmapERK5QSizeNS_4ModeENS_5StateE_ZN5QIconD1Evstrlen_ZN7QString15fromUtf8_helperEPKci_ZN7QString6appendERKS_mallocfree_ZNK11QMetaObject9classNameEvmemcpymemset_ZN10QByteArrayC1EPKci_ZN9QMetaType22registerNormalizedTypeERK10QByteArrayPFvPvEPFS3_PKvES5_PFS3_S3_S7_Ei6QFlagsINS_8TypeFlagEEPK11QMetaObject_ZN11QQmlPrivate11qmlregisterENS_16RegistrationTypeEPv__stack_chk_fail__stack_chk_guard_ZN11QMetaObject14normalizedTypeEPKc_ZN9QMetaType25registerNormalizedTypedefERK10QByteArrayi_ZN10QArrayData11shared_nullE_ZN10QByteArray6appendEPKc_ZN10QByteArray6appendEc_ZNK19QQmlExtensionPlugin7baseUrlEv_ZNK4QUrl11toLocalFileEv_ZN5QFileC1ERK7QString_ZN4QUrlD1Ev_ZNK5QFile6existsEv_ZN5QFileD1Ev_ZN7QString16fromAscii_helperEPKci_ZN19QQuickImageProviderC2EN21QQmlImageProviderBase9ImageTypeE6QFlagsINS0_4FlagEE_ZN10QQmlEngine16addImageProviderERK7QStringP21QQmlImageProviderBase_ZN10QQmlEngine13addImportPathERK7QString_ZN7QLocaleC1Ev_ZN7QString17fromLatin1_helperEPKci_ZN12QLibraryInfo8locationENS_15LibraryLocationE_ZN11QTranslator4loadERK7QLocaleRK7QStringS5_S5_S5__ZN16QCoreApplication17installTranslatorEP11QTranslator_ZNK4QUrl8toStringE12QUrlTwoFlagsINS_19UrlFormattingOptionENS_25ComponentFormattingOptionEE_ZN4QUrlC1ERK7QStringNS_11ParsingModeE_ZNK4QUrl10isRelativeEv_ZNK14QMessageLogger7warningEPKcz_ZN4QUrlC1ERKS__ZTVN10__cxxabiv120__si_class_type_infoE_ZTI19QQuickImageProvider_ZNK19QQuickImageProvider9imageTypeEv_ZNK19QQuickImageProvider5flagsEv_ZN19QQuickImageProvider12requestImageERK7QStringP5QSizeRKS3__ZN19QQuickImageProvider14requestTextureERK7QStringP5QSizeRKS3__ZN7QObject11eventFilterEPS_P6QEvent_ZN7QObject10timerEventEP11QTimerEvent_ZN7QObject10childEventEP11QChildEvent_ZN7QObject11customEventEP6QEvent_ZN7QObject13connectNotifyERK11QMetaMethod_ZN7QObject16disconnectNotifyERK11QMetaMethod_ZN7QObject5eventEP6QEvent_ZNK18QAbstractListModel5indexEiiRK11QModelIndex_ZNK18QAbstractListModel6parentERK11QModelIndex_ZNK18QAbstractItemModel7siblingEiiRK11QModelIndex_ZNK18QAbstractListModel11columnCountERK11QModelIndex_ZNK18QAbstractListModel11hasChildrenERK11QModelIndex_ZN18QAbstractItemModel7setDataERK11QModelIndexRK8QVarianti_ZNK18QAbstractItemModel10headerDataEiN2Qt11OrientationEi_ZN18QAbstractItemModel13setHeaderDataEiN2Qt11OrientationERK8QVarianti_ZNK18QAbstractItemModel8itemDataERK11QModelIndex_ZN18QAbstractItemModel11setItemDataERK11QModelIndexRK4QMapIi8QVariantE_ZNK18QAbstractItemModel9mimeTypesEv_ZNK18QAbstractItemModel8mimeDataERK5QListI11QModelIndexE_ZNK18QAbstractItemModel15canDropMimeDataEPK9QMimeDataN2Qt10DropActionEiiRK11QModelIndex_ZN18QAbstractListModel12dropMimeDataEPK9QMimeDataN2Qt10DropActionEiiRK11QModelIndex_ZNK18QAbstractItemModel20supportedDropActionsEv_ZNK18QAbstractItemModel20supportedDragActionsEv_ZN18QAbstractItemModel10insertRowsEiiRK11QModelIndex_ZN18QAbstractItemModel13insertColumnsEiiRK11QModelIndex_ZN18QAbstractItemModel10removeRowsEiiRK11QModelIndex_ZN18QAbstractItemModel13removeColumnsEiiRK11QModelIndex_ZN18QAbstractItemModel8moveRowsERK11QModelIndexiiS2_i_ZN18QAbstractItemModel11moveColumnsERK11QModelIndexiiS2_i_ZN18QAbstractItemModel9fetchMoreERK11QModelIndex_ZNK18QAbstractItemModel12canFetchMoreERK11QModelIndex_ZNK18QAbstractListModel5flagsERK11QModelIndex_ZN18QAbstractItemModel4sortEiN2Qt9SortOrderE_ZNK18QAbstractItemModel5buddyERK11QModelIndex_ZNK18QAbstractItemModel5matchERK11QModelIndexiRK8QVarianti6QFlagsIN2Qt9MatchFlagEE_ZNK18QAbstractItemModel4spanERK11QModelIndex_ZN18QAbstractItemModel6submitEv_ZN18QAbstractItemModel6revertEv_ZN10QQuickItem5eventEP6QEvent_ZNK10QQuickItem12boundingRectEv_ZNK10QQuickItem8clipRectEv_ZNK10QQuickItem8containsERK7QPointF_ZNK10QQuickItem16inputMethodQueryEN2Qt16InputMethodQueryE_ZNK10QQuickItem17isTextureProviderEv_ZNK10QQuickItem15textureProviderEv_ZN10QQuickItem10itemChangeENS_10ItemChangeERKNS_14ItemChangeDataE_ZN10QQuickItem10classBeginEv_ZN10QQuickItem17componentCompleteEv_ZN10QQuickItem13keyPressEventEP9QKeyEvent_ZN10QQuickItem15keyReleaseEventEP9QKeyEvent_ZN10QQuickItem16inputMethodEventEP17QInputMethodEvent_ZN10QQuickItem12focusInEventEP11QFocusEvent_ZN10QQuickItem13focusOutEventEP11QFocusEvent_ZN10QQuickItem15mousePressEventEP11QMouseEvent_ZN10QQuickItem14mouseMoveEventEP11QMouseEvent_ZN10QQuickItem17mouseReleaseEventEP11QMouseEvent_ZN10QQuickItem21mouseDoubleClickEventEP11QMouseEvent_ZN10QQuickItem16mouseUngrabEventEv_ZN10QQuickItem16touchUngrabEventEv_ZN10QQuickItem10touchEventEP11QTouchEvent_ZN10QQuickItem15hoverEnterEventEP11QHoverEvent_ZN10QQuickItem14hoverMoveEventEP11QHoverEvent_ZN10QQuickItem15hoverLeaveEventEP11QHoverEvent_ZN10QQuickItem14dragEnterEventEP15QDragEnterEvent_ZN10QQuickItem13dragMoveEventEP14QDragMoveEvent_ZN10QQuickItem14dragLeaveEventEP15QDragLeaveEvent_ZN10QQuickItem9dropEventEP10QDropEvent_ZN10QQuickItem21childMouseEventFilterEPS_P6QEvent_ZN10QQuickItem21windowDeactivateEventEv_ZN10QQuickItem15geometryChangedERK6QRectFS2__ZN10QQuickItem15updatePaintNodeEP7QSGNodePNS_19UpdatePaintNodeDataE_ZN10QQuickItem16releaseResourcesEv_ZN10QQuickItem12updatePolishEv_ZThn8_N10QQuickItem10classBeginEv_ZThn8_N10QQuickItem17componentCompleteEv_ZN12QQuickWindow5eventEP6QEvent_ZNK7QWindow11surfaceTypeEv_ZNK7QWindow6formatEv_ZNK12QQuickWindow14accessibleRootEv_ZNK12QQuickWindow11focusObjectEv_ZN12QQuickWindow11resizeEventEP12QResizeEvent_ZN7QWindow9moveEventEP10QMoveEvent_ZN12QQuickWindow12focusInEventEP11QFocusEvent_ZN12QQuickWindow13focusOutEventEP11QFocusEvent_ZN12QQuickWindow9showEventEP10QShowEvent_ZN12QQuickWindow13keyPressEventEP9QKeyEvent_ZN12QQuickWindow15keyReleaseEventEP9QKeyEvent_ZN12QQuickWindow21mouseDoubleClickEventEP11QMouseEvent_ZN12QQuickWindow10wheelEventEP11QWheelEvent_ZN7QWindow10touchEventEP11QTouchEvent_ZN7QWindow11tabletEventEP12QTabletEvent_ZN7QWindow11nativeEventERK10QByteArrayPvPl_ZNK7QWindow13surfaceHandleEv_ZThn8_NK7QWindow6formatEv_ZThn8_NK7QWindow13surfaceHandleEv_ZThn8_NK7QWindow11surfaceTypeEv_ZNK11QMetaObject4castEP7QObject_ZN15QGuiApplication11focusWindowEv_ZNK10QQuickItem9isVisibleEv_ZNK10QQuickItem6windowEv_ZN10QQuickItem16staticMetaObjectE_ZN4QUrlC1Ev_ZN12QKeySequenceC1Ev_ZN12QKeySequence8mnemonicERK7QString_ZNK12QKeySequenceeqERKS__ZNK12QKeySequence7isEmptyEv_ZN12QShortcutMap14removeShortcutEiP7QObjectRK12QKeySequence_ZN12QKeySequenceaSERKS__ZN12QShortcutMap11addShortcutEP7QObjectRK12QKeySequenceN2Qt15ShortcutContextEPFbS1_S6_E_ZN12QKeySequenceD1Ev_ZN22QGuiApplicationPrivate4selfE_ZeqRK7QStringS1__ZN7QStringaSERKS__ZNK12QKeySequence8toStringENS_14SequenceFormatE_ZN8QVariantC1ERK7QString_ZNK8QVariant4typeEv_ZNK8QVariant5toIntEPb_ZN12QKeySequenceC1ENS_11StandardKeyE_ZNK8QVariant8toStringEv_ZN12QKeySequence10fromStringERK7QStringNS_14SequenceFormatE_ZN8QVariantD1Ev_ZNK4QUrleqERKS__ZN4QUrlaSERKS__ZNK5QIcon6isNullEv_ZN8QQmlFile19urlToLocalFileOrQrcERK4QUrl_ZN5QIconC1ERK7QString_ZNK7QString8toLatin1Ev_ZN15QtSharedPointer20ExternalRefCountData9getAndRefEPK7QObject_ZNK7QObject8propertyEPKc_ZNK8QVariant6toBoolEv_ZNK11QMetaObject13indexOfMethodEPKc_ZNK11QMetaObject6methodEi_ZN8QVariantC1Eb_ZN7QObject11setPropertyEPKcRK8QVariant_ZNK7QObject6senderEv_ZNK11QMetaObject13indexOfSignalEPKc_ZN7QObject7connectEPKS_RK11QMetaMethodS1_S4_N2Qt14ConnectionTypeE_ZN11QMetaObject10ConnectionD1Ev_ZN7QObject7connectEPKS_PKcS1_S3_N2Qt14ConnectionTypeE_ZNK14QMessageLogger7warningEv_ZN11QTextStreamlsERK7QString_ZN11QTextStreamlsEc_Zls6QDebugPK7QObject_ZN6QDebugD1Ev_ZN7QObject10disconnectEPKS_RK11QMetaMethodS1_S4__ZN7QObject10disconnectEPKS_PKcS1_S3___aeabi_dcmpge__aeabi_dadd__aeabi_d2iz__aeabi_dsub__aeabi_i2d_ZN5QFontC1Ev_ZN5QFontaSERKS__ZN9QListData11shared_nullE_ZN9QHashData11shared_nullE_ZN22QGuiApplicationPrivate14platform_themeE_ZNK5QFonteqERKS__ZN7QWindow10setVisibleEb_ZNK7QWindow15transientParentEv_ZN7QWindow19setMouseGrabEnabledEb_ZN7QWindow22setKeyboardGrabEnabledEb_ZN9QHashData11free_helperEPFvPNS_4NodeEE_ZN9QListData11detach_growEPii_ZN9QListData6insertEi_ZN9QHashData13detach_helperEPFvPNS_4NodeEPvEPFvS1_Eii__aeabi_uidivmod_ZN9QHashData12allocateNodeEi_ZN9QHashData6rehashEi_ZN9QListData6appendEv_ZN9QListData6detachEi__aeabi_dcmplt_ZN19QQuickRenderControl15renderWindowForEP12QQuickWindowP6QPoint_ZN15QGuiApplication15layoutDirectionEv_ZNK10QQuickItem5widthEv_ZNK10QQuickItem14mapRectToSceneERK6QRectF_ZN7QWindow11setPositionEii_ZNK7QWindow6screenEv_ZN15QGuiApplication13primaryScreenEv_ZN7QCursor3posEPK7QScreen_Z4qInfv_ZNK7QScreen17availableGeometryEv_ZNK7QWindow13mapFromGlobalERK6QPoint_ZN9QListData6removeEi_ZN9QListData5eraseEPPv_ZN5QFontD1Ev_ZN7QObject9setParentEPS__ZN5QIconC1ERKS__ZNK4QUrl7isEmptyEv_ZNK7QWindow6parentEv_ZNK10QQuickItem8positionEv_ZN7QWindow18setTransientParentEPS__ZN7QObject11deleteLaterEv_ZNK7QScreen8geometryEv_ZN7QWindow11setGeometryEiiii_ZNK10QQuickItem6heightEv__aeabi_dcmpgt_ZNK12QQuickWindow11contentItemEv_ZNK10QQuickItem9mapToItemEPKS_RK7QPointF_ZNK7QWindow11mapToGlobalERK6QPoint_ZNK12QQuickWindow16mouseGrabberItemEv_ZN10QQuickItem11ungrabMouseEv_ZN7QWindow4showEv_ZN12QQuickWindow16staticMetaObjectE_ZN12QQuickWindowC2EP7QWindow_ZN7QWindow8setFlagsE6QFlagsIN2Qt10WindowTypeEE_ZN16QCoreApplication4selfE_ZN10QQuickItem13setParentItemEPS__ZN7QWindow5closeEv_ZN11QMouseEventC1EN6QEvent4TypeERK7QPointFN2Qt11MouseButtonE6QFlagsIS6_ES7_INS5_16KeyboardModifierEE_ZN16QCoreApplication14notifyInternalEP7QObjectP6QEvent_ZN11QMouseEventD1Ev_ZNK5QRect8containsERK6QPointb_ZN12QQuickWindow14mouseMoveEventEP11QMouseEvent_ZN12QQuickWindow15mousePressEventEP11QMouseEvent_ZN12QQuickWindow17mouseReleaseEventEP11QMouseEvent_ZNK7QWindow9isExposedEv_ZN22QWindowSystemInterface21handleWindowActivatedEP7QWindowN2Qt11FocusReasonE_ZN12QQuickWindow11exposeEventEP12QExposeEvent_ZN12QQuickWindow9hideEventEP10QHideEvent_ZN8QVariantC1ERK5QDate_ZN18QAbstractListModelC2EP7QObject_ZN7QLocaleC1ERKS__ZNK5QDate6daysToERKS__ZNK5QDate10weekNumberEPi_ZN10QArrayData8allocateEjjj6QFlagsINS_16AllocationOptionEE__aeabi_idivmod_ZN18QAbstractItemModel15beginResetModelEv_ZNK5QDate4yearEv_ZNK5QDate5monthEv_ZN5QDateC1Eiii_ZNK5QDate9dayOfWeekEv_ZNK7QLocale14firstDayOfWeekEv_ZNK5QDate7addDaysEx_ZN18QAbstractItemModel11dataChangedERK11QModelIndexS2_RK7QVectorIiE_ZN18QAbstractItemModel13endResetModelEv_ZNK7QLocaleneERKS__ZN7QLocaleaSERKS__ZN10QValidatorC2EP7QObject_ZN16QQmlParserStatusC2Ev_ZN16QDoubleValidatorC1EP7QObject_ZN16QDoubleValidator6setTopEd_ZN16QDoubleValidator9setBottomEd_ZN16QDoubleValidator11setDecimalsEi_ZN16QDoubleValidator11setNotationENS_8NotationE_ZN7QLocale16setNumberOptionsE6QFlagsINS_12NumberOptionEE_ZN10QValidator9setLocaleERK7QLocale__aeabi_dcmpeq_ZN7QString6numberEdci_ZNK7QString8toDoubleEPb_ZNK10QValidator6localeEv_ZNK7QLocale8toStringEdci_ZNK7QLocale14groupSeparatorEv_ZN7QString6removeE5QCharN2Qt15CaseSensitivityE_ZN16QDoubleValidatorD1Ev_ZN16QQmlParserStatusD2Ev_ZN10QValidatorD2Ev__aeabi_dcmple_ZNK7QString10startsWithERKS_N2Qt15CaseSensitivityE_ZNK7QString8endsWithERKS_N2Qt15CaseSensitivityE_ZNK7QString3midEii_ZNK16QDoubleValidator8validateER7QStringRi_ZNK7QLocale8toDoubleERK7QStringPb_ZNK7QLocale12decimalPointEv_ZN7QString6insertEiPK5QChari__aeabi_dmul__aeabi_ddiv_ZTVN10__cxxabiv117__class_type_infoE__cxa_guard_acquire__cxa_guard_release__aeabi_atexit_ZN5QDate11currentDateEv_ZN16QtAndroidPrivate17androidSdkVersionEv_ZN7QString11reallocDataEjb_ZN4QUrl13fromLocalFileERK7QString_Z14qt_defaultDpiXv_ZN15QGuiApplication10styleHintsEv_ZNK11QStyleHints17startDragDistanceEv_Z7qgetenvPKc_ZN9QFileInfoC1ERK7QString_ZNK9QFileInfo4pathEv_ZNK9QFileInfo10isRelativeEv_ZNK10QQmlEngine14importPathListEv_ZN4QDirC1ERK7QString_ZNK4QDir6existsERK7QString_ZNK4QDir12absolutePathEv_ZN4QDirD1Ev_ZNK9QFileInfo12absolutePathEv_ZN9QFileInfoD1Ev_ZNK9QFileInfo8fileNameEv_ZN7QString6removeEii_ZNK4QDir6existsEv_ZNK4QDir9entryListE6QFlagsINS_6FilterEES0_INS_8SortFlagEE_ZN8QLibrary9isLibraryERK7QString_ZNK4QDir16absoluteFilePathERK7QString_ZN8QLibraryC1ERK7QStringP7QObject_ZN8QLibrary7resolveEPKc_ZN7QString20fromLocal8Bit_helperEPKci_ZN8QLibraryD1Ev_ZN10QQuickItemD2Ev_ZN10QQuickItemC2EPS__Z21qRegisterResourceDataiPKhS0_S0__Z23qUnregisterResourceDataiPKhS0_S0__ZNK11QObjectData17dynamicMetaObjectEvqt_plugin_query_metadataqt_plugin_instance_ZN19QQmlExtensionPluginC2EP7QObject_ZN11QTranslatorC1EP7QObjectstrcmp_ZN19QQmlExtensionPlugin11qt_metacastEPKc_ZN19QQmlExtensionPlugin11qt_metacallEN11QMetaObject4CallEiPPv_ZN11QTranslatorD1Ev_ZN19QQmlExtensionPluginD2Ev_ZN19QQmlExtensionPlugin16staticMetaObjectE_ZTI19QQmlExtensionPlugin_ZN11QMetaObject8activateEP7QObjectPKS_iPPv_ZN8QVariantC1ERKS__ZSt4swapIN8QVariant7PrivateEEvRT_S3__ZN7QObject11qt_metacastEPKc_ZN7QObject11qt_metacallEN11QMetaObject4CallEiPPv_ZNK5QIconcv8QVariantEv_ZN7QObject16staticMetaObjectE_ZTI7QObject_ZN5QFontC1ERKS__ZN12QQuickWindow11qt_metacastEPKc_ZN12QQuickWindow11qt_metacallEN11QMetaObject4CallEiPPv_ZTI12QQuickWindow_ZN18QAbstractListModel11qt_metacastEPKc_ZN18QAbstractListModel11qt_metacallEN11QMetaObject4CallEiPPv_ZN18QAbstractListModel16staticMetaObjectE_ZTI18QAbstractListModel_ZN10QValidator11qt_metacastEPKc_ZN10QValidator11qt_metacallEN11QMetaObject4CallEiPPv_ZN10QValidator16staticMetaObjectE_ZTVN10__cxxabiv121__vmi_class_type_infoE_ZTI10QValidator_ZTI16QQmlParserStatus_ZN4QUrlaSERK7QString_ZN10QQuickItem11qt_metacastEPKc_ZN10QQuickItem11qt_metacallEN11QMetaObject4CallEiPPv_ZTI10QQuickItem_edata__bss_start_endlibQt5Quick.solibQt5Gui.solibQt5Qml.solibQt5Network.solibQt5Core.solibGLESv2.solibgnustl_shared.soliblog.solibz.solibdl.solibstdc++.solibm.solibc.so/work/build/______________________________PADDING______________________________/libvFn^<HI ^)n~X,AxL>fmaa.Kx"4V/@2hb1[}H\T37Tuz:0&QuU!Y"rMy;t) dcYP\jE}+:g|%sgJl%X]Oo';|5`i$9'GpSJBRCZ9ky_2{ (- /*<3 R[ ejI!,Pid~]hC+&lvsDoV>?`Ezcwpf_mG6O8W SBb = $qN0*-1#5k6U7ZtLKA= eFrQ#q@W .{w?N48D(M            , 8 D P \ h t               , 0 @ L X \ d h p t |                           , 0 4 8 < @ D d h l p t x                        0 4 8 D H L P T X |        , < @ D H L P t x |                h                   $ ( , 0 4 8 X \ ` d h l p t x |                ( , 4 L P X \ ` p |                        , < @ D H L P T t x |                     0 4 8 < @ D H L P T \ ` d t                           $ ( , 0 P T X \ h t x                        $ ( , 0 4 8 < D H L P T X x |                             $ ( , 0 4 8 ` l                       @ L d p t |                  , 0 4 D H L P T X        , 0 4 8 < @ d t x |                     $ 4 8 < @ D H l p t x |                , 0 4 D T X \ ` d h      4 8 < L P T X \ `             < @ D H L P T \ ` d l p t x |                                X %h (H ?T ?` ?l ?x ? ? ? ? ? ? ? ? ? ? ? ?( ? ? ?p ?d ?p ?| ? ? ? ? ? ? ?` ?  ? ? ?@ ? ? ?P @ A B C  DH E E E E` E EX E E E E E@ E E E EX E E E E8 E E E` E E@ E  E E` EH E EP E E Ep Eh E EL F F F Fd F F\ F F F F FD F F F F\ F F F F< F F Fd F FD F$ F Fd FL F FT F F Ft Fl F FP G G G  Gh G G` G G G G GH G G G G` G G  G G@ G G Gh G GH G( G Gh GP G GX G G Gx Gp G GT H H H$ Hl H Hd H H H H HL H H H Hd H H$ H HD H H  Hl H HL H, H  Hl HT H H\ H H  H| Ht H HX I I I( Ip I Ih I I I I IP I I I Ih I I( I IH I I Ip I IP I0 I Ip IX I I` I I I Ix I I\ J J J, Jt J Jl J J J J JT J J J Jl J J, J JL J J Jt J JT J4 J Jt J\ J Jd J J J J| J J| K K K\ K KT K K K K< K K K K K K4 K K K\ K K K\ KD K KL K K Kd K K Lx L M| M N N O O P P Q Q R R S S T T U U V V W W X X Y Y Z Z [ [ \ \ ] ] ^ ^ _ _ ` ` a a b b c c d d e e f f$ g g( h h0 i i4 j j kl k l l m m n n$ o o( p p, q q0 r r4 s s8 t t< u u@ v vD w wH x xL y yP z zT { {X | |\ } }` ~ ~d  l  p  t  x  |                      $  (  <   X 8  \ <  d D  h H  p P  t T  x X  | \   `   h $  l 0  x 8   <   @   D   H   d   h   l   (          O } ~ p X       0  0  x l   h (       (  p    H     $ ( , 0 4  8  <  @  D  H L P T X \ ` d h l p t x |      ! " # $ & ' ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > A B C D  E F G H I  J$ K( L, M0 N4 O8 P< Q@ RD SH TL UP VT WX X\ Y` Zd [h \l ]p ^t _x `| a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~              $ ( , 0 4 8 < @ D H L P T X \ ` d h l p t x |                                            $ ( , 0 4 8 < @ D H L P T X \ ` d h l p t x |                                                 $ ( , 0 4 8 < @ D H L P T X \  ` !d "h #l $p %t 'x (| ) * + , & - . / 0 1 2 3 4 5 6 7 8 9 : < = ; > ? @ A B C D F G H I J E K  L M N P Q  R$ S( T, U0 V4 W8 X< Y@ ZD [H \L ]P ^T _X `\ a` bd ch dl ep ft gx h| i j k l m n o p q r s v w x y z { |               -` Əʌ`ƏʌXƏʌPƏʌHƏʌ@Əʌ8Əʌ0Əʌ(Əʌ ƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌxƏʌpƏʌhƏʌ`ƏʌXƏʌPƏʌHƏʌ@Əʌ8Əʌ0Əʌ(Əʌ ƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌxƏʌpƏʌhƏʌ`ƏʌXƏʌPƏʌHƏʌ@Əʌ8Əʌ0Əʌ(Əʌ ƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌxƏʌpƏʌhƏʌ`ƏʌXƏʌPƏʌHƏʌ@Əʌ8Əʌ0Əʌ(Əʌ ƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌxƏʌpƏʌhƏʌ`ƏʌXƏʌPƏʌHƏʌ@Əʌ8Əʌ0Əʌ(Əʌ ƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌxƏʌpƏʌhƏʌ`ƏʌXƏʌPƏʌHƏʌ@Əʌ8Əʌ0Əʌ(Əʌ ƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌxƏʌpƏʌhƏʌ`ƏʌXƏʌPƏʌHƏʌ@Əʌ8Əʌ0Əʌ(Əʌ ƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌxƏʌpƏʌhƏʌ`ƏʌXƏʌPƏʌHƏʌ@Əʌ8Əʌ0Əʌ(Əʌ ƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌxƏʌpƏʌhƏʌ`ƏʌXƏʌPƏʌHƏʌ@Əʌ8Əʌ0Əʌ(Əʌ ƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌxƏʌpƏʌhƏʌ`ƏʌXƏʌPƏʌHƏʌ@Əʌ8Əʌ0Əʌ(Əʌ ƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌxƏʌpƏʌhƏʌ`ƏʌXƏʌPƏʌHƏʌ@Əʌ8Əʌ0Əʌ(Əʌ ƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌxƏʌpƏʌhƏʌ`ƏʌXƏʌPƏʌHƏʌ@Əʌ8Əʌ0Əʌ(Əʌ ƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌƏʌꌁ @-A@  I ` P@-0/  u, /$/(//@/Q/P00///Q/P00///Q/P00///Q/P00///Q/P00///Q/P00///Q/P00///Q/P00///Q/P00///Q/P00///Q/P00///Q/P00///Q/P00///Q/P00///Q/P00///Q/P00///Q/P00//Q/P00//Q/P00///Q/P00//@-@ 00c 0 b ЍA0@-00@0v @-@0@-00@0v @-@v0@-00@0s@v @-@e[18@-Pg@ =8@-_@30@-00@07,u @-@B$0@-0 0@ 0Cxu @@-@-@0@-00@01b @-@,0@-0 0@ 0!Dg @@-@@$0@-00@0 _d @-@$0@-00@0nd @-@$0@-00@0~b @-@$0@-00@07a @-@$0@-00@0&xe @-@$0@-00@0.%d @-@,0@-0 P0@ 04 d @@-@x@,0@-0 0@ 0}o=b @@-@_@$0@-00@0f5@b @-@J$0@-00@0Sh+_ @-@7$0@-00@0@d(_ @-@$@-@P &00"@@-@P 00@@-@P 00 @@-@P 00@@-@P 00@@-@P 00@@-@P 00@@-@P 00@@-@P 00@@-@P 00@@-@P 00@@-@P 00@@-@P 00@@-@P 00@@-@P 00@@-@P 00}@@-@P v00r@@-@P k00g@@-@P `00\@@-@P U00Q@@-@P -00 0 0_ @-@P 8 0000x] 8@-PP  4@ ,PPP PPPPP 88@-PP  @ PPP PPPPP 88@-PP  @ PPP PPPPP 88@-PP  @ PPP PPPPP 88@-PP  @ PPP PPPPP 88@-PP  @ PPP PPPPP 88@-PP  @ PPP PPPPP 88@-PP  @ PPP PPPPP 88@-PP  t@ lPPP PPPPP 88@-PP  \@ TPPP PPPPP 88@-PP  D@ <PPP PPPPP 88@-PP  ,@ $PPP PPPPP 88@-PP  @ PPP PPPPP 88@-PP  @ PPP PPPPP 88@-PP  @ PPP PPPPP 88@-PP  @ PPP PPPPP 88@-PP  @ PPP PPPPP 88@-PP  @ PPP PPPPP 8Q0@- P @P P   0Q0@- P @P P   0Q0@- P @P P   0Q0@- P @P P   0Q0@- P @P P   0Q0@- P @P P   0Q0@- P @P P   0Q0@- P @P P   0Q0@- P @P P   0Q0@- P @P P   0Q0@- P @P P   0Q0@- P @P P   0Q0@- P @P P   0Q0@- P @P P   0Q0@- P @P P   0Q0@- P @P P   0Q0@- P @P P   0Q0@- P @P P   0@-@P 800 0 0O @-@P U.00 P0 0P @-@P [! 0000,Q @-@P 2 0000(O @-@P } 0000tP @-@P ## 0000 M @-@P # 0000L @-@P + 0000HM @-@P : 0000L @-@P y 0000K @-@P  0000K @-@P Q00 000 0000DM 8@-@P p(P8 5/P8p@-@P p ,` P@6/PppD0@-00@$0 P  \ @-@$0@-00@0\K @-@@-<0@000 P X[ @-@$0@-00@0pJ @-@@-@P @-0 R !\ 0 Q1@-@jP A-/ MpP0 0 @ P` `80 0 00 Ѝs@-@`V   PЍp8@-0Q@PwP000008@-@0P j8@-@Q@P]P00@008@-@0P PO-,bEM081`00 12x00>P-p 7 *@ 帐 @  ' " >$P  p@(pP 0 P0(!00 !1 0 @ , 0 000 0 0 @00<g0L00\0`0d0@T@X@DH@ rV !0R EߍX xX ,NpPt,O-,bEM081`00 12x00Pp *@ 帐 @ $   >$P  p@(pP 0 P0|(!00 !1 0 @q,k g0 000 0 0 @[0U0<0L00\0`0d0@T@X@DHH@`  !0R >Eߍ8V V Kl,L0@-03/A-QM`pp@T P @ @t T0XH0HH 00 00 000 0ЍZ I A-QM`pp@T P @@t T0XC0 008088 0 000 0ЍY HDR O-aAM` 00 0phP pp0* @ p00@00T z u >p  P@P lp $ P ( p @c w\ X 0 Q  , D@H@< L P T 048F@^0 0R ;AߍQ Q xG$P s@-``PUp@d0P00$$'*(  PP ЍpV O O 0@-QM@Pp Ѝ0@L0UC_0 P00(0000 0 0(0 0Ѝ04O @O-bEM081`00 11x00Pp4 *@ 帐 @ ?p   >$P  p@(pP 0 P0 , 0 000 0 0 @0z0<0L00\0`0d0@T@X@DHm@  !0R cEߍN N 4Ds@-``P#Up@=d0P00$)JM*N  P P0ЍpS L hL 0@-QM@Pp Ѝ0@+L0UC_0 P00(0000 0 0(0 0 Ѝ0K pO- bEM0`0 1100Pxp\ *@ 帐 @ g   >$P  p@(pP $ 4 !0 8  P0 , 0 000 0 0 @000<00@L00\0`0d0T@X@DH@ " !0R Eߍ@K 8K @ 8HI s@-``PEUp@_d0P00$Klo*p  P,PRЍpO I H 0@-QM@Pp Ѝ0@ML0UC_0 P00(0000 0 0(0 0.Ѝ00H xO-QM01qP 00p0 @@ } HH0* ` H00`00   >  @`@(    4p( pH0   $ 80@d H 0R ЍG G T=s@-``PUp@d0P00$*  PtPЍp$M 0F F 0@-QM@Pp Ѝ0@L0UC_0 P00(0000 0 0(0 0vЍ0TE O- bEM0`0 1100SPBxp K *@ 帐 @  ; 6 >$P  p@(pP , 4 !0 8  P0$ , 0 000 0 0 @ 000<00@L00\0`0d0T@X@DH@ p !0R EߍD D |:X8hC s@-``PUp@d0P00$*  PPЍpxI B B 0@-QM@Pp Ѝ0@L0UC_0 P00(0000 0 0(0 0Ѝ0A hO- bEM0`0 1100uPdxp m *@ 帐 @  ] X >$P  p@(pP N 4 !0 8  P0F ,? ;0 000 0 0 @/0)00<00@L00\0`0d0T@X@DH@5  !0R EߍpA tA 7T? A-QM`pp@T P @@t T0XC0 008088 0 000 0Ѝ F l5> $A-QM`pp@T P @@t T0XH0HH 00 00 000 0Ѝ E 4$0A-QM`pp@TT P @oE@t wT0XC0 008088 0 000 0WЍ4D 3< p  P@P $ P ( p @ w  0   , D@H@< L P T 048@0vZ 0R Aߍd< < 1x; s@-``PUp@d0P00$*  PPЍphA : P: 0@-QM@Pp Ѝ0@L0UC_0 P00(0000 0 0(0 0Ѝ09 O- bEM0`0 1100cPRxp [ *@ 帐 @  K F >$P  p@(pP <( 4 !0 8  P04 ,- )0 000 0 0 @000<00@L00\0`0d0T@X@DH @#  !0R Eߍ(9 89 .HX7 s@-``PUp@d0P00$*  PPЍp= 7 6 0@-QM@Pp Ѝ0@L0UC_0 P00(0000 0 0(0 0Ѝ0406 O- b REM`00P 1 pvx  *@  帐 @  o j >(p   0@P a4!PP$P 08  400X ,Q M0 0 0 0 0 0 @@0:00<00HD00T@X@L00\0`0d0@-@E  !0R #Eߍ5 5 L+ ||44 s@-``PUp@d0P00$ *   PPЍpL: 3 `3 0@-QM@Pp Ѝ0@L0UC_0 P00(0000 0 0(0 0Ѝ0耺2 $DO-QM01qP 00p0@@  HH0* ` H00`00#   >  @`@(    4p( pH0   $r 8kn0@ 0R eЍ02 \2 's@-``P)Up@Cd0P00$/PS*T  PP6Ѝp7 0 0 0@-QM@Pp Ѝ0@1L0UC_0 P00(0000 0 0(0 0Ѝ0D/ ȷtO- bEM0`0 1100Pxpb *@ 帐 @ m   >$P  p@(pP 0 4 !0 8  P0 , 0 000 0 0 @000<00@L00\0`0d0T@X@DH@ ( !0R EߍX/ t/ $p0@- A-QM`pp@FT Pt @a7@t iT0XC0 008088 0 000 0IЍ4 #, 4dA-QM`pp@ T P8 @%@t -T0XH0HH 00 00 000 0 Ѝ3 "HO-aAM` 00 0phP\ pp0* @ p00@00fT   >p  P@P $ P ( p @ ;  l   , D@H@< L P T 048@0, 0R Aߍ<+ p+ ̼) A-QM`pp@NT P| @i?@t qT0XC0 008088 0 000 0QЍ80 ( xdA-QM`pp@T P@ @-@t 5T0XH0HH 00 00 000 0Ѝ/ HA-QM`pp@T P @@t T0XH0HH 00 00 000 0ЍT. IO-qAM (1ap 00`0Ph( pp0* @ p0 0@002L   >P   @P p @`   r y , 8  04< h H` D L P T j@0 0R _Aߍd& & ԮA-QM`pp@T PK @8@t @T0XH0HH 00 00 000 0 ЍL+ lTO-aAM` 00 0phPo pp0* @ p00@00yX   >p  P@P ` $ P ( p @   l   , D@H@<  L P T 048@0>" 0R Aߍ# # 4" s@-``PeUp@d0P00$k*  PLPrЍp( ! p! 0@-QM@Pp Ѝ0@mL0UC_0 P00(0000 0 0(0 0NЍ0t Ȩ8O- bEM0`0 1100+Pxp # *@ 帐 @    >$P  p@(pP , 4 !0 8  P0 , 0 000 0 0 @000<00@L00\0`0d0T@X@DH@ dH !0R EߍH p `0 s@-``PUp@d0P00$*  PnPЍp,% D  0@-QM@Pp Ѝ0@L0UC_0 P00(0000 0 0(0 0pЍ0ܣh HO- bEM0`0 1100MP$P  p@(pP & 4 !0 8  P0 , 0 000 0 0 @000<00@L00\0`0d0T@X@DH@ j !0R Eߍ  d P s@-``PUp@d0P00$*  PPЍp!   0@-QM@Pp Ѝ0@L0UC_0 P00(0000 0 0(0 0Ѝ0$ ԩO- bEM0`0 1100oP^xp g *@ 帐 @  W R >$P  p@(pP H$ 4 !0 8  P0@ ,9 50 000 0 0 @)0#00<00@L00\0`0d0T@X@DH@/  !0R EߍX  Dph A-QM`pp@T P @@t T0XC0 008088 0 000 0Ѝ I ĜO-aAM` 00 0phP pp0* @ p00@00"X   >p  P@PP }!$P P( p @u wn j  c  , D@H@<  L P T 048W@o0 0R LAߍ, t  @-M@PMM\ `p FGECD@D@$Ѝv G-B2 M@pP 0d2 0P2 0<2 0(2 02 02 0*1001 01001 01 0$1 0;1 0%x  @$t `L1 000oP 100 P` 0 p0 0` 0@ @Z  Ѝ! "            {    @C@-@`pP D{ Pc f ЍO-TMP`$'2 0-2 02 0p*P@^`2$ 0@<<2 0(&(I2 0<@+'#;1 0<@,+-1 0<@* 10`>0x100p10 0h10$0,  -00  4 08p$    0000P 0<00@0D0H0$0L00D00@PH0 0L0 0 `VTЍvgzcYlQaC[0)|@:p@-P@U( Q QP#@PxP T 0 @ T T  `P P @Pp\ 8@-P@U Q QP0 @ @<P @TT P8 8@-@`0`P 0P00PP000000 0$(,P80 @-` P(@PPl0 00xP 80 0(0x000Ѝp P p@-P@`{Pyp@&p R/&@-0@S &0S @&0\/0S/v&p@-(`P @6/Pp@-@p@-(`P @@6/Pp7@-@P $.. Ѝ0A- M`p#P@   0 0  P 0 0 q$PP$P0 00xP X0 0H0x000& Ѝ | s@- `@PP00S P% P  0 0% ЍpA-p@PPP`   0 0%%Ѝs@-,`P@kP i@$8%Ѝp@-@P PP W0S 0S //p@-0@`S 0S PU P p@D%%p@-@ MT+ 0uS'0S! 0 00@ 0    0:0\  P !v@ Ѝp@-p@PP( P lU` `0`PS V P PP ` P myP /% Ѝ@-0`M00Pp0@``#`,($<  Ѝ  @-@0(@-@TP @ 0@-PM 4  PQ P ~Ѝ0P7@-@yd000000 00&@P&  0 000 Ѝ0 $       /@-pMPW@ W  eX c :T@  X( V -Q&Ѝ(8@-PN@P 8@8C-a,MP`@`F0S3 003/8pp 003/  ` 0p 00p%&`1`!00 0SHSPD @00 01p 0$0 `P5 `0S s  @9/PX 0S 0(` 0&  ,ЍH C-0P@S>` ``F0S 003/p 003/    0P  0 0 Ѝ /Q/0 00 0 0/R/0`S/ @-0P4tp@- 0@PP  H0p<0` 0 0y{p??0 0c/A- @a@ 81`P0 h001 p0,0 104P@P000800%&DPHPLPPPTPY0 0 (0)$0`0 03/P( 0 0( 0P (@ 2/0(03/P -ЍT@-@00xP P (8 2/T8@-@P! (P T 2/8@8@-D @Q D(P 0X03/@v%p@-h`P@P (P 0\03/p%/&/8 R/84%<  ,   /8 h 8@-@0@S0@P P  U @@8L R/L%P R/P %@-H0@S P R00000 0@-@HP 0@0@$@-H@T |P@@-(0S h 2/P @Q@-@HP [@P@HPQHLPt H $HP/V@-P @PG-0@`0P,Tp ppW,0\ pptPP $@`@DU $00A-@`pP,TuT,0@   MP $gPP@p@-0@P40`3/(P v  0l03/ (0003/40040p8@-PQ@ u!8p@-@RP`3O/T0 @A@T P@ U`@pp@-@p`BT (0P0P0 P@-@P@-p P@pPqQW `V PE@C-qM@Pp$`P$0 R5 P!  \$0P $0   L  P$0``aP 0P0 M Q.`P P =P1Ѝs@-@0SLPL0P0 0`^P`Ѝpp@-0`QR@ @0R@$@PQ 0S  T Q pA-@`pPP 0H000 00  @-@P`  0S   Q 0  #  Ѝp@-0#@p``a0P 0   ! !P0  1 Ѝs@-0@`0PS  Ѝp@" [00ЍpA- R@P- T0,pS 00S `0&0X    bP P  )`"Ѝ@-P,p`@ s@-P4`@$K PЍpp@-@$`wP p@47@-0@P0S E Ѝ0@ 00 Ѝ0A-R"(M0 P@P h2 ,p P  (6 `l2 00010(P`$0`%0` 0 0S    Q  00403/T00T0 0` P00   Q1  `R "0  !  1 00$00 S `$0S PP   E$0000$0P(ЍXX`@-0P@s ,0   c`p$``{V$0 ```,``nV,0l ``FP 00$0  @00,0   `7@-PQ@40UT0S,0 PP1S,9P,0  $0 PP 0v0 s,0 L  $0      Ѝ0O-P@tMTP0 8P8@<@(0PSn &[!a@P %S Ef&P' PDN@LP`p 0 P@P9!7e@PP p<)@8P% 0 0(0`03/(@0dpr`oPli@``YDP`FP@H`LP0 0 @ 7/jP@% H@P H@0P5/H  LH YH@   $1$!P0P@0PH 00 0( H00 0( H0%@8P 0!`&@<P0  HH003/tЍ A-8Mp0@0 0P@T P`dV` $00? 0 0?00T  0000 0cJ0@PcD 0"# 0B8Ѝ0(@-@P @_C-@RPpOTP` @@A@T MJY`Q@eD@-PMQ* P,` @$ 8pp `&$ `v p Ѝ@-@(,P @H@- @pP P.5U)0 Rppq0`   P!0   aV @-P@P }` $0` @`@aAV p W@D@@ ,0  !1R 3Q@@ Ѝp@-0P R``as0@  Pp@p@-@MQ9 0403/000S P0%0vpW `0403/M$L8 ,P K`PV400C40SIЍ8@-@0  Q0 R 188@-0P@00,0,0 0R 0P 0403/P 0@03/(P 003/0(0h 0,,P,[I8@-@07@-h00 @000 0T0,P,0 0R 0P 003/040 Ѝ0@-0P @8@-@P(P P 2/8@G8@-(`@V 0PHp0@03/7/U ЍR/0`S/ "@-0 P0 0c@-00@PD 0 R.`! !` a90P  0    L  yP0   1 P"P P  0(00 3/Ѝp@-0PC@UP% 0 bUQ q0`  q0Pl0 PP@-@U,00000000 0004  $    /< / Q/P@- Q  P 0<03/@-@P"$0@-00@0@-@A- 0@PPQ9 S]d20003/P T 0<03/00 RS r r0p  !  100 00 SN ` 0S ( 0003/ p0 00U 00 R9 r E0p  !  100 00 S4 P 003/0 0 000S5 2 0   ! a 0   !{` 0S (0403/ p0 00Ѝ8@-P@Q  R (PP8 4 2/(0S$0/@-P`U 808 @0000 0gbЍpo@-0@P03/@@-$@ @-@$@-$@s@-P@`P00 (Q WЍps@-P@`P00 (Q Ѝp@-( @R0P03/@Ep@-@Pp0``0000U P0000 0 800003/P 0P03/p0S0////8@-P@U (0S 0S fP (0803/8@- @R P 0D03/@0S 0S //@- @,000P0 0H03/A-@810 P000Gpb1!`0$p00 `xs0 p䀟0$H0 kpd$ 0``[ pp$0`VpP$ 0`LG$ 0p`C>Ѝ@-0P03/$Z$$>p@-P@U 0``6/Gp@Z@-`@V 0Pmp@-0`QR@ @0R@$@PQ 0S  T Q pC-@XX1M 00Sm@-$@P`P pP @@-@v0000訦Q/1/A-`1p00 P001 !1@P0A 0$0(p P1 0 Q! @P0 c^ 0 ZU 0 QL 0 HCx 0 ?:X 0 61Ѝh?X@ƣx/G-(@QP cЄ vP@ P 0nf00H0P`p 0 077@P$ 02P(0AS RЍ ( !@/p@-`@P#P 00 >(0S !p@p/p@-`@P$P 00 *(0S !p@pH/@-H0@Q 0(0S !@~/p@-`@PPAp@ p@-@ p@- P@`3P1p@p@-@$p@-$P@`Pp@p@-@!{ 0@8@-@!w 0@.C-M p`P@f00H0 00 @$-$'XVЍ@-@!@-P!`p UY  X 3 ЍH0@-0 P0@ 00H$% #EF$@@-@@O-@ M`R p 00S 0R~  $P $00S   P 0  0P$0 b0 0c 0 000c 0" %0  * Q 0 0000IS800  @PU0S( Y`  0P $PS 0P #PF#PR$PL J  B0P  U 0 A0P} UPHPPuP3UR # 0  0 0 000T [ 0 0@:T ЍO-$ 0P@PQ$0b `p 0 P 0P 0  BP   0<P@@mB 0000/ԍ0@-00@0~踍@-<0@000P 003/00q@-@cO-`؁ 00 P@0  A p`Pp` 0@   0 0  0 ЍG-@0a p` 0 0AP 0 v `p0p 0 0`Ѝ D  /ጋ0 !"## !@00@-P@0B@00X@O-,M!@00a`Sa@A!B< 0QP 0. 0x"s 0>СP+  0[P 0 TP 0 0 LP00v 0BP 0``8P `c 0  0:PV 0/ 0 0% 0 0P 0 P@ 0 P@ P P@  0P  0 0`@ P 0 a 0pPPq 0P ,ЍO-@$MPb 0AP@ B` 0P`p 0@ @P@AA 0g 0`P4b 0 0SТ! P  ЁO 0 0@@P 0  ~P @ P 0 1 00~ 0qP $Ѝ?@-@40H000 D@  t8@-P@0P0008踓0/0/0/@-@+ 0@#0/0/@-@O 0@P#MM-D" `p @P 0P 0Z P 0ЍMZЍO-c@P !| 0 #@a[  0xZ!  0 ЍO Ѝ7@-A@ Ѝ07@-@  0 Ѝ0O-M@P!>c"8 0% | g 0A#P`pb[  0Z"  # ЍO[Ѝ7@-B@ Ѝ0A-`ApfP@P` 0ЍO-@P0 "P@PP '` p  0B  0 ЍG-`@P#P `0C pH 0 ЍG-@P#P`p 0C  0 Ѝp@-@P@0 Q  00@0f# 0p@p0@/0!0"G-p@ ,P(`0Pl l0P !} @0 0  0k 0G-q=$@G-p@ ,P(`0VPl l0P s!O @0 0 e 0C 0Gg-q=$@00 r  /00 r  /̒p@-p@@0PrP ` 000i$$  fp訒Xԑ@p@-p@@0POP `H 000F((  C p/5H@-@ዿ000003 ! !@0@-@ SR ARAT@ 0@0@-@!UT`p @ Tp !@!T @@- ASR`p ARp@ Tp !@!R @@-@ P Е@-0@ 0 Q  R o7@-P8@e$ PT Ѝ0肇@-@ R, &@-`Q@p   P20S   Ѝ8@-@P""0S 8///@-@gp@-P@`Pp@p@-@ Qp@- P@`sPqp@ps@-P @`904 R0 1R &0 0/ 0 0ሾЍpA-@PJpW    ῾ᙾ Ѝ@- 0X@@-@-`P@p PpPqQW PEu!@-@`P00 P p`PpaQq`U U P`O-4M P@ pP _Pb ` 0  !$  1(00,0X10 0,0S7 $(0Z3 ,0S(  ` νs o0P m 0 0h0c0,0$00$0,00#,0QYT  0 0II4Ѝ+O-TMP\040<@000 400 0,p/,00S,0< <0, (`( 0 (0  6< 0 <0}P    0P90$< < [  <  < Q0 @0D0H02< 0L0p$ XR 2 .c 0 ,0  !0  14008010010080SC 040Z? 80S5 P.    P 0/P ;/P  导 ( 0 (0 0S[zx08000000800#80Ap `p0 p`啾ᐾd 0 p`勾ᆾ .TЍHӀHyel~~}}}O-ᒾ 0P@ᄾPQ$0п `p 0v P 0oP 0  ᰾P   0ᪿP@@mB$0@-0 0@ 0}@@-@@@-@T00 0 0 0!!""##$$0 %0X0|4@0#0#0#0#!//!//"//"//A-A`pGP`p A0>#P@PPCA/A-B`p&P`p B0#P@PPCA/@-@$ɽ 0@/@-@$ỽ 0@/p@-`@P%ľPEp@p/X/X R/XO-pT`Q Q@吽 5Ծ 0@P|P8C 0CؽVtJ@-((00i.>C 0C̽t@-@/0S /4f/D@-@.@-`QP@ ᱻ@0PS T`pP  7/P/PP oP  Ѝ8@-@@PP P PP  00 R  R 0SP@jd0 0 `0 0dD400P P8pyx$ydxx8@-@QP (IP 8@F88xE00@-0 `0@ 0 >?d@@-@@0S /d@- 0 00 !Ѝc@-$000 0 0Ѝc  0 c@-00 0 Ѝlc  0Dc  0,c  0c@-00 0 Ѝb  0ۼb  0ռb  0ϼb0@-QM@B R񏐤 )*+,.00 ᬼ  |}{0P%+  pnlj0d Qb PQlPQLPQ,PQ PQPQPQPQPQ lPQ LP0S 00Ѝ0Pdxlxl`T`THA- @P"sc 0p100#<@0spc  ` Ѝ8@-@QP (߻P 8@88LA-MP`pD@PV T  0 V T0 @DVI` T񏐲  ()*.1p  0 0p 0 0zp⪻,-0  0 l000S00zvpkVlV, Tf b Y_VSPLHD@=V&T T T50`00&y0`p0 0哷)g0`00&s]VT0   V V V V V T0 @DЍk\0S /[  0[QR00. Q/$ P/0S/0/8@-@QP (ĺP 8@Ӻ88(@-$MpP`ͺ@PAUT  0 UT0 @D/UT` T' # P00UT0U U U U U U UT0 @D$Ѝ/@0S ^/Y  0mY  0gY  0aY  0[Y  0UtY  0O\Y  0IDY  0C,Y  0=Y8@-PP  @ PPP PPPPP 8Q0@- P @P P   0p@-`M`PUp@ `0`` 00 0000H0 0 PPPЍpkcT@-Q@PR !"#$%&'()*-01478@QRUY\]bgFJNRVZ^bfWs0.0/0T03/0j70`& 0`p0&  @0S@0  ]0a} 0 00 0q QR@ Rb00S00SZ)\ QQ lPQPPQ0PQPQPQPQPQPQpP0S00 QR@ 00 Ѝ 8@-@QP ( ⽸P 8@j88<@-,M@Pp`PU UV 0`FUMp V񏐇 !"01380 P@03/ 0 0o  '80P00bL00_D0 Ph≸ 0 $ 00 $0NEF@I0P03/C =U&V753 *+'#x  U U U U U U U V 0? `F,Ѝ/Q/P00/ٳ0S /P  0P  0P  0P@-@P ³00辳@p@-`M`PUp@`0`` 00 0000H0 0 PPPЍpbfQlp@-PMP`Vt@سd0 `00C? P0P 0 0D0 0ླ`ḿ`ЍpaZXXZ$Q@- R R R2@@@ Q PQPQhP0S00 Q R@ R 00n8@-@QP (>P 8@M88@-$M`PpG@PYUT  0 UT0 @DGUpT@   P2000-)UT0 T T U U U U U U UT 0L@D$Ѝ/0S /`L0S /@-@ᠮ8@-@QP (P 8@J880S /P>8@-@QP (`⥲P 8@88  0ল=$0@-0 0@ 0 =@@-@W@Q R$S Q/$ P/0S/0/<@-pP`n@PUT  0 UT0 @D0S </|=  0Kd=  0EL=Q@-R) @@003/@@0@ Q @PQ$P0S00D<8@-@QP (P 8@88@-`Pp@PAUT  0 UT0 @D/UT0 T' $ "UT0 T  2/U U U U U U UT0 @D0S /;  0঱;  0࠱;  0;0@-0 0@0]l;@-@OQ@- R R R/@@@ Q PQ|PQ\P0S 00 Q BR@008@-@QP (3P 8@B88D@-`Pp=@PRUT  0 UT0 @D@UPT9)UT0 T T U U U U U U UT 0W@D0S /8@- 0 ̰ Ѝ8@-00 0 Ѝ8@-$000 0 0ⲰЍH8@-Q@)RC Ѝ@Ѝ@0Ѝ@0  Q &00S Q hPQLPQ,P0S00Ѝ8@-@QP (FP 8@g88@-MP@pa`PWTV  0 TV0 `FET#Vp V V; ?@@5@;A+0< 00 00002/T V VI'T T T T T T TV0 `FЍ0S ̯/50@-0 0@0夫5@-@ᖫQ/R R/5  0-8@-@QP (⫯P 8@躯88@-pP`ᵯ@PUT  0 UT0 @D0S z/4  04  04  0}4  0w4  0q4  0kl4  0eT4  0_<4Q R^ Q/  PQPQPQPQPQPQ`PQ@P/0S/00/|p8@-@QP dٮP PӮP <ͮP88@8877@-P`p@PV T  0_ V T0 @DnV1`Tg pSLp p 0 0并9V%0DS2  [' #  V V V V V V VT0 @D Ѝ0S &/D0@-   0 Ѝ1Ѝ,0@-$ 00 0 Ѝ$Ѝ/@-$ 00 0 ЍЍ/@-$000 0 0 Ѝ/@-$ 00 0 ЍЍT/@-$ 00 0 ЍЍ /@-$ 00 0 ЍЍ.@-$ 00 0 ЍխЍ.Q@-@NR񏐕 #&'(+./030@ |0@ 0@ 0@0@ 0@ 0@ 0@ @*@+0@ 0@ @$@P0 0 0SK  QG PQPQPQPQPQ|PQ\PQ<P0S00(V V V V V V VT0 @D߄$Pĥĥ,,@@ȧȧԩԩtt088t???h?4`6(?\??|?p?<h60?d<?4??`?,X? ??X8 8     X PHTLT@pXldX< P PpdX(H 8    t!!X"t""@#p##4%%$&x&''(($)`)))) ,-.2 334L55h6877899T:\|::;:;@<;x<H===$>>AAHATAABBCCCDDDdDDFF(F`FFlH$JxJ|JJJpK,KhKdxKK8LLMQQuickMenu *QQuickWheelArea *QQmlListPropertyQQuickRangeModel *QQuickRangedDate *QQmlListPropertyQQuickStack *QQmlListPropertyQQmlListPropertyQQmlListPropertyQQuickSpinBoxValidator */ApplicationWindow.qmlQtQuick.Controls.PrivateAbstractStyleCalendarModelPaddingRangedDateRangeModelWheelAreaSpinBoxValidatorTooltipSettingsMenuPrivateMenuBarPrivatePopupWindowdesktopthemeqtquickcontrols_qrc:/QtQuick/ControlsActionExclusiveGroupMenuItemDo not create objects of type MenuItemTypeMenuItemTypeMenuSeparatorDo not create objects of type MenuBaseMenuBaseDo not create objects of type StackStackDo not create objects of type SelectionModeSelectionMode/.qmldefaultqmlRegisterType requires absolute URLs.ApplicationWindowButtonCalendarCheckBoxComboBoxGroupBoxLabelMenuBarMenuStackViewProgressBarRadioButtonScrollViewSliderSpinBoxSplitViewStackViewDelegateStackViewTransitionStatusBarSwitchTabTabViewTableViewTableViewColumnTextAreaTextFieldToolBarToolButtonBusyIndicatorQQuickAction::event: Ambiguous shortcut overload: %scheckedupdateCurrent()2destroyed(QObject*)1unbindCheckable(QObject*)QQuickExclusiveGroup::bindCheckable(): Cannot bind tocheckedChanged()toggled(bool)toggled()2__textChanged()2titleChanged()2aboutToHide()1__closeMenu()2visibleChanged(bool)1windowVisibleChanged(bool)2geometryChanged()2__popupGeometryChanged()2willBeDeletedLater()1clearPopupWindow()2triggered()1updateSelectedIndex()2enabledChanged()1updateEnabled()2textChanged()1updateText()2iconNameChanged()1updateIcon()2iconSourceChanged()2shortcutChanged(QVariant)1updateShortcut()2checkableChanged()1updateCheckable()2toggled(bool)1updateChecked()2activated()1trigger()1unbindFromAction(QObject*)2exclusiveGroupChanged()2xChanged()1updatePosition()2yChanged()2popupDismissed()1dismissPopup()1setToBeDeletedLater()2destroyed()1deleteLater()2applicationStateChanged(Qt::ApplicationState)1applicationStateChanged(Qt::ApplicationState)2widthChanged()1updateSize()2heightChanged()2valueChanged()2minimumValueChanged()2maximumValueChanged()2decimalsChanged()2prefixChanged()2suffixChanged()AndroidBaseqrc:QT_QUICK_CONTROLS_STYLE/QtQuick/Controls/Stylesqrc:/QtQuick/Controls/StylesWARNING: Cannot find style- fallback:qt_quick_controls_style_initqt_quick_controls_style_path2styleNameChanged()2styleChanged()2stylePathChanged()QQmlListPropertyQQuickItem *QQmlParserStatusorg.qt-project.Qt.QQmlParserStatusdate23QQuickRangeModelPrivateC]:[J _cB "pG7SqBl AnZ:j,*).o>QHD0Te&F|ӑxVui܈J),\7^ORmdf#vxKx2] q(@p ab>JqzA-DR P{ : n RI    l2  0 \ Z ;    < D%v \ $ ` /  gܔ*  h  &6l-'RMۼ ytyvo,ilL|dTU ~hr.Mf*;QtQuick[sControls 0FSplitView.qml PTextField.qml %ScrollView.qmlStyles אBusyIndicator.qml 3<ToolBar.qml Calendar.qml ߸|SpinBox.qml <TextArea.qml@StackViewTransition.qml <Switch.qml Slider.qmlrTableViewColumn.qmlPrivate "MenuBar.qml 1StatusBar.qml <TableView.qml X^\Menu.qml ~TabView.qml{ToolButton.qml Label.qmlApplicationWindow.qmlStackViewDelegate.qmlUProgressBar.qml hq\Button.qml gRadioButton.qml uXTab.qml StackView.qml '&\ComboBox.qml GroupBox.qml V'CheckBox.qml<MenuContentItem.qmlD<AbstractCheckable.qmlJ3CalendarUtils.js (Style.qmlTHoverButton.qmlp|FocusFrame.qmlيTextHandle.qmlϼContentItem.qml KToolMenuButton.qml ScrollViewHelper.qml |StackViewSlideDelegate.qml StackView.js!TextInputWithHandles.qml+qmldir L3\SystemPaletteSingleton.qmlO|BasicButton.qml ˟\Control.qml "F\EditMenu.qml |CalendarHeaderModel.qml6|EditMenu_base.qml ד\ScrollBar.qmlzTableViewSelection.qml TabBar.qmlq\ColumnMenuContent.qml PhMenuItemSubControls.qml ïTextSingleton.qmlrSourceProxy.qml Sstyle.jsEditMenu_ios.qml 7ModalPopupBehavior.qml FastGlow.qml MenuContentScroller.qmlBase |StatusBarStyle.qml ƹ|ApplicationWindowStyle.qml3\GroupBoxStyle.qml|OScrollViewStyle.qmlNProgressBarStyle.qml ~\BusyIndicatorStyle.qml \FocusFrameStyle.qml"}<ToolBarStyle.qml \SpinBoxStyle.qmlSliderStyle.qmlR\CalendarStyle.qml.O<CheckBoxStyle.qml}imagesv<SwitchStyle.qmlToolButtonStyle.qml M|ButtonStyle.qml \RadioButtonStyle.qml `TabViewStyle.qml$T<MenuBarStyle.qmlCTableViewStyle.qml MenuStyle.qml $oComboBoxStyle.qml\TextFieldStyle.qml]\TextAreaStyle.qmlFBspinner_small.png*gscrollbar-handle-vertical.pnggscrollbar-handle-transient.png{button_down.png LGleftanglearrow.pngNmarrow-up@2x.pngk!gslider-handle.png;'slider-groove.pngqwfocusframe.png ȁheader.png#'progress-indeterminate.pngIarrow-left@2x.pngOarrow-down@2x.pngarrow-right@2x.png 6editbox.png groupbox.png check.png uWtab.png zarrow-up.png arrow-down.png ln'button.pnģrightanglearrow.pngspinner_large.png"darrow-right.png(5'spinner_medium.png +scrollbar-handle-horizontal.png $check@2x.pngtab_selected.png5'arrow-left.pngTxzהq|$snpG **QrPx|,V{G`)I 䜧%BiMPZN?/pev s9=~@Op{ͧbD.0 ^h0 t@ןHa?`HKaz6/o{6z0B"?ѠY1-/>qo5{;".GewHnn7Op~=?8W^d="EҞ.|qtY$]mG89(l#oK&~jKA-K^u[۵t~;_젒,Q z\Ad\۠υuG]~>W=7#p}k4vu=9 4ꃯF|˵Eu ,A|b|uݥ}GX({|i>\}R}#{*,9cE }!PGƓp :71 ! :g#'{{Gq^P,bV|`t%Y/d9K $4K r$$]脀 ZBr8$QNPϑ1mŊBxƁ;{%`Gd_* w֐&2.\qE=*|aE 9&X'2#XQL3 ڂ9;g /yXHM>8A8/${PH++:NA ?NFVMo4 ,itAN%CﻴM 2KJфX Q.)dM4 74|BHri#SUZ͘ 96/H ^sSDR?cQVK̍^N5.\BX@S7)5`չ@2r/n 8=#*j]S6HB ''\]n<-h6n-UhxOZ*NM l"x`sN6 v%71 +v$yu)HoS٧Sil¶fJ3?E QBYJ*'o2J٢:/d ܁fx.sA8]GmՒ7VIW!LP]\n}SH& ]i!\_(> ~PfOi߷ΐE\#9K=Sm=~Eh>x[! S}yUD7IhVɍY-H!udYoP7-Q4!6 sh"q!h ř^p"X/U3Z#>0WTcUhxHak@^;͛gPO- g'?!E¤6;Hڼfvbubڒg#zi0`.Ds~$?':9' |2jP|FS}5Vh@vcS3I/TiQ&-^W .JG,1Y,2)?f X|`":oѴc7ǒkl(JД`*Nc:ݭgxO`ߖTl3eǍPk;Һ)S2F,CKsQ/mCgQQ}E'͉n +̶KWa1´U{)V8ݫdɯ0I FAMz&l:iMR V8.@S@MW8p<^ιWGܝ9m~K/#*p3KY=we$AG,s)(:豪#X\"a)cr\^NP|V+f/|h0s?\\4b E#C>K AeBnl`CtKpEaLEO,]xf;׫ńZsj;hlb=#:~/Z WdAA`~Gw;dXQ(P@dݵ:"4j&&ǟ&T)g-Ⳮ2O'bTget¤S:5 xqSz70x_4Kd2֯棾uk5r.Nlh9U1a.Nj!Ÿ#Q-liAmy!X񄮒ە(hnVtJ,i0VAƗo1akE-Hjc}[ma]ׅ" WWU;43?Rn5 ηbiJVeZ}t.V2rxf ȍ]*g~VlV]ӪhO?n;6d.dCۦ ;^s. E}Jel' }&Ϥ~SoV;fQ"m9\>+-95*cCR`}SVJ/N+J=dwh۬rFJ陮Y7޹clmFrq aY5ιe-[S|\~8,p%F7{oeHͤ3ƘŻZߓ|_ rbpsb;'bKc.@5Z3,Kƻ zkku|[ÛάcOT9;i.!Ι3p҃Y6'WԬw ;־.A}a5ߛ( &R-[G;U YsU|,`XR &G0U|V'Bo !3dSrǜE\ŞEb3+ZBh(l8 V=> 4"[XfE $^ nX7 ˄V,E"h.pH[Ca,ҜJ 7Β VkFb>T`ˀ) 5߅ jD5CE0vqBH#sGY&,:(Ae789F}}dHk5 g <&x2cӝs>ľޭ~4Ÿ $<xh8 0S4TڌY2 m@\ma R#k8({=|1x/mZuC4CJ˰)(8Y(+F >+Cꊠ0sA@CΕ %"HNxV+JᏂP ,ѾiwЖg-1y^G37WMUʜj&h1xT_=%S%ziA]b3QN,B *,o<eRN$61"qH_nR@>>dijBGD0h}wЩp,^N^:cb">wы*o ;E $md 廯c13m9Cg&o>9U,߀^Br7P2!ls=RyaL QSe4{ 7.5`@a|;dfOg@@38|&p{X D>6q~OB 4n y%1_&>k `#~ bP5 U^m:|9}*Dua \T' 8 \ۦlHBǟͿW8i+Je߁M2R}pAH{Y\B#;f$%Lz9aB]lݢ~_s oʱ7CG >p6aFnuBlG, |O~`mV'V<ˎdWQm Rv>]"XQ|$-d{l6鋰֩U#J\֐yf?ɪ( h5$n6-L?<,Xpʪ4Dɛ:nh){NJ9t|;{9M2t"Ȥ*rpSJU*Pw6+vdfrshZ\^$va${y#q,vJ=w% *}Š gG-Qs0!cJiͩ+`7jzpZqA7FSArԕ1:#R|yz!+:&b%\c-OM&9 *ҷ L}(]"]h (VSo7`L@tDZUج0&k` a_ }M D]!VL4=T6HKR)A0টl*z9%ƞ@=v$ߪ:S7- zF&H+.c])ƞf%je_bg]7bsQ',oic=t=\F2j\&0?jūƼop+-(E; ?`5[$oL,]Pr[QKiZ˔p{]2gF2>>70 M֨tx!,j.2/V-ӵ)Cw5`,/?XlE`gdObApMtTFL(c5e}0lfzp1ڵ1c` S"!xs;kqW#dJ'&*UX=+!z|XjvOr u뭻jUnn?*؄j}<]xQE{%`B eN=u@`ď_Y%(7wMA) XB Oup\(~g[O&Qҡ@$ 0S¥,[ʗ],0+]?8i:}hN^eXz({;XLb=5ҹ:_ Fdh쓍լpő<%FC*I} CWe P:z4 GJ(RK#XbΟXRBN̋6?4Ec,]_qr!KCX"Us']nOXaި4:uE0ӑ]]nw lG4BAe\JRŠVC̓@ĜC(DPi}GAE0USS{D<]vk}[MK7ūH{8E{x/rvC`^0>%ĽShEAIR8֮Ien*=@%H!ʡ2?T}O=s|v|Pz}y: 'ϡ <99|9m|\ xQ_pr󜃘[\x6KL(xo _[޽vyWʯՓ[%a!g95o;oě Ki)]~7!}g8oZ:c{lm-==+jA}ϳ-{0 :3`l5@R%c\DJ7'ħmIllee|32tNޯY$ rɪ򎱨wש6r 5Q̺U%\l|ȄZU neUrU,+}{%/k{dH_<>ͱ6Jx4K)TI0( I#mT Ӻ ria1Lt G; S{٦m0 ?0ސn{]E͸Ҿ' |'|MGA.͛p`ÿ^=]]SR1ؽlxAHQO,4JiEѠ0sa1)]P%h>g4U!&XZI4;hF7O='Ewvgj[Θ0 @Eɵ-Q JCY){͍+r]t+|Ʃ|,͛L9P+uXN Iy9/{YbAJWR)ԇ}iFZш:T^UaNJZtJ\6?Ϣ`cWlX,i%8%p{;ϩdJI Z57-8]XC_9T[59^^⥛fkRIΥ*Q4V3o?Uj $ꍾC]kTIzw.(]w<%zN_-ۺ'rg1fYh6Qc\]_#U9i =tK7@/\4G xb_ VT`WN!my7_Y4bAC(ͬa28tc۝z_.Gj/i 7 dʄ]&7Q,ݞpsg֡'rF@8&x ŞvE'QyGRaүI su829^ET~jQf@"T =/mHnR*ogTgo3,sМW>+pIy% ~~ `;n `bqv {JeR PdԉWaUұg(_ h?rl\Jpr]߿>'{&_t^?ŷvH; Vvdwx.h.뾜L ~i2`xZoFb+Uh'mDde'+re"Uofw&eOG5yfv}@p2A>^0]`wF <`qP $YGGƟɻuFG>g5[,J \@1~Џaz\*C:w#{`c.~"YũT* p+-v߉Ok< rr&s&Y

/lSj_M'7-NZ0\N\LFCk@^:a:>ip=.IvĹ>ufzfd2;äOM ܵcIaY_G*kǖ5^_ɸ6}=XOƤk2%҄F>]X8>%x%j}A2d`Jr}alskS\h1 x(K(0zؾx0gLQ"g ZIo:R3L7K.便IA4yhZR$H2b:/H(Z)7*A}ﺤ0Q2AR/$'?p#Td)/+(rϓ Hd$ 5S$ KX%e=9䲨`j2yd=0eegjA̧?p>U03(]0E lZ1ṅ"YtXh`)[N.Kg\ܰ`5gs ηݱH|o:o#O߫X`<<-v@=a$Mۄ/MxZ9zd@cjLt1P5!ԁF7Ӧ(*mXure~ԒḏQoD,0Z) tXF%7M /2FOYt"(L6- -CS %-,i80$ u6ݼf. U_(iӏǜ{ڑlOV4dh@`(ZӪE/0Pa#ng>W bLrS (6{:RZbϗMu[G* ]KTCޒrmƎqAwXcPZC*y0f˓U^J=726K&3'LPT<5*?e]QT0i*w7QD 녏&_}F^,E^r3*mMF ~P.튚/T21+MիlU˗V^`]1N$Gҭl 象 :G@;='tq[DF!r37\I0csha A~PKܓ~1}XQf'ణn;]?K,"GzN[=bJѹD!jj \'夓nz){_ߙ;hSaEDV&QŨy[8CĆyiQMhYrXy"!%5yʙ*Rߜ2;XKvWǡj&tXJs(3^XZN’M\80PyX.-aѽFX91pZr9cWQ|ܪ:,:>~u!ߔ uIXV#3Կ l'*綴ut@ߜ*k?1C] 핔yueNe U06}ԩ86ix~~^{eUh]\҆j*xvoy`hת٭ѫZ&p_Ȩz)-&Ɵ2tV–_ De»?CH~#7!QU_p[^ݰIi1s]'~9n_)-#= Y "v7G||ͽw} ``W`) HAPCU}? G?ɶ]&Q#=[0QwOEi4hWژ3qYݨY.7܄ RPc^LC-8B.v)zmjL\C͟a]CSEO!7;R[n{D#@SҟVv{L^K7Ek 0 && !!__style.menuButton } ] } o2xZmo_5}V8נ%UdRk"W6ujޙDF$8-rٙgV>,סcv9e^uLr6}<#%H7RDM%܉[ljjY7pv\Fl*=璇1 , vD:Iax[n >˸Ur7z4S}h]_C_$ L|W+"J#|Xaiy*ji#ǖper2R+}Iz2>V23 Ij 9G Cc2YK<1|9JP4}cʾQD)'p[$QBspIn+-A 7R(D=EþXu<."lֹ& @n XM7pLw97!dek2P' /$ɣz/(;KgqP \$J (.v0NFQL.<L"S$|nm hQ0Wb:XfJLWE:|ޘ6We0}h >].:e^ߌ͠5,]xYx4l:6m] -öbg>0`#Ӱwzٿn0*陷V 2-Wְ:7}i2G}4w5PQ {m p` v6on|dG̾izpQoXC1\vi˞(ڮi^CcAVkwcX/Y}۾Ov[-K{d#]]6OP&7 m3MA +˱mfdXx82S{@ئNso玲2~x>nQ3kv.]2ּ=::/GX@Xxz)X{PwxJVH%}T`Rյl$bʆBg+tP"M`.ƙ:.LdK^~2N[RpJW=\C{Bz .s/ݙvAOG?HGgj~D+k=vkϟ ]R-,֓nDm媑9{5]X$6[H_.u~ 5K%I1#xAÊ3xIA1 ;hp v\* b} 85Ѝ_ d_,fXUI)Oyn~/g' 0N'k0N-`q_$#9Bi<:,T;rr~[Z$J *qA Y,:脂9@0K'-Gy_j D _@I2:6fZ;3phRV12%C@ pfQJF.HKpjR&ܓ.%D+DN}O9-3T H⪀^Y*+p<y4uTn.O A~"5I%nN1qJ>CBDR[I0Ad R%p+L4D* <2 'p b pxP,|C GhOyn)$ S5_?gV}Ŋ!'%weţ6Bf!($N9֬懁|r;8b6rҡف,Ꙗb)"|J`l7&I)cȏAIxToQFe3"*2 ^@ck{Vv+_sLWƍjAxϋ ]Fpd,wm'˼JR LdrҶW +:( Mυb(dGT.(T'%Ȅ@) f1 )}D~XYAwإįrq,WÒySľ? oDzki tjJkNV`UvMRdUܔ{ѷ$dz ☟K+F߾%w`^R-t)Sh(O!0# iC'zH 8U6uzjZ0_i B \Dy2W!WZ^/j9sN+EհN"#:f! o^i{?0 W(ts'DP.UJg辋;?/ե_9yvne1)hhN_ T[z")7J:v{axP*=L!R,@s_}EjI ;W>0 zv;AQO^'t% t'D\`y'<⃰(*h܉$PM;/Gɾa0m?n1*̾~7ҙ>D}wQD5{JUಅ*6:چ Cu#A$X%/o{Է`>s\pp8vFot]Wus2_Ã=6R_Zk:6=Zv#%÷ʃ/%L[ gG~}f37ѥE:6(TD. D汊Y%<|nU  ÿXYG}=pڅM+Ժyy)PBL0K)1/G/9o}14r Y э @ 0RK/ ,(Hi9"L%#=!:DYyQm /U.؏ `B P.Dċ@x?*x췐] J!@^?0״GBYa@ $6AX G =$9a"RPʕKANSB )jz]ot mI .lZ@&FK\r!;`^*V+UzGx5},׬:*ᤠOg@eE/Pol2x}t&u)ledV  lrkʽ-S7.!3gQ3LC n<-k"'RGP /YR*ݕiBoE֞' ESfD}l"NyfU'"kN_,WWQBҼgQj<{K'ݫT'\BWԯ8E]B١QA})Ι^(",UU%jK|q rDj" :Xj.+c,*uIx "oER }OӺ7IwSi q9` ~c ZeZśs JM8HrV'k.&p@YHQz+?ՖK}m1AUY)LaT'_&3of`O '%4Ʊ#Zs2گYfl Rr?-m]na:kuU,+%2Õ١_ u*?*Y0N,=JBJh5Yo+PݒfP 4M8'X:) ݊?>!dK djk̐K-q>_YV*EQPp 0eN&@cծ,R1D~Jv1Ve,kdԫvK2xiJ[b`X() rՋ|Rktk 2ߘF^\C`zN|nɈ2[r|T\@oh"3ڰzlO-mu sk*҆bIrEܭ,0ƿO{B}%"ـozb/>Bd|Z20*jn'L Ѽ7!@,BcGT#d0^-ޑh-q 111yט07ڔ J&+[QC0U_dݢyWv _-sL~DcbmGq(ԼMa(= Ԉ,n)nKFBc>g'&Z_=E*0_u:|'ߤq^Le 1ѨnC~,K3hj՗!ZIj}T8v.u$x@d{PPmmqS'N7qkvެqbBeKJ/ڢڭ7,G흨RC BAi0F|MP&T %,EmˈʙcylF \FG/c}A =P(Vˋ ٻ9Kxn'Q6}گx(76֪oBrRwMH^' >A-J]۳.t*swߵd=WBy&K6tm03;$ê"ϔ~%ypV,]O!@Po`6"SjxY?Syr}ֲ龇 M^>}z=T1b@yޯ8І wǃ6趘wz9yOWy69s%S2UӭPa,쇥3!8|x=oF;"+MU-dYW$9i%,>SJR^73M.e*ɽ T(ܝ]WYt(XľYt& _iQm[Ϗ:sRExl:ǫ,o>+:iv"wA,ǚ,ͣ3wdKXp`ofiey?I>*:ԟL>^>^ {:>y2زuΡp<#Xϖ XxhqɻrȢ麈A`:qz2 m@0@K4fh l8DECzBR,P8DIa;$^ n27H"5KCΖ`/@_Ii (%ibp쁓:hɳN*0 g? `0SI97h@iू`ӣɼGI$t MqiQKxYNZ;a@exSx.ӂ3B=PA{<T1,_jP-3ԻDh`K<]o4`ftvx68coޏ'l0<јMo ]=|3zĆ7CzW`fëu vu=A ZN4t'~.9/4 {u=B@=vMۋވ܎n rp`\6x;y%\\v:L{= eEo!| }[B;xz@ci%,ߞ'd^__ǃ[0w;2gI(8hOoCbj2no&#;`ڃg+YzA#?Hm|G^Z1'v3Iz?p<8 `HFD; p#qrչMeWwvTb_\rsh9ՙr5A\~]w0 `ݠ7/Ç_q]q6E/x%\2"0u^wY^ MWqh (74 rz 9P'`*/ b̦`|΢Ba` v4E~Dao~`~/Ҍ/YKp$1G]^3*ʣz"G=wA1G WG``cp`y!%AVG-9DK-#?e!0gH: uY*^@BcD+̀qt XoT'kRnя4 )hdl]_* :bu2#G֞>1g 4x"*+@A)xCf&ʗ8h΋$@n/MݪT<ho;/jj\`8G$$ܴ1PC?ߥY:a**81)/6\l\F=- &0C ==0g vF\LU%-_& WЛ@ Պ2h`>s=Ǧyw o 5.1ϻ]Տ~C.࿊x ů o#; &2~BS!Ict l@/Nn2߻U!#KDЛaH@Nn!N`El4$x0OyI$0&LCXT=ԡ]K:9bC*tc3BSv;`()@~qzp !f;DO'  u/)6kJ(h4AmȄh4U&LhJf3R7@ŐӮܩE[kNI4q@0ՈQyIhj ͷDF*S)ptG܍l=\d+\TBLCLfɬec5S/Kn"%x:. 7` D:bYX, q/c!ԘBfq-j&ƣV @ 32fxoksi pd`@dZg!G;(Wc1+4%2%AE0[P`(ˀ Zjɒb,S"MWTBKb|pvn!e+L!aɳ@ &),x&I|>"e\+m[9˱; Ү@NY݅сjfm>D/Hën*m^{8#z2bړLk:'}3T}?#4IW;ޞZw4x+Lό)#T?3*K 0i\%+0eL~ '7s4s ', kHy0[Zů%ұ1-7k-ź~A 8f%t*K7?p 1i)"l4 9E Q =rzerGs.wP.(O8*9I>vٳg3^lcLjFdj hY0=#2+r,i b,rtt`V";"8ū_,6M#oU: +X/B,I%θ+T6̊`5~EIA~at( yfǬorlLMR6n&cVcB;of2|\4 g1Opς"&ەL\)[N?B`ThfVa$)J{"]fI NYܤ,.ˠaa6?ekNib]Ge˷Z/(cu:Cn"_<9ev (  0}rW鍖ҳɴ,)R+%_zu>屮]3意M:L"GX昻: `ت CL'y S5@+J{yU( g^4m",[ʳ%ZwKO+?an9Q?hՋyrW,!f1b@.<OJdŒBKAD>+BX:y@oyE܋{0r=Xjtm:w)+ j4;z%GC,iF+`*YKԩ+J 0jAYyAY{4UqF#LlD@|q{]79c$JqWm壃DNd{"\Meiu >|V⸔ yfj+݈V'Rk*;O2,0UjDFk#p X0/2`U3ORij͛7q|[!hgJLr*hTTyPhxC @0}@S4߫.櫉V˦">q fI0|E1`?+2X!4;XB+:kÊ풦I#l|.!d-hpIih'*0*"䏉QL\ nC.|ɧ|.gQ[YBR [{*& Vihy9 ͨ sCǘEؘ;0* ՝VSԉ# q dbb,: qd+<0يFJgPmJr3ʭ-0gcǸ0@I_ .!-!J>3yWg ,DUR65cNMkӳ1WEMz"zNJ7 gZ[*Oz/a+"HT{+,a)}Hva3}w4Xni` P7A0!.'Ң fe{e(+fI/p9Φ%C%|xT!铇4Bq4ϵfSz}'\mR3:6Sڿax>"WneAD!ի̀VʋЎl.I-rSJ6M.l83W)5byjnwu[/rQkޮ bl4R>%YC#ӗE )% hjTT`qGzU<'l ӗRY$y3N@L 8 X@Ld '*\<ԻU18prd"Oc\/b!y(C3Z"氈0' epYX_O^A%qȲP%!XV̇SɼiXB5B XW̼wDry NU*au~6y@>PVƕsڧ5RچvR{JooW!SY8aܭF{/83+Y٥dV&w+؋ZRS2ײ ?ar43 QvV{ҕSE$ ja R;(2KaJY15. x(rxZj<4}珕,i~~INLF5euB0l M)eeEjaǀHqZZ ImetօvZӓYXtBby<#sQ:Y,o 7QX`argJG&QW4VJXqPe6#(v!P d^A9v'; +<#RsFx$6U/.:i0˦H_95ɭ ^%a˽ر(nt8 Kwu8way_QvF'kU?XED |dEw-BQDbwsp*>}TLw(N̶ )gojOGHd_K[2!l+qbS}w{7WڎcG?R*n[na]y/E ŎY<'- 5̛ USێoZzm ]jSjhq]`ybUm a:)" Ab7@9ޢc>_5a =z=KJߙx4:W`Pߐ\x<⪽fv ̚. sC>l~'R<0HfXhr"T:%5T~.Nj޷hgۈTKU椸,ت>zRFQs`K=D|׆VxXn4׌) WMd@! ~Xkt~ritu˃5;+\߸=Nr*(rܳxr!XC7P7{Pay!%4AyJ2q W G,a,$0F4kUsQy¾ч_mqUN#Q\7~>~4X5ܲga?jlWB]s.b-s:'ƱX 'CڀOާIxEUնG,ͺ+mJO TA/dYk҄}TF\ӤoeA"9ck;5xh`2;v~U(t?7r[޵c3 7l]Wo: n )(yyըƙN;{ k 0y,?t<$3LǤQ~N=q9UvBˣz:B4f '}q*x(С?}~JYa;:}Fz\iF WvQq q:&4nE[a)ՇSIBrWR,1zvl*:Bd1ǼPqyϓrPPc~6au3O- 7DO%>v-|Mfbba+đV0သ%\FSkLj"L}@quMIݗDwX*af] c:FSXs۵wwkKH[ My3Bi-N jn|;_ܡq^4 uX*H}ϞR͎P_ƹ֩#.R*Ӎ_50q㹅GU8bcϚ&aLvW]h\k-O|58{??3~&;Csh2qL/y?N M ZsALsϪM}zƹQ/ҍ`:&PWiW5M7LP3GY)+mwL4 8urq'JVOW/7p%yѲJovfU-ỹ9AbEh'bxʃe/]uwYRЯRFJv4і檳/GįS^P?E||U<%?C+TTOPT^4O`-k453Nɳ_Aې2P銾 =wgt_OnAͱr' Jj8Yƪ,s75L_%BӚJCWdK:@S#PIJ'6 Jz_YֶS"U5阽HMձ*TGD($Wa`u*Ǘo#[NZ-Phݺx5k|%n\~wq;`?GtIF!wA Vr{*yb;[*%k aV.(8ro"-/:Y}y_ÕU0A] a~l*1|.J?ph '5{Ը/@AM/_z6LrJcQFh=wetUUYƬ>8Aܥ:N?~;wdv][ v!OO'wʏw /;Z0ɄYéV5bS-%w-Z~;bwڒm cMoݹY3LsyȈyn&0U+EJZ m¡nqP7Y)1~QO /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 ParallelAnimation { id: root /*! The name of the animation that is running. Can be one of the following: \list \li 'PushTransition' \li 'PopTransition' \li 'ReplaceTransition' \endlist */ property string name /*! The page that is transitioning in. */ property Item enterItem /*! The page that is transitioning out */ property Item exitItem /*! Set to \c true if the transition is told to fast-forward directly to its end-state */ property bool immediate } /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 /*! \qmltype Switch \inqmlmodule QtQuick.Controls \since 5.2 \ingroup controls \brief A switch. \image switch.png \caption On and Off states of a Switch. A Switch is a toggle button that can be switched on (checked) or off (unchecked). Switches are typically used to represent features in an application that can be enabled or disabled without affecting others. On mobile platforms, switches are commonly used to enable or disable features. \qml Column { Switch { checked: true } Switch { checked: false } } \endqml You can create a custom appearance for a Switch by assigning a \l {QtQuick.Controls.Styles::SwitchStyle}{SwitchStyle}. */ Control { id: root /*! This property is \c true if the control is checked. The default value is \c false. */ property bool checked: false /*! \qmlproperty bool Switch::pressed \since QtQuick.Controls 1.3 This property is \c true when the control is pressed. */ readonly property alias pressed: internal.pressed /*! This property is \c true if the control takes the focus when it is pressed; \l{QQuickItem::forceActiveFocus()}{forceActiveFocus()} will be called on the control. */ property bool activeFocusOnPress: false /*! This property stores the ExclusiveGroup that the control belongs to. */ property ExclusiveGroup exclusiveGroup: null /*! \since QtQuick.Controls 1.3 This signal is emitted when the control is clicked. */ signal clicked Keys.onPressed: { if (event.key === Qt.Key_Space && !event.isAutoRepeat) checked = !checked; } /*! \internal */ onExclusiveGroupChanged: { if (exclusiveGroup) exclusiveGroup.bindCheckable(root) } MouseArea { id: internal property Item handle: __panel.__handle property int min: __panel.min property int max: __panel.max focus: true anchors.fill: parent drag.threshold: 0 drag.target: handle drag.axis: Drag.XAxis drag.minimumX: min drag.maximumX: max onPressed: { if (activeFocusOnPress) root.forceActiveFocus() } onReleased: { if (drag.active) { checked = (handle.x < max/2) ? false : true; internal.handle.x = checked ? internal.max : internal.min } else { checked = (handle.x === max) ? false : true } } onClicked: root.clicked() } onCheckedChanged: { if (internal.handle) internal.handle.x = checked ? internal.max : internal.min } activeFocusOnTab: true Accessible.role: Accessible.CheckBox Accessible.name: "switch" /*! The style that should be applied to the switch. Custom style components can be created with: \codeline Qt.createComponent("path/to/style.qml", switchId); */ style: Qt.createComponent(Settings.style + "/SwitchStyle.qml", root) } ,/**************************************************************************** ** ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 /*! \qmltype Slider \inqmlmodule QtQuick.Controls \since 5.1 \ingroup controls \brief Provides a vertical or horizontal slider control. \image slider.png The slider is the classic control for providing a bounded value. It lets the user move a slider handle along a horizontal or vertical groove and translates the handle's position into a value within the legal range. \code Slider { value: 0.5 } \endcode The slider value is by default in the range [0, 1]. If integer values are needed, you can set the \l stepSize. You can create a custom appearance for a Slider by assigning a \l {QtQuick.Controls.Styles::SliderStyle}{SliderStyle}. */ Control { id: slider /*! \qmlproperty enumeration Slider::orientation This property holds the layout orientation of the slider. The default value is \c Qt.Horizontal. */ property int orientation: Qt.Horizontal /*! \qmlproperty real Slider::minimumValue This property holds the minimum value of the slider. The default value is \c{0.0}. */ property alias minimumValue: range.minimumValue /*! \qmlproperty real Slider::maximumValue This property holds the maximum value of the slider. The default value is \c{1.0}. */ property alias maximumValue: range.maximumValue /*! \qmlproperty bool Slider::updateValueWhileDragging This property indicates whether the current \l value should be updated while the user is moving the slider handle, or only when the button has been released. This property could for instance be modified if changing the slider value would turn out to be too time consuming. The default value is \c true. */ property bool updateValueWhileDragging: true /*! \qmlproperty bool Slider::pressed This property indicates whether the slider handle is being pressed. */ readonly property alias pressed: mouseArea.pressed /*! \qmlproperty bool Slider::hovered This property indicates whether the slider handle is being hovered. */ readonly property alias hovered: mouseArea.handleHovered /*! \qmlproperty real Slider::stepSize This property indicates the slider step size. A value of 0 indicates that the value of the slider operates in a continuous range between \l minimumValue and \l maximumValue. Any non 0 value indicates a discrete stepSize. The following example will generate a slider with integer values in the range [0-5]. \qml Slider { maximumValue: 5.0 stepSize: 1.0 } \endqml The default value is \c{0.0}. */ property alias stepSize: range.stepSize /*! \qmlproperty real Slider::value This property holds the current value of the slider. The default value is \c{0.0}. */ property alias value: range.value /*! \qmlproperty bool Slider::activeFocusOnPress This property indicates whether the slider should receive active focus when pressed. */ property bool activeFocusOnPress: false /*! \qmlproperty bool Slider::tickmarksEnabled This property indicates whether the slider should display tickmarks at step intervals. Tick mark spacing is calculated based on the \l stepSize property. The default value is \c false. \note This property may be ignored on some platforms when using the native style (e.g. Android). */ property bool tickmarksEnabled: false /*! \internal */ property bool __horizontal: orientation === Qt.Horizontal /*! \internal The extra arguments positionAtMinimum and positionAtMaximum are there to force re-evaluation of the handle position when the constraints change (QTBUG-41255). */ property real __handlePos: range.valueForPosition(__horizontal ? fakeHandle.x : fakeHandle.y, range.positionAtMinimum, range.positionAtMaximum) activeFocusOnTab: true Accessible.role: Accessible.Slider /*! \internal */ function accessibleIncreaseAction() { range.increaseSingleStep() } /*! \internal */ function accessibleDecreaseAction() { range.decreaseSingleStep() } style: Qt.createComponent(Settings.style + "/SliderStyle.qml", slider) Keys.onRightPressed: if (__horizontal) range.increaseSingleStep() Keys.onLeftPressed: if (__horizontal) range.decreaseSingleStep() Keys.onUpPressed: if (!__horizontal) range.increaseSingleStep() Keys.onDownPressed: if (!__horizontal) range.decreaseSingleStep() RangeModel { id: range minimumValue: 0.0 maximumValue: 1.0 value: 0 stepSize: 0.0 inverted: __horizontal ? false : true positionAtMinimum: 0 positionAtMaximum: __horizontal ? slider.width - fakeHandle.width : slider.height - fakeHandle.height } Item { id: fakeHandle anchors.verticalCenter: __horizontal ? parent.verticalCenter : undefined anchors.horizontalCenter: !__horizontal ? parent.horizontalCenter : undefined width: __panel.handleWidth height: __panel.handleHeight function updatePos() { if (updateValueWhileDragging && !mouseArea.drag.active) range.position = __horizontal ? x : y } onXChanged: updatePos(); onYChanged: updatePos(); } MouseArea { id: mouseArea anchors.fill: parent hoverEnabled: Settings.hoverEnabled property int clickOffset: 0 property real pressX: 0 property real pressY: 0 property bool handleHovered: false function clamp ( val ) { return Math.max(range.positionAtMinimum, Math.min(range.positionAtMaximum, val)) } function updateHandlePosition(mouse, force) { var pos, overThreshold if (__horizontal) { pos = clamp (mouse.x + clickOffset - fakeHandle.width/2) overThreshold = Math.abs(mouse.x - pressX) >= Settings.dragThreshold if (overThreshold) preventStealing = true if (overThreshold || force) fakeHandle.x = pos } else if (!__horizontal) { pos = clamp (mouse.y + clickOffset- fakeHandle.height/2) overThreshold = Math.abs(mouse.y - pressY) >= Settings.dragThreshold if (overThreshold) preventStealing = true if (overThreshold || force) fakeHandle.y = pos } } onPositionChanged: { if (pressed) updateHandlePosition(mouse, preventStealing) var point = mouseArea.mapToItem(fakeHandle, mouse.x, mouse.y) handleHovered = fakeHandle.contains(Qt.point(point.x, point.y)) } onPressed: { if (slider.activeFocusOnPress) slider.forceActiveFocus(); if (handleHovered) { var point = mouseArea.mapToItem(fakeHandle, mouse.x, mouse.y) clickOffset = __horizontal ? fakeHandle.width/2 - point.x : fakeHandle.height/2 - point.y } pressX = mouse.x pressY = mouse.y updateHandlePosition(mouse, !Settings.hasTouchScreen) } onReleased: { updateHandlePosition(mouse, Settings.hasTouchScreen) // If we don't update while dragging, this is the only // moment that the range is updated. if (!slider.updateValueWhileDragging) range.position = __horizontal ? fakeHandle.x : fakeHandle.y; clickOffset = 0 preventStealing = false } onExited: handleHovered = false } // During the drag, we simply ignore the position set from the range, this // means that setting a value while dragging will not "interrupt" the // dragging activity. Binding { when: !mouseArea.drag.active target: fakeHandle property: __horizontal ? "x" : "y" value: range.position } WheelArea { id: wheelarea anchors.fill: parent horizontalMinimumValue: slider.minimumValue horizontalMaximumValue: slider.maximumValue verticalMinimumValue: slider.minimumValue verticalMaximumValue: slider.maximumValue property real step: (slider.maximumValue - slider.minimumValue)/(range.positionAtMaximum - range.positionAtMinimum) onVerticalWheelMoved: { if (verticalDelta !== 0) { var delta = Math.abs(verticalDelta)*step > stepSize ? verticalDelta*step : verticalDelta/Math.abs(verticalDelta)*stepSize value += delta } } onHorizontalWheelMoved: { if (horizontalDelta !== 0) { var delta = Math.abs(horizontalDelta)*step > stepSize ? horizontalDelta*step : horizontalDelta/Math.abs(horizontalDelta)*stepSize value += delta } } } } \/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 /*! \qmltype TableViewColumn \inqmlmodule QtQuick.Controls \since 5.1 \ingroup viewitems \brief Used to define columns in a \l TableView. \image tableview.png TableViewColumn represents a column within a TableView. It provides properties to decide how the data in that column is presented. \qml TableView { TableViewColumn { role: "title"; title: "Title"; width: 100 } TableViewColumn { role: "author"; title: "Author"; width: 200 } model: libraryModel } \endqml \sa TableView */ QtObject { /*! \internal */ property Item __view: null /*! \internal */ property int __index: -1 /*! The title text of the column. */ property string title /*! The model \c role of the column. */ property string role /*! The current width of the column The default value depends on platform. If only one column is defined, the width expands to the viewport. */ property int width: (__view && __view.columnCount === 1) ? __view.viewport.width : 160 /*! The visible status of the column. */ property bool visible: true /*! Determines if the column should be resizable. \since QtQuick.Controls 1.1 */ property bool resizable: true /*! Determines if the column should be movable. The default value is \c true. \note A non-movable column may get indirectly moved if adjacent columns are movable. \since QtQuick.Controls 1.1 */ property bool movable: true /*! \qmlproperty enumeration TableViewColumn::elideMode The text elide mode of the column. Allowed values are: \list \li Text.ElideNone \li Text.ElideLeft \li Text.ElideMiddle \li Text.ElideRight - the default \endlist \sa {QtQuick::}{Text::elide} */ property int elideMode: Text.ElideRight /*! \qmlproperty enumeration TableViewColumn::horizontalAlignment The horizontal text alignment of the column. Allowed values are: \list \li Text.AlignLeft - the default \li Text.AlignRight \li Text.AlignHCenter \li Text.AlignJustify \endlist \sa {QtQuick::}{Text::horizontalAlignment} */ property int horizontalAlignment: Text.AlignLeft /*! The delegate of the column. This can be used to set the \l TableView::itemDelegate for a specific column. In the delegate you have access to the following special properties: \list \li styleData.selected - if the item is currently selected \li styleData.value - the value or text for this item \li styleData.textColor - the default text color for an item \li styleData.row - the index of the row \li styleData.column - the index of the column \li styleData.elideMode - the elide mode of the column \li styleData.textAlignment - the horizontal text alignment of the column \endlist */ property Component delegate Accessible.role: Accessible.ColumnHeader /*! Resizes the column so that the implicitWidth of the contents on every row will fit. \since QtQuick.Controls 1.2 */ function resizeToContents() { var minWidth = 0 var listdata = __view.__listView.children[0] for (var i = 0; __index < 0 && i < __view.__columns.length; ++i) if (__view.__columns[i] === this) __index = i for (var row = 0 ; row < listdata.children.length ; ++row) { var item = listdata.children[row] ? listdata.children[row].rowItem : undefined if (item && item.children[1] && item.children[1].children[__index] && item.children[1].children[__index].children[0] && item.children[1].children[__index].children[0].hasOwnProperty("implicitWidth")) minWidth = Math.max(minWidth, item.children[1].children[__index].children[0].implicitWidth) } if (minWidth) width = minWidth } } !/x]sFݿbLRn ۪``%Xf%s+442& }b|Mm-b?qd}Aڃ![3L%qG"fs}ѸcÁpG6Bng*.ˆ.O׮i6,&+S WDl(y/-Hc^p3/L7g5~Ys옽kg u$)M &G#Khْ(}{H˦E`<@uH, 1O%; V,:OD[K܈x`BPb ɒkP$&*7BwțH3%$$fOJ[[a!$*M ^+] )%eD%_qTS4eБ9; ^i_Z ^db)}nwbES p$N Q^#k= Rt&s%Jp=Q/ŶJi1_?tge~(c-^wCo54#4`2h[w3r7 M!v3ۺ&#æ|$?8db~:e:]bv {kIW$roڃ;ڿF$ycHfb#>561 7oݛCx`gĹFEqal(C^\rm둉䤴C634%."rgЋ B]1^a 2_i0{T̯5Lr; i&T1%3/P@ܱ ̴tfMh8d2+1'GD蒇;mTZ<eJy;nD "zƳ$q ;р7i;wuuCKTNkh.sEw Swg@~u}H= k7R,m}(uēa w"btE*B6'߰j pRѨ] `t=O%KOnWx*$ʛDc%cD#ocK>-r%+*4raVqD8$LGZ7PĴ*o%e3aIH"_Ojc]( jRXY<!\7삩nZ)NG,a@DM(r:+=!*JK3j]Ft-sVN?Tѹԧ$QEs6nFAVK ruu7(Q 9Evƅl&ӶG lȟF rɪg5x>Xcҿ i/Hyb1[H.cIX/xlXBb*ȁLHh Ŷ 2Wl܎P<8{5Xw RSL9-\C.ƻs@ %qQe5t{Az碑1.o'O:ϡCC0~#]=,?Wc;e: ^u K#e^+[4AGdR,XP"0rPmnŽQLG8g#`kG<7l[n#߿v%vekM󻨂W]rUo(X[2w"X]]t4/i5S%hJ*z9G=ZKfߺREtJ&rEW&sT|x/ UUۿDMէiRVz$`|Tx.*] b>(н47<{}PX)T`&D~ ڙO${@ڛ`vsNT8ACDlQM\V|*O%-kWU3BLÌnHsyP2yCؘ1ʧ|t|pDW! *c0Y:PH\HnOȏnPm1OAw+-҅c>6SMyHri}tky.ݰӺ` 2suTtoxj9])`#+=TiyC(Lp폝"|`4zQo*ѡʣ{{M(i,ӗpCQ}+\όcF,p6 qUU~*Na*[Q D $O`}-m n'/=bT H]z+OӪ!g+̴GkעVMrۻO4 zU^I3QC&pNQ_CWERೀZX\עZxHqؠ#H#˅UT'*5,U!s|O,ωY6pw.'P!?"D g9{xܨ9vx0)⑹i~^v~ET$QËȏIӭ^FQ$gҕB^fWUf[|T/ ٠ ZrpU#ߟtub<vnN[NR՚}|\&Sʵy)-l^x}Sn>Um,p`H:ҍ؉`~Quw_@IL;əF*)Y#ʁN}*[8+甒^+pB'o[[c7< Umrr?}^ԭKT](QVy=fgMVM o`Ql什V@fZ@g緋_dү/"3]Փv'RV #6w0Z/Tp3aTTVE _Sask`0 e`mp%p7$Oþ52ke$ ˂kCmJN:/m;V/ ^_&@%3F+ʱ |6Rn+6^^JT9ܫyzo/#/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 /*! \qmltype StatusBar \inqmlmodule QtQuick.Controls \since 5.1 \ingroup applicationwindow \brief Contains status information in your app. The common way of using StatusBar is in relation to \l ApplicationWindow. Note that the StatusBar does not provide a layout of its own, but requires you to position its contents, for instance by creating a \l RowLayout. If only a single item is used within the StatusBar, it will resize to fit the implicitHeight of its contained item. This makes it particularly suitable for use together with layouts. Otherwise the height is platform dependent. \code import QtQuick.Controls 1.2 import QtQuick.Layouts 1.0 ApplicationWindow { statusBar: StatusBar { RowLayout { anchors.fill: parent Label { text: "Read Only" } } } } \endcode */ FocusScope { id: statusbar activeFocusOnTab: false Accessible.role: Accessible.StatusBar width: parent ? parent.width : implicitWidth implicitWidth: container.leftMargin + container.rightMargin + Math.max(container.layoutWidth, __panel ? __panel.implicitWidth : 0) implicitHeight: container.topMargin + container.bottomMargin + Math.max(container.layoutHeight, __panel ? __panel.implicitHeight : 0) /*! \internal */ property Component style: Qt.createComponent(Settings.style + "/StatusBarStyle.qml", statusbar) /*! \internal */ property alias __style: styleLoader.item /*! \internal */ property Item __panel: panelLoader.item /*! \internal */ default property alias __content: container.data /*! \qmlproperty Item StatusBar::contentItem This property holds the content Item of the status bar. Items declared as children of a StatusBar are automatically parented to the StatusBar's contentItem. Items created dynamically need to be explicitly parented to the contentItem: \note The implicit size of the StatusBar is calculated based on the size of its content. If you want to anchor items inside the status bar, you must specify an explicit width and height on the StatusBar itself. */ readonly property alias contentItem: container data: [ Loader { id: panelLoader anchors.fill: parent sourceComponent: styleLoader.item ? styleLoader.item.panel : null onLoaded: item.z = -1 Loader { id: styleLoader property alias __control: statusbar sourceComponent: style } }, Item { id: container z: 1 focus: true anchors.fill: parent anchors.topMargin: topMargin anchors.leftMargin: leftMargin anchors.rightMargin: rightMargin anchors.bottomMargin: bottomMargin property int topMargin: __style ? __style.padding.top : 0 property int bottomMargin: __style ? __style.padding.bottom : 0 property int leftMargin: __style ? __style.padding.left : 0 property int rightMargin: __style ? __style.padding.right : 0 property Item layoutItem: container.children.length === 1 ? container.children[0] : null property real layoutWidth: layoutItem ? (layoutItem.implicitWidth || layoutItem.width) + (layoutItem.anchors.fill ? layoutItem.anchors.leftMargin + layoutItem.anchors.rightMargin : 0) : 0 property real layoutHeight: layoutItem ? (layoutItem.implicitHeight || layoutItem.height) + (layoutItem.anchors.fill ? layoutItem.anchors.topMargin + layoutItem.anchors.bottomMargin : 0) : 0 }] } (x=s6@ep ?YӐMxb $c0wl4#9I2lr<"`\+ cq[SD8v0*uᜧ@RP`Q^2M&9T+h 4iू`GO+Q2M24w'I31G Y&Sxʑ`$L1|]{,o$l'H}6DLbAY& Oߌ>t=?{GxcgFao0dݓCxz2_NC6!4ޤwݓ٠7t0螌aO'o[ `9GPstڢ-v?GGMtݽ9 .;FN=;aOE8Nz=]#>aw4w0i_DQ  z} x- v{%;wVc|;ƱJ篇|coOO '`WtH;h0Q(8_ɨ7'۰C0.>$\N4V>Et {#t ȤۣA+"ao? }(=h޸ܢe7{S/= |}$ۛ*QʋpH@υ|~Yx֢q] p7[YgE|@{/ỵn(G0RF; Y Wi\kh/ޏӐ_3 n/&*b #%y`\d1""]3n9pFA׈AE4+t# U@p)4  P2Lf,Mh\`ɣ p9D @8Bosڋ8JL*H4{FSKqYI6,X,x"$X|b|G-P˯b{TNG_ bŐ$ŇPI" bd+N4Ng 8K" MD3$7$@2N%[R!VM@dpXnQ V\ \&"Tm瑑0` eQ` KlϟeOA W`-܍Pl#mE=`&{%_n~\[_k0/@#;8;4!hԆhERKA26ay / m%u :IzHI e %vi8DPAXT ra(Jׂ =jDgš8;[sL>ZOe kS0M-&y HK{٤L_cPRiq a\^N(祜tɌ0@=eߪ]|%Gd6M+(3ǚ&(g5pɄg(X 'D(cIA_80);j)GT_{K7Y~K~ )"ՒRkBHq%܂#ᱯDRt,ٌ&&-Σ${B6>HL3W[BgAm^/~KX+m\Pк^7 h%yj!M glEPYfxq .k_#IOZHNK"jߺ;հqHW\mN6OM-HhRЛ`a(…˓IM;T$@YO%/֘ܰE$ n.4&JjȸHpKW*$1QL,]"# !JOl9˖s^;wܢ_c:H`'18bVBKԼX"v8$-x'۶o|_T ۋ QjY˨RӨ2ݕeVlhG(<%'z/U 2e=+[j?YS0o)o똏Bv@-!ZU>B$6Ɠ8AdX+8^ӖrW)W j} pUQ6z.3$8 2_ 8pb;~s~4Tu.9z-;IxnfN8ᴻALj+l^Âf$t,BՂP#SNg5ƤD Z߂}q!H2^6]lkPxF"CLv[am070]5G'`ZP*FJѹsTL|,ʄ$$YcbB` B,qHX5 XGAοa I{?ci dIRPTS%oytd$I}lcmүMmZ/V5(Z 4$@j-Ȍ;J^#*Zc(]Y~NM!IWl:5<QZjo Hsh= nhOi5 K%8 )4D}IH2ꊧµAHd ܙ +" rln B/fWOؐLp Tpl2Q21)r-IHbF쐥^U8!th}> B1:묀^Vb(z"įa'ek@ чp?-`MVܯE0}hLJ:Uc,n<}DV#=j̪&]e /ΙE\h<%SguQn1 ŔB')tz"9f%>Gc!wJu(*$o6~ͯ˜v $»'R"J +o$M PQ97<QF9AO d4!߄@UT ɉ`TzqL Rmwf;hI|H,VqB 8(AFJ:/2Xx}B@+ (. +duגhԎ {:ȃNnQtsqB"aRvy* TViጓVj,peIzHS"x۵ieNtk)FN+hbPYёJu/⟶핗ieMly,ĸsЌ\BDmoj OՂײ m?wRS<_l.'phFa ?E/I7I {KrP?!Z}Y**ܝ2-j,F o[p[bfu lCM箸;%WJIj-T0Ő/;H5({F 't Tmi(gvT'lZZqvik6:L/̍i~fÍ*gK6+o-)doPҏUX) b,ʸfP!."I\ozWiF(SJcԡV#kH_*+FϖĘHx5dY3»w<=TP(=oC4 UiU*s`ѩlF#F9z/+WtF8ih8Azq~Iătkg0ԍ"jFkvgxt\RqMVxxi r æI;rɌƾ`W $Z&Bǥq(iJ,Y:($G8 1Ǚa0Y,-xԜn4bnW-d4"#h1^n`x.,LQR3ZYip?OΌC\j[m +<9Э:A=vO O%'pz%.LHٕ^m2q;:}H&MHccC{Ĉ Mϔ0ցr !`>8G Ooˡ3tyv ҩ,cDzG ӁZRkCq]7c4OExiw\w2Mko\]3GNMdHfn/1lE;-Qx[)> hQwZ[JisAFx.Χ9,T1N#@b,dRBdK806PQ&mаcFcp)8Аrft ڔEN_X-mvP^{ҽ4N72ZhZ CF^-ſ25|TKi#neN=/m(L _0F)14y%=&_Nw%fW/=QrzٲM- 0B;=}󽉁lGs{b2r+!]?B)'Ho\EoѾŌt@j9aTBi`3W8o;sL|DBi$0,>h,EgX嗾Pyg2zn`L@ Ҩ`{higBZ\yhqk[[$1!f*X!T+ 5F hrIX_2Lʊ2Li= SՂa[Q $ /b?PJJykEEbN;~K#ܯ UX3}*eϺ܊!a[wfP~r_eg*]01=wX`a,}N|>.gkW^^[jin|>MXWV?(Ώ#X p+SűB"ujQImTm.z_nO flR*1V>QXQ W9=hH+@c%\W)OW z}llnR`$CL|]}a{x[jex-S)݁3jsoX#|F 6Oˈ`VNPT7x{PG&3wX">Oe+Ltnk%}KTvʄD4olnTTXLm7d Mw.:pμP]딘vI^GLr|St!ԜISb*ʃ +hk}'"O!T'kz'z&_kW1{K9m:6/4»lMZӼbbgeF{\&XU ,0U]59FHo<L6iqn>UE[+U2%5ߢd-P3!/yḍ|)(vW凇-L72hiylucl?ը{o] =7A:%>.LEXGӒf䞳4<«ǣM׀+F^^:R "АהּlW7\?4n|bEZ|EZ Cq48 t'SrN^jGdVF4fX!>y3:+뢬AћF~ lC^Jh!}!o ')p&b[U:+0eǦ*g mUb̼kCu_~GߖȖE%MBQ wj߅nwC.{@+ bGE1zYSQY鵪,6T@3"MjdGQl '/Sck=x+|":LCv"D53D0Ҵq'&_dQX{ӅGz7Gi3҇Z~t,\{|ֽm qRֿLZz!Ö +9K"ՃGxl^5̬kHX |Jso+(&7ѱ4jiQ\&^$69ҽEvRYM"r].DbpּajD%\Guلy*F5 RuaC {+(ɳ.y.H}QW_4?T_ZLypF_eSMQ}iwTVk*ֲjHLn>*sL+^BuE]fadqARzV-k ?2SwuUBC-ڭ[m 4!vkka=V\Ti}Qk"͡:_t =D@x+>Fm J'n\_7t!47OƉ(RÝKg8(V`)H[QMبhNydE5`j1Lh߈/,J?S|\W8G ߚ`h8MzlOмMQ#&˜${uKi258&Q(D`QѴZNB8dК 2L@;oKL{WԼӫPJQ1Ӊ4HGNzmisj7^fM*U“1rW+=pLa>g2(\8y0&&EZ-SW5blc[PN#GԹP-DnZ0m[1Euݿ:*!¾ߍ9I2]|靽W̢2df>>C$亖D4;LXV,yAE$=0~۟8ME._C~&"x#>;NʡxgҀ;2&#p1Z zOӊdgiOb苔AZ8_6Cg.9G(sts|(˖zTDm1/z4JT,渻(Ə2]ɐH߮>5G&yƜW2b;;&G|}.3<+B`x G:l=Cx ^٥~4U_cQ,eqؐB]ҾbxWb$A\M i]@lA+_Oݏp;c2]o`=0S/M|l ,YmioCp|9vwuLQ?ef D=*Gx"m {oz{A{=ء괢Xn)ts܌DwjL }}k:4QNzt0kd$M!\_vk}=z.wu\qAص)>pn ;PrYw/"3贐t6X,ޓ72Id0O:h/[S< |7qʍq==e=& y9C0M ڏ+0PȉUmu1jܖ ~LA΂7mcE+;{3&;yvxI*$S-0EeªM!ЭR676k6N{[Ӫ VԦ|GQ$®ׄ$ϓ}.BA:ݱF[3j~J77.eu2/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Styles 1.1 import QtQuick.Controls.Private 1.0 /*! \qmltype Menu \inqmlmodule QtQuick.Controls \since 5.1 \ingroup menus \brief Provides a menu component for use as a context menu, popup menu, or as part of a menu bar. \image menu.png \code Menu { title: "Edit" MenuItem { text: "Cut" shortcut: "Ctrl+X" onTriggered: ... } MenuItem { text: "Copy" shortcut: "Ctrl+C" onTriggered: ... } MenuItem { text: "Paste" shortcut: "Ctrl+V" onTriggered: ... } MenuSeparator { } Menu { title: "More Stuff" MenuItem { text: "Do Nothing" } } } \endcode The main uses for menus: \list \li as a \e top-level menu in a \l MenuBar \li as a \e submenu inside another menu \li as a standalone or \e context menu \endlist Note that some properties, such as \c enabled, \c text, or \c iconSource, only make sense in a particular use case of the menu. \sa MenuBar, MenuItem, MenuSeparator */ MenuPrivate { id: root /*! \internal \omit Documented in qqquickmenu.cpp. \endomit */ function addMenu(title) { return root.insertMenu(items.length, title) } /*! \internal \omit Documented in qquickmenu.cpp. \endomit */ function insertMenu(index, title) { if (!__selfComponent) __selfComponent = Qt.createComponent("Menu.qml", root) var submenu = __selfComponent.createObject(__selfComponent, { "title": title }) root.insertItem(index, submenu) return submenu } /*! \internal */ property Component __selfComponent: null property Component style Component.onCompleted: { if (!style) { __usingDefaultStyle = true style = Qt.binding(function() { return Qt.createComponent(Settings.style + "/MenuStyle.qml", root) }) } } /*! \internal */ property bool __usingDefaultStyle: false /*! \internal */ property var __parentContentItem: __parentMenu.__contentItem /*! \internal */ property int __currentIndex: -1 /*! \internal */ on__MenuClosed: __currentIndex = -1 on__MenuPopupDestroyed: contentLoader.active = false onPopupVisibleChanged: { if (__popupVisible) contentLoader.active = true } /*! \internal */ __contentItem: Loader { id: contentLoader Component { id: menuContent MenuContentItem { __menu: root } } sourceComponent: root.__isNative ? null : menuContent active: false focus: true Keys.forwardTo: item ? [item, root.__parentContentItem] : [] property bool altPressed: root.__parentContentItem ? root.__parentContentItem.altPressed : false } } '/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 /*! \qmltype TabView \inqmlmodule QtQuick.Controls \since 5.1 \ingroup views \brief A control that allows the user to select one of multiple stacked items. \image tabview.png TabView provides tab-based navigation model for your application. For example, the following snippet uses tabs to present rectangles of different color on each tab page: \qml TabView { Tab { title: "Red" Rectangle { color: "red" } } Tab { title: "Blue" Rectangle { color: "blue" } } Tab { title: "Green" Rectangle { color: "green" } } } \endqml \note You can create a custom appearance for a TabView by assigning a \l {QtQuick.Controls.Styles::TabViewStyle}{TabViewStyle}. \l Tab represents the content of a tab in a TabView. */ FocusScope { id: root implicitWidth: 240 implicitHeight: 150 /*! The current tab index */ property int currentIndex: 0 /*! The current tab count */ readonly property int count: __tabs.count /*! The visibility of the tab frame around contents */ property bool frameVisible: true /*! The visibility of the tab bar */ property bool tabsVisible: true /*! \qmlproperty enumeration TabView::tabPosition \list \li Qt.TopEdge (default) \li Qt.BottomEdge \endlist */ property int tabPosition: Qt.TopEdge /*! \qmlproperty Item TabView::contentItem \since QtQuick.Controls 1.3 This property holds the content item of the tab view. Tabs declared as children of a TabView are automatically parented to the TabView's contentItem. */ readonly property alias contentItem: stack /*! \internal */ default property alias data: stack.data /*! Adds a new tab page with title with and optional Component. Returns the newly added tab. */ function addTab(title, component) { return insertTab(__tabs.count, title, component) } /*! Inserts a new tab with title at index, with an optional Component. Returns the newly added tab. */ function insertTab(index, title, component) { var tab = tabcomp.createObject() tab.sourceComponent = component tab.title = title // insert at appropriate index first, then set the parent to // avoid onChildrenChanged appending it to the end of the list __tabs.insert(index, {tab: tab}) tab.__inserted = true tab.parent = stack __didInsertIndex(index) __setOpacities() return tab } /*! Removes and destroys a tab at the given \a index. */ function removeTab(index) { var tab = __tabs.get(index).tab __willRemoveIndex(index) __tabs.remove(index, 1) tab.destroy() __setOpacities() } /*! Moves a tab \a from index \a to another. */ function moveTab(from, to) { __tabs.move(from, to, 1) if (currentIndex == from) { currentIndex = to } else { var start = Math.min(from, to) var end = Math.max(from, to) if (currentIndex >= start && currentIndex <= end) { if (from < to) --currentIndex else ++currentIndex } } } /*! Returns the \l Tab item at \a index. */ function getTab(index) { var data = __tabs.get(index) return data && data.tab } /*! \internal */ property ListModel __tabs: ListModel { } /*! \internal */ property Component style: Qt.createComponent(Settings.style + "/TabViewStyle.qml", root) /*! \internal */ property var __styleItem: loader.item onCurrentIndexChanged: __setOpacities() /*! \internal */ function __willRemoveIndex(index) { // Make sure currentIndex will points to the same tab after the removal. // Also activate the next index if the current index is being removed, // except when it's both the current and last index. if (count > 1 && (currentIndex > index || currentIndex == count -1)) --currentIndex } function __didInsertIndex(index) { // Make sure currentIndex points to the same tab as before the insertion. if (count > 1 && currentIndex >= index) currentIndex++ } function __setOpacities() { for (var i = 0; i < __tabs.count; ++i) { var child = __tabs.get(i).tab child.visible = (i == currentIndex ? true : false) } } activeFocusOnTab: false Component { id: tabcomp Tab {} } TabBar { id: tabbarItem objectName: "tabbar" tabView: root style: loader.item anchors.top: parent.top anchors.left: root.left anchors.right: root.right } Loader { id: loader z: tabbarItem.z - 1 sourceComponent: style property var __control: root } Loader { id: frameLoader z: tabbarItem.z - 1 anchors.fill: parent anchors.topMargin: tabPosition === Qt.TopEdge && tabbarItem && tabsVisible ? Math.max(0, tabbarItem.height - baseOverlap) : 0 anchors.bottomMargin: tabPosition === Qt.BottomEdge && tabbarItem && tabsVisible ? Math.max(0, tabbarItem.height -baseOverlap) : 0 sourceComponent: frameVisible && loader.item ? loader.item.frame : null property int baseOverlap: __styleItem ? __styleItem.frameOverlap : 0 Item { id: stack anchors.fill: parent anchors.margins: (frameVisible ? frameWidth : 0) anchors.topMargin: anchors.margins + (style =="mac" ? 6 : 0) anchors.bottomMargin: anchors.margins property int frameWidth property string style property bool completed: false Component.onCompleted: { addTabs(stack.children) completed = true } onChildrenChanged: { if (completed) stack.addTabs(stack.children) } function addTabs(tabs) { var tabAdded = false for (var i = 0 ; i < tabs.length ; ++i) { var tab = tabs[i] if (!tab.__inserted && tab.Accessible.role === Accessible.LayeredPane) { tab.__inserted = true // reparent tabs created dynamically by createObject(tabView) tab.parent = stack // a dynamically added tab should also get automatically removed when destructed if (completed) tab.Component.onDestruction.connect(stack.onDynamicTabDestroyed.bind(tab)) __tabs.append({tab: tab}) tabAdded = true } } if (tabAdded) __setOpacities() } function onDynamicTabDestroyed() { for (var i = 0; i < __tabs.count; ++i) { if (__tabs.get(i).tab === this) { __willRemoveIndex(i) __tabs.remove(i, 1) __setOpacities() break } } } } onLoaded: { item.z = -1 } } onChildrenChanged: stack.addTabs(root.children) states: [ State { name: "Bottom" when: tabPosition === Qt.BottomEdge && tabbarItem != undefined PropertyChanges { target: tabbarItem anchors.topMargin: -frameLoader.baseOverlap } AnchorChanges { target: tabbarItem anchors.top: frameLoader.bottom } } ] } /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 /*! \qmltype ToolButton \inqmlmodule QtQuick.Controls \since 5.1 \ingroup controls \brief Provides a button type that is typically used within a ToolBar. \image toolbar.png ToolButton is functionally similar to \l {QtQuick.Controls::}{Button}, but can provide a look that is more suitable within a \l ToolBar. \qml ApplicationWindow { ... toolBar:ToolBar { RowLayout { ToolButton { iconSource: "new.png" } ToolButton { iconSource: "open.png" } ToolButton { iconSource: "save-as.png" } Item { Layout.fillWidth: true } CheckBox { text: "Enabled" checked: true } } } } \endqml You can create a custom appearance for a ToolButton by assigning a \l {QtQuick.Controls.Styles::ButtonStyle}{ButtonStyle}. */ Button { id: button style: Qt.createComponent(Settings.style + "/ToolButtonStyle.qml", button) } /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 /*! \qmltype Label \inqmlmodule QtQuick.Controls \since 5.1 \ingroup controls \brief A text label. \image label.png In addition to the normal \l Text type, Label follows the font and color scheme of the system. Use the \c text property to assign a text to the label. For other properties check \l Text. A simple label looks like this: \qml Label { text: "Hello world" } \endqml You can use the properties of \l Text to change the appearance of the text as desired: \qml Label { text: "Hello world" font.pixelSize: 22 font.italic: true color: "steelblue" } \endqml \sa Text, TextField, TextEdit */ Text { /*! \qmlproperty string Label::text The text to display. Use this property to get and set it. */ id: label color: pal.windowText activeFocusOnTab: false renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering SystemPalette { id: pal colorGroup: enabled ? SystemPalette.Active : SystemPalette.Disabled } Accessible.name: text Accessible.role: Accessible.StaticText } #/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick.Window 2.2 import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Layouts 1.0 import QtQuick.Controls.Private 1.0 /*! \qmltype ApplicationWindow \since 5.1 \inqmlmodule QtQuick.Controls \ingroup applicationwindow \brief Provides a top-level application window. \image applicationwindow.png ApplicationWindow is a \l Window that adds convenience for positioning items, such as \l MenuBar, \l ToolBar, and \l StatusBar in a platform independent manner. \code ApplicationWindow { id: window visible: true menuBar: MenuBar { Menu { MenuItem {...} } Menu { MenuItem {...} } } toolBar: ToolBar { RowLayout { anchors.fill: parent ToolButton {...} } } TabView { id: myContent anchors.fill: parent ... } } \endcode \note By default, an ApplicationWindow is not visible. The \l{Qt Quick Controls - Gallery} example is a good starting point to explore this type. */ Window { id: root /*! \qmlproperty MenuBar ApplicationWindow::menuBar This property holds the \l MenuBar. By default, this value is not set. */ property MenuBar menuBar: null /*! \qmlproperty Item ApplicationWindow::toolBar This property holds the toolbar \l Item. It can be set to any Item type, but is generally used with \l ToolBar. By default, this value is not set. When you set the toolbar item, it will be anchored automatically into the application window. */ property Item toolBar /*! \qmlproperty Item ApplicationWindow::statusBar This property holds the status bar \l Item. It can be set to any Item type, but is generally used with \l StatusBar. By default, this value is not set. When you set the status bar item, it will be anchored automatically into the application window. */ property Item statusBar // The below documentation was supposed to be written as a grouped property, but qdoc would // not render it correctly due to a bug (QTBUG-34206) /*! \qmlproperty ContentItem ApplicationWindow::contentItem This group holds the size constraints of the content item. This is the area between the \l ToolBar and the \l StatusBar. The \l ApplicationWindow will use this as input when calculating the effective size constraints of the actual window. It holds these 6 properties for describing the minimum, implicit and maximum sizes: \table \header \li Grouped property \li Description \row \li contentItem.minimumWidth \li The minimum width of the content item. \row \li contentItem.minimumHeight \li The minimum height of the content item. \row \li contentItem.implicitWidth \li The implicit width of the content item. \row \li contentItem.implicitHeight \li The implicit height of the content item. \row \li contentItem.maximumWidth \li The maximum width of the content item. \row \li contentItem.maximumHeight \li The maximum height of the content item. \endtable */ property alias contentItem : contentArea /*! The style Component for the window. \sa {Qt Quick Controls Styles QML Types} */ property Component style: Qt.createComponent(Settings.style + "/ApplicationWindowStyle.qml", root) /*! \internal */ property alias __style: styleLoader.item /*! \internal */ property alias __panel: panelLoader.item /*! \internal */ property real __topBottomMargins: __panel.contentArea.y + __panel.statusBarArea.height /*! \internal There is a similar macro QWINDOWSIZE_MAX in qwindow_p.h that is used to limit the range of QWindow::maximum{Width,Height} However, in case we have a very big number (> 2^31) conversion will fail, and it will be converted to 0, resulting in that we will call setMaximumWidth(0).... We therefore need to enforce the limit at a level where we are still operating on floating point values. */ readonly property real __qwindowsize_max: (1 << 24) - 1 /*! \internal */ property real __width: 0 Binding { target: root property: "__width" when: root.minimumWidth <= root.maximumWidth value: Math.max(Math.min(root.maximumWidth, contentArea.implicitWidth), root.minimumWidth) } /*! \internal */ property real __height: 0 Binding { target: root property: "__height" when: root.minimumHeight <= root.maximumHeight value: Math.max(Math.min(root.maximumHeight, contentArea.implicitHeight), root.minimumHeight) } width: contentArea.__noImplicitWidthGiven ? 0 : __width height: contentArea.__noImplicitHeightGiven ? 0 : __height minimumWidth: contentArea.__noMinimumWidthGiven ? 0 : contentArea.minimumWidth minimumHeight: contentArea.__noMinimumHeightGiven ? 0 : (contentArea.minimumHeight + __topBottomMargins) maximumWidth: Math.min(__qwindowsize_max, contentArea.maximumWidth) maximumHeight: Math.min(__qwindowsize_max, contentArea.maximumHeight + __topBottomMargins) /*! \internal */ default property alias data: contentArea.data flags: Qt.Window | Qt.WindowFullscreenButtonHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint | Qt.WindowMinMaxButtonsHint | Qt.WindowCloseButtonHint | Qt.WindowFullscreenButtonHint // QTBUG-35049: Windows is removing features we didn't ask for, even though Qt::CustomizeWindowHint is not set // Otherwise Qt.Window | Qt.WindowFullscreenButtonHint would be enough Loader { id: panelLoader anchors.fill: parent sourceComponent: __style ? __style.panel : null onStatusChanged: if (status === Loader.Error) console.error("Failed to load Style for", root) focus: true Loader { id: styleLoader sourceComponent: style property var __control: root property QtObject styleData: QtObject { readonly property bool hasColor: root.color != "#ffffff" } onStatusChanged: if (status === Loader.Error) console.error("Failed to load Style for", root) } Binding { target: toolBar; property: "parent"; value: __panel.toolBarArea } Binding { target: statusBar; property: "parent"; value: __panel.statusBarArea } Binding { property: "parent" target: menuBar ? menuBar.__contentItem : null when: menuBar && !menuBar.__isNative value: __panel.menuBarArea } Binding { target: menuBar; property: "__parentWindow"; value: root } Keys.forwardTo: menuBar ? [menuBar.__contentItem] : [] ContentItem { id: contentArea anchors.fill: parent parent: __panel.contentArea } } } C/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 /*! \qmltype StackViewDelegate \inqmlmodule QtQuick.Controls \since 5.1 \brief A delegate used by StackView for loading transitions. See the documentation for the \l {StackView} component. */ QtObject { id: root function getTransition(properties) { return root[properties.name] } function transitionFinished(properties) { } property Component pushTransition: StackViewTransition {} property Component popTransition: root["pushTransition"] property Component replaceTransition: root["pushTransition"] }  /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 /*! \qmltype ProgressBar \inqmlmodule QtQuick.Controls \since 5.1 \ingroup controls \brief A progress indicator. \image progressbar.png The ProgressBar is used to give an indication of the progress of an operation. \l value is updated regularly and must be between \l minimumValue and \l maximumValue. \code Column { ProgressBar { value: 0.5 } ProgressBar { indeterminate: true } } \endcode You can create a custom appearance for a ProgressBar by assigning a \l {QtQuick.Controls.Styles::ProgressBarStyle}{ProgressBarStyle}. */ Control { id: progressbar /*! This property holds the progress bar's current value. Attempting to change the current value to one outside the minimum-maximum range has no effect on the current value. The default value is \c{0}. */ property real value: 0 /*! This property is the progress bar's minimum value. The \l value is clamped to this value. The default value is \c{0}. */ property real minimumValue: 0 /*! This property is the progress bar's maximum value. The \l value is clamped to this value. If maximumValue is smaller than \l minimumValue, \l minimumValue will be enforced. The default value is \c{1}. */ property real maximumValue: 1 /*! This property toggles indeterminate mode. When the actual progress is unknown, use this option. The progress bar will be animated as a busy indicator instead. The default value is \c false. */ property bool indeterminate: false /*! \qmlproperty enumeration orientation This property holds the orientation of the progress bar. \list \li Qt.Horizontal - Horizontal orientation. (Default) \li Qt.Vertical - Vertical orientation. \endlist */ property int orientation: Qt.Horizontal /*! \qmlproperty bool ProgressBar::hovered This property indicates whether the control is being hovered. */ readonly property alias hovered: hoverArea.containsMouse /*! \internal */ style: Qt.createComponent(Settings.style + "/ProgressBarStyle.qml", progressbar) /*! \internal */ property bool __initialized: false /*! \internal */ onMaximumValueChanged: setValue(value) /*! \internal */ onMinimumValueChanged: setValue(value) /*! \internal */ onValueChanged: if (__initialized) setValue(value) /*! \internal */ Component.onCompleted: { __initialized = true; setValue(value) } activeFocusOnTab: false Accessible.role: Accessible.ProgressBar Accessible.name: value implicitWidth:(__panel ? __panel.implicitWidth : 0) implicitHeight: (__panel ? __panel.implicitHeight: 0) MouseArea { id: hoverArea anchors.fill: parent hoverEnabled: Settings.hoverEnabled } /*! \internal */ function setValue(v) { var newval = parseFloat(v) if (!isNaN(newval)) { // we give minimumValue priority over maximum if they are inconsistent if (newval > maximumValue) { if (maximumValue >= minimumValue) newval = maximumValue; else newval = minimumValue } else if (v < minimumValue) { newval = minimumValue } if (value !== newval) value = newval } } } /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 /*! \qmltype Button \inqmlmodule QtQuick.Controls \since 5.1 \ingroup controls \brief A push button with a text label. \image button.png The push button is perhaps the most commonly used widget in any graphical user interface. Pushing (or clicking) a button commands the computer to perform some action or answer a question. Common examples of buttons are OK, Apply, Cancel, Close, Yes, No, and Help buttons. \qml Button { text: "Button" } \endqml Button is similar to the QPushButton widget. You can create a custom appearance for a Button by assigning a \l {QtQuick.Controls.Styles::ButtonStyle}{ButtonStyle}. */ BasicButton { id: button /*! This property holds whether the push button is the default button. Default buttons decide what happens when the user presses enter in a dialog without giving a button explicit focus. \note This property only changes the appearance of the button. The expected behavior needs to be implemented by the user. The default value is \c false. */ property bool isDefault: false /*! Assign a \l Menu to this property to get a pull-down menu button. The default value is \c null. */ property Menu menu: null __effectivePressed: __behavior.effectivePressed || menu && menu.__popupVisible activeFocusOnTab: true Accessible.name: text style: Qt.createComponent(Settings.style + "/ButtonStyle.qml", button) Binding { target: menu property: "__minimumWidth" value: button.__panel.width } Binding { target: menu property: "__visualItem" value: button } Connections { target: __behavior onEffectivePressedChanged: { if (!Settings.hasTouchScreen && __behavior.effectivePressed && menu) popupMenuTimer.start() } onReleased: { if (Settings.hasTouchScreen && __behavior.containsMouse && menu) popupMenuTimer.start() } } Timer { id: popupMenuTimer interval: 10 onTriggered: { __behavior.keyPressed = false if (Qt.application.layoutDirection === Qt.RightToLeft) menu.__popup(Qt.rect(button.width, button.height, 0, 0), 0) else menu.__popup(Qt.rect(0, button.height, 0, 0), 0) } } } Y/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 /*! \qmltype RadioButton \inqmlmodule QtQuick.Controls \since 5.1 \ingroup controls \brief A radio button with a text label. \image radiobutton.png A RadioButton is an option button that can be switched on (checked) or off (unchecked). Radio buttons typically present the user with a "one of many" choices. In a group of radio buttons, only one radio button can be checked at a time; if the user selects another button, the previously selected button is switched off. \qml GroupBox { title: "Tab Position" RowLayout { ExclusiveGroup { id: tabPositionGroup } RadioButton { text: "Top" checked: true exclusiveGroup: tabPositionGroup } RadioButton { text: "Bottom" exclusiveGroup: tabPositionGroup } } } \endqml You can create a custom appearance for a RadioButton by assigning a \l {QtQuick.Controls.Styles::RadioButtonStyle}{RadioButtonStyle}. */ AbstractCheckable { id: radioButton activeFocusOnTab: true Accessible.name: text Accessible.role: Accessible.RadioButton /*! The style that should be applied to the radio button. Custom style components can be created with: \codeline Qt.createComponent("path/to/style.qml", radioButtonId); */ style: Qt.createComponent(Settings.style + "/RadioButtonStyle.qml", radioButton) __cycleStatesHandler: function() { checked = !checked; } } /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 /*! \qmltype Tab \inqmlmodule QtQuick.Controls \since 5.1 \ingroup viewaddons \brief Tab represents the content of a tab in a TabView. A Tab item inherits from Loader and provides a similar API. Tabs are lazily loaded; only tabs that have been made current (for example, by clicking on them) will have valid content. You can force loading of tabs by setting the active property to \c true: \code Tab { active: true } \endcode \sa TabView */ Loader { id: tab anchors.fill: parent /*! This property holds the title of the tab. */ property string title /*! \internal */ property bool __inserted: false Accessible.role: Accessible.LayeredPane active: false visible: false activeFocusOnTab: false onVisibleChanged: if (visible) active = true /*! \internal */ default property alias component: tab.sourceComponent } ,?7x}ksFw1k KqC7EKSr|RC khWc=sYE~OնLoj=gu^*ORuJiRnGz~8y=T7u>ylVe7=Ey$IfI+L3*)kU,U}ϵy?*u[,߿*cZ ?|x|6_LOw~-6٪uY:_`պ,`xHe\8Ejh:\EZe:[i#:lXsMWfiXgn_mFo %]aURj1u Pu.K}4$C_y/R|‡qlJ?pl4#3yv]ժuEɬ[fRyQ "qh zgIz@)v(0z@ 6Y+\h Miঅ ySz-Qg+(#sw(+ڙF YJ `EbNB[}FZU, ?UM,K),4˫˱LN'ůps/~Jt~z2 \=xsu~9%M}q9N8!\᜙v痿"hF_i /c ;͠K@&MW_N^ώL=XLs  F2$>T_&8~a:1C;`f|vbUUZ!R%ר77 A MQT. 18mC,5UeцW0 LQ &vG\MQ~t\jSEH(@EPZ#~IC_O2\!#w6ȁ  $l bTњЫ?5O ̘ o`JbO!ڷuȏ* uqG'DaE07.hʌ!J]В,4iʲ-1"5L9)Y,A a%Ht4[P36fDsEj̀ lԆxzt6uP^HcnɧiWpW'M9`fi,3C[rH5댇Gl 8+>"*QJi[XIaTy0Yx{[䀓HY(;#wABb[a]4yʃ'Ta^s A0w 4%M$ Z3gssAn VL4X Db TnzcfE30Z"Lj ֋p`%BpYֻǘIse~[Uo n^GS bFR!Ԣ0* P/0cQ$S _C}uRÞ$YRI=xZ84- ' ɃtL+5:w3Т aF !q ^߮mH~ /XS@<!cxO! b]ZY)?+P#HEnU{Ud(Og_#/:N$H撒jE}ȽO @r\g:)}. $cKn ^:a B4= #!il2h#uX4Z`aC$dUک\8b]Xhun}U8/U.>AekTuxAnN 0=7^zEшńBJ`[CP9mFdVY&OJ(To)ݭN$9+g 3l̈́#c,ۈcC9;cl/< 4j&NYC=3&`v+kLmaO$TSmA4cpUvHn$ x4{7<)L=r(&by^bY*m%%Q,z?]ܭKlQy ʻ䊦ic꾡5v~sbW/߷sLzl;4ك3]E.Gә|1Ϭ7G[h*&hDŽC\P;{PSdG $[Ilc:8utM𕦭?pr8z?F5ܪYnѿ);ź$'㑞pH{H`rk/"PF21+ 9|ndQ[FAl!ƒH`~`Ci0dz0 ;` ǽ^֘p(:D{rtӡS]g6Y-RC!0Ik?+Vz%)ԣTL(s-y-yv,bX=-R7`RF옒 5%Q (υk׬FՅS:h Ў`XKpop8.L!nyLcB#d3iѭzTH@4$W p2- NbhHdZ;ݙ"v3 2pufrr-cŽj7#@dkzu Z}_5.p>@ejG~?Lʔ0n^o0>l2`±,צkMVnD |l6$2*H![KAr/,Ou%GB%$^@\'Jt:S@v O aB<iT\(]NBB38KF\fg1_ ͙ %5l+0}'# X26k䈽z^ڍT7o` #I ,9ILH9Np! Z ~/"$8؎C 0ܟaGΟ"+!: V3{u3DR2#=/TH4A*,dUqPqnyoÒj[ X o쾊 ʱS4f%S\;wR-9nV-oPVvgv ]g.e2k5y`.O`LH77fmOFX XRZu]OI!-,b;JH)@hY$$f'Vw5;^&)oy *utFt['! ) bgf`l JP$ GT!j.:vjKqIn:ސdmg=jpdnz1%Wַ0YAָ?,R[4Phx~nv*ьeˎnd=y_4]]\YfI SzQ^ٞpf9|f,SԻ_W6΂R |и3zÿ]f@=Vpץw^) u SWKu^z.V'{XÑzGW$7O2'٘-LSMtHdV]Y271( O)>\uI.")qп{ %5[b+fT'#<~Cwm`QYK-Xh~*6&\h L]NۦѴ2m]ߵZ+ q^3n!и\b]`(Yb IWF:U>KH*D>)?Fn(8X95˟"y/ԘyLOKB,5D t^ gT1B^gl!%76- vNFc|nqdžxj6D:=0 KHb$uVYze(e9S*;aeaz\`(>>zP|ˁ ,2𒞛8܇U/!ĀJ 1t|m}bؘ(O_7x{xv)?Ysj4E|,#kS)'")11q2$aY0Bs5 6)Ltvlo&NOAv^ BvmkvŘ_l jNmmeٺ-,ݷ;a%Hü"q4T#6$ɤs+qsٝc7֧\T_V$XץbjFU66hM - vY`Ua'6Zv#7SNK!a64OË́ϸmKX*es?,l6bGQ&ƙY?4sӐ;!~)_)-P\놯LZ(NԪdDyTsr\{4,Za6)\64 &YX{m`0;ݲ(ꞰL.qP}iu(NQ$ry7s+X#1nIo 1E #"<2Aٚ#MC[<b)eS3+aw@~!vCO) mdiCuEa/Gy0!jq[ul1V[DJx"0}$v̡=Dޙ2K&FbY‚GgewNbaKqޓUlUˆ9xef}%2jHFڄNDY XQ.& 2<}oBR~Yj4yb (8Bq̶m Vt,~se" ΗE"ld$w<`&SZۓ>T1dFCm2_\N穦4saz7ͷ6zo?PcRInizpB/ޔYn:OF_K;rx'>w( R^ǶWw-$9KpT h:l]Qep[:}Ɯ<_P9!67^up6%yfNXG0%:8>i_d9[,RX^j-KD{.hJ[ybAq` ~|XT}R3Wer.{h=6 }WI9"wDaiM.zZWM-~Ij?֊ ~l[uub;jmib2k_;.Ym؃ŷ_Vo"bi_~Qm\Z %?A1^BB׌+fxW9;|A1~re--lXA _Omٍ=Mor9Xq f hhX#9hIBr; 8 j>s og9j@<<,J9أG['l_f7"js&.VAЇy4$ѻu= ωu.(v m3ḧ́'O J6;6]LLQcxFv!XVCa \*Q Eb622GnRǮ T$TËH_JGpkhܘ kϾJ ,Z'墋t R8.#,ߞZ9 6fl VUƄ( o'.0$~=$9ԮLzG:}~u&7 6v;:=H^s| <ڌ,)ˍK`5m*q19:7 K1;S}{`b Sb)ze7aj< sܩ +뛽W!cF:  rjަbBT'Kź8tHQptLy=ߩ+,Ɛɳ!Z 3P@0qxnc5#=>l.̺Mz ah{?CcE}Hχ&E@iD2ai=0(+0LbU6Rїa[7~ 8 @5 N5G#{bǵ?!\q d隦N ٯ \ʾ?{19v1d+A@+6g1}}~iP>l F91n|CMۛQ>/Ә l˨jڱO6s(L_5~=lըv(U= I{# UxФ^ [WS.F36\Ǿ 2׾)9ϏXy勋IQey: c0!dBTvlCR&;1ػ^?kRѿq8BI5~jo)]z*-WZ ƞT/_Z37ځJ aj|bMgS.콦{Gرk6Hj;A-YvKvҭ;BOei{g3,:X>y?3mNpp~~=*0.l.fbmpz>~Z i9"h @vJҌ3B63Lfsk{׸Jh)P_.$Ggu"G .&A3Xfd|!i4_֘;!(*0¢Æ"EN79&=L(B㥚s2f/4*"I> o>2V[mע(wGߍYWCV,/{ .=B:D`Mz -"<PaԘҸ涬!"|u2&ZQ PX ~=Ac5cO" !m`hR=/0l(ܾThp˜nשY5{=4f^YJ4DKsa[aQlva/Ӻ( E_,lX#ϲZ,0B;k}R`ML= ~pL`j#Y)}h˽h߽ok 1>FMmɌ1RԦ"ӃMRۄDrfЫO1ǝ^ DQ3O#DӷNU"ª1kS19)xUAE{ .%I|e--wz |_aE}T&x9o20L{l4Y0 TPOCV<&r\tIE|"dx;uh+GނyFꜰ^fiDcqȭ(\N/)"X^F8v" UFdԌŬȐ Lkۃu= 7{S[Ѐ (Ӵ:ON0|^~z@ %RU.Ң[a(&aҞ;Jz9w("AuPGgjZ :;CfK<%Pw*ЬK L,vRuV-]oՇ{V}&pkrr2:₩GV[1jPv*FW 6` C1.V[ow0Q,t`o0~q ŕ;huCk`$ F"M7U-5!d JCz*Gbt^I1m :21g4^Ԅ^iR9I.Kۃ/i5QD c5^n5m~{`OƟ::nN`kXźaݗyB#{*ٽMj_>#{% tv,2*Z {SqЎڞVķx4㇦8RDe?]=vp¾_ \zs[G9nVp+.7lzPM-65(`-'+>5: %p6_\"햹#tth{#tmEu\~Ujqmd$ u Ս.LeqR3=L)T1| k'[~Tɍ˰7EwA4҇tlCsߤb.3&/ \ٺ3ly 4hQyL&|\w[> 5P9;Ch!  Zm~@Wa .3(R麳e?hXdzQ{S6g|(/:e(57nPx1󛢬?F|j8)h]ӨۂVf|lN #@Q1bsq+4JrOӪ:oM;8FT@<aIaVPC ]$}ZAP\<)^9FA ؄A n&X{D}ɴ"6Cj p/0AOT0'v8LV[9ꠤܞ|Gͬ)[x˰ $"YYD'8 qc\܈",8[meYN{|-0ߖ ±N V,ŊgA* mf XU!Q:۬8*r O2'C $sGI"tl e\1 L0Pq4Ik5 LO"QUZp&Y@=49`=rD`M,L$/h| 3DuG Cvѽ[sԻw`|<Ln'}>ރ11v'd..-Pq0>ߎpno&18vaz4K_> hIK\";K30C/\>F@wq7-(4U6I ^ƃ>J}}l j~XS  ~ x, Ɯb]W<*8[$G"Z:r4|n'͢,]m"=|Ѝ(v i5X' (t. z}Q: B]F=w)(c ,Z+-Þ3 <<ޣ.R/=̫@`9/HmƗJg50"BB0=!!&$Dm1E C [bC3-6Iwp:ɥAC/A8DcilטJs 1StYhb6u (boFǂLĭÊlÝG =A1#+|KHG"O`c+3dk MR)uWVS3ȩءc3ĂLH0 1^)YKVBo=.v1;=?|sBɂEYGvtY ~TD0:]onC ^SyA5Tj[]Yf1!͎T`3vL 0x4āpB+4LHG)QMFAg }6khpũM/,S E 4̝N@kܶ=Wa c\Us|,l?2tSedJ65Ol&޿ 1ekYrr }  g9l ̣r=dU2$;,86B.yLf(FN!W)yndُeU0]`JXA2!p>7ZU\Q儧9*4Mc+VKW/.١'\gAW?:\>ߗozSP$MM@(|n-ۇ=!Md֝嗄^'7qLh᠁un,Ik"VT0taTsNg.=}/rR{!l2JFsP"ί#ȹ@n1)6J7)K}MߕBBt/,Ib%yT႓e5zaR$"RYou>$@` Eo>݂h;ŤW+I D:;ܴNq[w[/2oebk lƒUX ȍq3k /u*2VeTtJqDWi+8xw\6acL^{.Qs3MV«h wCk vy.}J+TSJxɕܡqtf#}SfaDٷi a'g`QkwVT1#݀2h.]"'QPit6 :l& :(+lsl UIV%KYX8bS\2I'Px!' AZC4. l3}c:M4p6??+9WE|uΠn*n42sKJZ\Pp/ S5<Ų3tJa!rY#>m M3> [C-,iz||\K4U$E^wI[N?`XGESb YouyF@ၽB?"!cX}EF嶛 rk0_–<#@0PegxJPt3?%4Ԅ8bT/|Ǩ[CmLX*&+!jT]gHwDr1&ۚsuBy0`P.\KAy;{$oJJ߫?*Sϓ4ܻTg$πpiQ }Px&cԩ5_ݨ*}vg{mDuMS,a!"ӑnawΔ4xWٌ Aziti\,}VRaS "xZ  sHE+(OPND-l&IWL,P|UfTqb\MR_fb%bl2d[%J]&I(aTW@hI$PY;E엙G^)ZP~B 6B@.Oypw-zkM3BHԛ7ǖ4Ng_nɜ+\ŋ3iZk$lA{k8cȓs̙j86k)ϟgVgI&j;Y9v$7z¦᎗mw.7dM:I8=95<"1accڮ5-K놓!YM^V4JwmU;]7Ct&"XzpC^SwXkm:`ncԕdL<#`g7kOFX}&%&V1n]}~ CKOl9᱌:0i*EX|L`fuI˽{hiN}+GCT"1$l;Jud  ayvuD&ضoi\ofJ+54z``މ ےh>Gyst-~mN Dniv&^\__uuGϻ3 :+iR)$3yI;h3Пϟ5&>(A 0*"#i,rR^g dz7}&\EMic\y |^G[ n J}vw,= m4%M> *cG%1VV:/qMvk J0 1S5=|q8rT^lwULPW+Ӄtf8A#z4 ]?"Lw|ۍ^xyثp> lckyECjh1UśpeM RU^ 출 Vbxu@,oDŠ.v'wSWBIE@||3G8 5[CO +n3.+25c s9蒶liMec|NݓiQ{ 6%kC!Ѓ)c6#/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 import QtQuick.Controls.Styles 1.1 import QtQuick.Layouts 1.0 /*! \qmltype GroupBox \inqmlmodule QtQuick.Controls \since 5.1 \ingroup controls \brief GroupBox provides a group box frame with a title. \image groupbox.png A group box provides a frame, a title on top and displays various other controls inside itself. Group boxes can also be checkable. Child controls in checkable group boxes are enabled or disabled depending on whether or not the group box is checked. You can minimize the space consumption of a group box by enabling the flat property. In most styles, enabling this property results in the removal of the left, right and bottom edges of the frame. To add content to a group box, you can reparent it to its contentItem property. The implicit size of the GroupBox is calculated based on the size of its content. If you want to anchor items inside the group box, you must specify an explicit width and height on the GroupBox itself. The following example shows how we use a GroupBox: \qml GroupBox { title: "Joining for?" Column { spacing: 10 CheckBox { text: "Breakfast" checked: true } CheckBox { text: "Lunch" checked: false } CheckBox { text: "Dinner" checked: true } } } \endqml \sa CheckBox, RadioButton, Layout */ FocusScope { id: groupbox /*! This property holds the group box title text. There is no default title text. */ property string title /*! This property holds whether the group box is painted flat or has a frame. A group box usually consists of a surrounding frame with a title at the top. If this property is enabled, only the top part of the frame is drawn in most styles; otherwise, the whole frame is drawn. By default, this property is disabled, so group boxes are not flat unless explicitly specified. \note In some styles, flat and non-flat group boxes have similar representations and may not be as distinguishable as they are in other styles. */ property bool flat: false /*! This property holds whether the group box has a checkbox in its title. If this property is true, the group box displays its title using a checkbox in place of an ordinary label. If the checkbox is checked, the group box's children are enabled; otherwise, they are disabled and inaccessible. By default, group boxes are not checkable. */ property bool checkable: false /*! \qmlproperty bool GroupBox::checked This property holds whether the group box is checked. If the group box is checkable, it is displayed with a check box. If the check box is checked, the group box's children are enabled; otherwise, the children are disabled and are inaccessible to the user. By default, checkable group boxes are also checked. */ property alias checked: check.checked /*! \internal */ default property alias __content: container.data /*! \qmlproperty Item GroupBox::contentItem This property holds the content Item of the group box. Items declared as children of a GroupBox are automatically parented to the GroupBox's contentItem. Items created dynamically need to be explicitly parented to the contentItem: \note The implicit size of the GroupBox is calculated based on the size of its content. If you want to anchor items inside the group box, you must specify an explicit width and height on the GroupBox itself. */ readonly property alias contentItem: container /*! \internal */ property Component style: Qt.createComponent(Settings.style + "/GroupBoxStyle.qml", groupbox) /*! \internal */ property alias __checkbox: check /*! \internal */ property alias __style: styleLoader.item implicitWidth: Math.max((!anchors.fill ? container.calcWidth() : 0) + loader.leftMargin + loader.rightMargin, sizeHint.implicitWidth + (checkable ? 24 : 6)) implicitHeight: (!anchors.fill ? container.calcHeight() : 0) + loader.topMargin + loader.bottomMargin Layout.minimumWidth: implicitWidth Layout.minimumHeight: implicitHeight Accessible.role: Accessible.Grouping Accessible.name: title activeFocusOnTab: false data: [ Loader { id: loader anchors.fill: parent property int topMargin: __style ? __style.padding.top : 0 property int bottomMargin: __style ? __style.padding.bottom : 0 property int leftMargin: __style ? __style.padding.left : 0 property int rightMargin: __style ? __style.padding.right : 0 sourceComponent: styleLoader.item ? styleLoader.item.panel : null onLoaded: item.z = -1 Text { id: sizeHint ; visible: false ; text: title } Loader { id: styleLoader property alias __control: groupbox sourceComponent: groupbox.style } }, CheckBox { id: check objectName: "check" checked: true text: groupbox.title visible: checkable anchors.top: parent.top anchors.left: parent.left anchors.right: parent.right height: loader.topMargin activeFocusOnTab: groupbox.checkable style: CheckBoxStyle { panel: Item{} } }, Item { id: container objectName: "container" z: 1 focus: true anchors.fill: parent anchors.topMargin: loader.topMargin anchors.leftMargin: loader.leftMargin anchors.rightMargin: loader.rightMargin anchors.bottomMargin: loader.bottomMargin enabled: (!groupbox.checkable || groupbox.checked) property Item layoutItem: container.children.length === 1 ? container.children[0] : null function calcWidth () { return (layoutItem ? (layoutItem.implicitWidth || layoutItem.width) + (layoutItem.anchors.fill ? layoutItem.anchors.leftMargin + layoutItem.anchors.rightMargin : 0) : container.childrenRect.width) } function calcHeight () { return (layoutItem ? (layoutItem.implicitHeight || layoutItem.height) + (layoutItem.anchors.fill ? layoutItem.anchors.topMargin + layoutItem.anchors.bottomMargin : 0) : container.childrenRect.height) } }] } /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 /*! \qmltype CheckBox \inqmlmodule QtQuick.Controls \since 5.1 \ingroup controls \brief A checkbox with a text label. \image checkbox.png A CheckBox is an option button that can be toggled on (checked) or off (unchecked). Checkboxes are typically used to represent features in an application that can be enabled or disabled without affecting others. The state of the checkbox can be set with the \l {AbstractCheckable::checked}{checked} property. In addition to the checked and unchecked states, there is a third state: partially checked. This state indicates that the regular checked/unchecked state can not be determined; generally because of other states that affect the checkbox. This state is useful when several child nodes are selected in a treeview, for example. The partially checked state can be made available to the user by setting \l partiallyCheckedEnabled to \c true, or set directly by setting \l checkedState to \c Qt.PartiallyChecked. \l checkedState behaves identically to \l {AbstractCheckable::checked}{checked} when \l partiallyCheckedEnabled is \c false; setting one will appropriately set the other. The label is shown next to the checkbox, and you can set the label text using its \l {AbstractCheckable::text}{text} property. \qml Column { CheckBox { text: qsTr("Breakfast") checked: true } CheckBox { text: qsTr("Lunch") } CheckBox { text: qsTr("Dinner") checked: true } } \endqml Whenever a CheckBox is clicked, it emits the \l {AbstractCheckable::clicked}{clicked()} signal. You can create a custom appearance for a CheckBox by assigning a \l {QtQuick.Controls.Styles::CheckBoxStyle}{CheckBoxStyle}. */ AbstractCheckable { id: checkBox /*! \qmlproperty enumeration CheckBox::checkedState This property indicates the current checked state of the checkbox. Possible values: \c Qt.UnChecked - The checkbox is not checked (default). \c Qt.Checked - The checkbox is checked. \c Qt.PartiallyChecked - The checkbox is in a partially checked (or "mixed") state. The \l {AbstractCheckable::checked}{checked} property also determines whether this property is \c Qt.Checked or \c Qt.UnChecked, and vice versa. */ property int checkedState: checked ? Qt.Checked : Qt.Unchecked /*! This property determines whether the \c Qt.PartiallyChecked state is available. A checkbox may be in a partially checked state when the regular checked state can not be determined. Setting \l checkedState to \c Qt.PartiallyChecked will implicitly set this property to \c true. If this property is \c true, \l {AbstractCheckable::checked}{checked} will be \c false. By default, this property is \c false. */ property bool partiallyCheckedEnabled: false /*! \internal True if onCheckedChanged should be ignored because we were reacting to onCheckedStateChanged. */ property bool __ignoreChecked: false /*! \internal True if onCheckedStateChanged should be ignored because we were reacting to onCheckedChanged. */ property bool __ignoreCheckedState: false style: Qt.createComponent(Settings.style + "/CheckBoxStyle.qml", checkBox) activeFocusOnTab: true Accessible.role: Accessible.CheckBox Accessible.name: text __cycleStatesHandler: __cycleCheckBoxStates onCheckedChanged: { if (!__ignoreChecked) { __ignoreCheckedState = true; checkedState = checked ? Qt.Checked : Qt.Unchecked; __ignoreCheckedState = false; } } onCheckedStateChanged: { __ignoreChecked = true; if (checkedState === Qt.PartiallyChecked) { partiallyCheckedEnabled = true; checked = false; } else if (!__ignoreCheckedState) { checked = checkedState === Qt.Checked; } __ignoreChecked = false; } onPartiallyCheckedEnabledChanged: { if (exclusiveGroup && partiallyCheckedEnabled) { console.warn("Cannot have partially checked boxes in an ExclusiveGroup."); } } onExclusiveGroupChanged: { if (exclusiveGroup && partiallyCheckedEnabled) { console.warn("Cannot have partially checked boxes in an ExclusiveGroup."); } } /*! \internal */ function __cycleCheckBoxStates() { if (!partiallyCheckedEnabled) { checked = !checked; } else { switch (checkedState) { case Qt.Unchecked: checkedState = Qt.Checked; break; case Qt.Checked: checkedState = Qt.PartiallyChecked; break; case Qt.PartiallyChecked: checkedState = Qt.Unchecked; break; } } } } 'xYmo8_n}s7wPl%o悢yED5 JIvܮP48 dķ=1{d.YqCGC|F)q_KCzbHBlggOOOotROh~2>+I ,|$}L12IITmDMzqM QႱ(}?q)v* p"@SU5@lC#m)Jn '$l(g9Ld+ds! e`1PpsFG񡻑٩QFJ8WHa2k(fx }xK1 $3I\ SbObYxK=>e]f`gƴ=rnu yaͿccL.` 2or3 &l oge^.emܕkYXmEbbT%X_N T'1rЭ@#'d/ ҭA&6,Xcut HeLv^^ڎ,\c mX_LڟdnK!.Ճ(6%1,kp1R }Nsǘ[w([DMG8l@oT@%)+%3zb^stkFgH`Jv)}Ǡm2\Wj:dtyEW!l3K &C_Vc6Ώ_s͖yE'SV4[$΄x !arAJW:rJ #?݈#M!CC MbrqqARF͢DO,cPk5| =_/}ҶC@Q C/)~/K|" QJXrh$OKCrx⛂ =nGb Ԁ ^fh VAm"R^fQ;`cc#T%G`xT%rJ_U6U"SuH#ӢBwz&۸F(- x|o5."j$܍UOz y٢N遘foCXz<_֞o,A?B1ŸE+oujMkdKVBPQa[=`GxPkFKWň=wKٳ[cԖe'R3 dB;rYEtchGh cO|M=s A5|#l?mN{M==M@ 'njixO^W0nKӖz[/E5v Ov@EY㎩2o0m[+woQf~@O6GctV_B32u@DJb瓴erʅ\cġ-X=R蒕F4?{ =wOUtFJIjtX{n͕װ!jOUȎ)toyp 8䑝6.\Yz*MM8ަbc+I6uI>d&X>-({a(THь>V\/.jC[gNZ݊1lU +"~Όի Xۆx .ĐҞ(qs_(%oP"'q^w9O~]nc9(y`m#xDB8{C:sh2|a mcC(T XHݡRJ2|`76^THSuc 0) { if (col < remainingHorizontalSpace) { ++rect.width; } // This cell's x position should be increased by 1 for every column above it. rect.x += Math.min(remainingHorizontalSpace, col); } rect.y = baseCellHeight * row; rect.height = baseCellHeight; if (remainingVerticalSpace > 0) { if (row < remainingVerticalSpace) { ++rect.height; } // This cell's y position should be increased by 1 for every row above it. rect.y += Math.min(remainingVerticalSpace, row); } rect.x += col * gridLineWidth; rect.y += row * gridLineWidth; return rect; } /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 /*! \qmltype Style \internal \inqmlmodule QtQuick.Controls.Private */ AbstractStyle { /*! The control this style is attached to. */ readonly property Item control: __control } s/**************************************************************************** ** ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 Item { id: button property alias source: image.source signal clicked Rectangle { id: fillRect anchors.fill: parent color: "black" opacity: mouse.pressed ? 0.07 : mouse.containsMouse ? 0.02 : 0.0 } Rectangle { border.color: gridColor anchors.fill: parent anchors.margins: -1 color: "transparent" opacity: fillRect.opacity * 10 } Image { id: image width: Math.min(implicitWidth, parent.width * 0.4) height: Math.min(implicitHeight, parent.height * 0.4) anchors.centerIn: parent fillMode: Image.PreserveAspectFit opacity: 0.6 } MouseArea { id: mouse anchors.fill: parent onClicked: button.clicked() hoverEnabled: Settings.hoverEnabled } } f/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 /*! \qmltype FocusFrame \internal \inqmlmodule QtQuick.Controls.Private */ Item { id: root activeFocusOnTab: false Accessible.role: Accessible.StatusBar anchors.topMargin: focusMargin anchors.leftMargin: focusMargin anchors.rightMargin: focusMargin anchors.bottomMargin: focusMargin property int focusMargin: loader.item ? loader.item.margin : -3 Loader { id: loader z: 2 anchors.fill: parent sourceComponent: Qt.createComponent(Settings.style + "/FocusFrameStyle.qml", root) } } /**************************************************************************** ** ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 Loader { id: handle property Item editor property int minimum: -1 property int maximum: -1 property int position: -1 property alias delegate: handle.sourceComponent readonly property alias pressed: mouse.pressed readonly property real handleX: x + (item ? item.x : 0) readonly property real handleY: y + (item ? item.y : 0) readonly property real handleWidth: item ? item.width : 0 readonly property real handleHeight: item ? item.height : 0 property Item control property QtObject styleData: QtObject { id: styleData signal activated() readonly property alias pressed: mouse.pressed readonly property alias position: handle.position readonly property bool hasSelection: editor.selectionStart !== editor.selectionEnd readonly property real lineHeight: position !== -1 ? editor.positionToRectangle(position).height : editor.cursorRectangle.height } function activate() { styleData.activated() } MouseArea { id: mouse anchors.fill: item enabled: item && item.visible preventStealing: true property real pressX property point offset property bool handleDragged: false onPressed: { Qt.inputMethod.commit() handleDragged = false pressX = mouse.x var handleRect = editor.positionToRectangle(handle.position) var centerX = handleRect.x + (handleRect.width / 2) var centerY = handleRect.y + (handleRect.height / 2) var center = mapFromItem(editor, centerX, centerY) offset = Qt.point(mouseX - center.x, mouseY - center.y) } onReleased: { if (!handleDragged) { // The user just clicked on the handle. In that // case clear the selection. var mousePos = editor.mapFromItem(item, mouse.x, mouse.y) var editorPos = editor.positionAt(mousePos.x, mousePos.y) editor.select(editorPos, editorPos) } } onPositionChanged: { handleDragged = true var pt = mapToItem(editor, mouse.x - offset.x, mouse.y - offset.y) // limit vertically within mix/max coordinates or content bounds var min = (minimum !== -1) ? minimum : 0 var max = (maximum !== -1) ? maximum : editor.length pt.y = Math.max(pt.y, editor.positionToRectangle(min).y) pt.y = Math.min(pt.y, editor.positionToRectangle(max).y) var pos = editor.positionAt(pt.x, pt.y) // limit horizontally within min/max character positions if (minimum !== -1) pos = Math.max(pos, minimum) pos = Math.max(pos, 0) if (maximum !== -1) pos = Math.min(pos, maximum) pos = Math.min(pos, editor.length) handle.position = pos } } } /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Layouts 1.1 Item { id: contentItem property real minimumWidth: __calcMinimum('Width') property real minimumHeight: __calcMinimum('Height') property real maximumWidth: Number.POSITIVE_INFINITY property real maximumHeight: Number.POSITIVE_INFINITY implicitWidth: __calcImplicitWidth() implicitHeight: __calcImplicitHeight() /*! \internal */ property Item __layoutItem: contentItem.children.length === 1 ? contentItem.children[0] : null /*! \internal */ property real __marginsWidth: __layoutItem ? __layoutItem.anchors.leftMargin + __layoutItem.anchors.rightMargin : 0 /*! \internal */ property real __marginsHeight: __layoutItem ? __layoutItem.anchors.topMargin + __layoutItem.anchors.bottomMargin : 0 /*! \internal */ property bool __noMinimumWidthGiven : false /*! \internal */ property bool __noMinimumHeightGiven : false /*! \internal */ property bool __noImplicitWidthGiven : false /*! \internal */ property bool __noImplicitHeightGiven : false function __calcImplicitWidth() { if (__layoutItem && __layoutItem.anchors.fill) return __calcImplicit('Width') return contentItem.childrenRect.x + contentItem.childrenRect.width } function __calcImplicitHeight() { if (__layoutItem && __layoutItem.anchors.fill) return __calcImplicit('Height') return contentItem.childrenRect.y + contentItem.childrenRect.height } function __calcImplicit(hw) { var pref = __layoutItem.Layout['preferred' + hw] if (pref < 0) { pref = __layoutItem['implicit' + hw] } contentItem['__noImplicit' + hw + 'Given'] = (pref === 0 ? true : false) pref += contentItem['__margins' + hw] return pref } function __calcMinimum(hw) { // hw is 'Width' or 'Height' return (__layoutItem && __layoutItem.anchors.fill) ? __calcMinMax('minimum', hw) : 0 } function __calcMaximum(hw) { // hw is 'Width' or 'Height' return (__layoutItem && __layoutItem.anchors.fill) ? __calcMinMax('maximum', hw) : Number.POSITIVE_INFINITY } function __calcMinMax(minMaxConstraint, hw) { var attachedPropName = minMaxConstraint + hw var extent = __layoutItem.Layout[attachedPropName] if (minMaxConstraint === 'minimum') contentItem['__noMinimum' + hw + 'Given'] = (extent === 0 ? true : false) extent += contentItem['__margins' + hw] return extent } } ^/**************************************************************************** ** ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.4 import QtQuick.Controls 1.3 import QtQuick.Controls.Private 1.0 FocusScope { id: button property Menu menu readonly property bool pressed: behavior.containsPress || behavior.keyPressed readonly property alias hovered: behavior.containsMouse property alias panel: loader.sourceComponent property alias __panel: loader.item activeFocusOnTab: true Accessible.role: Accessible.Button implicitWidth: __panel ? __panel.implicitWidth : 0 implicitHeight: __panel ? __panel.implicitHeight : 0 Loader { id: loader anchors.fill: parent property QtObject styleData: QtObject { readonly property alias pressed: button.pressed readonly property alias hovered: button.hovered readonly property alias activeFocus: button.activeFocus } onStatusChanged: if (status === Loader.Error) console.error("Failed to load Style for", button) } Keys.onPressed: { if (event.key === Qt.Key_Space && !event.isAutoRepeat && !behavior.keyPressed) behavior.keyPressed = true } Keys.onReleased: { if (event.key === Qt.Key_Space && !event.isAutoRepeat && behavior.keyPressed) behavior.keyPressed = false } onFocusChanged: { if (!focus) behavior.keyPressed = false } onPressedChanged: { if (!Settings.hasTouchScreen && !pressed && menu) popupMenuTimer.start() } MouseArea { id: behavior property bool keyPressed: false anchors.fill: parent enabled: !keyPressed hoverEnabled: Settings.hoverEnabled onReleased: { if (Settings.hasTouchScreen && containsMouse && menu) popupMenuTimer.start() } Timer { id: popupMenuTimer interval: 10 onTriggered: { behavior.keyPressed = false if (Qt.application.layoutDirection === Qt.RightToLeft) menu.__popup(Qt.rect(button.width, button.height, 0, 0), 0) else menu.__popup(Qt.rect(0, 0, button.width, button.height), 0) } } } Binding { target: menu property: "__minimumWidth" value: button.width } Binding { target: menu property: "__visualItem" value: button } } _xXmo8_1 EҺJC J"INj@WYJRo%9i~9%rW s #}|G,  $2⧳$ZqXs\\{qk,~ɣ5M`ECbl|MmJ0faHW)rwи292, ;`)l'H4 H,87ILRDH!) COS41]HC>+KWq| 3R.`'0_RL=Ϣ D0I$…nIr|ؤ pޒV  bg Pਂ@+ݐXRE*N)TAS'JZ`zp'fY}5,T{J3-B%Y98(hTŒU"߅'2kDdZɀDLq HPp?sZV|/R,?HهTe,.20Irym:L/{6gc.pӀtͫka;[c\\ݩc;|*tkƷm8Lm0ofP[i8}0d>6> XSWLEJwڗ0]>4'"/M.aۮ9Otfs{6u Mg4c(;r'gzoA5j''1rYJNș#/ۋ~sM7xw0Hm%|踦;w Naat #7w Xwu)QqHùcJk|Sc~BMuK_O-as;^h>_n Jzod() ˸W52Tݛq3A`J(v.mACd.ܗ)13Ou}Ti65.Zͻl힋^n -V{ V7]?AMȟ ;J2RQbZYAw&'kBBA^O.ajß )5_bn3U^C"ߗ^Ʋw*îac,CoT/ +=S<zː\ق i}Qt-:v[΢.7Etpy`شrMO,B5>kdov_ƢA bƸh[/ik#ek+gۗ q;ʒq6/%"h81bFZ"?E7J8(rVȗ3L&pv5yVpvRVS߅(siwX(De΂ʶNGO="ȴœ.`d=94 յ:WNRCٺr9B.W%P#wXȮ#H*cIWAY*}5hZeTEYVڅGI( b)>7jLVTr%f G+x Ne%[v]+˲a`ƒNN^DB)hHΕYwb7+}>:zvaΜVH"qP DdĴ1府Z|5j:`\j}q{)FGzm}v6ޟtn0%8"=C!*nC#E:9^I#>jBUjR6_SX$M먧rRӔxZ'1 r*ېFbX<.RܯsNc&$8,lJΞ8JV]$7s6'Ո9u쪙,/Ŀ-vj2aw翋RHb-AޖYCE@ qGWcy,rX>mL<2Rv5uq~IxsXˎG-|l~X [\[W͠hMIZ'ϕV?>8|{_QQXsŭkFkkud056u+v-vi]-ϴ[[WGC~xW]o6}3܏=yYr2+ YbbJT\%-[ݸhX"/ϽR>W#\9W;8!ʒArVDDŹY(V=+uz-s;%nE"倿(W oA9\)*E2-`!PPV*|'CQx}gEv,EEgaLS*zUvQ\J%d0"ByLd Eje4 r"4FkJP{GʔAdw,zQ$tmk3bpXհLj7(THQ*E@L%Ua8Ăc`ʆ(RjRkUY0:$qhi#Kv]-BώDžYhaܹ(H^RlRk<2/kg\; YJY\ \Ha#!C3{lnq~#Z!oJ[KkZmkeEEo~^P7v@ǁM]B< " 䒀8OB?`浱.n9ۛu^G0A`{!%sFz x~AFx%$svh85)4th vRg2Oh~.eȦĵ x! {4ڧqC. VjGD3l]'Դ;E"G ġx$eNp\"dzϫLrkGIؤBNBCw&O0nˆ)ƵCۤG#?aHHdR;=ARWFkӜ7!~0Z 8hyjzN Ô(!V GtH<_PFq($GG`ډ7 k35طs.5WF+J}8ln'/wu[-XJ<|i<vG kuЂ"U%kW,ŮQVYG [_rcWWa*k]e +a\،> R6(, 0C"=Py71e|U]YTLqW#be,kHa܆5HyƵt~c`JQ:"Ŝ''i BQX"RL/^=s|J O8XżW۠lk\ؙXD7hBhGRPY}&*k%5?N!{ ѶWRцȏϏgyToilR9L{qeqŚ峓:|qƕÚ57"ߪ]NmÊn4y1 tOkQG[͹SwʢvQ# o content scrolled // - contentWidth changes => text layout changed property rect selectionRectangle: cursorRectangle.x && contentWidth ? positionToRectangle(selectionPosition) : positionToRectangle(selectionPosition) onSelectionStartChanged: syncHandlesWithSelection() onCursorPositionChanged: syncHandlesWithSelection() function syncHandlesWithSelection() { if (!blockRecursion && selectionHandle.delegate) { blockRecursion = true // We cannot use property selectionPosition since it gets updated after onSelectionStartChanged cursorHandle.position = cursorPosition selectionHandle.position = (selectionStart !== cursorPosition) ? selectionStart : selectionEnd blockRecursion = false } TextSingleton.updateSelectionItem(input) } function activate() { if (activeFocusOnPress) { forceActiveFocus() if (!readOnly) Qt.inputMethod.show() } cursorHandle.activate() selectionHandle.activate() } function moveHandles(cursor, selection) { blockRecursion = true cursorPosition = cursor if (selection === -1) { selectWord() selection = selectionStart } selectionHandle.position = selection cursorHandle.position = cursorPosition blockRecursion = false } MouseArea { id: mouseArea anchors.fill: parent hoverEnabled: Settings.hoverEnabled cursorShape: Qt.IBeamCursor acceptedButtons: (input.selectByMouse ? Qt.NoButton : Qt.LeftButton) | (control.menu ? Qt.RightButton : Qt.NoButton) onClicked: { if (editMenu.item) return; var pos = input.positionAt(mouse.x, mouse.y) input.moveHandles(pos, pos) input.activate() } onPressAndHold: { if (editMenu.item) return; var pos = input.positionAt(mouse.x, mouse.y) input.moveHandles(pos, control.selectByMouse ? -1 : pos) input.activate() } } EditMenu { id: editMenu input: parent mouseArea: mouseArea control: parent.control cursorHandle: cursorHandle selectionHandle: selectionHandle anchors.fill: parent } TextHandle { id: selectionHandle editor: input parent: control control: input.control active: control.selectByMouse && Settings.isMobile maximum: cursorHandle.position - 1 property var mappedPos: parent.mapFromItem(editor, editor.selectionRectangle.x, editor.selectionRectangle.y) x: mappedPos.x y: mappedPos.y visible: pressed || (input.hasSelection && handleX + handleWidth >= -1 && handleX <= control.width + 1) onPositionChanged: { if (!input.blockRecursion) { input.blockRecursion = true input.select(selectionHandle.position, cursorHandle.position) if (pressed) input.ensureVisible(position) input.blockRecursion = false } } } TextHandle { id: cursorHandle editor: input parent: control control: input.control active: control.selectByMouse && Settings.isMobile minimum: input.hasSelection ? selectionHandle.position + 1 : -1 property var mappedPos: parent.mapFromItem(editor, editor.cursorRectangle.x, editor.cursorRectangle.y) x: mappedPos.x y: mappedPos.y visible: pressed || ((input.cursorVisible || input.hasSelection) && handleX + handleWidth >= -1 && handleX <= control.width + 1) onPositionChanged: { if (!input.blockRecursion) { input.blockRecursion = true if (!input.hasSelection) selectionHandle.position = cursorHandle.position input.select(selectionHandle.position, cursorHandle.position) input.blockRecursion = false } } } } 'module QtQuick.Controls.Private AbstractCheckable 1.0 AbstractCheckable.qml CalendarHeaderModel 1.0 CalendarHeaderModel.qml Control 1.0 Control.qml CalendarUtils 1.0 CalendarUtils.js FocusFrame 1.0 FocusFrame.qml Margins 1.0 Margins.qml BasicButton 1.0 BasicButton.qml ScrollBar 1.0 ScrollBar.qml ScrollViewHelper 1.0 ScrollViewHelper.qml Style 1.0 Style.qml MenuItemSubControls 1.0 MenuItemSubControls.qml TabBar 1.0 TabBar.qml StackViewSlideDelegate 1.0 StackViewSlideDelegate.qml StyleHelpers 1.0 style.js JSArray 1.0 StackView.js TableViewSelection 1.0 TableViewSelection.qml FastGlow 1.0 FastGlow.qml SourceProxy 1.0 SourceProxy.qml GroupBoxStyle 1.0 ../Styles/Base/GroupBoxStyle.qml FocusFrameStyle 1.0 ../Styles/Base/FocusFrameStyle.qml ToolButtonStyle 1.0 ../Styles/Base/ToolButtonStyle.qml MenuContentItem 1.0 MenuContentItem.qml MenuContentScroller 1.0 MenuContentScroller.qml ColumnMenuContent 1.0 ColumnMenuContent.qml ContentItem 1.0 ContentItem.qml HoverButton 1.0 HoverButton.qml singleton SystemPaletteSingleton 1.0 SystemPaletteSingleton.qml singleton TextSingleton 1.0 TextSingleton.qml TextHandle 1.0 TextHandle.qml TextInputWithHandles 1.0 TextInputWithHandles.qml EditMenu 1.0 EditMenu.qml EditMenu_base 1.0 EditMenu_base.qml EditMenu_ios 1.0 EditMenu_ios.qml ToolMenuButton 1.0 ToolMenuButton.qml /**************************************************************************** ** ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL21$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 or version 3 as published by the Free ** Software Foundation and appearing in the file LICENSE.LGPLv21 and ** LICENSE.LGPLv3 included in the packaging of this file. Please review the ** following information to ensure the GNU Lesser General Public License ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ pragma Singleton import QtQuick 2.2 QtObject { property SystemPalette active: SystemPalette { colorGroup: SystemPalette.Active } property SystemPalette disabled: SystemPalette { colorGroup: SystemPalette.Disabled } function alternateBase(enabled) { return enabled ? active.alternateBase : disabled.alternateBase } function base(enabled) { return enabled ? active.base : disabled.base } function button(enabled) { return enabled ? active.button : disabled.button } function buttonText(enabled) { return enabled ? active.buttonText : disabled.buttonText } function dark(enabled) { return enabled ? active.dark : disabled.dark } function highlight(enabled) { return enabled ? active.highlight : disabled.highlight } function highlightedText(enabled) { return enabled ? active.highlightedText : disabled.highlightedText } function light(enabled) { return enabled ? active.light : disabled.light } function mid(enabled) { return enabled ? active.mid : disabled.mid } function midlight(enabled) { return enabled ? active.midlight : disabled.midlight } function shadow(enabled) { return enabled ? active.shadow : disabled.shadow } function text(enabled) { return enabled ? active.text : disabled.text } function window(enabled) { return enabled ? active.window : disabled.window } function windowText(enabled) { return enabled ? active.windowText : disabled.windowText } } /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 import QtQuick.Controls.Styles 1.1 /*! \qmltype BasicButton \internal \qmlabstract \inqmlmodule QtQuick.Controls.Private */ Control { id: button /*! This signal is emitted when the button is clicked. */ signal clicked /*! \qmlproperty bool BasicButton::pressed This property holds whether the button is being pressed. */ readonly property alias pressed: button.__effectivePressed /*! \qmlproperty bool BasicButton::hovered This property indicates whether the control is being hovered. */ readonly property alias hovered: behavior.containsMouse /*! This property holds whether the button is checkable. The default value is \c false. */ property bool checkable: false Accessible.checkable: checkable /*! This property holds whether the button is checked. Only checkable buttons can be checked. The default value is \c false. */ property bool checked: false Accessible.checked: checked /*! This property holds the ExclusiveGroup that the button belongs to. The default value is \c null. */ property ExclusiveGroup exclusiveGroup: null /*! This property holds the associated button action. If a button has an action associated, the action defines the button's properties like checked, text, tooltip etc. When an action is set, it's still possible to override the \l text, \l tooltip, \l iconSource, and \l iconName properties. The default value is \c null. */ property Action action: null /*! This property specifies whether the button should gain active focus when pressed. The default value is \c false. */ property bool activeFocusOnPress: false /*! This property holds the text shown on the button. If the button has no text, the \l text property will be an empty string. The default value is the empty string. */ property string text: action ? action.text : "" /*! This property holds the button tooltip. */ property string tooltip: action ? (action.tooltip || StyleHelpers.removeMnemonics(action.text)) : "" /*! This property holds the icon shown on the button. If the button has no icon, the iconSource property will be an empty string. The default value is the empty string. */ property url iconSource: action ? action.iconSource : "" /*! The image label source as theme name. When an icon from the platform icon theme is found, this takes precedence over iconSource. */ property string iconName: action ? action.iconName : "" /*! \internal */ property string __position: "only" /*! \internal */ readonly property bool __iconOverriden: button.action && (button.action.iconSource !== button.iconSource || button.action.iconName !== button.iconName) /*! \internal */ property Action __action: action || ownAction /*! \internal */ readonly property Action __iconAction: __iconOverriden ? ownAction : __action /*! \internal */ onExclusiveGroupChanged: { if (exclusiveGroup) exclusiveGroup.bindCheckable(button) } Accessible.role: Accessible.Button Accessible.description: tooltip /*! \internal */ function accessiblePressAction() { __action.trigger(button) } Action { id: ownAction iconSource: !button.action || __iconOverriden ? button.iconSource : "" iconName: !button.action || __iconOverriden ? button.iconName : "" // let ownAction handle mnemonic if and only if the button does // not already have an action assigned to avoid ambiguous shortcuts text: button.action ? "" : button.text } Connections { target: __action onTriggered: button.clicked() } activeFocusOnTab: true Keys.onPressed: { if (event.key === Qt.Key_Space && !event.isAutoRepeat && !behavior.pressed) behavior.keyPressed = true; } onFocusChanged: if (!focus) behavior.keyPressed = false Keys.onReleased: { if (event.key === Qt.Key_Space && !event.isAutoRepeat && behavior.keyPressed) { behavior.keyPressed = false; __action.trigger(button) behavior.toggle() } } MouseArea { id: behavior property bool keyPressed: false property bool effectivePressed: pressed && containsMouse || keyPressed anchors.fill: parent hoverEnabled: Settings.hoverEnabled enabled: !keyPressed function toggle() { if (button.checkable && !button.action && !(button.checked && button.exclusiveGroup)) button.checked = !button.checked } onReleased: { if (containsMouse) { toggle() __action.trigger(button) } } onExited: Tooltip.hideText() onCanceled: Tooltip.hideText() onPressed: { if (activeFocusOnPress) button.forceActiveFocus() } Timer { interval: 1000 running: behavior.containsMouse && !pressed && tooltip.length onTriggered: Tooltip.showText(behavior, Qt.point(behavior.mouseX, behavior.mouseY), tooltip) } } /*! \internal */ property var __behavior: behavior /*! \internal */ property bool __effectivePressed: behavior.effectivePressed states: [ State { name: "boundAction" when: action !== null PropertyChanges { target: button enabled: action.enabled checkable: action.checkable checked: action.checked } } ] } V/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls.Styles 1.1 /*! \qmltype Control \internal \qmlabstract \inqmlmodule QtQuick.Controls.Private */ FocusScope { id: root /*! \qmlproperty Component Control::style The style Component for this control. \sa {Qt Quick Controls Styles QML Types} */ property Component style /*! \internal */ property QtObject __style: styleLoader.item /*! \internal */ property Item __panel: panelLoader.item /*! \internal */ property var styleHints implicitWidth: __panel ? __panel.implicitWidth: 0 implicitHeight: __panel ? __panel.implicitHeight: 0 baselineOffset: __panel ? __panel.baselineOffset: 0 activeFocusOnTab: false /*! \internal */ property alias __styleData: styleLoader.styleData Loader { id: panelLoader anchors.fill: parent sourceComponent: __style ? __style.panel : null onStatusChanged: if (status === Loader.Error) console.error("Failed to load Style for", root) Loader { id: styleLoader sourceComponent: style property Item __control: root property QtObject styleData: null onStatusChanged: { if (status === Loader.Error) console.error("Failed to load Style for", root) } } } } /**************************************************************************** ** ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 Loader { property Item control property Item input property Item cursorHandle property Item selectionHandle property Flickable flickable property Component defaultMenu: item && item.defaultMenu ? item.defaultMenu : null property Menu menuInstance: null property MouseArea mouseArea Connections { target: control onMenuChanged: { if (menuInstance !== null) { menuInstance.destroy() menuInstance = null } } } function getMenuInstance() { // Lazy load menu when first requested if (!menuInstance && control.menu) { menuInstance = control.menu.createObject(input); } return menuInstance; } source: Qt.resolvedUrl(Qt.platform.os === "ios" ? "EditMenu_ios.qml" : Qt.platform.os === "android" ? "" : "EditMenu_base.qml") } s/**************************************************************************** ** ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 /* CalendarHeaderModel contains a list of the days of a week, according to a \l locale. The \l locale affects which day of the week is first in the model. The only role provided by the model is \c dayOfWeek, which is one of the following JavaScript values: \list \li \c Locale.Sunday \li \c Locale.Monday \li \c Locale.Tuesday \li \c Locale.Wednesday \li \c Locale.Thursday \li \c Locale.Friday \li \c Locale.Saturday \endlist */ ListModel { id: root /* The locale that this model should be based on. This affects which day of the week is first in the model. */ property var locale ListElement { dayOfWeek: Locale.Sunday } ListElement { dayOfWeek: Locale.Monday } ListElement { dayOfWeek: Locale.Tuesday } ListElement { dayOfWeek: Locale.Wednesday } ListElement { dayOfWeek: Locale.Thursday } ListElement { dayOfWeek: Locale.Friday } ListElement { dayOfWeek: Locale.Saturday } Component.onCompleted: { var daysOfWeek = [Locale.Sunday, Locale.Monday, Locale.Tuesday, Locale.Wednesday, Locale.Thursday, Locale.Friday, Locale.Saturday]; var firstDayOfWeek = root.locale.firstDayOfWeek; var shifted = daysOfWeek.splice(firstDayOfWeek, daysOfWeek.length - firstDayOfWeek); daysOfWeek = shifted.concat(daysOfWeek) if (firstDayOfWeek !== Locale.Sunday) { for (var i = 0; i < daysOfWeek.length; ++i) { root.setProperty(i, "dayOfWeek", daysOfWeek[i]); } } } } /**************************************************************************** ** ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 Item { id: editMenuBase anchors.fill: parent Component { id: cutAction Action { text: qsTr("Cu&t") shortcut: StandardKey.Cut iconName: "edit-cut" enabled: !input.readOnly && selectionStart !== selectionEnd onTriggered: { input.cut(); input.select(input.cursorPosition, input.cursorPosition); } } } Component { id: copyAction Action { text: qsTr("&Copy") shortcut: StandardKey.Copy iconName: "edit-copy" enabled: input.selectionStart !== input.selectionEnd onTriggered: { input.copy(); input.select(input.cursorPosition, input.cursorPosition); } } } Component { id: pasteAction Action { text: qsTr("&Paste") shortcut: StandardKey.Paste iconName: "edit-paste" enabled: input.canPaste onTriggered: input.paste() } } property Component defaultMenu: Menu { MenuItem { action: cutAction.createObject(editMenuBase) } MenuItem { action: copyAction.createObject(editMenuBase) } MenuItem { action: pasteAction.createObject(editMenuBase) } } Connections { target: mouseArea onClicked: { if (input.selectionStart === input.selectionEnd) { var cursorPos = input.positionAt(mouse.x, mouse.y) input.moveHandles(cursorPos, cursorPos) } input.activate() if (control.menu) { var menu = getMenuInstance(); menu.__dismissMenu(); menu.__destroyAllMenuPopups(); var menuPos = mapToItem(null, mouse.x, mouse.y) menu.__popup(Qt.rect(menuPos.x, menuPos.y, 0, 0), -1, MenuPrivate.EditMenu); } } } } O#7xYmo8_1Iu.b+E8 %&U$~3ԋEIvm Ey3ϐɇ0/1\ o0܅Y'Q \$܍_:ǜ%]-[ }X <==iuyBǓ=AnYx?n, zdp-:W0Vvމ+Zsn\90&?i.Ja@0\[LCR`*)"BvQ4 )F,D| Di19!fע\ 1.$yxE}^6 F 3kC8Iٝe^^9p5 }2щcsgjٲlt9}r2lD}h'i=0'|hN.{:`2uHJ:Ӟ4\  ͑I3!sS0-G5P|Ctsl 5Ř8`_飑.L b z 2'1p(&H=3&~Ǽnrq=G9>/1M-cLcJ1r:ʴۆi -7 Pwti`PmSМ8eg9tqo0C詎2 ŜaǘZw!w7W[^5acNU Mb2e`xab\Kc20H`JnL6 8"eiܮ =`^>b<6s kGfcLEy kOڧڐVƏʜ|8<@ n!a]2y e6[rH -fnlN GN/kZB"Q+F]:kt= =9?z wϮG6߳{5,y'x/3R6;lڊd9{GG+Fԕ)ka xJWMϢalk+ mp 0Gt9gggQܥA[1stYV[3Q(J ^Vm^ECW6m0xZ%هXZ(1VqWS J}5*⪊T(jdˏq'95נ+ G,CUqLKOeV>dq::JxƸFe~Ͽz4N^k/UpjF#֟R $˛]''wApsUJ:gkz1[+Qʨ2EoOnOxwD,A,p[f$k yυr|ɅYn{ ?UhzB$r[~w2F^n =1Ѫå,+K92t'J%D7w` 6=>ޕn%kn䅟=ӥiZlX"B 2e21{g 5 F(Hf?*vMiJ?KTTo1P#|C?N(t#J¾vm;ij ۬ .YYl!zavʴ쵤[}WVVO~kGPav;vpڽEcCV~,V#_VmM) j?n:wyz-脸5eBG^Y VoWr*ղqlߺw-OEWvdRec@ݱ/x+sтQaz,Y5E")UEYzݲukL{qKpࡏ͠A1iB&[]KUYN\5&%ȝd -o^GC%;|jKtKd 6I TO8ZIl1 2~e?u6GOySE2w@=O-"!2gJ͒[,5a/Tzy"1ͥCW{~s| |wQ38uel8_=thARG4'J~ Rŭ`-(}Ǝ)?8˷ÝlWxdt\'Low^*m}?b-qewc1iU_jǮXL=gnOaѭW-`5 >e%6,^an/~PQN53L>f_FArMe<ܰXR_S4]3ww%ۀl/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 QtObject { property int count: 0 signal selectionChanged property bool __dirty: false property var __ranges: [] function forEach (callback) { if (!(callback instanceof Function)) { console.warn("TableViewSelection.forEach: argument is not a function") return; } __forEach(callback, -1) } function contains(index) { for (var i = 0 ; i < __ranges.length ; ++i) { if (__ranges[i][0] <= index && index <= __ranges[i][1]) return true; else if (__ranges[i][0] > index) return false; } return false; } function clear() { __ranges = [] __dirty = true count = 0 selectionChanged() } function selectAll() { select(0, rowCount - 1) } function select(first, last) { __select(true, first, last) } function deselect(first, last) { __select(false, first, last) } // --- private section --- function __printRanges() { var out = "" for (var i = 0 ; i < __ranges.length ; ++ i) out += ("{" + __ranges[i][0] + "," + __ranges[i][1] + "} ") print(out) } function __count() { var sum = 0 for (var i = 0 ; i < __ranges.length ; ++i) { sum += (1 + __ranges[i][1] - __ranges[i][0]) } return sum } function __forEach (callback, startIndex) { __dirty = false var i, j for (i = 0 ; i < __ranges.length && !__dirty ; ++i) { for (j = __ranges[i][0] ; !__dirty && j <= __ranges[i][1] ; ++j) { if (j >= startIndex) callback.call(this, j) } } // Restart iteration at last index if selection changed if (__dirty) return __forEach(callback, j) } function __selectOne(index) { __ranges = [[index, index]] __dirty = true count = 1 selectionChanged(); } function __select(select, first, last) { var i, range var start = first var stop = first var startRangeIndex = -1 var stopRangeIndex = -1 var newRangePos = 0 if (first < 0 || last < 0 || first >= rowCount || last >=rowCount) { console.warn("TableViewSelection: index out of range") return } if (last !== undefined) { start = first <= last ? first : last stop = first <= last ? last : first } if (select) { // Find beginning and end ranges for (i = 0 ; i < __ranges.length; ++ i) { range = __ranges[i] if (range[0] > stop + 1) continue; // above range if (range[1] < start - 1) { // below range newRangePos = i + 1 continue; } if (startRangeIndex === -1) startRangeIndex = i stopRangeIndex = i } if (startRangeIndex !== -1) start = Math.min(__ranges[startRangeIndex][0], start) if (stopRangeIndex !== -1) stop = Math.max(__ranges[stopRangeIndex][1], stop) if (startRangeIndex === -1) startRangeIndex = newRangePos __ranges.splice(Math.max(0, startRangeIndex), 1 + stopRangeIndex - startRangeIndex, [start, stop]) } else { // Find beginning and end ranges for (i = 0 ; i < __ranges.length; ++ i) { range = __ranges[i] if (range[1] < start) continue; // below range if (range[0] > stop) continue; // above range if (startRangeIndex === -1) startRangeIndex = i stopRangeIndex = i } // Slice ranges accordingly if (startRangeIndex >= 0 && stopRangeIndex >= 0) { var startRange = __ranges[startRangeIndex] var stopRange = __ranges[stopRangeIndex] var length = 1 + stopRangeIndex - startRangeIndex if (start <= startRange[0] && stop >= stopRange[1]) { //remove __ranges.splice(startRangeIndex, length) } else if (start - 1 < startRange[0] && stop <= stopRange[1]) { //cut front __ranges.splice(startRangeIndex, length, [stop + 1, stopRange[1]]) } else if (start - 1 < startRange[1] && stop >= stopRange[1]) { // cut back __ranges.splice(startRangeIndex, length, [startRange[0], start - 1]) } else { //split __ranges.splice(startRangeIndex, length, [startRange[0], start - 1], [stop + 1, stopRange[1]]) } } } __dirty = true count = __count() // forces a re-evaluation of indexes in the delegates selectionChanged() } } ^0txZOHbNM )loeօ/[! d{3DZՍƞy͛dyy.vzE_ݨPESƳ$*DLs%]Gopw<ϗݽ;c|&IқHބ5L\H .4ɵR|aDX$IDTT?O.cx9{0AGZy"LboApdʸr.16HMe I%wY˙T]rĤFb%t*yJ oGܩ|.3MV9,ZMCa*<<3Uݪy3K߈imhc9&Iyc Sd&b"yf mxҒ9mE8!~Gk*Bcgk\4 B&V@RJ DT 42Ky'G`%uT++ϧ-O)P*OpY+|Q-YA[ xJNt4cda22aV1EKU}0fu+gkkeu~G&fOdK9%^Ef̈W?h{g{,z7:{?O&d4{@>fx16nۼ 1 lEwphBH?da͝bt$Nq?'?јO(O@WxoD'`P1`+=p<"כXSJ! μgŃP}Ǡ aQS2<RbPIpqLǣQx7pVE13}w2y`ËgÉ7_Mpg.vYף!ɬmjFG=0?&\RG&6HB,X%z<~|&  q͹ç+#Ŀ=1V_hٶ7G=֖Z,\˵) /69gp n-a>.~)$: j^p1B5X7GY.ş[ͺ" $a>wɝ;|$^ƈ(G.#S|d(y KdF1Pz>sxLRv 1?Q"GIRM'8ŋ]ۧjF%%37 v2u(į%vfoO a'aZU[Hns򲜴۳]h2INېEєώDaDnnbJ6BUy+y;ѭLpBl-(d+&Sx̶0m"myp͂mX/ukDžSj95aW2PQd~#[;[÷tЉd|ijgj7;Ji-$Ly԰edv޷&x*3d~C&ks7G] ryWKJd¸gq_u@[F6rnNUNCu8hCD8جfW6HB, uN?ܤӳr:spi.z j5FčjZrf5{:/ڤʩJ!jk;EtmaM7w9J$E5Ș.L\Ft"TjCSI^T2UW<|L|i`T[Ņ,)6ޞRiGdԉts̋d Ncj FË?6F2?08eYq6攻k^3̞m~٦y {\r$,:QNs6RU˵Zo&qTDӈlJY-J0F1G1LvSQJR$ ]2Y:unjh*o(*HbCgr:uE;  h%fčq E_TV2 2ad܍ $ٱquJGYsJd}-pJ('iklk.uZ\ԍ"lY^vcuV싗2[P=~ꇳ*/q4feM.BvTᚪh}ˎ\J&vOGH_,qqfuNp#%#yfus߬y52[_Kqtt1r8F򻮟wم ^-cQ@ ||=GپF-Xf>I"3dN aڞ/ aolMnQ$nx5!f$')v;:wL];, +~JHNS^6اw'+bx58_}D;7k z JEifl.WTJLiBP^_UU;jrS:[YO<@6FҏQ.)U_" 6M=mkg[XjLuz?[nlHSjAʫ2^[S[hrbRR,79qw* -(f度|Dq(cM#{&MZE]&m.v;LjYҠ%:A=Vŝ5k#޸3*TFRjc}S,m~{xN#[0"ceSҭA/0Wy2K<]6snz$7,\7yM~ 2G݇p4'3l5K7uT(=fp >ִ }8= jv̒jcDM+BÑlLVBcaJ#>=$tk^ U[-z> UȖdp`6UxɯP>yBmSh6FWAIVCrs-$o*%tk4U٫./ɸ٭MD0ߕηKpi!KDp?P,%QfF SB(MM ұAQ$GSYηN_e>W`GC+.vyx v}4xtGզ}.kmnV9 XW@%Y1A6ɱj E>0G+1YnjKZYqbIx=:>cSI1%Y拉^Sd1PTWs[Vk)KՆFkVo tZ;9Z{ n_ɶdJ?8V/vCKY%Y ͌n]#]MС9 űtjD{/[_"\/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 Item { id: content property Component menuItemDelegate property Component scrollIndicatorStyle property Component scrollerStyle property var itemsModel property int minWidth: 100 property real maxHeight: 800 readonly property bool mousePressed: hoverArea.pressed signal triggered(var item) function menuItemAt(index) { list.currentIndex = index return list.currentItem } width: Math.max(list.contentWidth, minWidth) height: Math.min(list.contentHeight, fittedMaxHeight) readonly property int currentIndex: __menu.__currentIndex property Item currentItem: null property int itemHeight: 23 Component.onCompleted: { var children = list.contentItem.children for (var i = 0; i < list.count; i++) { var child = children[i] if (child.visible && child.styleData.type === MenuItemType.Item) { itemHeight = children[i].height break } } } readonly property int fittingItems: Math.floor((maxHeight - downScroller.height) / itemHeight) readonly property real fittedMaxHeight: itemHeight * fittingItems + downScroller.height readonly property bool shouldUseScrollers: scrollView.style === emptyScrollerStyle && itemsModel.length > fittingItems readonly property real upScrollerHeight: upScroller.visible ? upScroller.height : 0 readonly property real downScrollerHeight: downScroller.visible ? downScroller.height : 0 property var oldMousePos: undefined property var openedSubmenu: null function updateCurrentItem(mouse) { var pos = mapToItem(list.contentItem, mouse.x, mouse.y) var dx = 0 var dy = 0 var dist = 0 if (openedSubmenu && oldMousePos !== undefined) { dx = mouse.x - oldMousePos.x dy = mouse.y - oldMousePos.y dist = Math.sqrt(dx * dx + dy * dy) } oldMousePos = mouse if (openedSubmenu && dist > 5) { var menuRect = __menu.__popupGeometry var submenuRect = openedSubmenu.__popupGeometry var angle = Math.atan2(dy, dx) var ds = 0 if (submenuRect.x > menuRect.x) { ds = menuRect.width - oldMousePos.x } else { angle = Math.PI - angle ds = oldMousePos.x } var above = submenuRect.y - menuRect.y - oldMousePos.y var below = submenuRect.height - above var minAngle = Math.atan2(above, ds) var maxAngle = Math.atan2(below, ds) // This tests that the current mouse position is in // the triangle defined by the previous mouse position // and the submenu's top-left and bottom-left corners. if (minAngle < angle && angle < maxAngle) { sloppyTimer.start() return } } if (!currentItem || !currentItem.contains(Qt.point(pos.x - currentItem.x, pos.y - currentItem.y))) { if (currentItem && !hoverArea.pressed && currentItem.styleData.type === MenuItemType.Menu) { currentItem.__closeSubMenu() openedSubmenu = null } currentItem = list.itemAt(pos.x, pos.y) if (currentItem) { __menu.__currentIndex = currentItem.__menuItemIndex if (currentItem.styleData.type === MenuItemType.Menu && !currentItem.__menuItem.__popupVisible) { currentItem.__showSubMenu(false) openedSubmenu = currentItem.__menuItem } } else { __menu.__currentIndex = -1 } } } Timer { id: sloppyTimer interval: 1000 // Stop timer as soon as we hover one of the submenu items property int currentIndex: openedSubmenu ? openedSubmenu.__currentIndex : -1 onCurrentIndexChanged: if (currentIndex !== -1) stop() onTriggered: { if (openedSubmenu && openedSubmenu.__currentIndex === -1) updateCurrentItem(oldMousePos) } } Component { id: emptyScrollerStyle Style { padding { left: 0; right: 0; top: 0; bottom: 0 } property bool scrollToClickedPosition: false property Component frame: Item { visible: false } property Component corner: Item { visible: false } property Component __scrollbar: Item { visible: false } } } ScrollView { id: scrollView anchors { fill: parent topMargin: upScrollerHeight bottomMargin: downScrollerHeight } style: scrollerStyle || emptyScrollerStyle __wheelAreaScrollSpeed: itemHeight ListView { id: list model: itemsModel delegate: menuItemDelegate snapMode: ListView.SnapToItem boundsBehavior: Flickable.StopAtBounds highlightFollowsCurrentItem: true highlightMoveDuration: 0 } } MouseArea { id: hoverArea anchors.left: scrollView.left width: scrollView.width - scrollView.__verticalScrollBar.width height: parent.height hoverEnabled: Settings.hoverEnabled acceptedButtons: Qt.AllButtons onPositionChanged: updateCurrentItem({ "x": mouse.x, "y": mouse.y }) onPressed: updateCurrentItem({ "x": mouse.x, "y": mouse.y }) onReleased: content.triggered(currentItem) onExited: { if (currentItem && !currentItem.__menuItem.__popupVisible) { currentItem = null __menu.__currentIndex = -1 } } MenuContentScroller { id: upScroller direction: Qt.UpArrow visible: shouldUseScrollers && !list.atYBeginning function scrollABit() { list.contentY -= itemHeight } } MenuContentScroller { id: downScroller direction: Qt.DownArrow visible: shouldUseScrollers && !list.atYEnd function scrollABit() { list.contentY += itemHeight } } } Timer { interval: 1 running: true repeat: false onTriggered: list.positionViewAtIndex(currentIndex, !scrollView.__style ? ListView.Center : ListView.Beginning) } Binding { target: scrollView.__verticalScrollBar property: "singleStep" value: itemHeight } } /**************************************************************************** ** ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 QtObject { property Component background: null property Component label: null property Component submenuIndicator: null property Component shortcut: null property Component checkmarkIndicator: null } /**************************************************************************** ** ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL21$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 or version 3 as published by the Free ** Software Foundation and appearing in the file LICENSE.LGPLv21 and ** LICENSE.LGPLv3 included in the packaging of this file. Please review the ** following information to ensure the GNU Lesser General Public License ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ pragma Singleton import QtQuick 2.2 Text { /** selectionItem is the item that currently has a text selection. On some platforms (iOS) you can select text without activating the input field. This means that selectionItem can be different from item with active focus on those platforms. */ property Item selectionItem: null function updateSelectionItem(item) { // Convenience function to check if we should transfer or // remove selectionItem status from item. var selection = item.selectionStart !== item.selectionEnd if (item === selectionItem) { if (!selection) selectionItem = null } else if (selection) { if (selectionItem) selectionItem.select(selectionItem.cursorPosition, selectionItem.cursorPosition) selectionItem = item } } } /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Graphical Effects module. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 Item { id: rootItem property variant input property variant output property variant sourceRect visible: false Component.onCompleted: evaluateInput() onInputChanged: evaluateInput() onSourceRectChanged: evaluateInput() function evaluateInput() { if (input == undefined) { output = input } else if (sourceRect != undefined && sourceRect != Qt.rect(0, 0, 0, 0) && !isQQuickShaderEffectSource(input)) { proxySource.sourceItem = input output = proxySource proxySource.sourceRect = sourceRect } else if (isQQuickItemLayerEnabled(input)) { output = input } else if ((isQQuickImage(input) && !hasTileMode(input) && !hasChildren(input))) { output = input } else if (isQQuickShaderEffectSource(input)) { output = input } else { proxySource.sourceItem = input output = proxySource proxySource.sourceRect = Qt.rect(0, 0, 0, 0) } } function isQQuickItemLayerEnabled(item) { if (item.hasOwnProperty("layer")) { var l = item["layer"] if (l.hasOwnProperty("enabled") && l["enabled"].toString() == "true") return true } return false } function isQQuickImage(item) { var imageProperties = [ "fillMode", "progress", "asynchronous", "sourceSize", "status", "smooth" ] return hasProperties(item, imageProperties) } function isQQuickShaderEffectSource(item) { var shaderEffectSourceProperties = [ "hideSource", "format", "sourceItem", "mipmap", "wrapMode", "live", "recursive", "sourceRect" ] return hasProperties(item, shaderEffectSourceProperties) } function hasProperties(item, properties) { var counter = 0 for (var j = 0; j < properties.length; j++) { if (item.hasOwnProperty(properties [j])) counter++ } return properties.length == counter } function hasChildren(item) { if (item.hasOwnProperty("childrenRect")) { if (item["childrenRect"].toString() != "QRectF(0, 0, 0, 0)") return true else return false } return false } function hasTileMode(item) { if (item.hasOwnProperty("fillMode")) { if (item["fillMode"].toString() != "0") return true else return false } return false } ShaderEffectSource { id: proxySource live: rootItem.input != rootItem.output hideSource: false smooth: true visible: false } } /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ .pragma library function underlineAmpersands(match, p1, p2, p3) { if (p2 === "&") return p1.concat(p2, p3) return p1.concat("", p2, "", p3) } function removeAmpersands(match, p1, p2, p3) { return p1.concat(p2, p3) } function replaceAmpersands(text, replaceFunction) { return text.replace(/([^&]*)&(.)([^&]*)/g, replaceFunction) } function stylizeMnemonics(text) { return replaceAmpersands(text, underlineAmpersands) } function removeMnemonics(text) { return replaceAmpersands(text, removeAmpersands) }  /**************************************************************************** ** ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.1 import QtQuick.Controls 1.1 import QtQuick.Controls.Styles 1.1 import QtQuick.Controls.Private 1.0 Item { anchors.fill: parent property bool __showMenuFromTouchAndHold: false property Component defaultMenu: Menu { MenuItem { text: "cut" visible: !input.readOnly && selectionStart !== selectionEnd onTriggered: { cut(); select(input.cursorPosition, input.cursorPosition); } } MenuItem { text: "copy" visible: selectionStart !== selectionEnd onTriggered: { copy(); select(input.cursorPosition, input.cursorPosition); } } MenuItem { text: "paste" visible: input.canPaste onTriggered: paste(); } MenuItem { text: "delete" visible: !input.readOnly && selectionStart !== selectionEnd onTriggered: remove(selectionStart, selectionEnd) } MenuItem { text: "select" visible: selectionStart === selectionEnd && input.length > 0 onTriggered: selectWord(); } MenuItem { text: "select all" visible: !(selectionStart === 0 && selectionEnd === length) onTriggered: selectAll(); } } Connections { target: mouseArea function clearFocusFromOtherItems() { var selectionItem = TextSingleton.selectionItem; if (!selectionItem) return; var otherPos = selectionItem.cursorPosition; selectionItem.select(otherPos, otherPos) } onClicked: { if (control.menu && getMenuInstance().__popupVisible) { select(input.cursorPosition, input.cursorPosition); } else { input.activate(); clearFocusFromOtherItems(); } if (input.activeFocus) { var pos = input.positionAt(mouse.x, mouse.y) input.moveHandles(pos, pos) } } onPressAndHold: { var pos = input.positionAt(mouseArea.mouseX, mouseArea.mouseY); input.select(pos, pos); var hasSelection = selectionStart != selectionEnd; if (!control.menu || (input.length > 0 && (!input.activeFocus || hasSelection))) { selectWord(); } else { // We don't select anything at this point, the // menu will instead offer to select a word. __showMenuFromTouchAndHold = true; menuTimer.start(); clearFocusFromOtherItems(); } } onReleased: __showMenuFromTouchAndHold = false onCanceled: __showMenuFromTouchAndHold = false } Connections { target: cursorHandle ? cursorHandle : null ignoreUnknownSignals: true onPressedChanged: menuTimer.start() } Connections { target: selectionHandle ? selectionHandle : null ignoreUnknownSignals: true onPressedChanged: menuTimer.start() } Connections { target: flickable ignoreUnknownSignals: true onMovingChanged: menuTimer.start() } Connections { id: selectionConnections target: input ignoreUnknownSignals: true onSelectionStartChanged: menuTimer.start() onSelectionEndChanged: menuTimer.start() onActiveFocusChanged: menuTimer.start() } Timer { // We use a timer so that we end up with one update when multiple connections fire at the same time. // Basically we wan't the menu to be open if the user does a press and hold, or if we have a selection. // The exceptions are if the user is moving selection handles or otherwise touching the screen (e.g flicking). // What is currently missing are showing a magnifyer to place the cursor, and to reshow the edit menu when // flicking stops. id: menuTimer interval: 1 onTriggered: { if (!control.menu) return; if ((__showMenuFromTouchAndHold || selectionStart !== selectionEnd) && control.activeFocus && (!cursorHandle.pressed && !selectionHandle.pressed) && (!flickable || !flickable.moving) && (cursorHandle.delegate)) { var p1 = input.positionToRectangle(input.selectionStart); var p2 = input.positionToRectangle(input.selectionEnd); var topLeft = input.mapToItem(null, p1.x, p1.y); var size = Qt.size(p2.x - p1.x + p1.width, p2.y - p1.y + p1.height) var targetRect = Qt.rect(topLeft.x, topLeft.y, size.width, size.height); getMenuInstance().__dismissMenu(); getMenuInstance().__popup(targetRect, -1, MenuPrivate.EditMenu); } else { getMenuInstance().__dismissMenu(); } } } } /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 // KNOWN ISSUES // none /*! \qmltype ModalPopupBehavior \internal \inqmlmodule QtQuick.Controls.Private */ Item { id: popupBehavior property bool showing: false property bool whenAlso: true // modifier to the "showing" property property bool consumeCancelClick: true property int delay: 0 // delay before popout becomes visible property int deallocationDelay: 3000 // 3 seconds property Component popupComponent property alias popup: popupLoader.item // read-only property alias window: popupBehavior.root // read-only signal prepareToShow signal prepareToHide signal cancelledByClick // implementation anchors.fill: parent onShowingChanged: notifyChange() onWhenAlsoChanged: notifyChange() function notifyChange() { if(showing && whenAlso) { if(popupLoader.sourceComponent == undefined) { popupLoader.sourceComponent = popupComponent; } } else { mouseArea.enabled = false; // disable before opacity is changed in case it has fading behavior if(Qt.isQtObject(popupLoader.item)) { popupBehavior.prepareToHide(); popupLoader.item.opacity = 0; } } } property Item root: findRoot() function findRoot() { var p = parent; while(p.parent != undefined) p = p.parent; return p; } MouseArea { id: mouseArea anchors.fill: parent enabled: false // enabled only when popout is showing onPressed: { popupBehavior.showing = false; mouse.accepted = consumeCancelClick; cancelledByClick(); } } Loader { id: popupLoader } Timer { // visibility timer running: Qt.isQtObject(popupLoader.item) && showing && whenAlso interval: delay onTriggered: { popupBehavior.prepareToShow(); mouseArea.enabled = true; popup.opacity = 1; } } Timer { // deallocation timer running: Qt.isQtObject(popupLoader.item) && popupLoader.item.opacity == 0 interval: deallocationDelay onTriggered: popupLoader.sourceComponent = undefined } states: State { name: "active" when: Qt.isQtObject(popupLoader.item) && popupLoader.item.opacity > 0 ParentChange { target: popupBehavior; parent: root } } } :4xZks8_l`g"$"@lljk*tn=A ]@.F!Fkce{썦n51gct@`Sbdh\S@N zW/еn޹14w1wcIϜٰg̜-k}@ _YW0.3&ɁOi|w4ہa)IkE bȚ}>C]tHg5R~3Ѡwݻkԟ5Jbέ1Mut9h-m:CñE 7t̠7Q` |> ZBc4Ms6Q*@{@k=wyGLzh+j=R ן0p ŤmE#rh\ꣾNcbְ: aA#N bus.2.Po xe_WF 'v]'jx$O*#+2) & 0WdC+e!3Z/Po*MKB #Cqhgσ)Z@_c;K<`ѐ'a򚦙m%:UPR{KB` v,aSBrپ&3nɍs~Y"@JMF=%,C,'ڦdYeam K؇/ϟ $ťÿ<ᐬirFOi?{f R:bw_ s I|-vLM\ˮ|jx-dM˼ ĭrZ.l9:G-rѠHm> :b4vV5֭<*xH3Grj y*x( ^\G~Dql`C-nb@aJ>.I U o^0T!9k+A[UjUҏ>*VHvfvʦEdA˖Ha7~.l"JjTYvڰ䡫<*,KT1F.::铫z'^}'^)Nv"@>|vc&H{!(LΊn-cbJl)EpÔR'О.n ?aoY$[.E) ɾv۽vvU54ֳ;'fY/^mQ M%5$ZL(R7:;lML4LBnb2;,:4L٠5_(;7[yRub^2YB3G}7(6.7 "^Ŀj̬6l*hq*q+1jEpG`&d1j5ƨߗ1ZEp˜1>h}_ƴ+2Ft~ticLcߗ1>11]!c:өƘ·2;}r'+w%ɤUj$ wOw9{Þ63Mn^ϔ[GNs7wVb%%`L:|ϓG*Typ r|  ^ijc|Kwo9@%L+CTրj6]DEh%*JDbN/bT%+Ԃ8"pH&0XLh䴦\N Zm#:t3yDlr.-183ꅡZ+aa-v&QVP\7eDk-@dqy&6䒝*j0] ءs " H!y$\z{ \^rI@.s}lQ5v7O/>#; `F.кOP   ]x(t>5W$h?iB.Qѐ*3Ӑ&3P[fNCNhxRB7xf4n]~*٧{*}C#XIb%]C!VGVx&u'J2A%DPIZܛ(%MUyk\3Y9I=&snޮ޹1scwЍwyOε P/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 MouseArea { id: scrollIndicator property int direction: 0 anchors { top: direction === Qt.UpArrow ? parent.top : undefined bottom: direction === Qt.DownArrow ? parent.bottom : undefined } hoverEnabled: visible && Settings.hoverEnabled height: scrollerLoader.height width: parent.width Loader { id: scrollerLoader width: parent.width sourceComponent: scrollIndicatorStyle // Extra property values for desktop style property var __menuItem: null property var styleData: { "index": -1, "type": MenuItemType.ScrollIndicator, "text": "", "selected": scrollIndicator.containsMouse, "scrollerDirection": scrollIndicator.direction, "checkable": false, "checked": false, "enabled": true } } Timer { interval: 100 repeat: true triggeredOnStart: true running: parent.containsMouse onTriggered: scrollABit() } } {module QtQuick.Controls.Styles ApplicationWindowStyle 1.3 Base/ApplicationWindowStyle.qml ButtonStyle 1.0 Base/ButtonStyle.qml BusyIndicatorStyle 1.1 Base/BusyIndicatorStyle.qml CalendarStyle 1.1 Base/CalendarStyle.qml CheckBoxStyle 1.0 Base/CheckBoxStyle.qml ComboBoxStyle 1.0 Base/ComboBoxStyle.qml MenuStyle 1.2 Base/MenuStyle.qml MenuBarStyle 1.2 Base/MenuBarStyle.qml ProgressBarStyle 1.0 Base/ProgressBarStyle.qml RadioButtonStyle 1.0 Base/RadioButtonStyle.qml ScrollViewStyle 1.0 Base/ScrollViewStyle.qml SliderStyle 1.0 Base/SliderStyle.qml SpinBoxStyle 1.1 Base/SpinBoxStyle.qml SwitchStyle 1.1 Base/SwitchStyle.qml TabViewStyle 1.0 Base/TabViewStyle.qml TableViewStyle 1.0 Base/TableViewStyle.qml TextAreaStyle 1.1 Base/TextAreaStyle.qml TextFieldStyle 1.0 Base/TextFieldStyle.qml ToolBarStyle 1.0 Base/ToolBarStyle.qml StatusBarStyle 1.0 Base/StatusBarStyle.qml designersupported /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 /*! \qmltype StatusBarStyle \inqmlmodule QtQuick.Controls.Styles \ingroup controlsstyling \since 5.2 \brief Provides custom styling for StatusBar The status bar can be defined by overriding the background component and setting the content padding. Example: \qml StatusBar { style: StatusBarStyle { padding { left: 8 right: 8 top: 3 bottom: 3 } background: Rectangle { implicitHeight: 16 implicitWidth: 200 gradient: Gradient{ GradientStop{color: "#eee" ; position: 0} GradientStop{color: "#ccc" ; position: 1} } Rectangle { anchors.top: parent.top width: parent.width height: 1 color: "#999" } } } } \endqml */ Style { /*! The content padding inside the status bar. */ padding { left: 3 right: 3 top: 3 bottom: 2 } /*! This defines the background of the tool bar. */ property Component background: Rectangle { implicitHeight: 16 implicitWidth: 200 gradient: Gradient{ GradientStop{color: "#eee" ; position: 0} GradientStop{color: "#ccc" ; position: 1} } Rectangle { anchors.top: parent.top width: parent.width height: 1 color: "#999" } } property Component panel: Loader { sourceComponent: background } } /**************************************************************************** ** ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 /*! \qmltype ApplicationWindowStyle \inqmlmodule QtQuick.Controls.Styles \since 5.4 \ingroup controlsstyling \brief Provides custom styling for ApplicationWindow You can create a custom window background by replacing the "background" delegate of ApplicationWindowStyle with a custom design. Example: \qml ApplicationWindow { style: ApplicationWindowStyle { background: BorderImage { source: "background.png" border { left: 20; top: 20; right: 20; bottom: 20 } } } } \endqml */ QtObject { /*! The window attached to this style. */ readonly property ApplicationWindow control: __control /*! A custom background for the window. \note The window might have a custom background color set. The custom background color is automatically filled by the window. The background delegate should respect the custom background color by either hiding itself altogether when a custom background color is set, or by letting the custom background color shine through. The following read-only property is available within the scope of the background delegate: \table \row \li \b {styleData.hasColor} : bool \li Whether the window has a custom background color set. \endtable */ property Component background: Rectangle { visible: !styleData.hasColor color: SystemPaletteSingleton.window(true) } /*! \internal */ property Component panel: Item { readonly property alias contentArea: contentArea readonly property alias menuBarArea: menuBarArea readonly property alias toolBarArea: toolBarArea readonly property alias statusBarArea: statusBarArea Loader { anchors.fill: parent sourceComponent: background } Item { id: contentArea anchors.top: toolBarArea.bottom anchors.left: parent.left anchors.right: parent.right anchors.bottom: statusBarArea.top } Item { id: toolBarArea anchors.top: parent.menuBarArea.bottom anchors.left: parent.left anchors.right: parent.right implicitHeight: childrenRect.height height: visibleChildren.length > 0 ? implicitHeight: 0 } Item { id: menuBarArea anchors.top: parent.top anchors.left: parent.left anchors.right: parent.right implicitHeight: childrenRect.height height: visibleChildren.length > 0 ? implicitHeight: 0 } Item { id: statusBarArea anchors.bottom: parent.bottom anchors.left: parent.left anchors.right: parent.right implicitHeight: childrenRect.height height: visibleChildren.length > 0 ? implicitHeight: 0 } } } /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 /*! \qmltype GroupBoxStyle \internal \inqmlmodule QtQuick.Controls.Styles \ingroup controlsstyling \since 5.1 */ Style { /*! The \l GroupBox this style is attached to. */ readonly property GroupBox control: __control /*! The margin from the content item to the groupbox. */ padding { top: (control.title.length > 0 || control.checkable ? TextSingleton.implicitHeight : 0) + 10 left: 8 right: 8 bottom: 6 } /*! The title text color. */ property color textColor: SystemPaletteSingleton.text(control.enabled) /*! The check box. */ property Component checkbox: Item { implicitWidth: 18 implicitHeight: 18 BorderImage { anchors.fill: parent source: "images/editbox.png" border.top: 6 border.bottom: 6 border.left: 6 border.right: 6 } Rectangle { height: 16 width: 16 antialiasing: true visible: control.checked color: "#666" radius: 1 anchors.margins: 4 anchors.fill: parent anchors.topMargin: 3 anchors.bottomMargin: 5 border.color: "#222" opacity: control.enabled ? 1 : 0.5 Rectangle { anchors.fill: parent anchors.margins: 1 color: "transparent" border.color: "#33ffffff" } } BorderImage { anchors.fill: parent anchors.margins: -1 source: "images/focusframe.png" visible: control.activeFocus border.left: 4 border.right: 4 border.top: 4 border.bottom: 4 } } /*! The groupbox frame. */ property Component panel: Item { anchors.fill: parent Loader { id: checkboxloader anchors.left: parent.left sourceComponent: control.checkable ? checkbox : null anchors.verticalCenter: label.verticalCenter width: item ? item.implicitWidth : 0 } Text { id: label anchors.top: parent.top anchors.left: checkboxloader.right anchors.margins: 4 text: control.title color: textColor renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering } BorderImage { anchors.fill: parent anchors.topMargin: padding.top - 7 source: "images/groupbox.png" border.left: 4 border.right: 4 border.top: 4 border.bottom: 4 visible: !control.flat } } }  BxkoFDWrjӲrsYmrRr0(r%B*I7|/%q[@wvfv>z=!t}8i;w-y6XsDi:>4]kُ-;n"W{pevcs˓& 71 ^0x۵k`8k'A}tcML0}L}f` KC܄wXi,\F aDϵGmɤ1fš;]n98Yׇ(X6#SG .={7^ڌuLdPw8+dB8f\s ?;"BXLK(5Bف`bYlD֚w4%W[P? 3T,wBNd3J" m{I\2z=#Gp&D@p-|p2'Us\O}kɽWF1KPMN|0^;eaewp3 f Lxsj3FY|O.&% |Q$Ka9y>&™v:ޝZSB9һ>]tT39dM5$:W Ա:H~EI3sbL':\ =nvS0iBhr]:יt8{C|>6 nBc0qߣPbY>i_x˭!sh$,ј\L_}Btu&9zӢl|΋|Ws$G0 >|Ki}K6}*t6iD;) iifVPc^qK{Td[ڂEBt22 pggBTm(g`lixGm၆HMÒʊgߜf0]3Zw(W`VX + ڪЇ6u*EM\ᅦ ~$RE9G!/qr|,ͫ++~[Z xħck--b}De6E_E/kv1ihJwݗoJ^@z!!Ѫ"jtpzΠv{kٱ{^y 56@ciQ>r^K`e()X+΁3Z? ,DcK2EG«ѩB6PS#n@NodqGNo2LC[se&5_DXđGb%g]rSD*!ħ ^ΒרNО.y)(}ZX*LNW[\ կ $qz eW`quXK!ǩv rġ38V e,wcNH%|/ENMh9>Vkru\Fr1+S  /9ˋjEDa}~֥DWI**9L֕DH/iep뷯\+v@T;)7N @Fg1Xi!ZB0}kˋxh(QMMZ^AQ`d#`Л%Z'-g=@5PT;!z6N -;dP2e37nVn/ ItjZ:9 :V&l }W']1 Mv/g@•Ө{Fu+,^>47 Hgޢ?Sh _bVI-ILՄE/RFeLiK#tNrs SDH:pGUt(Ӟ΋j!P0ߍH7Uh[ja5|B3D5My`z*E}뮓d6BTA>ʃb{lShrկ ZIi/IˁR *} 1T#PLj%?p[Mطd'2[-+7v7op#PYXEB:x^ $ɰT0( tTl_?gdʙCc9}Uťʹs-v*%!]iӃx8rNlL1$_bPaw%#ϭ5'݅Ie]]~j*ް:މnyozeBYmne6ޤW\Y:͏rBj=dүߥb-_Y_rM?2X)_z.WULzZ-.o&֧ߥpfAb'~-cŒ|EWsO[-}Q1Pϟ_qɰ aq>ː n3p).5L*Lnk67)[\I*e2V ~Q, =Y?Fq5V w}8W[.Xrz\{JX m FB=1^iZkEW۪n^NW.\[ZjUvAL ?>7S#65cw@v"/ %3xYmsHίu,7{AUHrUJHEHZi0= ]:%H3=6 g/Ӑ'Og'pq z|=>xQpEb{P̑|цIl\$|a,dS/rg<  ' f x')0 q@'.\oݏ5ط1ۗN{0VQR)Kti!Ya/vȑCd"( K.f> 1h p#MR `x/b ҁGS(Ĕ/(WʏE& eCeI7h*o*O(l.[Z~9K]NѪg+mpU-H_%r3)f0 ˨ᤖiOaqO#o.WFq6 fJ>;1 C+c`Q ǂr!a2hiWNXRY|>唖)]20rpWm;g'MGu}Ͱ3m:\ۺs#MA#9܃66Xp3p-i5z (C[EJwؔKW9axݽΥշ{hM:0خսwl٣c׳ncݚ=uu|g\pn:~\3|?0ma\4Qeߤ夵=6.~Q~9#k;D:}3o'׹\LJA-.q.r\ÞtcL:@H9Tq;ryC |s,Bk}7rc=v'}=*w̡}O2MxcM^;^$%љҰ00ֵ9D0$A-8V>}ݛF1=jW9k4<^[CF[nHshAP4,.54 o0S~l44*bH!)qلV{֨¦6J7OB./dE ֆ,D!9Z維gH(hcM+4^Y.*3~iBja[UHqJiʽDKYZy 6b.+$7tAW%$w~KepN>hʵM{Y~ 0dȑlsL;%.ypN]"#@DuNi3=5nb,I69 "JYI_7 t:% `L&_ZU Ʉd`ȷAX(gg`mWƐ'mﰟdH_UqT2h#7(´zL.r5=7;z6:rKMEf)_<'ڙDli8 W$Xsc^䇰S?O[gBo4/RB{ǑPӏQ\L]ޙOy ʤ{}lZY44 (P>9+nn) x}rr0}|WhSoNⅇbݳ^MSS#Sڤ3xNH` KG/2z>skz>=2 q|U"z,/@^y}@QHI[Kb9)Hh&jeC/60~Y:rfWw)Tl@9l<4E,,h8VE 7񄍑7p_kTJZy]1GyX.7e]DJo,#X eY%akW[RQv4y6VOߔS\!B*dIMDDUU.yA!"K7niV}_Xk $mzPĚ 7YʝZ>C:dAAWu}? lS B=.ei]' {= 48 ? "images/spinner_large.png" : "images/spinner_medium.png" RotationAnimator on rotation { duration: 800 loops: Animation.Infinite from: 0 to: 360 running: indicatorItem.visible && (control.running || indicatorItem.opacity > 0); } } } /*! \internal */ property Component panel: Item { anchors.fill: parent implicitWidth: indicatorLoader.implicitWidth implicitHeight: indicatorLoader.implicitHeight Loader { id: indicatorLoader sourceComponent: indicator anchors.centerIn: parent width: Math.min(parent.width, parent.height) height: width } } } /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 /*! \qmltype FocusFrameStyle \internal \inqmlmodule QtQuick.Controls.Styles */ Item { property int margin: -3 } /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 /*! \qmltype ToolBarStyle \inqmlmodule QtQuick.Controls.Styles \ingroup controlsstyling \since 5.2 \brief Provides custom styling for ToolBar The tool bar can be defined by overriding the background component and setting the content padding. Example: \qml ToolBar { style: ToolBarStyle { padding { left: 8 right: 8 top: 3 bottom: 3 } background: Rectangle { implicitWidth: 100 implicitHeight: 40 border.color: "#999" gradient: Gradient { GradientStop { position: 0 ; color: "#fff" } GradientStop { position: 1 ; color: "#eee" } } } } } \endqml */ Style { /*! The content padding inside the tool bar. */ padding { left: 6 right: 6 top: 3 bottom: 3 } /*! This defines the background of the tool bar. */ property Component background: Item { implicitHeight: 40 implicitWidth: 200 Rectangle { anchors.fill: parent gradient: Gradient{ GradientStop{color: "#eee" ; position: 0} GradientStop{color: "#ccc" ; position: 1} } Rectangle { anchors.bottom: parent.bottom width: parent.width height: 1 color: "#999" } } } /*! This defines the menu button appearance on platforms that have a unified tool bar and menu bar. \since QtQuick.Controls.Styles 1.3 The following read-only properties are available within the scope of the menu button delegate: \table \row \li \b {styleData.pressed} : bool \li Whether the button is pressed. \row \li \b {styleData.hovered} : bool \li Whether the button is hovered. \row \li \b {styleData.activeFocus} : bool \li Whether the button has active focus. \endtable */ property Component menuButton: null property Component panel: Loader { sourceComponent: background } } %xnH=_QKLϪ'Dئfvm\aZ= LBZ3jPc~sHV)$94˧a'"%\f$[3r9F% d̤LZ''U'7 %IĦ4y3  M%"gJrWE0QF"\\u }I}/+s:v߳[^܋Yd p 8d%Y: €D")(ˬ39tY3Br9YL,Ҁ1* td匀XH$ (h2 \J0AΨT"ix<%CH")JLlĔMi "$eH^TRD:pC*DYjXT  E3snRN!J+eAa]R> t(FRJV0T0ޑH3cZ N9mB`O,,M^-d 0cXw,+7ڮMy8]K.&u}r=um#~N\면i{|{bcڞG.qn=k鍺NI|$sn AS$KrckھpzX^:~]\$&ö;Q<~]΍ݵ@K/v'u3E: $m_ld:QF!{M$ `j͜gߎ.I}Ӿ޶83rL.w<9;= rͰ;`,H-r8Mp (!_doܼO=DÁ.:(=.I,abQXHhK~& oY=GJ.j;7:&Ws|t~c!!Z47)JUb R=D5jG|pP:FM%Z&I0s1Vcʧ}Fc۶9[O־S"0.lhޔ…EXO\7j*ߚTljT ([? &&q1ERjZʟjʃA|+e,L1/*hZgߏRkXୄ?13`|jn4a`ߺA/>>$(ϟw1^IƬyp8ߕ'UEٺMLm{qyDycz+Tٮ >1V Je /Z)8;繜x% W ~eD/ /tBD nvkN֐Qd6_%3fM;E'=~ yaT ~N7w{+NزɫaGJη;wyLVV(ݼObW3J??J2Y1Vޯts/ k"/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 /*! \qmltype SliderStyle \inqmlmodule QtQuick.Controls.Styles \since 5.1 \ingroup controlsstyling \brief Provides custom styling for Slider The slider style allows you to create a custom appearance for a \l Slider control. The implicit size of the slider is calculated based on the maximum implicit size of the \c background and \c handle delegates combined. Example: \qml Slider { anchors.centerIn: parent style: SliderStyle { groove: Rectangle { implicitWidth: 200 implicitHeight: 8 color: "gray" radius: 8 } handle: Rectangle { anchors.centerIn: parent color: control.pressed ? "white" : "lightgray" border.color: "gray" border.width: 2 implicitWidth: 34 implicitHeight: 34 radius: 12 } } } \endqml */ Style { id: styleitem /*! The \l Slider this style is attached to. */ readonly property Slider control: __control padding { top: 0 ; left: 0 ; right: 0 ; bottom: 0 } /*! This property holds the item for the slider handle. You can access the slider through the \c control property */ property Component handle: Item{ implicitWidth: implicitHeight implicitHeight: TextSingleton.implicitHeight * 1.2 FastGlow { source: handle anchors.fill: parent anchors.bottomMargin: -1 anchors.topMargin: 1 smooth: true color: "#11000000" spread: 0.8 transparentBorder: true blur: 0.1 } Rectangle { id: handle anchors.fill: parent radius: width/2 gradient: Gradient { GradientStop { color: control.pressed ? "#e0e0e0" : "#fff" ; position: 1 } GradientStop { color: "#eee" ; position: 0 } } Rectangle { anchors.fill: parent anchors.margins: 1 radius: width/2 border.color: "#99ffffff" color: control.activeFocus ? "#224f7fbf" : "transparent" } border.color: control.activeFocus ? "#47b" : "#777" } } /*! This property holds the background groove of the slider. You can access the handle position through the \c styleData.handlePosition property. */ property Component groove: Item { property color fillColor: "#49d" anchors.verticalCenter: parent.verticalCenter implicitWidth: Math.round(TextSingleton.implicitHeight * 4.5) implicitHeight: Math.max(6, Math.round(TextSingleton.implicitHeight * 0.3)) Rectangle { radius: height/2 anchors.fill: parent border.width: 1 border.color: "#888" gradient: Gradient { GradientStop { color: "#bbb" ; position: 0 } GradientStop { color: "#ccc" ; position: 0.6 } GradientStop { color: "#ccc" ; position: 1 } } } Item { clip: true width: styleData.handlePosition height: parent.height Rectangle { anchors.fill: parent border.color: Qt.darker(fillColor, 1.2) radius: height/2 gradient: Gradient { GradientStop {color: Qt.lighter(fillColor, 1.3) ; position: 0} GradientStop {color: fillColor ; position: 1.4} } } } } /*! This property holds the tick mark labels \since QtQuick.Controls.Styles 1.1 You can access the handle width through the \c styleData.handleWidth property. */ property Component tickmarks: Repeater { id: repeater model: control.stepSize > 0 ? 1 + (control.maximumValue - control.minimumValue) / control.stepSize : 0 Rectangle { color: "#777" width: 1 ; height: 3 y: repeater.height x: styleData.handleWidth / 2 + index * ((repeater.width - styleData.handleWidth) / (repeater.count-1)) } } /*! This property holds the slider style panel. Note that it is generally not recommended to override this. */ property Component panel: Item { id: root property int handleWidth: handleLoader.width property int handleHeight: handleLoader.height property bool horizontal : control.orientation === Qt.Horizontal property int horizontalSize: grooveLoader.implicitWidth + padding.left + padding.right property int verticalSize: Math.max(handleLoader.implicitHeight, grooveLoader.implicitHeight) + padding.top + padding.bottom implicitWidth: horizontal ? horizontalSize : verticalSize implicitHeight: horizontal ? verticalSize : horizontalSize y: horizontal ? 0 : height rotation: horizontal ? 0 : -90 transformOrigin: Item.TopLeft Item { anchors.fill: parent Loader { id: grooveLoader property QtObject styleData: QtObject { readonly property int handlePosition: handleLoader.x + handleLoader.width/2 } x: padding.left sourceComponent: groove width: (horizontal ? parent.width : parent.height) - padding.left - padding.right y: Math.round(padding.top + (Math.round(horizontal ? parent.height : parent.width - padding.top - padding.bottom) - grooveLoader.item.height)/2) } Loader { id: tickMarkLoader anchors.fill: parent sourceComponent: control.tickmarksEnabled ? tickmarks : null property QtObject styleData: QtObject { readonly property int handleWidth: control.__panel.handleWidth } } Loader { id: handleLoader sourceComponent: handle anchors.verticalCenter: grooveLoader.verticalCenter x: Math.round((control.__handlePos - control.minimumValue) / (control.maximumValue - control.minimumValue) * ((horizontal ? root.width : root.height) - item.width)) } } } } px=is8+;-v]fdIUeK$ǓT(0H5IY{8HLf Eû2/H'X=v>yytt-sȥ7#!aqD4b.s‡F,nEZͦG| Y C:5Y̙G r˜s/(k6e஡_|W7%_>NnNz~7Z'/s&K灬# cµҐÊi`D<6>tvky&jI$#(tGqp'Qgߙ2cnlX 3;Xxas6sF8!%+1u ꎹp/$h`-pP8$#mĤs$.%u`ipl (A 7<ptľ <-i,"PjBQzF5U.n0[/)9T-Kg *:? x;KZ eY(T:$R`(v# N)jpp2 DƁ2;*hsx.x*&D+:C탱 2DFdOϳGr43`?_u 0`8A zN :? OEo9y>\pW'۞9zp}r5shtu90 ! \,t7}F(> r}փ#/Z1u&z7@ 䌥AyCoa!{0y1vs:5չgOIT.Ι~sWs6AW_k;;l ~||L\q%nhgO;h%t9h_$:FJ J0AW'NCFRW0r`>./!fG‡K7,7pV![:.Df_t끿^Ni5W@5YC98gRZ_%):?`a6 Shԙ}E n) 4 t{udWgEHb-!sD|3:AKڋ 5×CpVڦApHD5 Tv\ wΡӵV,ER ›:w,yc ZA(ewpw*>PP+ e؎}m)4^~LW1ܙI0{sr|5ҏ 0pa$e*UHXO2]cjIp(+r q rPJͪG[*˻)B^eF13y &ݒT\ٮ ])jW5J(#>Bq;uִ,V~(=zCj\ e2)=yB ^K ͓XV>y:ң4XF/5<2Dt053 W!"\k.$-AF5drl(/$ji{_Yd6]fQ/|iNx {i!s4XNy`u?h~U}?P&^HSs'wF "o'?$V9\R严J#[7" T}+b\6Yj|D3BS5)/bShGŭbTakHx7UPZfe3Pj? 8pCm7 }ՄPQ <EmnEAfMq,{E BO6 ꛐ%5EbGkmɤ#Ѻa|>rXsyn>qGJ"Ys7€WbDF}iq#RRTOq1"߂zȦ(h]QIXc]88jO62=Y1@Khy`ߏh\44YRU/,j|@>)Q,o<\yN続Af7w˫w=C%LY4r_z{IuEDTw|Nq>N0Ѥ3T#I-NSel'FHZ6-᫆2i(9s+Pruω1INf/lxMK"vgS{.%ɏdFa:4 o~j1r& mأB,մRlBQ4D⼫fCgI|)+O(~2bQˮw_"}iZ=0iβ'm>w02|17…Ò#DPb ZR5$'s*)&6 *:Im ,vm\gZ* \`g1)7*Y_LU+g k-cKlg]vxDIOċ߈O7<L0 0uh rq<s*5.yG=iQc75]li԰ ְȵheG垤`g lc9g;nvMDa2p1QU,9."&H<#re3SҡG.77Lx҂p0on5Ix*DDhJ>d|IG6k0<="r5HrnD !K$z[Ӽ,dn4+2Fǥ;cKBx[qz6GmCK^XQopTé521 1o.eؔkelKϓeGiٚj/JC. ln鞉[߰rhjEj["նEU+-f[o$h%Un6T2rSBz3w_Ic/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Layouts 1.1 import QtQuick.Window 2.1 import QtQuick.Controls.Private 1.0 /*! \qmltype CheckBoxStyle \inqmlmodule QtQuick.Controls.Styles \since 5.1 \ingroup controlsstyling \brief Provides custom styling for CheckBox Example: \qml CheckBox { text: "Check Box" style: CheckBoxStyle { indicator: Rectangle { implicitWidth: 16 implicitHeight: 16 radius: 3 border.color: control.activeFocus ? "darkblue" : "gray" border.width: 1 Rectangle { visible: control.checked color: "#555" border.color: "#333" radius: 1 anchors.margins: 4 anchors.fill: parent } } } } \endqml */ Style { id: checkboxStyle /*! The \l CheckBox this style is attached to. */ readonly property CheckBox control: __control /*! This defines the text label. */ property Component label: Item { implicitWidth: text.implicitWidth + 2 implicitHeight: text.implicitHeight baselineOffset: text.baselineOffset Rectangle { anchors.fill: text anchors.margins: -1 anchors.leftMargin: -3 anchors.rightMargin: -3 visible: control.activeFocus height: 6 radius: 3 color: "#224f9fef" border.color: "#47b" opacity: 0.6 } Text { id: text text: StyleHelpers.stylizeMnemonics(control.text) anchors.centerIn: parent color: SystemPaletteSingleton.text(control.enabled) renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering } } /*! The background under indicator and label. */ property Component background /*! The spacing between indicator and label. */ property int spacing: Math.round(TextSingleton.implicitHeight/4) /*! This defines the indicator button. */ property Component indicator: Item { implicitWidth: Math.round(TextSingleton.implicitHeight) height: width Rectangle { anchors.fill: parent anchors.bottomMargin: -1 color: "#44ffffff" radius: baserect.radius } Rectangle { id: baserect gradient: Gradient { GradientStop {color: "#eee" ; position: 0} GradientStop {color: control.pressed ? "#eee" : "#fff" ; position: 0.1} GradientStop {color: "#fff" ; position: 1} } radius: TextSingleton.implicitHeight * 0.16 anchors.fill: parent border.color: control.activeFocus ? "#47b" : "#999" } Image { source: "images/check.png" opacity: control.checkedState === Qt.Checked ? control.enabled ? 1 : 0.5 : 0 anchors.centerIn: parent anchors.verticalCenterOffset: 1 Behavior on opacity {NumberAnimation {duration: 80}} } Rectangle { anchors.fill: parent anchors.margins: Math.round(baserect.radius) antialiasing: true gradient: Gradient { GradientStop {color: control.pressed ? "#555" : "#999" ; position: 0} GradientStop {color: "#555" ; position: 1} } radius: baserect.radius - 1 anchors.centerIn: parent anchors.alignWhenCentered: true border.color: "#222" Behavior on opacity {NumberAnimation {duration: 80}} opacity: control.checkedState === Qt.PartiallyChecked ? control.enabled ? 1 : 0.5 : 0 } } /*! \internal */ property Component panel: Item { implicitWidth: Math.max(backgroundLoader.implicitWidth, row.implicitWidth + padding.left + padding.right) implicitHeight: Math.max(backgroundLoader.implicitHeight, labelLoader.implicitHeight + padding.top + padding.bottom,indicatorLoader.implicitHeight + padding.top + padding.bottom) baselineOffset: labelLoader.item ? padding.top + labelLoader.item.baselineOffset : 0 Loader { id: backgroundLoader sourceComponent: background anchors.fill: parent } RowLayout { id: row anchors.fill: parent anchors.leftMargin: padding.left anchors.rightMargin: padding.right anchors.topMargin: padding.top anchors.bottomMargin: padding.bottom spacing: checkboxStyle.spacing Loader { id: indicatorLoader sourceComponent: indicator anchors.verticalCenter: parent.verticalCenter } Loader { id: labelLoader Layout.fillWidth: true sourceComponent: label anchors.verticalCenter: parent.verticalCenter } } } } :/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 /*! \qmltype SwitchStyle \inqmlmodule QtQuick.Controls.Styles \since 5.2 \ingroup controlsstyling \brief Provides custom styling for Switch Example: \qml Switch { style: SwitchStyle { groove: Rectangle { implicitWidth: 100 implicitHeight: 20 radius: 9 border.color: control.activeFocus ? "darkblue" : "gray" border.width: 1 } } } \endqml */ Style { id: switchstyle /*! The content padding. */ padding { top: 0 left: 0 right: 0 bottom: 0 } /*! This defines the switch handle. */ property Component handle: Rectangle { opacity: control.enabled ? 1.0 : 0.5 implicitWidth: Math.round((parent.parent.width - padding.left - padding.right)/2) implicitHeight: control.height - padding.top - padding.bottom border.color: control.activeFocus ? Qt.darker(highlight, 2) : Qt.darker(button, 2) property color bg: control.activeFocus ? Qt.darker(highlight, 1.2) : button property color highlight: SystemPaletteSingleton.highlight(control.enabled) property color button: SystemPaletteSingleton.button(control.enabled) gradient: Gradient { GradientStop {color: Qt.lighter(bg, 1.4) ; position: 0} GradientStop {color: bg ; position: 1} } radius: 2 } /*! This property holds the background groove of the switch. */ property Component groove: Rectangle { property color shadow: control.checked ? Qt.darker(highlight, 1.2): "#999" property color bg: control.checked ? highlight:"#bbb" property color highlight: SystemPaletteSingleton.highlight(control.enabled) implicitWidth: Math.round(implicitHeight * 3) implicitHeight: Math.max(16, Math.round(TextSingleton.implicitHeight)) border.color: "gray" color: "red" radius: 2 Behavior on shadow {ColorAnimation{ duration: 80 }} Behavior on bg {ColorAnimation{ duration: 80 }} gradient: Gradient { GradientStop {color: shadow; position: 0} GradientStop {color: bg ; position: 0.2} GradientStop {color: bg ; position: 1} } Rectangle { color: "#44ffffff" height: 1 anchors.bottom: parent.bottom anchors.bottomMargin: -1 width: parent.width - 2 x: 1 } } /*! \internal */ property Component panel: Item { implicitWidth: Math.round(grooveLoader.width + padding.left + padding.right) implicitHeight: grooveLoader.implicitHeight + padding.top + padding.bottom property var __handle: handleLoader property int min: padding.left property int max: grooveLoader.width - handleLoader.width - padding.right Loader { id: grooveLoader y: padding.top x: padding.left sourceComponent: groove anchors.verticalCenter: parent.verticalCenter Loader { id: handleLoader z:1 x: control.checked ? max : min anchors.top: grooveLoader.top anchors.bottom: grooveLoader.bottom anchors.topMargin: padding.top anchors.bottomMargin: padding.bottom Behavior on x { id: behavior enabled: handleLoader.status === Loader.Ready NumberAnimation { duration: 150 easing.type: Easing.OutCubic } } sourceComponent: handle } } } } /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 /*! \qmltype ToolButtonStyle \internal \ingroup controlsstyling \inqmlmodule QtQuick.Controls.Styles */ Style { readonly property ToolButton control: __control property Component panel: Item { id: styleitem implicitWidth: (hasIcon ? icon.width : Math.max(label.implicitWidth + frame.border.left + frame.border.right, 36)) + (arrow.visible ? 10 : 0) implicitHeight: hasIcon ? icon.height : Math.max(label.implicitHeight, 36) readonly property bool hasIcon: icon.status === Image.Ready || icon.status === Image.Loading Rectangle { anchors.fill: parent visible: control.pressed || (control.checkable && control.checked) color: "lightgray" radius:4 border.color: "#aaa" } Item { anchors.left: parent.left anchors.right: arrow.left anchors.top: parent.top anchors.bottom: parent.bottom clip: true Text { id: label visible: !hasIcon anchors.centerIn: parent text: StyleHelpers.stylizeMnemonics(control.text) renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering } Image { id: icon anchors.centerIn: parent source: control.iconSource } } BorderImage { id: frame anchors.fill: parent anchors.margins: -1 anchors.topMargin: -2 anchors.rightMargin: 0 source: "images/focusframe.png" visible: control.activeFocus border.left: 4 border.right: 4 border.top: 4 border.bottom: 4 } Image { id: arrow visible: control.menu !== null source: visible ? "images/arrow-down.png" : "" anchors.verticalCenter: parent.verticalCenter anchors.right: parent.right anchors.rightMargin: visible ? 3 : 0 opacity: control.enabled ? 0.7 : 0.5 } } } C/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 /*! \qmltype ButtonStyle \inqmlmodule QtQuick.Controls.Styles \since 5.1 \ingroup controlsstyling \brief Provides custom styling for Button You can create a custom button by replacing the "background" delegate of the ButtonStyle with a custom design. Example: \qml Button { text: "A button" style: ButtonStyle { background: Rectangle { implicitWidth: 100 implicitHeight: 25 border.width: control.activeFocus ? 2 : 1 border.color: "#888" radius: 4 gradient: Gradient { GradientStop { position: 0 ; color: control.pressed ? "#ccc" : "#eee" } GradientStop { position: 1 ; color: control.pressed ? "#aaa" : "#ccc" } } } } } \endqml If you need a custom label, you can replace the label item. */ Style { id: buttonstyle /*! The \l {QtQuick.Controls::}{Button} this style is attached to. */ readonly property Button control: __control /*! The padding between the background and the label components. */ padding { top: 4 left: 4 right: 4 + (control.menu !== null ? Math.round(TextSingleton.implicitHeight * 0.5) : 0) bottom: 4 } /*! This defines the background of the button. */ property Component background: Item { property bool down: control.pressed || (control.checkable && control.checked) implicitWidth: Math.round(TextSingleton.implicitHeight * 4.5) implicitHeight: Math.max(25, Math.round(TextSingleton.implicitHeight * 1.2)) Rectangle { anchors.fill: parent anchors.bottomMargin: down ? 0 : -1 color: "#10000000" radius: baserect.radius } Rectangle { id: baserect gradient: Gradient { GradientStop {color: down ? "#aaa" : "#fefefe" ; position: 0} GradientStop {color: down ? "#ccc" : "#e3e3e3" ; position: down ? 0.1: 1} } radius: TextSingleton.implicitHeight * 0.16 anchors.fill: parent border.color: control.activeFocus ? "#47b" : "#999" Rectangle { anchors.fill: parent radius: parent.radius color: control.activeFocus ? "#47b" : "white" opacity: control.hovered || control.activeFocus ? 0.1 : 0 Behavior on opacity {NumberAnimation{ duration: 100 }} } } Image { id: imageItem visible: control.menu !== null source: "images/arrow-down.png" anchors.verticalCenter: parent.verticalCenter anchors.right: parent.right anchors.rightMargin: 4 opacity: control.enabled ? 0.6 : 0.5 } } /*! This defines the label of the button. */ property Component label: Item { implicitWidth: row.implicitWidth implicitHeight: row.implicitHeight baselineOffset: row.y + text.y + text.baselineOffset Row { id: row anchors.centerIn: parent spacing: 2 Image { source: control.iconSource anchors.verticalCenter: parent.verticalCenter } Text { id: text renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering anchors.verticalCenter: parent.verticalCenter text: StyleHelpers.stylizeMnemonics(control.text) color: SystemPaletteSingleton.buttonText(control.enabled) } } } /*! \internal */ property Component panel: Item { anchors.fill: parent implicitWidth: Math.max(labelLoader.implicitWidth + padding.left + padding.right, backgroundLoader.implicitWidth) implicitHeight: Math.max(labelLoader.implicitHeight + padding.top + padding.bottom, backgroundLoader.implicitHeight) baselineOffset: labelLoader.item ? padding.top + labelLoader.item.baselineOffset : 0 Loader { id: backgroundLoader anchors.fill: parent sourceComponent: background } Loader { id: labelLoader sourceComponent: label anchors.fill: parent anchors.leftMargin: padding.left anchors.topMargin: padding.top anchors.rightMargin: padding.right anchors.bottomMargin: padding.bottom } } } 2/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 /*! \qmltype RadioButtonStyle \inqmlmodule QtQuick.Controls.Styles \since 5.1 \ingroup controlsstyling \brief Provides custom styling for RadioButton Example: \qml RadioButton { text: "Radio Button" style: RadioButtonStyle { indicator: Rectangle { implicitWidth: 16 implicitHeight: 16 radius: 9 border.color: control.activeFocus ? "darkblue" : "gray" border.width: 1 Rectangle { anchors.fill: parent visible: control.checked color: "#555" radius: 9 anchors.margins: 4 } } } } \endqml */ Style { id: radiobuttonStyle /*! The \l RadioButton this style is attached to. */ readonly property RadioButton control: __control /*! This defines the text label. */ property Component label: Item { implicitWidth: text.implicitWidth + 2 implicitHeight: text.implicitHeight baselineOffset: text.y + text.baselineOffset Rectangle { anchors.fill: text anchors.margins: -1 anchors.leftMargin: -3 anchors.rightMargin: -3 visible: control.activeFocus height: 6 radius: 3 color: "#224f9fef" border.color: "#47b" opacity: 0.6 } Text { id: text text: StyleHelpers.stylizeMnemonics(control.text) anchors.centerIn: parent color: SystemPaletteSingleton.text(control.enabled) renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering } } /*! The background under indicator and label. */ property Component background /*! The spacing between indicator and label. */ property int spacing: Math.round(TextSingleton.implicitHeight/4) /*! This defines the indicator button. */ property Component indicator: Rectangle { width: Math.round(TextSingleton.implicitHeight) height: width gradient: Gradient { GradientStop {color: "#eee" ; position: 0} GradientStop {color: control.pressed ? "#eee" : "#fff" ; position: 0.4} GradientStop {color: "#fff" ; position: 1} } border.color: control.activeFocus ? "#16c" : "gray" antialiasing: true radius: height/2 Rectangle { anchors.centerIn: parent width: Math.round(parent.width * 0.5) height: width gradient: Gradient { GradientStop {color: "#999" ; position: 0} GradientStop {color: "#555" ; position: 1} } border.color: "#222" antialiasing: true radius: height/2 Behavior on opacity {NumberAnimation {duration: 80}} opacity: control.checked ? control.enabled ? 1 : 0.5 : 0 } } /*! \internal */ property Component panel: Item { implicitWidth: Math.max(backgroundLoader.implicitWidth, row.implicitWidth + padding.left + padding.right) implicitHeight: Math.max(backgroundLoader.implicitHeight, labelLoader.implicitHeight + padding.top + padding.bottom,indicatorLoader.implicitHeight + padding.top + padding.bottom) baselineOffset: labelLoader.item ? padding.top + labelLoader.item.baselineOffset : 0 Loader { id:backgroundLoader sourceComponent: background anchors.fill: parent } Row { id: row anchors.fill: parent anchors.leftMargin: padding.left anchors.rightMargin: padding.right anchors.topMargin: padding.top anchors.bottomMargin: padding.bottom spacing: radiobuttonStyle.spacing Loader { id: indicatorLoader sourceComponent: indicator anchors.verticalCenter: parent.verticalCenter } Loader { id: labelLoader sourceComponent: label anchors.verticalCenter: parent.verticalCenter } } } } /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 /*! \qmltype TabViewStyle \inqmlmodule QtQuick.Controls.Styles \since 5.1 \ingroup viewsstyling \brief Provides custom styling for TabView \qml TabView { id: frame anchors.fill: parent anchors.margins: 4 Tab { title: "Tab 1" } Tab { title: "Tab 2" } Tab { title: "Tab 3" } style: TabViewStyle { frameOverlap: 1 tab: Rectangle { color: styleData.selected ? "steelblue" :"lightsteelblue" border.color: "steelblue" implicitWidth: Math.max(text.width + 4, 80) implicitHeight: 20 radius: 2 Text { id: text anchors.centerIn: parent text: styleData.title color: styleData.selected ? "white" : "black" } } frame: Rectangle { color: "steelblue" } } } \endqml */ Style { /*! The \l ScrollView this style is attached to. */ readonly property TabView control: __control /*! This property holds whether the user can move the tabs. Tabs are not movable by default. */ property bool tabsMovable: false /*! This property holds the horizontal alignment of the tab buttons. Supported values are: \list \li Qt.AlignLeft (default) \li Qt.AlignHCenter \li Qt.AlignRight \endlist */ property int tabsAlignment: Qt.AlignLeft /*! This property holds the amount of overlap there are between individual tab buttons. */ property int tabOverlap: 1 /*! This property holds the amount of overlap there are between individual tab buttons and the frame. */ property int frameOverlap: 2 /*! This defines the tab frame. */ property Component frame: Rectangle { color: "#dcdcdc" border.color: "#aaa" Rectangle { anchors.fill: parent color: "transparent" border.color: "#66ffffff" anchors.margins: 1 } } /*! This defines the tab. You can access the tab state through the \c styleData property, with the following properties: \table \row \li readonly property int \b styleData.index \li This is the current tab index. \row \li readonly property bool \b styleData.selected \li This is the active tab. \row \li readonly property string \b styleData.title \li Tab title text. \row \li readonly property bool \b styleData.nextSelected \li The next tab is selected. \row \li readonly property bool \b styleData.previousSelected \li The previous tab is selected. \row \li readonly property bool \b styleData.pressed \li The tab is being pressed. (since QtQuick.Controls.Styles 1.3) \row \li readonly property bool \b styleData.hovered \li The tab is being hovered. \row \li readonly property bool \b styleData.enabled \li The tab is enabled. (since QtQuick.Controls.Styles 1.2) \row \li readonly property bool \b styleData.activeFocus \li The tab button has keyboard focus. \row \li readonly property bool \b styleData.availableWidth \li The available width for the tabs. \row \li readonly property bool \b styleData.totalWidth \li The total width of the tabs. (since QtQuick.Controls.Styles 1.2) \endtable */ property Component tab: Item { scale: control.tabPosition === Qt.TopEdge ? 1 : -1 property int totalOverlap: tabOverlap * (control.count - 1) property real maxTabWidth: control.count > 0 ? (styleData.availableWidth + totalOverlap) / control.count : 0 implicitWidth: Math.round(Math.min(maxTabWidth, textitem.implicitWidth + 20)) implicitHeight: Math.round(textitem.implicitHeight + 10) Item { anchors.fill: parent anchors.bottomMargin: styleData.selected ? 0 : 2 BorderImage { anchors.fill: parent source: styleData.selected ? "images/tab_selected.png" : "images/tab.png" border.top: 6 border.bottom: 6 border.left: 6 border.right: 6 anchors.topMargin: styleData.selected ? 0 : 1 } } Text { id: textitem anchors.fill: parent anchors.leftMargin: 4 anchors.rightMargin: 4 verticalAlignment: Text.AlignVCenter horizontalAlignment: Text.AlignHCenter text: styleData.title elide: Text.ElideMiddle renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering scale: control.tabPosition === Qt.TopEdge ? 1 : -1 color: SystemPaletteSingleton.text(styleData.enabled) Rectangle { anchors.centerIn: parent width: textitem.paintedWidth + 6 height: textitem.paintedHeight + 4 visible: (styleData.activeFocus && styleData.selected) radius: 3 color: "#224f9fef" border.color: "#47b" } } } /*! This defines the left corner. */ property Component leftCorner: null /*! This defines the right corner. */ property Component rightCorner: null /*! This defines the tab bar background. */ property Component tabBar: null } /**************************************************************************** ** ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 /*! \qmltype MenuBarStyle \inqmlmodule QtQuick.Controls.Styles \since 5.3 \ingroup controlsstyling \brief Provides custom styling for MenuBar \note Styling menu bars may not be supported on platforms using native menu bars through their QPA plugin. */ Style { id: root /*! Returns a formatted string to render mnemonics for a given menu item. The mnemonic character is prefixed by an ampersand in the original string. Passing \c true for \c underline will underline the mnemonic character (e.g., \c formatMnemonic("&File", true) will return \c "File"). Passing \c false for \c underline will return the plain text form (e.g., \c formatMnemonic("&File", false) will return \c "File"). \sa Label */ function formatMnemonic(text, underline) { return underline ? StyleHelpers.stylizeMnemonics(text) : StyleHelpers.removeMnemonics(text) } /*! The background for the full menu bar. The background will be extended to the full containing window width. Its height will always fit all of the menu bar items. The final size will include the paddings. */ property Component background: Rectangle { color: "#dcdcdc" implicitHeight: 20 } /*! The menu bar item. \target styleData properties This item has to be configured using the \b styleData object which is in scope, and contains the following read-only properties: \table \row \li \b {styleData.index} : int \li The index of the menu item in its menu. \row \li \b {styleData.selected} : bool \li \c true if the menu item is selected. \row \li \b {styleData.open} : bool \li \c true when the pull down menu is open. \row \li \b {styleData.text} : string \li The menu bar item's text. \row \li \b {styleData.underlineMnemonic} : bool \li When \c true, the style should underline the menu item's label mnemonic. \endtable */ property Component itemDelegate: Rectangle { implicitWidth: text.width + 12 implicitHeight: text.height + 4 color: styleData.open ? "#49d" : "transparent" Text { id: text font: root.font text: formatMnemonic(styleData.text, styleData.underlineMnemonic) anchors.centerIn: parent renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering color: styleData.open ? "white" : SystemPaletteSingleton.windowText(control.enabled) } } /*! The style component for the menubar's own menus and their submenus. \sa {QtQuick.Controls.Styles::}{MenuStyle} */ property Component menuStyle: MenuStyle { font: root.font } /*! \since QtQuick.Controls.Styles 1.3 The font of the control. */ property font font /*! \internal */ property bool __isNative: true } /**************************************************************************** ** ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 /*! \qmltype TableViewStyle \inqmlmodule QtQuick.Controls.Styles \since 5.1 \ingroup viewsstyling \brief Provides custom styling for TableView \note This class derives from \l {QtQuick.Controls.Styles::}{ScrollViewStyle} and supports all of the properties defined there. */ ScrollViewStyle { id: root /*! The \l TableView this style is attached to. */ readonly property TableView control: __control /*! The text color. */ property color textColor: SystemPaletteSingleton.text(control.enabled) /*! The background color. */ property color backgroundColor: control.backgroundVisible ? SystemPaletteSingleton.base(control.enabled) : "transparent" /*! The alternate background color. */ property color alternateBackgroundColor: "#f5f5f5" /*! The text highlight color, used within selections. */ property color highlightedTextColor: "white" /*! Activates items on single click. */ property bool activateItemOnSingleClick: false padding.top: control.headerVisible ? 0 : 1 /*! \qmlproperty Component TableViewStyle::headerDelegate Delegate for header. This delegate is described in \l {TableView::headerDelegate} */ property Component headerDelegate: BorderImage { height: textItem.implicitHeight * 1.2 source: "images/header.png" border.left: 4 border.bottom: 2 border.top: 2 Text { id: textItem anchors.fill: parent verticalAlignment: Text.AlignVCenter horizontalAlignment: styleData.textAlignment anchors.leftMargin: 12 text: styleData.value elide: Text.ElideRight color: textColor renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering } Rectangle { anchors.right: parent.right anchors.top: parent.top anchors.bottom: parent.bottom anchors.bottomMargin: 1 anchors.topMargin: 1 width: 1 color: "#ccc" } } /*! \qmlproperty Component TableViewStyle::rowDelegate Delegate for row. This delegate is described in \l {TableView::rowDelegate} */ property Component rowDelegate: Rectangle { height: Math.round(TextSingleton.implicitHeight * 1.2) property color selectedColor: control.activeFocus ? "#07c" : "#999" color: styleData.selected ? selectedColor : !styleData.alternate ? alternateBackgroundColor : backgroundColor } /*! \qmlproperty Component TableViewStyle::itemDelegate Delegate for item. This delegate is described in \l {TableView::itemDelegate} */ property Component itemDelegate: Item { height: Math.max(16, label.implicitHeight) property int implicitWidth: label.implicitWidth + 20 Text { id: label objectName: "label" width: parent.width anchors.leftMargin: 12 anchors.left: parent.left anchors.right: parent.right horizontalAlignment: styleData.textAlignment anchors.verticalCenter: parent.verticalCenter anchors.verticalCenterOffset: 1 elide: styleData.elideMode text: styleData.value !== undefined ? styleData.value : "" color: styleData.textColor renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering } } } H\x;isF+T"%4d+.YE2j)R&(U*h=NrҮ{g#jENl ǮCyQp'Ld)KY*%eu"Vݳzm=]%?Yqr{/TkM"esrW^xβgo36GBaʖq\1>,꛷ӻ  =r;G9[z( xL5bB=0^]"13G(B+"ysz2H[l@f73D=a^ hYz|^F$IDt8 NJqaUi#Q~pӌ% j e~ #.h>%igVPܚSŔT/SG}u$%q02f< )Ge:qƙ!e<0.l*+\jERT2wzzۛ _O=`afsfތ{hOGӉsq3O\2 i7zخ\] LzcÛ30F)":W -ݜƯٕ=鿁 gLӒ{= MNf؛ص7p\ huM7VE<ۑ=A (] m\8?Eo}"9 ";bSBoo٠wջOK63v{sNfړw&ݟpn\=Z_ܸMzG !$yc'5ʃvn|%P.H?- Lbˡsi6ѭڧy-i@m:whw_>R_u\ 6hC79;:U m&u^{d ky^1AysagGGg?9BemV](wMc LJTD~8_I)398KkrAT@0RG8{(x|V&Spfx) !/{8 7%<]LM?P 矾.q}z3 59t臮X-BJ\!BO$U g^tb)AD<gNIeI4؀`&żJx>X!nӚb W [e6@:83DేYAB"%2_avM"@sX 6 Ve&yȖ Zym} =g/rFR$4Uy3bR_Yx+[@rp<½>\O^t/fLO'?SH&q^x'棜9U S SB(G%mfݬz Q?:RP(Ge`C5Zˆ%U2E,d t#.E2Lu `",\UqsdaH`˨l#2f P{D^`J~/f EЕpNJ,^ussg|Sq|h!wmqI'l / 7귂lJ$V))~![ 0df- zh,1 %"f0Hc\{ ҅ ?ֺF<6]vYgyE0_<8b,`CG J)đ-L B}DD]yK1%G&[ E/Tp^{))Md=~),AL(٤[VpR>Lo S˲;ЩD=N2msH )3AU]*EkE a>b@Of}-OKf)zE!E)o&I )x Tu6CyGLAA E* `M WBItPfLt^9,cA t\̋qRrT]A}K)A{ D,E3A,5`ueZ.#9*j-C^ )T0©)/ GHa.eXAEaRRLePǂGƝ5%6QhZf*v 5Oe/aDVǂG6@DVhKkdSqT"=Ew2`\:Z LKz YbkArkFnSQE%{R 9!?H3kX.Hgn7yШFjiUyp2S8|Ηk~ܖQCb``Q+-\tZFY&W%h2{ZIRLRSG40= ce#uZznai R)8 @j)lĈ+_>R[z}s1TNUbךgBvg g\:H5N 7^KkhşerG0FݗzR=DoߋTń>DBn˿ЭCv!{+rZفŊJ]+/ɪ nN޽rLsu}'E5l˖xLQ'\RG^+PP Akto _~twQƧB*֞:*mEP^IrM(UQv uЭ:࿻[4X#-H*dDVBT]^/|Y#U\8dr d G}]:C-JU͂Cy\)%zCdm9۰a:/a HruŻ:#b/ k^&Q$=^3ךirvj-">~l'ǡ#&_:&3k|І dөeG nz;^_/^kEϚ:53+e 9ASC( =dk$H_ª /9Zqu/`T,q Øxq"EWD}E@fɩ|cW/IrNesEtF84 ',1C\իdl{?D41̙nywd`*Q,p5~rح(R}Vq})Nî\,o3u xl)5ռҟtJ~n;2'.: Ck(&QGk$^&,_՛,k93D%݊t*6}=i;CFYwgi=Dk![|pu~++/[Xůw=;쥏P2q\)fyxYˁn6^aL77:!)%[*@隨h'OvvOYy T*[vj=JO*9]Xӭ Ӗۙn~=~W#a𐑔[{`S.D`>y{p!ΣD^D\nȅz~`V-1#{SP,G)bD<0),vBa2G"XGuH'QO&^$K.ft@4 r"&!# \z.܈%.Mn@!ߒ2oR)'pǑ !EtY 5@}FÔgӉܣ /O6=&lɆD̃&mgPۅ(}}I26e:OdVr0i={i$w,a%XpCN3i)S!n{lsBM2u] KT?#Zf:{t<@E2/ϢMɏcSÝ$L?e C9 h,g G3q@05TV9GPt%[Y\S1Ӥ@(P`!@nߧxFG2!nSv# H78Жžٓ%dAN;ZGnD .+&H=kfKXUT/caOIM+tϹE&hٻ pB<ʑsa E}gÏ;x/j7^,/BaLZPPOK[ݍoN[jC8jB#)z qcQ[-ɰ1u98$\9tO??:HL !c CW@5;1eʏkw&,5<f$NNYicŀIW --U^ZDu}l{8 "Όt^,oO۵p\(-{]"*+oN_ LZJi})[Wofو'Pp L,A.|9TP5${J]G3ys|G0胦ӈže?P,_5mSN;R˟ ZW51'qt.9 ?r yR\N/Yώ0J@`"%9:ޛ%-_h$,tcݥs2Ry 0ï$y-ytPL٥ݝ)k[]zVIKf@J|=ݔhFi@[ʏIXmQfePYHk7| {7ǹi6rA]+f]urtJab칝mެ:ekGat^jrdѹ%u a,kKfFؙ<9ߜC},Xv,0{*%KFz Q$y,Lcɟ9[&JzeALT8r(F—_]':0QbF"'( d S,O%w)2u?pz\*)Wypɵ%5:GjONBXW r?a-&E>haǽc5z~)N\ڃČFVZ6&Q8f B|J+SF"Bf};MdQ`g_l'1w~9>x>7 TUXl/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 /*! \qmltype TextFieldStyle \inqmlmodule QtQuick.Controls.Styles \since 5.1 \ingroup controlsstyling \brief Provides custom styling for TextField. Example: \qml TextField { style: TextFieldStyle { textColor: "black" background: Rectangle { radius: 2 implicitWidth: 100 implicitHeight: 24 border.color: "#333" border.width: 1 } } } \endqml */ Style { id: style /*! The \l TextField this style is attached to. */ readonly property TextField control: __control /*! The content margins of the text field. */ padding { top: 4 ; left: Math.round(control.__contentHeight/3) ; right: control.__contentHeight/3 ; bottom: 4 } /*! The current font. */ property font font /*! The text color. */ property color textColor: SystemPaletteSingleton.text(control.enabled) /*! The text highlight color, used behind selections. */ property color selectionColor: SystemPaletteSingleton.highlight(control.enabled) /*! The highlighted text color, used in selections. */ property color selectedTextColor: SystemPaletteSingleton.highlightedText(control.enabled) /*! \qmlproperty enumeration renderType \since QtQuick.Controls.Styles 1.1 Override the default rendering type for the control. Supported render types are: \list \li Text.QtRendering \li Text.NativeRendering \endlist The default value is platform dependent. \sa Text::renderType */ property int renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering /*! The placeholder text color, used when the text field is empty. \since QtQuick.Controls.Styles 1.1 */ property color placeholderTextColor: Qt.rgba(0, 0, 0, 0.5) /*! The background of the text field. */ property Component background: Item { Rectangle { anchors.fill: parent anchors.bottomMargin: -1 color: "#44ffffff" radius: baserect.radius } Rectangle { id: baserect gradient: Gradient { GradientStop {color: "#e0e0e0" ; position: 0} GradientStop {color: "#fff" ; position: 0.1} GradientStop {color: "#fff" ; position: 1} } radius: control.__contentHeight * 0.16 anchors.fill: parent border.color: control.activeFocus ? "#47b" : "#999" } } /*! \internal */ property Component panel: Item { anchors.fill: parent property int topMargin: padding.top property int leftMargin: padding.left property int rightMargin: padding.right property int bottomMargin: padding.bottom property color textColor: style.textColor property color selectionColor: style.selectionColor property color selectedTextColor: style.selectedTextColor implicitWidth: backgroundLoader.implicitWidth || Math.round(control.__contentHeight * 8) implicitHeight: backgroundLoader.implicitHeight || Math.max(25, Math.round(control.__contentHeight * 1.2)) baselineOffset: padding.top + control.__baselineOffset property color placeholderTextColor: style.placeholderTextColor property font font: style.font Loader { id: backgroundLoader sourceComponent: background anchors.fill: parent } } /*! \internal The cursor handle. \since QtQuick.Controls.Styles 1.3 The parent of the handle is positioned to the top left corner of the cursor position. The interactive area is determined by the geometry of the handle delegate. The following signals and read-only properties are available within the scope of the handle delegate: \table \row \li \b {styleData.activated()} [signal] \li Emitted when the handle is activated ie. the editor is clicked. \row \li \b {styleData.pressed} : bool \li Whether the handle is pressed. \row \li \b {styleData.position} : int \li The character position of the handle. \row \li \b {styleData.lineHeight} : real \li The height of the line the handle is on. \row \li \b {styleData.hasSelection} : bool \li Whether the editor has selected text. \endtable */ property Component __cursorHandle /*! \internal The selection handle. \since QtQuick.Controls.Styles 1.3 The parent of the handle is positioned to the top left corner of the first selected character. The interactive area is determined by the geometry of the handle delegate. The following signals and read-only properties are available within the scope of the handle delegate: \table \row \li \b {styleData.activated()} [signal] \li Emitted when the handle is activated ie. the editor is clicked. \row \li \b {styleData.pressed} : bool \li Whether the handle is pressed. \row \li \b {styleData.position} : int \li The character position of the handle. \row \li \b {styleData.lineHeight} : real \li The height of the line the handle is on. \row \li \b {styleData.hasSelection} : bool \li Whether the editor has selected text. \endtable */ property Component __selectionHandle /*! \internal The cursor delegate. \since QtQuick.Controls.Styles 1.3 */ property Component __cursorDelegate } G/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Private 1.0 /*! \qmltype TextAreaStyle \inqmlmodule QtQuick.Controls.Styles \since 5.2 \ingroup controlsstyling \brief Provides custom styling for TextArea. Example: \qml TextArea { style: TextAreaStyle { textColor: "#333" selectionColor: "steelblue" selectedTextColor: "#eee" backgroundColor: "#eee" } } \endqml */ ScrollViewStyle { id: style /*! The \l TextArea this style is attached to. */ readonly property TextArea control: __control /*! The current font. */ property font font /*! The text color. */ property color textColor: SystemPaletteSingleton.text(control.enabled) /*! The text highlight color, used behind selections. */ property color selectionColor: SystemPaletteSingleton.highlight(control.enabled) /*! The highlighted text color, used in selections. */ property color selectedTextColor: SystemPaletteSingleton.highlightedText(control.enabled) /*! The background color. */ property color backgroundColor: control.backgroundVisible ? SystemPaletteSingleton.base(control.enabled) : "transparent" /*! \qmlproperty enumeration renderType Override the default rendering type for the control. Supported render types are: \list \li Text.QtRendering \li Text.NativeRendering \endlist The default value is platform dependent. \sa Text::renderType */ property int renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering /*! The default margin, in pixels, around the text in the TextArea. \since QtQuick.Controls.Styles 1.3 \sa TextArea::textMargin */ property real textMargin: 4 /*! \internal The cursor handle. \since QtQuick.Controls.Styles 1.3 The parent of the handle is positioned to the top left corner of the cursor position. The interactive area is determined by the geometry of the handle delegate. The following signals and read-only properties are available within the scope of the handle delegate: \table \row \li \b {styleData.activated()} [signal] \li Emitted when the handle is activated ie. the editor is clicked. \row \li \b {styleData.pressed} : bool \li Whether the handle is pressed. \row \li \b {styleData.position} : int \li The character position of the handle. \row \li \b {styleData.lineHeight} : real \li The height of the line the handle is on. \row \li \b {styleData.hasSelection} : bool \li Whether the editor has selected text. \endtable */ property Component __cursorHandle /*! \internal The selection handle. \since QtQuick.Controls.Styles 1.3 The parent of the handle is positioned to the top left corner of the first selected character. The interactive area is determined by the geometry of the handle delegate. The following signals and read-only properties are available within the scope of the handle delegate: \table \row \li \b {styleData.activated()} [signal] \li Emitted when the handle is activated ie. the editor is clicked. \row \li \b {styleData.pressed} : bool \li Whether the handle is pressed. \row \li \b {styleData.position} : int \li The character position of the handle. \row \li \b {styleData.lineHeight} : real \li The height of the line the handle is on. \row \li \b {styleData.hasSelection} : bool \li Whether the editor has selected text. \endtable */ property Component __selectionHandle /*! \internal The cursor delegate. \since QtQuick.Controls.Styles 1.3 */ property Component __cursorDelegate } PNG  IHDR!!Wo AiCCPICC ProfileH wTSϽ7" %z ;HQIP&vDF)VdTG"cE b PQDE݌k 5ޚYg}׺PtX4X\XffGD=HƳ.d,P&s"7C$ E6<~&S2)212 "įl+ɘ&Y4Pޚ%ᣌ\%g|eTI(L0_&l2E9r9hxgIbטifSb1+MxL 0oE%YmhYh~S=zU&ϞAYl/$ZUm@O ޜl^ ' lsk.+7oʿ9V;?#I3eE妧KD d9i,UQ h A1vjpԁzN6p\W p G@ K0ށiABZyCAP8C@&*CP=#t] 4}a ٰ;GDxJ>,_“@FXDBX$!k"EHqaYbVabJ0՘cVL6f3bձX'?v 6-V``[a;p~\2n5׌ &x*sb|! ߏƿ' Zk! $l$T4QOt"y\b)AI&NI$R$)TIj"]&=&!:dGrY@^O$ _%?P(&OJEBN9J@y@yCR nXZOD}J}/G3ɭk{%Oחw_.'_!JQ@SVF=IEbbbb5Q%O@%!BӥyҸM:e0G7ӓ e%e[(R0`3R46i^)*n*|"fLUo՝mO0j&jajj.ϧwϝ_4갺zj=U45nɚ4ǴhZ ZZ^0Tf%9->ݫ=cXgN].[7A\SwBOK/X/_Q>QG[ `Aaac#*Z;8cq>[&IIMST`ϴ kh&45ǢYYF֠9<|y+ =X_,,S-,Y)YXmĚk]c}džjcΦ浭-v};]N"&1=xtv(}'{'IߝY) Σ -rqr.d._xpUەZM׍vm=+KGǔ ^WWbj>:>>>v}/avO8 FV> 2 u/_$\BCv< 5 ]s.,4&yUx~xw-bEDCĻHGKwFGEGME{EEKX,YFZ ={$vrK .3\rϮ_Yq*©L_wד+]eD]cIIIOAu_䩔)3ѩiB%a+]3='/40CiU@ёL(sYfLH$%Y jgGeQn~5f5wugv5k֮\۹Nw]m mHFˍenQQ`hBBQ-[lllfjۗ"^bO%ܒY}WwvwXbY^Ю]WVa[q`id2JjGէ{׿m>PkAma꺿g_DHGGu;776ƱqoC{P38!9 ҝˁ^r۽Ug9];}}_~imp㭎}]/}.{^=}^?z8hc' O*?f`ϳgC/Oϩ+FFGGόzˌㅿ)ѫ~wgbk?Jި9mdwi獵ޫ?cǑOO?w| x&mf2:Y~ pHYs  KIDATX W]hGwscnZjZm(h5h `*Zi$ A,-,,Ν;TS@Y (4C66V1Bpl 5ߤ׽:;;ŋ߃ :Y`F~~5r@~ e"]]~RH@+%feU(aBu& h @`Sq> *#c!nO64{,aFTOR> *R; (zL/% ۠!eHeu. Ѵ69w]11N4Υ]G19" V rAphEИՈ2>?~5%0*ʪHv(`B ҄$xy.K.]zuHUTTtlXe@_c PQ ma)<|plA2i48O`+.}Yž 6yx"D|˗g b͚5yyQ 05VYY9jh% KG. ЏRC233G&#'DFFF8J"PT2?u;wN.@Kuyw31o.]:Jv-8ݒ+E{& #M__@W.^h4Аp]J亮y֍҂-lXRzVTWW\oۻwL`\2A& J#"j{#eD"1Jc=v,']2)A H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FXIDATxڜ=v1 gj\}.Cj.9Dn2їbUVKh^Oz>=??Ն^__^lC@$t7{>??ld`[en$N,6I2E)yۧ/>81yjdjQH,wyFV/wrtǤ/c\4DYC$[q<;CXp$c]䫢gkx8T?J4`i$LBvhwn=֓${2Dd+ٰ"٫P¥ڽ:RΌ4£P N-uZJ#:cdHwJnHH@kAm]3-|\$⨠Ou'1 z5rWp O̡5vBZ|&JJ/ ,^M<<+hiO,KU;Y\yUΘR/h;_˹XC%t鬔 S̗A2P 0MSxp)1 ?X= DX %.$dP s̐42# 2 qTQCl2@6dB6d9C/BI C^;UW-\T?DIENDB` PNG  IHDRD# pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FIDATx10 gDЅ z=@ 302OUufiP"8i٭ij" 3\uX5BE,i/!PB !AB !ABFIRz⓸;D8 KDPڭWUsia{o,֓IENDB` 0PNG  IHDR!6- AiCCPICC ProfileH wTSϽ7" %z ;HQIP&vDF)VdTG"cE b PQDE݌k 5ޚYg}׺PtX4X\XffGD=HƳ.d,P&s"7C$ E6<~&S2)212 "įl+ɘ&Y4Pޚ%ᣌ\%g|eTI(L0_&l2E9r9hxgIbטifSb1+MxL 0oE%YmhYh~S=zU&ϞAYl/$ZUm@O ޜl^ ' lsk.+7oʿ9V;?#I3eE妧KD d9i,UQ h A1vjpԁzN6p\W p G@ K0ށiABZyCAP8C@&*CP=#t] 4}a ٰ;GDxJ>,_“@FXDBX$!k"EHqaYbVabJ0՘cVL6f3bձX'?v 6-V``[a;p~\2n5׌ &x*sb|! ߏƿ' Zk! $l$T4QOt"y\b)AI&NI$R$)TIj"]&=&!:dGrY@^O$ _%?P(&OJEBN9J@y@yCR nXZOD}J}/G3ɭk{%Oחw_.'_!JQ@SVF=IEbbbb5Q%O@%!BӥyҸM:e0G7ӓ e%e[(R0`3R46i^)*n*|"fLUo՝mO0j&jajj.ϧwϝ_4갺zj=U45nɚ4ǴhZ ZZ^0Tf%9->ݫ=cXgN].[7A\SwBOK/X/_Q>QG[ `Aaac#*Z;8cq>[&IIMST`ϴ kh&45ǢYYF֠9<|y+ =X_,,S-,Y)YXmĚk]c}džjcΦ浭-v};]N"&1=xtv(}'{'IߝY) Σ -rqr.d._xpUەZM׍vm=+KGǔ ^WWbj>:>>>v}/avO8 FV> 2 u/_$\BCv< 5 ]s.,4&yUx~xw-bEDCĻHGKwFGEGME{EEKX,YFZ ={$vrK .3\rϮ_Yq*©L_wד+]eD]cIIIOAu_䩔)3ѩiB%a+]3='/40CiU@ёL(sYfLH$%Y jgGeQn~5f5wugv5k֮\۹Nw]m mHFˍenQQ`hBBQ-[lllfjۗ"^bO%ܒY}WwvwXbY^Ю]WVa[q`id2JjGէ{׿m>PkAma꺿g_DHGGu;776ƱqoC{P38!9 ҝˁ^r۽Ug9];}}_~imp㭎}]/}.{^=}^?z8hc' O*?f`ϳgC/Oϩ+FFGGόzˌㅿ)ѫ~wgbk?Jި9mdwi獵ޫ?cǑOO?w| x&mf2:Y~ pHYs B4IDATH c`.b0@C?S 4QFÐD4 S(eo~d r@/H?IPJ x b 2p`ѠѠA֠FU2nO'5IENDB`PNG  IHDRsBIT|d pHYsrtEXtSoftwarewww.inkscape.org<bIDAT @ECzPSո22%I$>wRSk~ǂR[_B X?PbhB$2ĈEj< 8/4[IENDB` PNG  IHDRD# pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FIDATxY;N1}cDA(VmR@BTHP$f]K4 ;ͮ~2;& @XE_'"9_-Muu9g9?N S[wI"Kfr4gHŧ6!i/H@o&Ƽ54)%3RJ?ƴ,G‹0C?T1ƁqYϦL-AJi$b𓄴 ҌjO2ޭf[Jr˻%|¹8ʑsn(1F%I2fT4Dx4ޔkGe fQmSvKIBZzjURqYWSF*>JqR-g +d/YTkwQ㛪 FEx_+C[SmYKc+QHtSE盜'ZKͨYִ[I%dJ\;VVjX/=p8!cќsiZ$oh=Rg+IENDB` 2PNG  IHDRB pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_F]IDATx10Cؖ- K -8b,4v+jB932y[<(6ĦvJ)!?̌ж-8Nߓjg>sQ4F#̌p<9Dk(hX`2n0wӸ(TySw^^|>/4Me)Rwv}q1YA)% n{Yo86AJ !-6D=LXyE_UxR߾`dҎsOpb MHTݐ^#*c,x憦۱"4|a˱+6v zo`gkbIJ*W>r:ai<[KWcP %%Caۋ]Xy&!}Pl?_^flgQ7|Ɇ4$F`z ٘y~> ʐ@{4 WUEu](z̨UUm[$J,͆,fT|s\.(˒D~FJG~MӰR}"fZH);K5%5vֶDBJClIENDB` PNG  IHDRAs/sg pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_F)IDATx!NCAbp5W* HD='A*=\ 8hCowA ޛOM2%1Ȑc {dG7€u!JɅ$jؿnQW7s/ DJ9dѤ?CxAZUJPu|7֛X0C0C0C0C0C0C0C0C0C0COnҊޑM!%:<v$'G{y>JMݶnPFPPYW>AYg6瀈IENDB` PNG  IHDRNF pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FFIDATxڴK0 C 9JVD%v DmҤ$i~~mu8m0 ` +H`E"'].xygdV" !L0%!TyK4Džua)\Be@JiVDgMJ~BIR,`5 k7"8|jז@C~1.ʚi{DNMG,hh5 >v)P$YQ/w{,wii+Rj)̖ݞ6l*_沨 J*7r&<-S9籌(q7-EcIENDB`@PNG  IHDR<&bKGDb_ pHYs  tIME &vIDAThލZ[r@K^`Í_q,G@ Ĵjq&4M%y`&@#?D$yE$"$-ij$O>"bQ@w|4Ͷ5"6Nq"9?"'="FĞ&`3?V<`=}D4 2.GDHwP"CDp N%@D3A 䳗Y9pp#~~]OWS͑G[|Y$N{-^79M}z5~x$l0agڴg9"؈pCΑ Ya%{`;7 yl&$BNNIAef^x !/s-ܡ(yOl- zv_e6"("Yh\'¢o[m@:?D_o` i{'kDzavD<Էklj)$Lʘ.fZr^LQѵ_SmxYmGᅡf_|A}`KO~Vޫ2gsy %x!^{_]¸̳zy9:@r5XrkI(m¸{ڭs37xk3Pb:d[k3ټInk6ȓ0vQ1M[E ̢a"l,&k6" cAl9)?oʍm޾VAYmU6b^cT6bvxW3K{%XTHVh/tIENDB`PNG  IHDRV]RIDATϱ @ Cw @-TlAT\bՏbׂkFQ=1aL"SwjI <#IENDB`ԉPNG  IHDRsBIT|d pHYsrtEXtSoftwarewww.inkscape.org<QIDATͱ @ ,93Q|?p8Ɩ0`ox+%ic'|C /xVCI`Eb2IENDB`PNG  IHDRV][IDATͻ @@Q0۰hK0 lLD>X`P^BB A99J?οxc|b ;0 }8$TgIENDB`  H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FgIDATx1OA݃3˜XN7C11*Z9챵 V&,F0hޛndwf^6kD0nl0YH:=+ؽ7#{*vP\qn,F +$IkEv{k Ot4ɳqlX xMD?eY~jX|8b߆#M}KD௛$ I"C% I"C% I"C% I"C% I"C% I"C% I"C% I"C% I"C% I"C% I"C% I"C% I"C% խEpܝb%/6z[Ti3+;4m16<}V8~̲-Y;t NBuGQ>Q?IENDB` @PNG  IHDR Fn AiCCPICC ProfileH wTSϽ7" %z ;HQIP&vDF)VdTG"cE b PQDE݌k 5ޚYg}׺PtX4X\XffGD=HƳ.d,P&s"7C$ E6<~&S2)212 "įl+ɘ&Y4Pޚ%ᣌ\%g|eTI(L0_&l2E9r9hxgIbטifSb1+MxL 0oE%YmhYh~S=zU&ϞAYl/$ZUm@O ޜl^ ' lsk.+7oʿ9V;?#I3eE妧KD d9i,UQ h A1vjpԁzN6p\W p G@ K0ށiABZyCAP8C@&*CP=#t] 4}a ٰ;GDxJ>,_“@FXDBX$!k"EHqaYbVabJ0՘cVL6f3bձX'?v 6-V``[a;p~\2n5׌ &x*sb|! ߏƿ' Zk! $l$T4QOt"y\b)AI&NI$R$)TIj"]&=&!:dGrY@^O$ _%?P(&OJEBN9J@y@yCR nXZOD}J}/G3ɭk{%Oחw_.'_!JQ@SVF=IEbbbb5Q%O@%!BӥyҸM:e0G7ӓ e%e[(R0`3R46i^)*n*|"fLUo՝mO0j&jajj.ϧwϝ_4갺zj=U45nɚ4ǴhZ ZZ^0Tf%9->ݫ=cXgN].[7A\SwBOK/X/_Q>QG[ `Aaac#*Z;8cq>[&IIMST`ϴ kh&45ǢYYF֠9<|y+ =X_,,S-,Y)YXmĚk]c}džjcΦ浭-v};]N"&1=xtv(}'{'IߝY) Σ -rqr.d._xpUەZM׍vm=+KGǔ ^WWbj>:>>>v}/avO8 FV> 2 u/_$\BCv< 5 ]s.,4&yUx~xw-bEDCĻHGKwFGEGME{EEKX,YFZ ={$vrK .3\rϮ_Yq*©L_wד+]eD]cIIIOAu_䩔)3ѩiB%a+]3='/40CiU@ёL(sYfLH$%Y jgGeQn~5f5wugv5k֮\۹Nw]m mHFˍenQQ`hBBQ-[lllfjۗ"^bO%ܒY}WwvwXbY^Ю]WVa[q`id2JjGէ{׿m>PkAma꺿g_DHGGu;776ƱqoC{P38!9 ҝˁ^r۽Ug9];}}_~imp㭎}]/}.{^=}^?z8hc' O*?f`ϳgC/Oϩ+FFGGόzˌㅿ)ѫ~wgbk?Jި9mdwi獵ޫ?cǑOO?w| x&mf2:Y~ pHYs a a[y+IDATuϽ `q# Plmں h\?A8q{Vx"4.lj耩q3X1O4>9+˚{أ_xAsJ Kkb: nNi!Rw2z]qIENDB`̉PNG  IHDRBNA+ybKGD pHYs  tIME;߾bYIDATX1τ _8~7-ARP-6ا$mQ8>8hp2] ୵J",ymZ`45(gW)X[)|&c&=^O7ǧN{4s6=}%aC9[%=ȳ\0~Osj|uHbIr*{e.? "8X0M;}{; siss߾F2A IENDB`PNG  IHDRB%}sBIT|d pHYs Bc%QtEXtSoftwarewww.inkscape.org<7IDAT]ʱ !ט[]\&_ DhXhUb/o H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_F$IDATx1N1E E " *Cʜ-!=BihJEP,޵DjU~o^GDo_-pb>8'!l.Sftdo 9^uYo䜻p d86=1`圕}1}'*B蚼Vr!ar=@J 1R֧gY/.ǛFi[9fM5DRK)A̒ӐZ PۜӐ.zW#۠>Ԥrͽ%}֐i>ʎH)׶8-,;3$^Iϕ/k* ~1Vق5}d4]cCitʥ8+⒑^Il$2Ln|2.nM_ &з*J}(!-Q[؊~H!C89֪^4`:sdY0Yr(Io9 XYgTGnweowDt lZ=@bާpX,n<;" NWk ($jv<IENDB` FPNG  IHDR!6- AiCCPICC ProfileH wTSϽ7" %z ;HQIP&vDF)VdTG"cE b PQDE݌k 5ޚYg}׺PtX4X\XffGD=HƳ.d,P&s"7C$ E6<~&S2)212 "įl+ɘ&Y4Pޚ%ᣌ\%g|eTI(L0_&l2E9r9hxgIbטifSb1+MxL 0oE%YmhYh~S=zU&ϞAYl/$ZUm@O ޜl^ ' lsk.+7oʿ9V;?#I3eE妧KD d9i,UQ h A1vjpԁzN6p\W p G@ K0ށiABZyCAP8C@&*CP=#t] 4}a ٰ;GDxJ>,_“@FXDBX$!k"EHqaYbVabJ0՘cVL6f3bձX'?v 6-V``[a;p~\2n5׌ &x*sb|! ߏƿ' Zk! $l$T4QOt"y\b)AI&NI$R$)TIj"]&=&!:dGrY@^O$ _%?P(&OJEBN9J@y@yCR nXZOD}J}/G3ɭk{%Oחw_.'_!JQ@SVF=IEbbbb5Q%O@%!BӥyҸM:e0G7ӓ e%e[(R0`3R46i^)*n*|"fLUo՝mO0j&jajj.ϧwϝ_4갺zj=U45nɚ4ǴhZ ZZ^0Tf%9->ݫ=cXgN].[7A\SwBOK/X/_Q>QG[ `Aaac#*Z;8cq>[&IIMST`ϴ kh&45ǢYYF֠9<|y+ =X_,,S-,Y)YXmĚk]c}džjcΦ浭-v};]N"&1=xtv(}'{'IߝY) Σ -rqr.d._xpUەZM׍vm=+KGǔ ^WWbj>:>>>v}/avO8 FV> 2 u/_$\BCv< 5 ]s.,4&yUx~xw-bEDCĻHGKwFGEGME{EEKX,YFZ ={$vrK .3\rϮ_Yq*©L_wד+]eD]cIIIOAu_䩔)3ѩiB%a+]3='/40CiU@ёL(sYfLH$%Y jgGeQn~5f5wugv5k֮\۹Nw]m mHFˍenQQ`hBBQ-[lllfjۗ"^bO%ܒY}WwvwXbY^Ю]WVa[q`id2JjGէ{׿m>PkAma꺿g_DHGGu;776ƱqoC{P38!9 ҝˁ^r۽Ug9];}}_~imp㭎}]/}.{^=}^?z8hc' O*?f`ϳgC/Oϩ+FFGGόzˌㅿ)ѫ~wgbk?Jި9mdwi獵ޫ?cǑOO?w| x&mf2:Y~ pHYs B4IDATH c``GM{@@,H-=@LU5F ,$FAqhJ {Ġ++10d/z@i52@*A%ȕ)JP0PFgᨁ%Cp#bp!T8 < ʆ6; OBIENDB`:PNG  IHDRƽ AiCCPICC ProfileH wTSϽ7" %z ;HQIP&vDF)VdTG"cE b PQDE݌k 5ޚYg}׺PtX4X\XffGD=HƳ.d,P&s"7C$ E6<~&S2)212 "įl+ɘ&Y4Pޚ%ᣌ\%g|eTI(L0_&l2E9r9hxgIbטifSb1+MxL 0oE%YmhYh~S=zU&ϞAYl/$ZUm@O ޜl^ ' lsk.+7oʿ9V;?#I3eE妧KD d9i,UQ h A1vjpԁzN6p\W p G@ K0ށiABZyCAP8C@&*CP=#t] 4}a ٰ;GDxJ>,_“@FXDBX$!k"EHqaYbVabJ0՘cVL6f3bձX'?v 6-V``[a;p~\2n5׌ &x*sb|! ߏƿ' Zk! $l$T4QOt"y\b)AI&NI$R$)TIj"]&=&!:dGrY@^O$ _%?P(&OJEBN9J@y@yCR nXZOD}J}/G3ɭk{%Oחw_.'_!JQ@SVF=IEbbbb5Q%O@%!BӥyҸM:e0G7ӓ e%e[(R0`3R46i^)*n*|"fLUo՝mO0j&jajj.ϧwϝ_4갺zj=U45nɚ4ǴhZ ZZ^0Tf%9->ݫ=cXgN].[7A\SwBOK/X/_Q>QG[ `Aaac#*Z;8cq>[&IIMST`ϴ kh&45ǢYYF֠9<|y+ =X_,,S-,Y)YXmĚk]c}džjcΦ浭-v};]N"&1=xtv(}'{'IߝY) Σ -rqr.d._xpUەZM׍vm=+KGǔ ^WWbj>:>>>v}/avO8 FV> 2 u/_$\BCv< 5 ]s.,4&yUx~xw-bEDCĻHGKwFGEGME{EEKX,YFZ ={$vrK .3\rϮ_Yq*©L_wד+]eD]cIIIOAu_䩔)3ѩiB%a+]3='/40CiU@ёL(sYfLH$%Y jgGeQn~5f5wugv5k֮\۹Nw]m mHFˍenQQ`hBBQ-[lllfjۗ"^bO%ܒY}WwvwXbY^Ю]WVa[q`id2JjGէ{׿m>PkAma꺿g_DHGGu;776ƱqoC{P38!9 ҝˁ^r۽Ug9];}}_~imp㭎}]/}.{^=}^?z8hc' O*?f`ϳgC/Oϩ+FFGGόzˌㅿ)ѫ~wgbk?Jި9mdwi獵ޫ?cǑOO?w| x&mf2:Y~ pHYs&&%0RIDATx fU%ʬ5YAAJq@mD%vP!\ƀ Z[qmn1}-(jνˬ$*[=wsZyu~/ٹs砺:lVz6Y5v___ Wxғ4/~q<<'JַQu=V>0 AqC^z7^{ Z۶T6^"~ p;hJrA  c*|:OcU7ZOlR;]qP]Bk^jOյ7XAnT`6Wiv1(R#0,1ujl/KA~-$.mN+ʟiHp4f╦ 㜦ul&#G _r^z%l'}oԑՈf E &pR[E'еM#ߵ3 2.߀3.i~ގ]i Dn.]-M͐#{ju}Zg JˁUy0IJGS@ u`a{.!5N{W?si4k5x9L$Mq/羱L8 켝ִ>JV(Q*[0ZJmZ[:3ܞ^Qٶp>=>fkskց2$=énc3E O)_䧲t$V7HJVg0'*z;q='iHPq |Kf_ B* ?h.΃u;-ł,S-+uvQ']~gtt#y(4f8pa5v5ٔBC錇͏.maJϊ4KL],ApZ~|p[<XEY@@0$L* ͙tQ 4A y4.X"`H [9EW6Ѕ~<stDͱ;sV?R҄5LYikG.-Ӵ<7X6;1//9U8#.⧢rev~jG=M%H#V37 aZ2=X) rVW322j=ՏLqٕt<1-Eq\(-xM*Z~׿[gb5 (ș[ocDO?qKk4ޚDSocDɷ&ӿu-g2"24 8 m/ 3`a!VVe^/"L^s/իS] l[5S}g keľx$QQk'?B$fz4~$믵[S{CSh^'/W7u+ ߩK,=_#/3*6/{M$YfNy/g?nt3_xoU|:W,zOA `V@6kA:묕Y:4T·)I2PiCyR+UW )kT~H/9}e$^~,dX=QJK YӀ!G?Bm[A(g{Z0>i`aH;%zoWT[)V}tY^Dzژ*obnv]]eqN(ٖO'ѣVRq(9WM+L D q9 e_^Ðĺ:`te=r8"vx B!!yi)/-mKݔ\ߪ19@^P-Ai_c´žm50ؘVgkA@B"z={!,N+=ӟM6=Sڼ*x^LeZ8iҰV_|=-X3f0 +D dDk_zܟ| ϩ™mn2쉄/ L#i>DNSwre/NEzDŽ4". &<Pկt=?W'.B<ۋ @yEoՊbM1~tm|2n;p k|\qC>!baajO|mK#˸*$2(V Ve蒖BH_ x_:Y y ?,lty Agp τ0w]K s* D P @~.PyK/u20bf{y`ha7 50`0-!Tܻ߲eqgV@҂kd.[`e"eU&7=ѱ}Lv4=(t˼i_s)^_ m%H9QV XNi끤davt?S~ӟ^ߘ5ؓJx6B+ NhN+^?e*0U:4@%n}{/2OÌ #z8Dx&)9ѿ&O(I>8T5d A -ѤJ,WH 7pYaLHp"N'c^`CPHrZN__X84 &T|swwn@+}m NM8x~ ^A j~[ f<pf  Xt倛OSCkw> ;_s-mlL\:Ar޾bŊYtӎ߇mZTmR]sXܕªe !M $3?OEڢo@a4|Bs}ϙt<x吼4$А~Ԑʔj~M[O{)cCL@W>2A -FM* :f C`)ĉ!#.&}/IYp1_h.aK~]|(p]X w{a mPB4+p_b-$Љ !XҧuQ xPy%j@β&u٬Ux/% #K{pAz 4r&tB>ח#3:p+Vxa):餓x~yta E#_QOhq xե:1⡧ˁKXktBn3__bf_~ xxXπ]QԳb.G@yJBe>8@2ީe 0H[|ikf1ot)JOMOx4^g Q>hSS[5_͝yG@yf^bf\lٳ | ,e'$R(C3gD̈vD ffuI<;N@̶+'}C`.f?4M'0 W;vWkw_/7bpv,`lyۍ̾vTt9Sx~v]Y]Nbn9zw׻Sqcz`3}O:l-0:&.vzO|ƒ%K>?^opPqv=m4K|),âT.[_2&ymn4rέjGQ[s0;09O%_eKmK7d1<5ii裏 o\f͟h?翯ޭzu[f|V嗚ꪞ-`/=>eJ#>YUOƥoxs{ۻ,A@=i'\}>oڊBM#e 6O4@i(_hd1d16}2}}N]o׾v>LĩxhK}/8∶"Wغ~`غug3ġit)ǁ 2yG@N;j0@ }q#hL?2q0|aYtAWs9]v'd#lH ~t+ yvjE=Ȓ ?-ϤӏAj;ɯH{K{}gTΉO9 %-*/7o.8V@D@ס+2c@p6/WݰaCEZ\њ|rR p7lxŒ%( I+ Jk_[ߘ7j 0.J+''㔽a:>Ɩ%F ?5ґ큇 A Á--a|1xD৓$.|.]_qUōBq;'k ZJ#ԧ>jUkլ[I)NA];ﺫ&~LAnܸ1]i t:hAsR&B=Cf|@Ztm%X-;F]w5j۶mr9 BeAC!AnDk^h@9h !6Wd`6W^yޭ2@rʊg%p9[wL]-`կ͛7WK[{iNs>y "ICR@_kA(C8h<2a+ <} _߀<-4!YtC-Cwf 2kukC.a6R*o:W<2~ A0]\ses:,ZeHFLc׭|h?vz|;ax GٴUn *8ZYmqXtQG ާ,i> eH[nCrA6 izX{[ۼ׷E"ބ}gxXWZg[ p@ 6X#+WZ\_G3MdrrY{˖,lh4$]IIP~I :3Iu0AHtmagPOG+ҮKƪ7m9?۷c)Vi.)Ţi˜ MP3w̴ǰ m?)_&* >x]qÚ G9$PY`P6-)B)A`hL-Ru}ro*F)Й 1`w+A؄N L X?S~˔ѓ!If~?)#\W4ipG4f#6 x ?7xL[YU\9!* - —ED+۶IvFP[nefvٝ16T9fE=1 MReɀ F"{]?G8 ߇{WƖL;3y#yi6wh%|A*]\]aw tICeV2, gatu}հpy<1$1+H'qWHTA \_O}SbO\Wt7ondkL&}ӻZC_`Mstre{O[%<<(19/lTc>2+W ԑ :pͪ67 @fq kqn~- E]$>22wJ|);߹C -`2P-nK?;PZu= t^Q<4!}^/|!<=}=]>4> Uv]n>Av\A`aʔ?| Xͨi\`@ˠh(?E t[z VePOO{" kJU5>U2+Q|K8fzv #zu7KrӂxjD Zkٖh`D.Vʘ?@GP a7k ;*s`Sض5xuns(W,ML]E tw':q X/YsHBU-xMv :^`^/L|Pmx2h9"j;F~ w$4қ~uŲOgr})̱_~Z5piGZj y[:_#D\&SG 7mm рoBP˦^=|9XzC^X8P1܃x6%i4fK;D0-8ik_E9o綞k,Ba#T|׺v} OBEe>^p5nYLyԇ@C^8:,6Vo_=y݁rQ%+,Z-R f!-U]Z eÈ W|i3?~l1h-_|9Qbʪր6܅5P56z z] z wgn xreFOi- t@L @LPκ57 nKӾtچ jz*qPNxD G BZQuw6xMضV{>o[ 0E:hX J)^@>'Kq3VYO%Ūz?&>,(VhPy-,h{$s 4ʾWZv6+Gg 4]K[%uׇ[,qXm㌧}p7uCJHng9큎/b距gi0<1M˴i';iszIq0uC %vypXClknAV'r%!ao};EZ["eH[DK@kjfյZV]6XmhO.޺u\BЯiiaӂ| 7>||~҉ F³us>m+4sk9ĉ,"S <vQmv *J|=$GҙyjK[ *l^e8>Yfkd[oKL \0ܧx#E\|?M.NCvv-vy焽|yGk5e8Ku!qzƀ]C/Ĺ6cފ`F^>nMq!Y*a|=Vޓpȡ *Z% 83Fz \hoG@hI8ݑ\!DGIZBzߠ[x"Mh&' C_Q- o#$,a+U.M"L?ܪm5 &;b] tϠ\ qN§}Lco^6DSrYKѮ>:{>q!-?A8 L1>>-T~z n<n HDit)@ɬ\((s`V?ix.!MHkI-M8$.,@~7?xO)djzKWա 6HVM/Ƨs'(^qh ,7{֭-O#<7g8CL Bء g940?! )yaKqs9YfpmuMol۶'&6- ƕk5q/~ (׹9׵w%>+jp\+AR(?N (*͝^VHi2 gD;9fzó~B4'v65i#/;>GZZzp[1_I}4%`8.ͪڹmft=|I/8 ; j{092c#}}9<·۫{lݺ8t$xB-&- L>j*(݅JO2rp>Z͊,B0>L_sJeB0?X&׿߄Sfow^+9;׿VֈmAš@3Vko}"vfmEY9zу>$=7tǩ ~|3#ëVWI9> ^qwazWO[ ܨӼ5.mthyZXH}|`iAKBfaO/}!f>״sڦ#[ }Ow\kK/]Ǟ^U#T||v:vi6 a1x#]t26hէ(lxK,"Y5e'yIi@UPXp1mqe}ǺJ|dIENDB`rPNG  IHDR/e9IDAT]ʱ Y dj 'I!nuluw܉ĝC| \%!FGY[IENDB`.PNG  IHDR00W AiCCPICC ProfileH wTSϽ7" %z ;HQIP&vDF)VdTG"cE b PQDE݌k 5ޚYg}׺PtX4X\XffGD=HƳ.d,P&s"7C$ E6<~&S2)212 "įl+ɘ&Y4Pޚ%ᣌ\%g|eTI(L0_&l2E9r9hxgIbטifSb1+MxL 0oE%YmhYh~S=zU&ϞAYl/$ZUm@O ޜl^ ' lsk.+7oʿ9V;?#I3eE妧KD d9i,UQ h A1vjpԁzN6p\W p G@ K0ށiABZyCAP8C@&*CP=#t] 4}a ٰ;GDxJ>,_“@FXDBX$!k"EHqaYbVabJ0՘cVL6f3bձX'?v 6-V``[a;p~\2n5׌ &x*sb|! ߏƿ' Zk! $l$T4QOt"y\b)AI&NI$R$)TIj"]&=&!:dGrY@^O$ _%?P(&OJEBN9J@y@yCR nXZOD}J}/G3ɭk{%Oחw_.'_!JQ@SVF=IEbbbb5Q%O@%!BӥyҸM:e0G7ӓ e%e[(R0`3R46i^)*n*|"fLUo՝mO0j&jajj.ϧwϝ_4갺zj=U45nɚ4ǴhZ ZZ^0Tf%9->ݫ=cXgN].[7A\SwBOK/X/_Q>QG[ `Aaac#*Z;8cq>[&IIMST`ϴ kh&45ǢYYF֠9<|y+ =X_,,S-,Y)YXmĚk]c}džjcΦ浭-v};]N"&1=xtv(}'{'IߝY) Σ -rqr.d._xpUەZM׍vm=+KGǔ ^WWbj>:>>>v}/avO8 FV> 2 u/_$\BCv< 5 ]s.,4&yUx~xw-bEDCĻHGKwFGEGME{EEKX,YFZ ={$vrK .3\rϮ_Yq*©L_wד+]eD]cIIIOAu_䩔)3ѩiB%a+]3='/40CiU@ёL(sYfLH$%Y jgGeQn~5f5wugv5k֮\۹Nw]m mHFˍenQQ`hBBQ-[lllfjۗ"^bO%ܒY}WwvwXbY^Ю]WVa[q`id2JjGէ{׿m>PkAma꺿g_DHGGu;776ƱqoC{P38!9 ҝˁ^r۽Ug9];}}_~imp㭎}]/}.{^=}^?z8hc' O*?f`ϳgC/Oϩ+FFGGόzˌㅿ)ѫ~wgbk?Jި9mdwi獵ޫ?cǑOO?w| x&mf2:Y~ pHYs fm IDATh{}/-(Ȯ[*TcU$@TBjBڐHF 6@MZ1MM*P Gk݂+}wޙ{ffzeOr9358~xMQhY kة؍'ὃAsΡ/"VZU300p7GQx=@C˄Q!gY9{:/ѳ>}hgKyY}ֱt |-X c]9O Ax|l3C߾ .'|˗עPJxDyfcA"?ʅ֮]{5Wl*iZ7i")yŽYVxƤw-̙Gxj2Z<{ɡ֓'N>9JyC5 SkIyv`޽63{=rH vuvv7W Le֐7f͚O1JA9o-c-A; \r]w-[x5?fx<M~"$qlCow5l{<㆞+$u(+A/3\PVEk]9]v. 䊞;2kƌoi*z.D0ۍj4>3sNdakX3VD_AS  J؍_ΞǾRT:[ԧry? %S{+r#zWĕyPME%ŀ#mVũl[.‰Pd]=τY7M<|ǹ{ߢo1eV`*1EMu KŦh>Mvҥf?4iv*0TUU+W|lݺ58y'IJbA/( {n塇)q_$^a… nn[[a>- ?91N|v#yWsWIG Nj9w0QXs^I#ىV%X4b)O1|̪1j>Ƙ86FJ@ dNJEžE5WRN䇆ܙ3gj|÷!3k$G„akmyoxp>).h {^z%ǽٳE5`ڴNOI>R/ną2e{8zK:Y^:_nuձco!>78ha^OOwMc &4=]]ޅ 3QS6" ^`ul^O?\yqлv꺚܎}A2~A~39t>pٖlҁ$A$W1> Zne]к_kN>@L:aEkt? B1~7h c4JMnڴi Dksfy ,=SmoƠW_ͣf@NBq>{&!+(XCCQTCvͅ%KJ1MsMx`cCd:br/b0p3^mb5r(w01[+jciKh: %+bX>`ѢEUPE$ēO>y;xH@q$d3pb4{\I_6p_ՔǜqQڵ_A(کjTb )p=8|;ӐeF+µR/ìIw 1n}"ƿS(t3r!|L%?(NUa8E0Rb$wE!cg#HF;6`+L88Y'Ϯ^(&<]* 4wr|2b CqA F x݉2?c"g#ZR+xd3c {!Mt2V`ڸ|+HX>+c37躗"xCd3]h{wRlv(xCڹ*`ҸzMEvy2_N)ɍJZJزe\ xQd 嬩q>h[*iVTڕ%Nk>fcrv 4%QDY@xŊRe|.=7y^4| ]X%;R^lrP!U.˝6&zy/%XVే;d6=* .'*-9ϗ\/cWo*Χ)~IENDB`PNG  IHDRBiNzbKGD3 pHYs  tIME *8IDATXVuA N`TB&G 8wg=z8Xv(Ȼ ӓofv =$! 6x|||mI[:ٍB &g7A6Jtj ~{}Pf6w Nw 6#A8vЗp BYȑuT@, $wrԜt֜~-["ks}# ZU!LVDž,J򛨨Nl ƹe6iim<5nCrn@Xh+HViJHqn$5‰WoYSGd+xg :52Vr15 N@HYȲIYGf#S665 `Š,-HVӃhQEPZQL^+R>k"2%jY",:c^5+hE35CP5]u0GJW*bWlk;tmv]궕p+ВPT,ZOS4wbFP|;]sThKLjh㮄٢eMfJŸ!E JI ae.["N= J7}mיgڱnf A1vjpԁzN6p\W p G@ K0ށiABZyCAP8C@&*CP=#t] 4}a ٰ;GDxJ>,_“@FXDBX$!k"EHqaYbVabJ0՘cVL6f3bձX'?v 6-V``[a;p~\2n5׌ &x*sb|! ߏƿ' Zk! $l$T4QOt"y\b)AI&NI$R$)TIj"]&=&!:dGrY@^O$ _%?P(&OJEBN9J@y@yCR nXZOD}J}/G3ɭk{%Oחw_.'_!JQ@SVF=IEbbbb5Q%O@%!BӥyҸM:e0G7ӓ e%e[(R0`3R46i^)*n*|"fLUo՝mO0j&jajj.ϧwϝ_4갺zj=U45nɚ4ǴhZ ZZ^0Tf%9->ݫ=cXgN].[7A\SwBOK/X/_Q>QG[ `Aaac#*Z;8cq>[&IIMST`ϴ kh&45ǢYYF֠9<|y+ =X_,,S-,Y)YXmĚk]c}džjcΦ浭-v};]N"&1=xtv(}'{'IߝY) Σ -rqr.d._xpUەZM׍vm=+KGǔ ^WWbj>:>>>v}/avO8 FV> 2 u/_$\BCv< 5 ]s.,4&yUx~xw-bEDCĻHGKwFGEGME{EEKX,YFZ ={$vrK .3\rϮ_Yq*©L_wד+]eD]cIIIOAu_䩔)3ѩiB%a+]3='/40CiU@ёL(sYfLH$%Y jgGeQn~5f5wugv5k֮\۹Nw]m mHFˍenQQ`hBBQ-[lllfjۗ"^bO%ܒY}WwvwXbY^Ю]WVa[q`id2JjGէ{׿m>PkAma꺿g_DHGGu;776ƱqoC{P38!9 ҝˁ^r۽Ug9];}}_~imp㭎}]/}.{^=}^?z8hc' O*?f`ϳgC/Oϩ+FFGGόzˌㅿ)ѫ~wgbk?Jި9mdwi獵ޫ?cǑOO?w| x&mf2:Y~ pHYs a a[y+hIDAT8K+EQ %dx&.@HH2_m9EQFF2R𼵾Zn}ڻPW3>"Ԇk /B]di5`AZ&Bp|>ς+ %X7YVpY05X}7´w\ӷ[8AZdXz#VwFOeX'(+X<}]*\T ):&&*ԞtpA[<3g:Ide?QB ɚju)9)yګ@w!\7`ۧw%Ez;u=S?r.c ~K[]i"IENDB`PNG  IHDRBrbKGD pHYs  tIMEIDATX嘱 \*=16Θ30Wl0H\D8fP0|u]r=uD0mƱ0ϭoq\_M`IY3S6)3ǩlM_?Dpα`vۜ~3xY>:]Ԩ%/]A%G(niD~YƂ+jARgg캫l}I|*%WiV^/F (ٳ~Xr9$gN`*>Q|KkʔHyk'.y.^KoIv fIENDB`rPNG  IHDR/e9IDAT] IhZH U[My7Wŕq#  +8,8㐬IENDB`QtQuickControlsPlugin21QtQuickControlsPlugin   {{ tpprqedekc XSLC; 3-,QQuickActiontriggeredsourcetoggledcheckedtextChangedshortcutChangedshortcuticonChangediconNameChangediconSourceChangedtooltipChangedargenabledChangedcheckableChangedexclusiveGroupChangedtriggertexticonSourceiconName__icontooltipenabledcheckableexclusiveGroupQQuickExclusiveGroup* l TW&X[\ _ ` a befgh k*+'++++)++++ ++++'+ QIQI QI)PI QIQIQIQI QI)QI  12QQuickAction   QQuickExclusiveGroupDefaultProperty__actionscurrentChangedbindCheckableounbindCheckableupdateCurrentcurrentQQmlListProperty,$% ( +++'+'+ 'QI P 20QQuickExclusiveGroup @;; 1.  # %)07 ; 758?C FBB C>C91 1 ,)) )$        QQuickMenuDefaultPropertyitemsitemsChangedtitleChanged__selectedIndexChanged__menuClosed__menuPopupDestroyedpopupVisibleChanged__popupGeometryChangedmenuContentItemChangedminimumWidthChanged__closeMenu__dismissMenu__destroyMenuPopup__destroyAllMenuPopupsupdateSelectedIndexsetMenuContentItemQQuickItem*setPopupVisibleclearPopupWindowupdateTextwindowVisibleChangedpopupaddItemQQuickMenuItem*insertItemaddSeparatorinsertSeparatorQQuickMenuBase*removeItemclear__popuptargetRectatItemIndexMenuTypemenuTypetitleQQmlListProperty__selectedIndex__popupVisible__contentItem__minimumWidth__font__xOffset__yOffset__actionQQuickAction*__popupGeometryDefaultMenuEditMenu                  !!"!"++++++++++++++++++++  ++++++$"#%+"#+"& PI' PI(PI)PI* PI+PI,@P -P .P /0 T 1PI$2310QQuickMenu    QQuickMenuBarDefaultPropertymenusmenusChangednativeChangedcontentItemChangedQQmlListProperty__contentItemQQuickItem*__parentWindowQQuickWindow*__isNative" !+++ PI PI P PI13QQuickMenuBar | QQuickMenuBasevisibleChangedvisibletypeQQuickMenuItemType::MenuItemType__parentMenu__isNative__visualItemQQuickItem*QQuickMenuSeparator  QQuickMenuTextenabledChangediconSourceChangediconNameChanged__textChanged__iconChangedupdateTextupdateEnabledupdateIconenablediconSourceiconName__iconp oiZR JFGM MKCB B @ =;23 ("!'QQuickMenuItemtriggeredtoggledcheckedtextChangedcheckableChangedexclusiveGroupChangedshortcutChangedactionChangedtriggerupdateShortcutupdateCheckableupdateCheckedbindToActionQQuickAction*actionunbindFromActiontextcheckableexclusiveGroupQQuickExclusiveGroup*shortcut bOPSTUV W X Y Z [ \ _ +++++++++++++' QIQIQI QI)QI PI>6789:; < = ++++++++ QI QI QI )PI+QI T 'T T  P ` c `ZODQQuickMenuItemTypeMenuItemTypeSeparatorItemMenuScrollIndicator14QQuickMenuBase19QQuickMenuSeparator14QQuickMenuText14QQuickMenuItemQQuickMenuItemContainer23QQuickMenuItemContainer`fiZ ^YQQuickMenuPopupWindowwillBeDeletedLatersetToBeDeletedLaterupdateSizeupdatePosition"# $ % ++++21QQuickMenuPopupWindow  QQuickPopupWindowDefaultPropertypopupContentItempopupDismissedgeometryChangedshowdismissPopupupdateSizeapplicationStateChangedQt::ApplicationStatestateQQuickItem*parentItem6./0 1 2 3 ++++++  Q Q 17QQuickPopupWindow      QQuickStackstatusChangedviewChangedindexChangedindex__indexstatusStatus__statusviewQQuickItem*__viewInactiveDeactivatingActivatingActive 8+++PIPI PI  PI PI PI< 11QQuickStackp t rnnpoQQuickSelectionModeSelectionModeNoSelectionSingleSelectionExtendedSelectionMultiSelectionContiguousSelection   QQuickCalendarModelvisibleDateChangedvisibleDatelocaleChangedlocalecountChangedcountdateAtindexindexAtweekNumberAtrow>,/25 8 ;+++  QIQIPI19QQuickCalendarModel ~w hdYMBQQuickTooltipshowTextQQuickItem*itempostexthideText+ +13QQuickTooltip@ GD59== = ; 9 5 /)  QQuickSpinBoxValidatorvalueChangedminimumValueChangedmaximumValueChangeddecimalsChangedstepSizeChangedprefixChangedsuffixChangedtextChangedincrementdecrementtextvalueminimumValuemaximumValuedecimalsstepSizeprefixsuffix J@ABCDEF G H I ++++++++++ PI QIQIQIQIQI QI QI22QQuickSpinBoxValidator v  | uqtwx y vsuQQuickRangeModelvalueChangedvaluepositionChangedpositionstepSizeChangedstepSizeinvertedChangedinvertedminimumChangedminmaximumChangedmaxpositionAtMinimumChangedpositionAtMaximumChangedtoMinimumtoMaximumsetValuesetPositionincreaseSingleStepdecreaseSingleStepvalueForPositionpositionForValueminimumValuemaximumValuepositionAtMinimumpositionAtMaximum^adg j mpsv w x { ~  ++++ + + + + ++++++QYPIPIQIQIQIQI QI16QQuickRangeModel }nqt i eQQuickRangedDatedateChangedminimumDateChangedmaximumDateChangeddateminimumDatemaximumDate +++QIQIQI16QQuickRangedDate    QQuickControlSettingsstyleChangedstyleNameChangedstylePathChangedstylestyleNamestylePathdpiScaleFactordragThresholdhasTouchScreenisMobilehoverEnabled +++PI QI QIT T T T T 21QQuickControlSettings  % % ( &$$+27< < :6QQuickWheelAreaverticalValueChangedhorizontalValueChangedverticalWheelMovedhorizontalWheelMovedscrollSpeedChangedactiveChangedverticalDeltahorizontalDeltahorizontalMinimumValuehorizontalMaximumValueverticalMinimumValueverticalMaximumValuehorizontalValueverticalValuescrollSpeedactive 2,-./01++++++QI QI Q Q Q Q Q Q QIQI15QQuickWheelArea`ddYQPQQuickAbstractStyleDefaultPropertydatapaddingQQuickPadding*QQmlListProperty T  @ 19QQuickAbstractStyle  QQuickPaddingleftChangedtopChangedrightChangedbottomChangedsetLeftargsetTopsetRightsetBottomlefttoprightbottomF6789: = @ C ++++++++ QI QI QIQI13QQuickPaddingQTMETADATA qbjs IID,org.qt-project.Qt.QQmlExtensionInterface/1.0 classNameQtQuickControlsPluginZversiondebugMetaData uri$ QtQuick.Controls Hp* )/7<FR^ipxh , h  (     E p y       @  q@   p 1 H HT ԭ ` @ܥl LԧFDETDO